cpython/Lib
Zachary Ware df935b5f0b
[3.8] bpo-37936: Systematically distinguish rooted vs. unrooted in .gitignore (GH-15823) (GH-15900)
A root cause of bpo-37936 is that it's easy to write a .gitignore
rule that's intended to apply to a specific file (e.g., the
`pyconfig.h` generated by `./configure`) but actually applies to all
similarly-named files in the tree (e.g., `PC/pyconfig.h`.)

Specifically, any rule with no non-trailing slashes is applied in an
"unrooted" way, to files anywhere in the tree.  This means that if we
write the rules in the most obvious-looking way, then

 * for specific files we want to ignore that happen to be in
   subdirectories (like `Modules/config.c`), the rule will work
   as intended, staying "rooted" to the top of the tree; but

 * when a specific file we want to ignore happens to be at the root of
   the repo (like `platform`), then the obvious rule (`platform`) will
   apply much more broadly than intended: if someone tries to add a
   file or directory named `platform` somewhere else in the tree, it
   will unexpectedly get ignored.

That's surprising behavior that can make the .gitignore file's
behavior feel finicky and unpredictable.

To avoid it, we can simply always give a rule "rooted" behavior when
that's what's intended, by systematically using leading slashes.

Further, to help make the pattern obvious when looking at the file and
minimize any need for thinking about the syntax when adding new rules:
separate the rules into one group for each type, with brief comments
identifying them.

