@@ -43,48 +43,314 @@ def get_model_context_length() -> int:
4343# Shared ignore patterns/helpers
4444# -------------------
4545IGNORE_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
83323def 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