Skip to content

Commit e8ca6db

Browse files
Update common.py
1 parent eedaa9d commit e8ca6db

1 file changed

Lines changed: 285 additions & 19 deletions

File tree

code_puppy/tools/common.py

Lines changed: 285 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -43,48 +43,314 @@ def get_model_context_length() -> int:
4343
# Shared ignore patterns/helpers
4444
# -------------------
4545
IGNORE_PATTERNS = [
46-
"**/node_modules/**",
47-
"**/node_modules/**/*.js",
48-
"node_modules/**",
49-
"node_modules",
46+
# Version control
5047
"**/.git/**",
5148
"**/.git",
5249
".git/**",
5350
".git",
51+
"**/.svn/**",
52+
"**/.hg/**",
53+
"**/.bzr/**",
54+
# Node.js / JavaScript / TypeScript
55+
"**/node_modules/**",
56+
"**/node_modules/**/*.js",
57+
"node_modules/**",
58+
"node_modules",
59+
"**/npm-debug.log*",
60+
"**/yarn-debug.log*",
61+
"**/yarn-error.log*",
62+
"**/pnpm-debug.log*",
63+
"**/.npm/**",
64+
"**/.yarn/**",
65+
"**/.pnpm-store/**",
66+
"**/coverage/**",
67+
"**/.nyc_output/**",
68+
"**/dist/**",
69+
"**/dist",
70+
"**/build/**",
71+
"**/build",
72+
"**/.next/**",
73+
"**/.nuxt/**",
74+
"**/out/**",
75+
"**/.cache/**",
76+
"**/.parcel-cache/**",
77+
"**/.vite/**",
78+
"**/storybook-static/**",
79+
# Python
5480
"**/__pycache__/**",
5581
"**/__pycache__",
5682
"__pycache__/**",
5783
"__pycache__",
58-
"**/.DS_Store",
59-
".DS_Store",
60-
"**/.env",
61-
".env",
84+
"**/*.pyc",
85+
"**/*.pyo",
86+
"**/*.pyd",
87+
"**/.pytest_cache/**",
88+
"**/.mypy_cache/**",
89+
"**/.coverage",
90+
"**/htmlcov/**",
91+
"**/.tox/**",
92+
"**/.nox/**",
93+
"**/site-packages/**",
6294
"**/.venv/**",
6395
"**/.venv",
6496
"**/venv/**",
6597
"**/venv",
66-
"**/.idea/**",
67-
"**/.idea",
68-
"**/.vscode/**",
69-
"**/.vscode",
98+
"**/env/**",
99+
"**/ENV/**",
100+
"**/.env",
101+
"**/pip-wheel-metadata/**",
102+
"**/*.egg-info/**",
70103
"**/dist/**",
71-
"**/dist",
104+
"**/wheels/**",
105+
# Java (Maven, Gradle, SBT)
106+
"**/target/**",
107+
"**/target",
72108
"**/build/**",
73109
"**/build",
74-
"**/*.pyc",
75-
"**/*.pyo",
76-
"**/*.pyd",
110+
"**/.gradle/**",
111+
"**/gradle-app.setting",
112+
"**/*.class",
113+
"**/*.jar",
114+
"**/*.war",
115+
"**/*.ear",
116+
"**/*.nar",
117+
"**/hs_err_pid*",
118+
"**/.classpath",
119+
"**/.project",
120+
"**/.settings/**",
121+
"**/bin/**",
122+
"**/project/target/**",
123+
"**/project/project/**",
124+
# Go
125+
"**/vendor/**",
126+
"**/*.exe",
127+
"**/*.exe~",
128+
"**/*.dll",
77129
"**/*.so",
130+
"**/*.dylib",
131+
"**/*.test",
132+
"**/*.out",
133+
"**/go.work",
134+
"**/go.work.sum",
135+
# Rust
136+
"**/target/**",
137+
"**/Cargo.lock",
138+
"**/*.pdb",
139+
# Ruby
140+
"**/vendor/**",
141+
"**/.bundle/**",
142+
"**/Gemfile.lock",
143+
"**/*.gem",
144+
"**/.rvm/**",
145+
"**/.rbenv/**",
146+
"**/coverage/**",
147+
"**/.yardoc/**",
148+
"**/doc/**",
149+
"**/rdoc/**",
150+
"**/.sass-cache/**",
151+
"**/.jekyll-cache/**",
152+
"**/_site/**",
153+
# PHP
154+
"**/vendor/**",
155+
"**/composer.lock",
156+
"**/.phpunit.result.cache",
157+
"**/storage/logs/**",
158+
"**/storage/framework/cache/**",
159+
"**/storage/framework/sessions/**",
160+
"**/storage/framework/testing/**",
161+
"**/storage/framework/views/**",
162+
"**/bootstrap/cache/**",
163+
# .NET / C#
164+
"**/bin/**",
165+
"**/obj/**",
166+
"**/packages/**",
167+
"**/*.cache",
78168
"**/*.dll",
79-
"**/.*",
169+
"**/*.exe",
170+
"**/*.pdb",
171+
"**/*.user",
172+
"**/*.suo",
173+
"**/.vs/**",
174+
"**/TestResults/**",
175+
"**/BenchmarkDotNet.Artifacts/**",
176+
# C/C++
177+
"**/*.o",
178+
"**/*.obj",
179+
"**/*.so",
180+
"**/*.dll",
181+
"**/*.a",
182+
"**/*.lib",
183+
"**/*.dylib",
184+
"**/*.exe",
185+
"**/CMakeFiles/**",
186+
"**/CMakeCache.txt",
187+
"**/cmake_install.cmake",
188+
"**/Makefile",
189+
"**/compile_commands.json",
190+
"**/.deps/**",
191+
"**/.libs/**",
192+
"**/autom4te.cache/**",
193+
# Perl
194+
"**/blib/**",
195+
"**/_build/**",
196+
"**/Build",
197+
"**/Build.bat",
198+
"**/*.tmp",
199+
"**/*.bak",
200+
"**/*.old",
201+
"**/Makefile.old",
202+
"**/MANIFEST.bak",
203+
"**/META.yml",
204+
"**/META.json",
205+
"**/MYMETA.*",
206+
"**/.prove",
207+
# Scala
208+
"**/target/**",
209+
"**/project/target/**",
210+
"**/project/project/**",
211+
"**/.bloop/**",
212+
"**/.metals/**",
213+
"**/.ammonite/**",
214+
"**/*.class",
215+
# Elixir
216+
"**/_build/**",
217+
"**/deps/**",
218+
"**/*.beam",
219+
"**/.fetch",
220+
"**/erl_crash.dump",
221+
"**/*.ez",
222+
"**/doc/**",
223+
"**/.elixir_ls/**",
224+
# Swift
225+
"**/.build/**",
226+
"**/Packages/**",
227+
"**/*.xcodeproj/**",
228+
"**/*.xcworkspace/**",
229+
"**/DerivedData/**",
230+
"**/xcuserdata/**",
231+
"**/*.dSYM/**",
232+
# Kotlin
233+
"**/build/**",
234+
"**/.gradle/**",
235+
"**/*.class",
236+
"**/*.jar",
237+
"**/*.kotlin_module",
238+
# Clojure
239+
"**/target/**",
240+
"**/.lein-**",
241+
"**/.nrepl-port",
242+
"**/pom.xml.asc",
243+
"**/*.jar",
244+
"**/*.class",
245+
# Dart/Flutter
246+
"**/.dart_tool/**",
247+
"**/build/**",
248+
"**/.packages",
249+
"**/pubspec.lock",
250+
"**/*.g.dart",
251+
"**/*.freezed.dart",
252+
"**/*.gr.dart",
253+
# Haskell
254+
"**/dist/**",
255+
"**/dist-newstyle/**",
256+
"**/.stack-work/**",
257+
"**/*.hi",
258+
"**/*.o",
259+
"**/*.prof",
260+
"**/*.aux",
261+
"**/*.hp",
262+
"**/*.eventlog",
263+
"**/*.tix",
264+
# Erlang
265+
"**/ebin/**",
266+
"**/rel/**",
267+
"**/deps/**",
268+
"**/*.beam",
269+
"**/*.boot",
270+
"**/*.plt",
271+
"**/erl_crash.dump",
272+
# Common cache and temp directories
273+
"**/.cache/**",
274+
"**/cache/**",
275+
"**/tmp/**",
276+
"**/temp/**",
277+
"**/.tmp/**",
278+
"**/.temp/**",
279+
"**/logs/**",
280+
"**/*.log",
281+
"**/*.log.*",
282+
# IDE and editor files
283+
"**/.idea/**",
284+
"**/.idea",
285+
"**/.vscode/**",
286+
"**/.vscode",
287+
"**/*.swp",
288+
"**/*.swo",
289+
"**/*~",
290+
"**/.#*",
291+
"**/#*#",
292+
"**/.emacs.d/auto-save-list/**",
293+
"**/.vim/**",
294+
"**/.netrwhist",
295+
"**/Session.vim",
296+
"**/.sublime-project",
297+
"**/.sublime-workspace",
298+
# OS-specific files
299+
"**/.DS_Store",
300+
".DS_Store",
301+
"**/Thumbs.db",
302+
"**/Desktop.ini",
303+
"**/.directory",
304+
"**/*.lnk",
305+
# Common artifacts
306+
"**/*.orig",
307+
"**/*.rej",
308+
"**/*.patch",
309+
"**/*.diff",
310+
"**/.*.orig",
311+
"**/.*.rej",
312+
# Backup files
313+
"**/*~",
314+
"**/*.bak",
315+
"**/*.backup",
316+
"**/*.old",
317+
"**/*.save",
318+
# Hidden files (but be careful with this one)
319+
# "**/.*", # Commented out as it might be too aggressive
80320
]
81321