For most of these rules it's clear whether they're meant to be rooted
or unrooted, but in a handful of cases I've only guessed.  In that
case the safer default (the choice that won't hide information) is the
narrower, rooted meaning, with a leading slash.  If for some of these
the unrooted meaning is desired after all, it'll be easy to move them
to the unrooted section at the top.

(cherry picked from commit 455122a009)

Co-authored-by: Greg Price <gnprice@gmail.com>
2019-09-11 11:31:12 +01:00
..
asyncio bpo-38066: Hide internal Stream methods (GH-15762) 2019-09-10 06:44:32 -07:00
collections bpo-36582: Make collections.UserString.encode() return bytes, not str (GH-13138) (GH-15557) 2019-08-27 21:59:54 -07:00
concurrent Fix typo in Lib/concurrent/futures/thread.py (GH-13953) 2019-06-15 05:02:34 -07:00
ctypes bpo-37140: Fix StructUnionType_paramfunc() (GH-15612) 2019-08-30 05:50:44 -07:00
curses bpo-36542: Allow to overwrite the signature for Python functions. (GH-12705) 2019-05-06 22:40:27 +03:00
dbm bpo-36232: Improve error message on dbm.open() when the db doesn't exist (GH-12060) 2019-04-29 16:23:28 -07:00
distutils bpo-38088: Fixes distutils not finding vcruntime140.dll with only v142 toolset installed (GH-15849) 2019-09-10 15:42:26 +01:00
email [3.8] bpo-37764: Fix infinite loop when parsing unstructured email headers. (GH-15239) (GH-15686) 2019-09-04 18:20:40 -07:00
encodings Fix typos in docs and docstrings (GH-13745) 2019-06-03 01:12:33 +02:00
ensurepip bpo-37664: Update ensurepip bundled wheels, again (GH-15483) 2019-08-26 12:57:57 -07:00
html
http bpo-26589: Add http status code 451 (GH-15413) (GH-15436) 2019-08-23 10:56:44 -07:00
idlelib bpo-38077: IDLE no longer adds 'argv' to the user namespace (GH-15818) 2019-09-09 20:29:01 -07:00
importlib [3.8] bpo-38086: Sync importlib.metadata with importlib_metadata 0.21. (GH-15840) (#15861) 2019-09-10 15:58:29 +01:00
json json.tool: use stdin and stdout in default cmdlne arguments (GH-11992) 2019-05-14 18:52:42 +02:00
lib2to3 closes bpo-37675: Use pkgutil.iter_modules to find fixers in a package rather than listdir. (14942) 2019-07-24 17:00:39 -07:00
logging Fix extraneous whitespace in QueueListener.prepare (GH-13803) 2019-06-04 16:20:17 +01:00
msilib bpo-12639: msilib.Directory.start_component() fails if *keyfile* is not None (GH-13688) 2019-05-31 09:43:13 -07:00
multiprocessing Fix typos mostly in comments, docs and test names (GH-15209) 2019-08-30 13:42:54 -07:00
pydoc_data Python 3.8.0b4 2019-08-29 23:59:20 +02:00
site-packages
sqlite3 closes bpo-37347: Fix refcount problem in sqlite3. (GH-14268) 2019-07-12 20:33:53 -07:00
test [3.8] bpo-37936: Systematically distinguish rooted vs. unrooted in .gitignore (GH-15823) (GH-15900) 2019-09-11 11:31:12 +01:00
tkinter Fix typos mostly in comments, docs and test names (GH-15209) 2019-08-30 13:42:54 -07:00
turtledemo Fix typos in docs and docstrings (GH-13745) 2019-06-03 01:12:33 +02:00
unittest bpo-37251: Removes __code__ check from _is_async_obj. (GH-15830) 2019-09-10 06:16:00 -07:00
urllib bpo-35922: Fix RobotFileParser when robots.txt has no relevant crawl delay or request rate (GH-11791) 2019-06-16 00:07:54 -07:00
venv [3.8] bpo-37354: Make Powershell Activate.ps1 script static to allow for signing (GH-14967) 2019-08-12 14:09:26 -07:00
wsgiref bpo-8138: Initialize wsgiref's SimpleServer as single-threaded (GH-12977) 2019-05-24 20:24:42 +03:00
xml bpo-36831: Do not apply default namespace to unprefixed attributes in ElementPath. (#13201) 2019-05-09 07:22:47 +02:00
xmlrpc bpo-36793: Remove unneeded __str__ definitions. (GH-13081) 2019-05-06 22:29:40 +03:00
__future__.py bpo-35526: make __future__.barry_as_FLUFL mandatory for Python 4.0 (#11218) 2018-12-19 08:19:39 -08:00
__phello__.foo.py
_bootlocale.py bpo-29240: PEP 540: Add a new UTF-8 Mode (#855) 2017-12-13 12:29:09 +01:00
_collections_abc.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
_compat_pickle.py [3.8] bpo-37757: Disallow PEP 572 cases that expose implementation details (GH-15491) 2019-08-26 00:41:47 +10:00
_compression.py
_dummy_thread.py bpo-36688: Adding an implementation of RLock in _dummy_thread (GH-12943) 2019-06-17 01:34:27 -07:00
_markupbase.py
_osx_support.py bpo-35257: Avoid leaking LTO linker flags into distutils (GH-10900) 2018-12-19 18:19:01 +01:00
_py_abc.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
_pydecimal.py bpo-36793: Remove unneeded __str__ definitions. (GH-13081) 2019-05-06 22:29:40 +03:00
_pyio.py bpo-36743: __get__ is sometimes called without the owner argument (GH-12992) (GH-15589) 2019-08-29 02:02:51 -07:00
_sitebuiltins.py
_strptime.py bpo-33541: Remove unused __pad function (GH-4377) 2018-05-20 13:42:30 -04:00
_threading_local.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
_weakrefset.py bpo-36949: Implement __repr__ on WeakSet (GH-13415) 2019-05-20 10:01:07 -07:00
abc.py bpo-35609: Remove examples for deprecated decorators in the abc module. (GH-11355) 2018-12-31 09:56:21 +02:00
aifc.py bpo-32056: Improve exceptions in aifc, wave and sunau. (GH-5951) 2018-03-18 09:55:53 +02:00
antigravity.py Change the xkcd link in comment over https. (GH-5452) 2018-09-13 22:45:00 -07:00
argparse.py [3.8] bpo-29553: Fix ArgumentParser.format_usage() for mutually exclusive groups (GH-14976) (GH-15494) (GH-15624) 2019-08-30 15:25:38 -07:00
ast.py [3.8] bpo-37950: Fix ast.dump() when call with incompletely initialized node. (GH-15510) (GH-15582) 2019-08-29 10:50:28 +03:00
asynchat.py
asyncore.py bpo-36793: Remove unneeded __str__ definitions. (GH-13081) 2019-05-06 22:29:40 +03:00
base64.py bpo-34164: Fix handling of incorrect padding in base64.b32decode(). (GH-8351) 2018-07-24 12:52:51 +03:00
bdb.py Fix typos mostly in comments, docs and test names (GH-15209) 2019-08-30 13:42:54 -07:00
binhex.py
bisect.py remove duplicate code in biscet (GH-1270) 2019-04-08 17:01:09 +09:00
bz2.py bpo-35128: Fix spacing issues in warning.warn() messages. (GH-10268) 2018-11-01 12:33:35 +02:00
calendar.py bpo-28292: Mark calendar.py helper functions as private. (GH-15113) (GH-15116) 2019-08-04 13:34:56 -07:00
cgi.py bpo-35028: cgi: Fix max_num_fields off by one error (GH-9973) 2018-10-23 01:14:35 -07:00
cgitb.py bpo-33311: Do not display parameters displayed in parentheses for module call. (GH-6677) 2018-05-09 12:39:32 +03:00
chunk.py
cmd.py
code.py
codecs.py bpo-33361: Fix bug with seeking in StreamRecoders (GH-8278) 2019-05-31 22:44:00 +03:00
codeop.py
colorsys.py
compileall.py bpo-36786: Run compileall in parallel during "make install" (GH-13078) 2019-05-15 23:45:18 +02:00
configparser.py fix typo in configparser doc (GH-12154) 2019-03-03 18:23:19 -08:00
contextlib.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
contextvars.py bpo-32436: Implement PEP 567 (#5027) 2018-01-22 19:11:18 -05:00
copy.py bpo-11572: Make minor improvements to copy module (GH-8208) 2018-07-09 23:14:54 +03:00
copyreg.py bpo-33138: Change standard error message for non-pickleable and non-copyable types. (GH-6239) 2018-10-31 02:28:07 +02:00
cProfile.py bpo-36542: Allow to overwrite the signature for Python functions. (GH-12705) 2019-05-06 22:40:27 +03:00
crypt.py bpo-25172: Raise appropriate ImportError msg when crypt module used on Windows (GH-15149) 2019-08-13 14:27:14 -07:00
csv.py bpo-27497: Add return value to csv.DictWriter.writeheader (GH-12306) 2019-05-10 03:50:11 +02:00
dataclasses.py bpo-37868: Improve is_dataclass for instances. (GH-15325) 2019-08-19 22:59:21 -07:00
datetime.py bpo-37642: Update acceptable offsets in timezone (GH-14878) (#15227) 2019-08-15 15:08:57 -04:00
decimal.py
difflib.py Fix difflib ? hint in diff output when dealing with tabs (GH-15201) 2019-08-21 12:18:26 -07:00
dis.py bpo-36540: PEP 570 -- Implementation (GH-12701) 2019-04-29 13:36:57 +01:00
doctest.py bpo-36793: Remove unneeded __str__ definitions. (GH-13081) 2019-05-06 22:29:40 +03:00
dummy_threading.py
enum.py bpo-35899: Fix Enum handling of empty and weird strings (GH-11891) 2019-03-03 14:09:11 -08:00
filecmp.py
fileinput.py bpo-37014: Update docstring and Documentation of fileinput.FileInput(). (GH-13545) 2019-06-02 23:01:49 +02:00
fnmatch.py bpo-32775: Fix regular expression warnings in fnmatch. (#5583) 2018-02-09 13:30:19 +02:00
formatter.py
fractions.py bpo-37819: Add Fraction.as_integer_ratio() (GH-15212) (GH-15215) 2019-08-11 15:02:23 -07:00
ftplib.py bpo-37390: Add audit event table to documentations (GH-14406) 2019-06-27 11:07:16 -07:00
functools.py bpo-36743: __get__ is sometimes called without the owner argument (GH-12992) (GH-15589) 2019-08-29 02:02:51 -07:00
genericpath.py bpo-30974: Change os.path.samefile docstring to match docs (GH-7337) 2019-08-02 16:04:53 -07:00
getopt.py
getpass.py
gettext.py bpo-36239: Skip comments in gettext infos (GH-12255) 2019-05-09 16:22:15 +02:00
glob.py bpo-37363: Add audit events for a range of modules (GH-14301) 2019-06-24 09:09:47 -07:00
gzip.py bpo-6584: Add a BadGzipFile exception to the gzip module. (GH-13022) 2019-05-13 10:50:52 +03:00
hashlib.py bpo-33729: Fix issues with arguments parsing in hashlib. (GH-8346) 2018-07-31 09:50:16 +03:00
heapq.py bpo-29984: Improve 'heapq' test coverage (GH-992) 2019-05-31 21:13:57 -07:00
hmac.py bpo-33604: Remove deprecated HMAC default value marked for removal in 3.8 (GH-7063) 2018-09-10 11:10:01 -07:00
imaplib.py bpo-37390: Add audit event table to documentations (GH-14406) 2019-06-27 11:07:16 -07:00
imghdr.py
imp.py closes bpo-34056: Always return bytes from _HackedGetData.get_data(). (GH-8130) 2018-07-06 20:41:06 -07:00
inspect.py bpo-38059: Using sys.exit() over exit() in inspect.py (GH-15666) 2019-09-09 08:20:36 -07:00
io.py bpo-36842: Implement PEP 578 (GH-12613) 2019-05-23 08:45:22 -07:00
ipaddress.py bpo-36845: validate integer network prefix when constructing IP networks (GH-13298) 2019-05-14 19:32:59 +09:00
keyword.py bpo-36143: Regenerate Lib/keyword.py from the Grammar and Tokens file using pgen (GH-12456) 2019-03-25 22:01:12 +00:00
linecache.py
locale.py bpo-18378: Recognize "UTF-8" as a valid name in locale._parse_localename (GH-14736) 2019-08-28 21:56:00 -07:00
lzma.py
mailbox.py bpo-31522: mailbox.get_string: pass from_ parameter to get_bytes (#9857) 2018-10-18 20:21:47 -04:00
mailcap.py
mimetypes.py bpo-22347: Update mimetypes.guess_type to allow proper parsing of URLs (GH-15522) 2019-09-04 17:54:59 -07:00
modulefinder.py bpo-37032: Add CodeType.replace() method (GH-13542) 2019-05-24 23:57:23 +02:00
netrc.py bpo-28334: netrc() now uses expanduser() to find .netrc file (GH-4537) 2017-11-25 13:37:22 +03:00
nntplib.py bpo-37390: Add audit event table to documentations (GH-14406) 2019-06-27 11:07:16 -07:00
ntpath.py bpo-9949: Call normpath() in realpath() and avoid unnecessary prefixes (GH-15376) 2019-08-21 17:23:38 -07:00
nturl2path.py
numbers.py
opcode.py bpo-33041: Rework compiling an "async for" loop. (#6142) 2018-03-23 14:34:35 +02:00
operator.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
optparse.py bpo-34605: Avoid master/slave terms (GH-9101) 2018-09-07 17:30:33 +02:00
os.py closes bpo-25461: Update os.walk() docstring to match the online docs. (GH-11836) 2019-09-10 06:21:57 -07:00
pathlib.py bpo-34775: Return NotImplemented in PurePath division. (GH-9509) (GH-15172) 2019-08-29 01:05:59 -04:00
pdb.py bpo-36250: ignore ValueError from signal in non-main thread (GH-12251) 2019-09-09 04:25:21 -07:00
pickle.py bpo-37210: Fix pure Python pickle when _pickle is unavailable (GH-14016) 2019-06-13 05:28:11 -07:00
pickletools.py bpo-36785: PEP 574 implementation (GH-7076) 2019-05-26 17:10:09 +02:00
pipes.py
pkgutil.py closes bpo-31650: PEP 552 (Deterministic pycs) implementation (#4575) 2017-12-09 10:26:52 -08:00
platform.py bpo-36766: Typos in docs and code comments (GH-13116) 2019-05-06 14:57:17 -04:00
plistlib.py Clarify that plistlib's load and dump functions take a binary file object (GH-9825) 2019-07-14 02:25:43 -07:00
poplib.py bpo-37390: Add audit event table to documentations (GH-14406) 2019-06-27 11:07:16 -07:00
posixpath.py bpo-35755: Remove current directory from posixpath.defpath (GH-11586) 2019-04-17 17:05:30 +02:00
pprint.py bpo-30670: Add pp function to the pprint module (GH-11769) 2019-03-22 10:22:20 -07:00
profile.py bpo-36542: Allow to overwrite the signature for Python functions. (GH-12705) 2019-05-06 22:40:27 +03:00
pstats.py Fix typos in docs and docstrings (GH-13745) 2019-06-03 01:12:33 +02:00
pty.py
py_compile.py bpo-22640: Add silent mode to py_compile.compile() (GH-12976) 2019-05-28 19:29:04 +03:00
pyclbr.py Fix typos in docs and docstrings (GH-13745) 2019-06-03 01:12:33 +02:00
pydoc.py bpo-36045: builtins.help() now prefixes async for async functions (GH-12010) 2019-05-24 04:38:01 -07:00
queue.py bpo-37394: Fix pure Python implementation of the queue module (GH-14351) 2019-06-24 19:14:37 -07:00
quopri.py
random.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
re.py bpo-36548: Improve the repr of re flags. (GH-12715) 2019-05-31 10:39:47 +03:00
reprlib.py
rlcompleter.py
runpy.py
sched.py
secrets.py
selectors.py
shelve.py Fix misleading docsting of shelve.open(). (GH-6427) 2018-04-09 17:16:01 +03:00
shlex.py bpo-28595: Allow shlex whitespace_split with punctuation_chars (GH-2071) 2019-06-01 20:09:22 +01:00
shutil.py Clarify that shutil's copy functions can accept path-like values (GH-15141) 2019-09-09 10:18:51 -07:00
signal.py bpo-34282: Fix Enum._convert shadowing members named _convert (GH-8568) 2018-09-12 10:28:53 -07:00
site.py bpo-37369: Fix initialization of sys members when launched via an app container (GH-14467) 2019-06-29 14:28:59 -07:00
smtpd.py
smtplib.py bpo-37390: Add audit event table to documentations (GH-14406) 2019-06-27 11:07:16 -07:00
sndhdr.py bpo-31985: Deprecate openfp in aifc, sunau, and wave (#4344) 2017-11-10 11:38:25 -05:00
socket.py bpo-11953: Extend table of Windows WSA* error codes (GH-15004) 2019-09-09 03:36:04 -07:00
socketserver.py Fix typo in socketserver docstring (GH-11252) 2018-12-21 14:22:09 -08:00
sre_compile.py Simplify flags checks in sre_compile.py. (GH-9718) 2018-10-05 20:53:45 +03:00
sre_constants.py bpo-36793: Remove unneeded __str__ definitions. (GH-13081) 2019-05-06 22:29:40 +03:00
sre_parse.py bpo-37723: Fix performance regression on regular expression parsing. (GH-15030) 2019-07-31 13:22:09 -07:00
ssl.py bpo-37463: match_hostname requires quad-dotted IPv4 (GH-14499) 2019-07-02 14:06:18 -07:00
stat.py closes bpo-34353: Add sockets to stat.filemode fallback python implementation. (GH-8703) 2018-08-09 22:12:08 -07:00
statistics.py [3.8] bpo-36018: Address more reviewer feedback (GH-15733) (GH-15734) 2019-09-08 18:40:06 -07:00
string.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
stringprep.py
struct.py
subprocess.py bpo-37424: Avoid a hang in subprocess.run timeout output capture (GH-14490) 2019-09-11 03:05:14 -07:00
sunau.py bpo-32056: Improve exceptions in aifc, wave and sunau. (GH-5951) 2018-03-18 09:55:53 +02:00
symbol.py bpo-35766: Merge typed_ast back into CPython (GH-11645) 2019-01-31 12:40:27 +01:00
symtable.py bpo-34983: Expose symtable.Symbol.is_nonlocal() in the symtable module (GH-9872) 2018-10-20 01:46:00 +01:00
sysconfig.py bpo-37201: fix test_distutils failures for Windows ARM64 (GH-13902) 2019-06-12 10:44:29 -07:00
tabnanny.py
tarfile.py Add missing docstrings for TarInfo objects (#12555) 2019-03-27 13:16:34 -07:00
telnetlib.py bpo-37363: Add audit events for a range of modules (GH-14301) 2019-06-24 09:09:47 -07:00
tempfile.py bpo-37363: Add audit events for a range of modules (GH-14301) 2019-06-24 09:09:47 -07:00
textwrap.py bpo-30754: Document textwrap.dedent blank line behavior. (GH-14469) 2019-06-29 21:40:41 -07:00
this.py
threading.py Improve threading.daemon docstring (GH-14278) 2019-06-23 12:06:21 -07:00
timeit.py bpo-28240: timeit: Update repeat() doc (GH-7419) 2018-06-06 17:55:18 +02:00
token.py bpo-35975: Support parsing earlier minor versions of Python 3 (GH-12086) 2019-03-07 12:38:08 -08:00
tokenize.py bpo-5028: Fix up rest of documentation for tokenize documenting line (GH-13686) 2019-05-30 15:06:32 -07:00
trace.py Add option to trace to run modules (GH-5134) 2019-06-01 14:49:09 +10:00
traceback.py bpo-26502: Implement FrameSummary.__len__() (GH-8632) 2018-09-10 10:02:33 -07:00
tracemalloc.py bpo-32121: Add most_recent_first parameter to tracemalloc.Traceback.format (#4534) 2017-11-30 00:05:07 +01:00
tty.py
turtle.py Fix typos in docs and docstrings (GH-13745) 2019-06-03 01:12:33 +02:00
types.py bpo-37032: Add CodeType.replace() method (GH-13542) 2019-05-24 23:57:23 +02:00
typing.py bpo-37116: Use PEP 570 syntax for positional-only parameters. (GH-13700) 2019-06-01 11:00:15 +03:00
uu.py bpo-33687: Fix call to os.chmod() in uu.decode() (GH-7282) 2019-01-17 17:15:53 +03:00
uuid.py Fix typos mostly in comments, docs and test names (GH-15209) 2019-08-30 13:42:54 -07:00
warnings.py bpo-35178: Fix warnings._formatwarnmsg() (GH-12033) 2019-03-01 18:17:55 +01:00
wave.py bpo-32056: Improve exceptions in aifc, wave and sunau. (GH-5951) 2018-03-18 09:55:53 +02:00
weakref.py bpo-38006: Avoid closure in weakref.WeakValueDictionary (GH-15641) 2019-09-09 09:24:16 -07:00
webbrowser.py bpo-37363: Add audit events for a range of modules (GH-14301) 2019-06-24 09:09:47 -07:00
xdrlib.py
zipapp.py
zipfile.py bpo-37772: fix zipfile.Path.iterdir() outputs (GH-15170) (#15461) 2019-08-24 12:03:52 -04:00
zipimport.py bpo-36842: Implement PEP 578 (GH-12613) 2019-05-23 08:45:22 -07:00