]> crepu.dev Git - config.git/blob - djavu-asus/emacs/elpy/rpc-venv/lib/python3.11/site-packages/pathspec-0.11.2.dist-info/METADATA
Reorganización de directorios
[config.git] / djavu-asus / emacs / elpy / rpc-venv / lib / python3.11 / site-packages / pathspec-0.11.2.dist-info / METADATA
1 Metadata-Version: 2.1
2 Name: pathspec
3 Version: 0.11.2
4 Summary: Utility library for gitignore style pattern matching of file paths.
5 Author-email: "Caleb P. Burns" <cpburnz@gmail.com>
6 Requires-Python: >=3.7
7 Description-Content-Type: text/x-rst
8 Classifier: Development Status :: 4 - Beta
9 Classifier: Intended Audience :: Developers
10 Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
11 Classifier: Operating System :: OS Independent
12 Classifier: Programming Language :: Python
13 Classifier: Programming Language :: Python :: 3
14 Classifier: Programming Language :: Python :: 3.7
15 Classifier: Programming Language :: Python :: 3.8
16 Classifier: Programming Language :: Python :: 3.9
17 Classifier: Programming Language :: Python :: 3.10
18 Classifier: Programming Language :: Python :: 3.11
19 Classifier: Programming Language :: Python :: Implementation :: CPython
20 Classifier: Programming Language :: Python :: Implementation :: PyPy
21 Classifier: Topic :: Software Development :: Libraries :: Python Modules
22 Classifier: Topic :: Utilities
23 Project-URL: Documentation, https://python-path-specification.readthedocs.io/en/latest/index.html
24 Project-URL: Issue Tracker, https://github.com/cpburnz/python-pathspec/issues
25 Project-URL: Source Code, https://github.com/cpburnz/python-pathspec
26
27
28 PathSpec
29 ========
30
31 *pathspec* is a utility library for pattern matching of file paths. So
32 far this only includes Git's wildmatch pattern matching which itself is
33 derived from Rsync's wildmatch. Git uses wildmatch for its `gitignore`_
34 files.
35
36 .. _`gitignore`: http://git-scm.com/docs/gitignore
37
38
39 Tutorial
40 --------
41
42 Say you have a "Projects" directory and you want to back it up, but only
43 certain files, and ignore others depending on certain conditions::
44
45 >>> import pathspec
46 >>> # The gitignore-style patterns for files to select, but we're including
47 >>> # instead of ignoring.
48 >>> spec_text = """
49 ...
50 ... # This is a comment because the line begins with a hash: "#"
51 ...
52 ... # Include several project directories (and all descendants) relative to
53 ... # the current directory. To reference a directory you must end with a
54 ... # slash: "/"
55 ... /project-a/
56 ... /project-b/
57 ... /project-c/
58 ...
59 ... # Patterns can be negated by prefixing with exclamation mark: "!"
60 ...
61 ... # Ignore temporary files beginning or ending with "~" and ending with
62 ... # ".swp".
63 ... !~*
64 ... !*~
65 ... !*.swp
66 ...
67 ... # These are python projects so ignore compiled python files from
68 ... # testing.
69 ... !*.pyc
70 ...
71 ... # Ignore the build directories but only directly under the project
72 ... # directories.
73 ... !/*/build/
74 ...
75 ... """
76
77 We want to use the ``GitWildMatchPattern`` class to compile our patterns. The
78 ``PathSpec`` class provides an interface around pattern implementations::
79
80 >>> spec = pathspec.PathSpec.from_lines(pathspec.patterns.GitWildMatchPattern, spec_text.splitlines())
81
82 That may be a mouthful but it allows for additional patterns to be implemented
83 in the future without them having to deal with anything but matching the paths
84 sent to them. ``GitWildMatchPattern`` is the implementation of the actual
85 pattern which internally gets converted into a regular expression. ``PathSpec``
86 is a simple wrapper around a list of compiled patterns.
87
88 To make things simpler, we can use the registered name for a pattern class
89 instead of always having to provide a reference to the class itself. The
90 ``GitWildMatchPattern`` class is registered as **gitwildmatch**::
91
92 >>> spec = pathspec.PathSpec.from_lines('gitwildmatch', spec_text.splitlines())
93
94 If we wanted to manually compile the patterns we can just do the following::
95
96 >>> patterns = map(pathspec.patterns.GitWildMatchPattern, spec_text.splitlines())
97 >>> spec = PathSpec(patterns)
98
99 ``PathSpec.from_lines()`` is simply a class method which does just that.
100
101 If you want to load the patterns from file, you can pass the file instance
102 directly as well::
103
104 >>> with open('patterns.list', 'r') as fh:
105 >>> spec = pathspec.PathSpec.from_lines('gitwildmatch', fh)
106
107 You can perform matching on a whole directory tree with::
108
109 >>> matches = spec.match_tree('path/to/directory')
110
111 Or you can perform matching on a specific set of file paths with::
112
113 >>> matches = spec.match_files(file_paths)
114
115 Or check to see if an individual file matches::
116
117 >>> is_matched = spec.match_file(file_path)
118
119 There is a specialized class, ``pathspec.GitIgnoreSpec``, which more closely
120 implements the behavior of **gitignore**. This uses ``GitWildMatchPattern``
121 pattern by default and handles some edge cases differently from the generic
122 ``PathSpec`` class. ``GitIgnoreSpec`` can be used without specifying the pattern
123 factory::
124
125 >>> spec = pathspec.GitIgnoreSpec.from_lines(spec_text.splitlines())
126
127
128 License
129 -------
130
131 *pathspec* is licensed under the `Mozilla Public License Version 2.0`_. See
132 `LICENSE`_ or the `FAQ`_ for more information.
133
134 In summary, you may use *pathspec* with any closed or open source project
135 without affecting the license of the larger work so long as you:
136
137 - give credit where credit is due,
138
139 - and release any custom changes made to *pathspec*.
140
141 .. _`Mozilla Public License Version 2.0`: http://www.mozilla.org/MPL/2.0
142 .. _`LICENSE`: LICENSE
143 .. _`FAQ`: http://www.mozilla.org/MPL/2.0/FAQ.html
144
145
146 Source
147 ------
148
149 The source code for *pathspec* is available from the GitHub repo
150 `cpburnz/python-pathspec`_.
151
152 .. _`cpburnz/python-pathspec`: https://github.com/cpburnz/python-pathspec
153
154
155 Installation
156 ------------
157
158 *pathspec* is available for install through `PyPI`_::
159
160 pip install pathspec
161
162 *pathspec* can also be built from source. The following packages will be
163 required:
164
165 - `build`_ (>=0.6.0)
166
167 *pathspec* can then be built and installed with::
168
169 python -m build
170 pip install dist/pathspec-*-py3-none-any.whl
171
172 .. _`PyPI`: http://pypi.python.org/pypi/pathspec
173 .. _`build`: https://pypi.org/project/build/
174
175
176 Documentation
177 -------------
178
179 Documentation for *pathspec* is available on `Read the Docs`_.
180
181 .. _`Read the Docs`: https://python-path-specification.readthedocs.io
182
183
184 Other Languages
185 ---------------
186
187 The related project `pathspec-ruby`_ (by *highb*) provides a similar library as
188 a `Ruby gem`_.
189
190 .. _`pathspec-ruby`: https://github.com/highb/pathspec-ruby
191 .. _`Ruby gem`: https://rubygems.org/gems/pathspec
192
193
194
195 Change History
196 ==============
197
198
199 0.11.2 (2023-07-28)
200 -------------------
201
202 New features:
203
204 - `Issue #80`_: match_files with negated path spec. `pathspec.PathSpec.match_*()` now have a `negate` parameter to make using *.gitignore* logic easier and more efficient.
205
206 Bug fixes:
207
208 - `Pull #76`_: Add edge case: patterns that end with an escaped space
209 - `Issue #77`_/`Pull #78`_: Negate with caret symbol as with the exclamation mark.
210
211
212 .. _`Pull #76`: https://github.com/cpburnz/python-pathspec/pull/76
213 .. _`Issue #77`: https://github.com/cpburnz/python-pathspec/issues/77
214 .. _`Pull #78`: https://github.com/cpburnz/python-pathspec/pull/78/
215 .. _`Issue #80`: https://github.com/cpburnz/python-pathspec/issues/80
216
217
218 0.11.1 (2023-03-14)
219 -------------------
220
221 Bug fixes:
222
223 - `Issue #74`_: Include directory should override exclude file.
224
225 Improvements:
226
227 - `Pull #75`_: Fix partially unknown PathLike type.
228 - Convert `os.PathLike` to a string properly using `os.fspath`.
229
230
231 .. _`Issue #74`: https://github.com/cpburnz/python-pathspec/issues/74
232 .. _`Pull #75`: https://github.com/cpburnz/python-pathspec/pull/75
233
234
235 0.11.0 (2023-01-24)
236 -------------------
237
238 Major changes:
239
240 - Changed build backend to `flit_core.buildapi`_ from `setuptools.build_meta`_. Building with `setuptools` through `setup.py` is still supported for distributions that need it. See `Issue #72`_.
241
242 Improvements:
243
244 - `Issue #72`_/`Pull #73`_: Please consider switching the build-system to flit_core to ease setuptools bootstrap.
245
246
247 .. _`flit_core.buildapi`: https://flit.pypa.io/en/latest/index.html
248 .. _`Issue #72`: https://github.com/cpburnz/python-pathspec/issues/72
249 .. _`Pull #73`: https://github.com/cpburnz/python-pathspec/pull/73
250
251
252 0.10.3 (2022-12-09)
253 -------------------
254
255 New features:
256
257 - Added utility function `pathspec.util.append_dir_sep()` to aid in distinguishing between directories and files on the file-system. See `Issue #65`_.
258
259 Bug fixes:
260
261 - `Issue #66`_/`Pull #67`_: Package not marked as py.typed.
262 - `Issue #68`_: Exports are considered private.
263 - `Issue #70`_/`Pull #71`_: 'Self' string literal type is Unknown in pyright.
264
265 Improvements:
266
267 - `Issue #65`_: Checking directories via match_file() does not work on Path objects.
268
269
270 .. _`Issue #65`: https://github.com/cpburnz/python-pathspec/issues/65
271 .. _`Issue #66`: https://github.com/cpburnz/python-pathspec/issues/66
272 .. _`Pull #67`: https://github.com/cpburnz/python-pathspec/pull/67
273 .. _`Issue #68`: https://github.com/cpburnz/python-pathspec/issues/68
274 .. _`Issue #70`: https://github.com/cpburnz/python-pathspec/issues/70
275 .. _`Pull #71`: https://github.com/cpburnz/python-pathspec/pull/71
276
277
278 0.10.2 (2022-11-12)
279 -------------------
280
281 Bug fixes:
282
283 - Fix failing tests on Windows.
284 - Type hint on *root* parameter on `pathspec.pathspec.PathSpec.match_tree_entries()`.
285 - Type hint on *root* parameter on `pathspec.pathspec.PathSpec.match_tree_files()`.
286 - Type hint on *root* parameter on `pathspec.util.iter_tree_entries()`.
287 - Type hint on *root* parameter on `pathspec.util.iter_tree_files()`.
288 - `Issue #64`_: IndexError with my .gitignore file when trying to build a Python package.
289
290 Improvements:
291
292 - `Pull #58`_: CI: add GitHub Actions test workflow.
293
294
295 .. _`Pull #58`: https://github.com/cpburnz/python-pathspec/pull/58
296 .. _`Issue #64`: https://github.com/cpburnz/python-pathspec/issues/64
297
298
299 0.10.1 (2022-09-02)
300 -------------------
301
302 Bug fixes:
303
304 - Fix documentation on `pathspec.pattern.RegexPattern.match_file()`.
305 - `Pull #60`_: Remove redundant wheel dep from pyproject.toml.
306 - `Issue #61`_: Dist failure for Fedora, CentOS, EPEL.
307 - `Issue #62`_: Since version 0.10.0 pure wildcard does not work in some cases.
308
309 Improvements:
310
311 - Restore support for legacy installations using `setup.py`. See `Issue #61`_.
312
313
314 .. _`Pull #60`: https://github.com/cpburnz/python-pathspec/pull/60
315 .. _`Issue #61`: https://github.com/cpburnz/python-pathspec/issues/61
316 .. _`Issue #62`: https://github.com/cpburnz/python-pathspec/issues/62
317
318
319 0.10.0 (2022-08-30)
320 -------------------
321
322 Major changes:
323
324 - Dropped support of EOL Python 2.7, 3.5, 3.6. See `Issue #47`_.
325 - The *gitwildmatch* pattern `dir/*` is now handled the same as `dir/`. This means `dir/*` will now match all descendants rather than only direct children. See `Issue #19`_.
326 - Added `pathspec.GitIgnoreSpec` class (see new features).
327 - Changed build system to `pyproject.toml`_ and build backend to `setuptools.build_meta`_ which may have unforeseen consequences.
328 - Renamed GitHub project from `python-path-specification`_ to `python-pathspec`_. See `Issue #35`_.
329
330 API changes:
331
332 - Deprecated: `pathspec.util.match_files()` is an old function no longer used.
333 - Deprecated: `pathspec.match_files()` is an old function no longer used.
334 - Deprecated: `pathspec.util.normalize_files()` is no longer used.
335 - Deprecated: `pathspec.util.iter_tree()` is an alias for `pathspec.util.iter_tree_files()`.
336 - Deprecated: `pathspec.iter_tree()` is an alias for `pathspec.util.iter_tree_files()`.
337 - Deprecated: `pathspec.pattern.Pattern.match()` is no longer used. Use or implement
338 `pathspec.pattern.Pattern.match_file()`.
339
340 New features:
341
342 - Added class `pathspec.gitignore.GitIgnoreSpec` (with alias `pathspec.GitIgnoreSpec`) to implement *gitignore* behavior not possible with standard `PathSpec` class. The particular *gitignore* behavior implemented is prioritizing patterns matching the file directly over matching an ancestor directory.
343
344 Bug fixes:
345
346 - `Issue #19`_: Files inside an ignored sub-directory are not matched.
347 - `Issue #41`_: Incorrectly (?) matches files inside directories that do match.
348 - `Pull #51`_: Refactor deprecated unittest aliases for Python 3.11 compatibility.
349 - `Issue #53`_: Symlink pathspec_meta.py breaks Windows.
350 - `Issue #54`_: test_util.py uses os.symlink which can fail on Windows.
351 - `Issue #55`_: Backslashes at start of pattern not handled correctly.
352 - `Pull #56`_: pyproject.toml: include subpackages in setuptools config
353 - `Issue #57`_: `!` doesn't exclude files in directories if the pattern doesn't have a trailing slash.
354
355 Improvements:
356
357 - Support Python 3.10, 3.11.
358 - Modernize code to Python 3.7.
359 - `Issue #52`_: match_files() is not a pure generator function, and it impacts tree_*() gravely.
360
361
362 .. _`python-path-specification`: https://github.com/cpburnz/python-path-specification
363 .. _`python-pathspec`: https://github.com/cpburnz/python-pathspec
364 .. _`pyproject.toml`: https://pip.pypa.io/en/stable/reference/build-system/pyproject-toml/
365 .. _`setuptools.build_meta`: https://setuptools.pypa.io/en/latest/build_meta.html
366 .. _`Issue #19`: https://github.com/cpburnz/python-pathspec/issues/19
367 .. _`Issue #35`: https://github.com/cpburnz/python-pathspec/issues/35
368 .. _`Issue #41`: https://github.com/cpburnz/python-pathspec/issues/41
369 .. _`Issue #47`: https://github.com/cpburnz/python-pathspec/issues/47
370 .. _`Pull #51`: https://github.com/cpburnz/python-pathspec/pull/51
371 .. _`Issue #52`: https://github.com/cpburnz/python-pathspec/issues/52
372 .. _`Issue #53`: https://github.com/cpburnz/python-pathspec/issues/53
373 .. _`Issue #54`: https://github.com/cpburnz/python-pathspec/issues/54
374 .. _`Issue #55`: https://github.com/cpburnz/python-pathspec/issues/55
375 .. _`Pull #56`: https://github.com/cpburnz/python-pathspec/pull/56
376 .. _`Issue #57`: https://github.com/cpburnz/python-pathspec/issues/57
377
378
379 0.9.0 (2021-07-17)
380 ------------------
381
382 - `Issue #44`_/`Pull #50`_: Raise `GitWildMatchPatternError` for invalid git patterns.
383 - `Pull #45`_: Fix for duplicate leading double-asterisk, and edge cases.
384 - `Issue #46`_: Fix matching absolute paths.
385 - API change: `util.normalize_files()` now returns a `Dict[str, List[pathlike]]` instead of a `Dict[str, pathlike]`.
386 - Added type hinting.
387
388 .. _`Issue #44`: https://github.com/cpburnz/python-pathspec/issues/44
389 .. _`Pull #45`: https://github.com/cpburnz/python-pathspec/pull/45
390 .. _`Issue #46`: https://github.com/cpburnz/python-pathspec/issues/46
391 .. _`Pull #50`: https://github.com/cpburnz/python-pathspec/pull/50
392
393
394 0.8.1 (2020-11-07)
395 ------------------
396
397 - `Pull #43`_: Add support for addition operator.
398
399 .. _`Pull #43`: https://github.com/cpburnz/python-pathspec/pull/43
400
401
402 0.8.0 (2020-04-09)
403 ------------------
404
405 - `Issue #30`_: Expose what patterns matched paths. Added `util.detailed_match_files()`.
406 - `Issue #31`_: `match_tree()` doesn't return symlinks.
407 - `Issue #34`_: Support `pathlib.Path`\ s.
408 - Add `PathSpec.match_tree_entries` and `util.iter_tree_entries()` to support directories and symlinks.
409 - API change: `match_tree()` has been renamed to `match_tree_files()`. The old name `match_tree()` is still available as an alias.
410 - API change: `match_tree_files()` now returns symlinks. This is a bug fix but it will change the returned results.
411
412 .. _`Issue #30`: https://github.com/cpburnz/python-pathspec/issues/30
413 .. _`Issue #31`: https://github.com/cpburnz/python-pathspec/issues/31
414 .. _`Issue #34`: https://github.com/cpburnz/python-pathspec/issues/34
415
416
417 0.7.0 (2019-12-27)
418 ------------------
419
420 - `Pull #28`_: Add support for Python 3.8, and drop Python 3.4.
421 - `Pull #29`_: Publish bdist wheel.
422
423 .. _`Pull #28`: https://github.com/cpburnz/python-pathspec/pull/28
424 .. _`Pull #29`: https://github.com/cpburnz/python-pathspec/pull/29
425
426
427 0.6.0 (2019-10-03)
428 ------------------
429
430 - `Pull #24`_: Drop support for Python 2.6, 3.2, and 3.3.
431 - `Pull #25`_: Update README.rst.
432 - `Pull #26`_: Method to escape gitwildmatch.
433
434 .. _`Pull #24`: https://github.com/cpburnz/python-pathspec/pull/24
435 .. _`Pull #25`: https://github.com/cpburnz/python-pathspec/pull/25
436 .. _`Pull #26`: https://github.com/cpburnz/python-pathspec/pull/26
437
438
439 0.5.9 (2018-09-15)
440 ------------------
441
442 - Fixed file system error handling.
443
444
445 0.5.8 (2018-09-15)
446 ------------------
447
448 - Improved type checking.
449 - Created scripts to test Python 2.6 because Tox removed support for it.
450 - Improved byte string handling in Python 3.
451 - `Issue #22`_: Handle dangling symlinks.
452
453 .. _`Issue #22`: https://github.com/cpburnz/python-pathspec/issues/22
454
455
456 0.5.7 (2018-08-14)
457 ------------------
458
459 - `Issue #21`_: Fix collections deprecation warning.
460
461 .. _`Issue #21`: https://github.com/cpburnz/python-pathspec/issues/21
462
463
464 0.5.6 (2018-04-06)
465 ------------------
466
467 - Improved unit tests.
468 - Improved type checking.
469 - `Issue #20`_: Support current directory prefix.
470
471 .. _`Issue #20`: https://github.com/cpburnz/python-pathspec/issues/20
472
473
474 0.5.5 (2017-09-09)
475 ------------------
476
477 - Add documentation link to README.
478
479
480 0.5.4 (2017-09-09)
481 ------------------
482
483 - `Pull #17`_: Add link to Ruby implementation of *pathspec*.
484 - Add sphinx documentation.
485
486 .. _`Pull #17`: https://github.com/cpburnz/python-pathspec/pull/17
487
488
489 0.5.3 (2017-07-01)
490 ------------------
491
492 - `Issue #14`_: Fix byte strings for Python 3.
493 - `Pull #15`_: Include "LICENSE" in source package.
494 - `Issue #16`_: Support Python 2.6.
495
496 .. _`Issue #14`: https://github.com/cpburnz/python-pathspec/issues/14
497 .. _`Pull #15`: https://github.com/cpburnz/python-pathspec/pull/15
498 .. _`Issue #16`: https://github.com/cpburnz/python-pathspec/issues/16
499
500
501 0.5.2 (2017-04-04)
502 ------------------
503
504 - Fixed change log.
505
506
507 0.5.1 (2017-04-04)
508 ------------------
509
510 - `Pull #13`_: Add equality methods to `PathSpec` and `RegexPattern`.
511
512 .. _`Pull #13`: https://github.com/cpburnz/python-pathspec/pull/13
513
514
515 0.5.0 (2016-08-22)
516 ------------------
517
518 - `Issue #12`_: Add `PathSpec.match_file()`.
519 - Renamed `gitignore.GitIgnorePattern` to `patterns.gitwildmatch.GitWildMatchPattern`.
520 - Deprecated `gitignore.GitIgnorePattern`.
521
522 .. _`Issue #12`: https://github.com/cpburnz/python-pathspec/issues/12
523
524
525 0.4.0 (2016-07-15)
526 ------------------
527
528 - `Issue #11`_: Support converting patterns into regular expressions without compiling them.
529 - API change: Subclasses of `RegexPattern` should implement `pattern_to_regex()`.
530
531 .. _`Issue #11`: https://github.com/cpburnz/python-pathspec/issues/11
532
533
534 0.3.4 (2015-08-24)
535 ------------------
536
537 - `Pull #7`_: Fixed non-recursive links.
538 - `Pull #8`_: Fixed edge cases in gitignore patterns.
539 - `Pull #9`_: Fixed minor usage documentation.
540 - Fixed recursion detection.
541 - Fixed trivial incompatibility with Python 3.2.
542
543 .. _`Pull #7`: https://github.com/cpburnz/python-pathspec/pull/7
544 .. _`Pull #8`: https://github.com/cpburnz/python-pathspec/pull/8
545 .. _`Pull #9`: https://github.com/cpburnz/python-pathspec/pull/9
546
547
548 0.3.3 (2014-11-21)
549 ------------------
550
551 - Improved documentation.
552
553
554 0.3.2 (2014-11-08)
555 ------------------
556
557 - `Pull #5`_: Use tox for testing.
558 - `Issue #6`_: Fixed matching Windows paths.
559 - Improved documentation.
560 - API change: `spec.match_tree()` and `spec.match_files()` now return iterators instead of sets.
561
562 .. _`Pull #5`: https://github.com/cpburnz/python-pathspec/pull/5
563 .. _`Issue #6`: https://github.com/cpburnz/python-pathspec/issues/6
564
565
566 0.3.1 (2014-09-17)
567 ------------------
568
569 - Updated README.
570
571
572 0.3.0 (2014-09-17)
573 ------------------
574
575 - `Pull #3`_: Fixed trailing slash in gitignore patterns.
576 - `Pull #4`_: Fixed test for trailing slash in gitignore patterns.
577 - Added registered patterns.
578
579 .. _`Pull #3`: https://github.com/cpburnz/python-pathspec/pull/3
580 .. _`Pull #4`: https://github.com/cpburnz/python-pathspec/pull/4
581
582
583 0.2.2 (2013-12-17)
584 ------------------
585
586 - Fixed setup.py.
587
588
589 0.2.1 (2013-12-17)
590 ------------------
591
592 - Added tests.
593 - Fixed comment gitignore patterns.
594 - Fixed relative path gitignore patterns.
595
596
597 0.2.0 (2013-12-07)
598 ------------------
599
600 - Initial release.
601