82322

83323
def should_ignore_path(path: str) -> bool:
84324
"""Return True if *path* matches any pattern in IGNORE_PATTERNS."""
325+
# Convert path to Path object for better pattern matching
326+
path_obj = Path(path)
327+
85328
for pattern in IGNORE_PATTERNS:
86-
if fnmatch.fnmatch(path, pattern):
87-
return True
329+
# Try pathlib's match method which handles ** patterns properly
330+
try:
331+
if path_obj.match(pattern):
332+
return True
333+
except ValueError:
334+
# If pathlib can't handle the pattern, fall back to fnmatch
335+
if fnmatch.fnmatch(path, pattern):
336+
return True
337+
338+
# Additional check: if pattern contains **, try matching against
339+
# different parts of the path to handle edge cases
340+
if "**" in pattern:
341+
# Convert pattern to handle different path representations
342+
simplified_pattern = pattern.replace("**/", "").replace("/**", "")
343+
344+
# Check if any part of the path matches the simplified pattern
345+
path_parts = path_obj.parts
346+
for i in range(len(path_parts)):
347+
subpath = Path(*path_parts[i:])
348+
if fnmatch.fnmatch(str(subpath), simplified_pattern):
349+
return True
350+
# Also check individual parts
351+
if fnmatch.fnmatch(path_parts[i], simplified_pattern):
352+
return True
353+
88354
return False
89355

90356

0 commit comments

Comments
 (0)