René's URL Explorer Experiment


Title: GH-116380: Speed up `glob.glob()` by removing some system calls by barneygale · Pull Request #116392 · python/cpython · GitHub

Open Graph Title: GH-116380: Speed up `glob.glob()` by removing some system calls by barneygale · Pull Request #116392 · python/cpython

X Title: GH-116380: Speed up `glob.glob()` by removing some system calls by barneygale · Pull Request #116392 · python/cpython

Description: Speed up glob.glob() and glob.iglob() by reducing the number of system calls made. This unifies the implementations of globbing in the glob and pathlib modules. Depends on #117589 #117732 Filtered recursive walk Expanding a recursive ** segment entails walking the entire directory tree, and so any subsequent pattern segments (except special segments) can be evaluated by filtering the expanded paths through a regex. For example, glob.glob("foo/**/*.py", recursive=True) recursively walks foo/ with os.scandir(), and then filters paths through a regex based on "**/*.py, with no further filesystem access needed. This solves #104269 as a side-effect. Tracking path existence We store a flag alongside each path indicating whether the path is guaranteed to exist. As we process the pattern: Certain special pattern segments ("", "." and "..") leave the flag unchanged Literal pattern segments (e.g. foo/bar) set the flag to false Wildcard pattern segments (e.g. */*.py) set the flag to true (because children are found via os.scandir()) Recursive pattern segments (e.g. **) leave the flag unchanged for the root path, and set it to true for descendants discovered via os.scandir(). If the flag is false at the end, we call lstat() on each path to filter out missing paths. Minor speed-ups We: Exclude paths that don't match a non-terminal non-recursive wildcard pattern prior to calling is_dir(). Use a stack rather than recursion to implement recursive wildcards. Addresses #89727 for the glob module. Pre-compile regular expressions and pre-join literal pattern segments. Convert to/from bytes (a minor use-case) in iglob() rather than supporting bytes throughout. This particularly simplifies the code needed to handle relative bytes paths with dir_fd. Avoid calling os.path.join(); instead we keep paths in a normalized form and append trailing slashes when needed. Avoid calling os.path.normcase(); instead we use case-insensitive regex matching. Implementation notes Much of this functionality is already present in pathlib's implementation of globbing. The specific additions we make are: Support for dir_fd Support for include_hidden Support for generating paths relative to root_dir Results Speedups via python -m timeit -s "from glob import glob" "glob(pattern, recursive=True, include_hidden=True)" from CPython source directory on Linux: pattern speedup Lib/* 1.87x Lib/*/ 1.85x Lib/*.py 1.3x Lib/** 5.62x Lib/**/ 1.23x Lib/**/* 1.92x Lib/**/** 17x Lib/**/*/ 2.15x Lib/**/*.py 1.79x Lib/**/__init__.py 1.03x Lib/**/*/*.py 2.41x Lib/**/*/__init__.py 1.76x Issue: gh-116380

Open Graph Description: Speed up glob.glob() and glob.iglob() by reducing the number of system calls made. This unifies the implementations of globbing in the glob and pathlib modules. Depends on #117589 #117732 Filtere...

X Description: Speed up glob.glob() and glob.iglob() by reducing the number of system calls made. This unifies the implementations of globbing in the glob and pathlib modules. Depends on #117589 #117732 Filtere...

Opengraph URL: https://github.com/python/cpython/pull/116392

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:cf369cdc-eeb2-ff1c-b281-62ceebb8ed61
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idAF24:39E51F:C0930B:FB2A6B:696AFDBA
html-safe-nonce7171ec065cd4630c438c8d27b7e064140a397017960db8d271488928aaa66821
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBRjI0OjM5RTUxRjpDMDkzMEI6RkIyQTZCOjY5NkFGREJBIiwidmlzaXRvcl9pZCI6IjQyMzU5NTMxNTAwNDE0NTYwNTgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac4c224b5696805720a0f394d65fbc35222d167d02e623c62db0fc6b3441d5f7a4
hovercard-subject-tagpull_request:1757839959
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/python/cpython/pull/116392/files
twitter:imagehttps://avatars.githubusercontent.com/u/960340?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/960340?s=400&v=4
og:image:altSpeed up glob.glob() and glob.iglob() by reducing the number of system calls made. This unifies the implementations of globbing in the glob and pathlib modules. Depends on #117589 #117732 Filtere...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None5f99f7c1d70f01da5b93e5ca90303359738944d8ab470e396496262c66e60b8d
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/python/cpython git https://github.com/python/cpython.git
octolytics-dimension-user_id1525981
octolytics-dimension-user_loginpython
octolytics-dimension-repository_id81598961
octolytics-dimension-repository_nwopython/cpython
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id81598961
octolytics-dimension-repository_network_root_nwopython/cpython
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release82560a55c6b2054555076f46e683151ee28a19bc
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/python/cpython/pull/116392/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F116392%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F116392%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=python%2Fcpython
Reloadhttps://github.com/python/cpython/pull/116392/files
Reloadhttps://github.com/python/cpython/pull/116392/files
Reloadhttps://github.com/python/cpython/pull/116392/files
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
Notifications https://github.com/login?return_to=%2Fpython%2Fcpython
Fork 33.9k https://github.com/login?return_to=%2Fpython%2Fcpython
Star 71.1k https://github.com/login?return_to=%2Fpython%2Fcpython
Code https://github.com/python/cpython
Issues 5k+ https://github.com/python/cpython/issues
Pull requests 2.1k https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects 31 https://github.com/python/cpython/projects
Security Uh oh! There was an error while loading. Please reload this page. https://github.com/python/cpython/security
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
Insights https://github.com/python/cpython/pulse
Code https://github.com/python/cpython
Issues https://github.com/python/cpython/issues
Pull requests https://github.com/python/cpython/pulls
Actions https://github.com/python/cpython/actions
Projects https://github.com/python/cpython/projects
Security https://github.com/python/cpython/security
Insights https://github.com/python/cpython/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fpython%2Fcpython%2Fissues%2Fnew%2Fchoose
barneygalehttps://github.com/barneygale
python:mainhttps://github.com/python/cpython/tree/main
barneygale:gh-116380https://github.com/barneygale/cpython/tree/gh-116380
Conversation 91 https://github.com/python/cpython/pull/116392
Commits 101 https://github.com/python/cpython/pull/116392/commits
Checks 37 https://github.com/python/cpython/pull/116392/checks
Files changed https://github.com/python/cpython/pull/116392/files
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
GH-116380: Speed up glob.glob() by removing some system calls https://github.com/python/cpython/pull/116392/files#top
Show all changes 101 commits https://github.com/python/cpython/pull/116392/files
db3c620 GH-116380: Make `glob.glob()` twice as fast barneygale Mar 5, 2024 https://github.com/python/cpython/pull/116392/commits/db3c62043ce6f30b0dd0dbb4ae334f15b105bdb3
9e1f059 Use `os.listdir()` if we don't need to check entry type. barneygale Mar 5, 2024 https://github.com/python/cpython/pull/116392/commits/9e1f059760355fb72cebde0cb066d571886374cc
10432df A few small speedups. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/10432df36bc6d5f4c509b63f670349f7a6a0b0e3
7e389e2 Simplify prefix removal barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/7e389e21fe3cfaa5297284346387b4d12b520d46
8680a0a Re-implement `glob0()`, `glob1()`, and `has_magic()`. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/8680a0a8e96f3244c9d6fb0063e18df81df2000d
3bf3124 Fix errant `StopIteration`. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/3bf3124f8145141c85ac69be2e374e16663d177d
f8fb992 Skip compiling pattern for consecutive `**` segments. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/f8fb9923972450bc6d379d81bc0f55ae7f155ef2
50ef080 Clarify regex/path building in literal and recursive selectors. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/50ef080501f5eee1480822a6a1a7383398770414
ccefacd Simplify code to ignore root_dir. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/ccefacd61d6c092ae3765df0d236423b72c3eda1
fa951f6 Fix possible Windows separator issue. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/fa951f6f3301c0b9a8c23467df1e51ff74849cbf
0aec12c Address some review feedback. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/0aec12cf00b3e1786d34f800c972f1a3c7565ed2
72691ba Use assignment expressions in a couple of places barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/72691baa60ae945e98c0c419817b00a1a221d964
c58dd21 Replace lambda with `operator.not_`. barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/c58dd21c0c06984bcde55061081192dd91bb4032
c361ec9 Merge branch 'main' into gh-116380 barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/c361ec9ecfbb56a3124be3e867dfc57d382c3b13
22b30db Speed up `_add_trailing_slash()` barneygale Mar 6, 2024 https://github.com/python/cpython/pull/116392/commits/22b30db6dad43a3d81459b4a16b6febf516af146
83b70bd Speed up `select_literal()` barneygale Mar 7, 2024 https://github.com/python/cpython/pull/116392/commits/83b70bd5885a1a493ff50a443ecbb44e80962314
1d32d14 Speed up `select_recursive()` barneygale Mar 7, 2024 https://github.com/python/cpython/pull/116392/commits/1d32d14517e39b28d0fecd6bab801733cf1566ee
1e5aacc Merge branch 'main' into gh-116380 barneygale Mar 17, 2024 https://github.com/python/cpython/pull/116392/commits/1e5aacce84bab4028d6eee222449e0ca7173691c
a038bb8 Merge branch 'main' into gh-116380 barneygale Mar 18, 2024 https://github.com/python/cpython/pull/116392/commits/a038bb8a12323acfe8556b763718f832ad342364
f1440a9 Cache compiled patterns rather than selectors. barneygale Mar 18, 2024 https://github.com/python/cpython/pull/116392/commits/f1440a9a5a5b744b2c77c8da8201e780a4a2b170
9c64643 Remove a bit of code duplication. barneygale Mar 18, 2024 https://github.com/python/cpython/pull/116392/commits/9c64643d139daf1e572a86f58a2da05a98705cc1
b0e8ba6 Fix stray newline barneygale Mar 19, 2024 https://github.com/python/cpython/pull/116392/commits/b0e8ba67e09dee442e23796ef4a87da7a401f5ae
1b1233e Merge branch 'main' into gh-116380 barneygale Mar 22, 2024 https://github.com/python/cpython/pull/116392/commits/1b1233e9257c2e1b026cad983610556760da6059
0e02ec5 Remove tests for glob0 and glob1 barneygale Mar 28, 2024 https://github.com/python/cpython/pull/116392/commits/0e02ec516411f5714dfb12444315f5b4c969d44b
be4865e Add a bunch of comments explaining the more subtle parts. barneygale Mar 29, 2024 https://github.com/python/cpython/pull/116392/commits/be4865eaabe4f1493fb9b18fa36a6ee75b8eab4c
203e8ef Merge branch 'main' into gh-116380 barneygale Apr 1, 2024 https://github.com/python/cpython/pull/116392/commits/203e8ef2bd88e737c29a6a56df7a538867564dd7
13355a0 Clarify variable naming in iglob() barneygale Apr 3, 2024 https://github.com/python/cpython/pull/116392/commits/13355a056ca80c4c704be4fcf2b0b090de7b00ac
2e5cebd Use keyword arguments to pass True/False/None literals, for clarity. barneygale Apr 4, 2024 https://github.com/python/cpython/pull/116392/commits/2e5cebda195a1a6c8c721a9eddbd54673e7bbbd9
5eba2eb Speed up recursive globbing very slightly barneygale Apr 4, 2024 https://github.com/python/cpython/pull/116392/commits/5eba2eb75d697ec373515c708d802a94450cedf0
b0a99b7 Merge branch 'main' into gh-116380 barneygale Apr 5, 2024 https://github.com/python/cpython/pull/116392/commits/b0a99b7139ff481307cfe7e443d17b9aae8cc8d1
ad0ece8 Implement recursive wildcards with a stack barneygale Apr 5, 2024 https://github.com/python/cpython/pull/116392/commits/ad0ece8267aec349f4bb59016df63fcd6f55f799
cafe9be Add argument defaults, simplify code slightly. barneygale Apr 5, 2024 https://github.com/python/cpython/pull/116392/commits/cafe9be71a63818fd2bfd64339fca9ac2702781f
301d922 Also make rel_path optional barneygale Apr 5, 2024 https://github.com/python/cpython/pull/116392/commits/301d9221978608a23f85c74cdaa485bb790dbf6c
beb2507 Optimise _add_trailing_slash barneygale Apr 5, 2024 https://github.com/python/cpython/pull/116392/commits/beb2507002e2621d38e690b808df29d750dd23de
312c73a Remove use of os.listdir() -- doesn't generalise barneygale Apr 6, 2024 https://github.com/python/cpython/pull/116392/commits/312c73a5bea299a3c44107d1974db4f59fa04ac3
ae820e2 Add `_Globber` class; prepare for merger with pathlib globbing. barneygale Apr 6, 2024 https://github.com/python/cpython/pull/116392/commits/ae820e2c0cf6df1ee82ee363283612fb5dfb5f85
dcfe11d Unify with pathlib implementation \o/ barneygale Apr 6, 2024 https://github.com/python/cpython/pull/116392/commits/dcfe11d8089a26a186873f1153b7e69890fa2068
123a0f6 Use literal selector only if no case sensitivity preference is given. barneygale Apr 6, 2024 https://github.com/python/cpython/pull/116392/commits/123a0f6b05d4067aa537bf34a46b2e466d5e6089
0ed7b9c Fix a few tests barneygale Apr 6, 2024 https://github.com/python/cpython/pull/116392/commits/0ed7b9c1c67dca1e23ceb9d623383ec0bb69cbed
aceb85f Fix a few more tests. barneygale Apr 6, 2024 https://github.com/python/cpython/pull/116392/commits/aceb85fca7dfcc51aa713bd86804c922f5f6531a
b04de9d Merge commit '689ada79150f28b0053fa6c1fb646b75ab2cc200' into gh-116380 barneygale Apr 10, 2024 https://github.com/python/cpython/pull/116392/commits/b04de9d6284f7caa6be8195fd4a42846fa3c3866
3eb2d19 Merge branch 'main' into gh-116380 barneygale Apr 10, 2024 https://github.com/python/cpython/pull/116392/commits/3eb2d190b197c1eccbc5ba2c1bd1f1b918d3c1b1
8a15db0 Fix select() argument order. barneygale Apr 10, 2024 https://github.com/python/cpython/pull/116392/commits/8a15db0ed82ce5d53c79bcbdd600495b0be1f2ca
7eb3e61 Merge branch 'main' into gh-116380 barneygale Apr 12, 2024 https://github.com/python/cpython/pull/116392/commits/7eb3e618a9d4055b8d83bb175b886f713c9049fb
316ea56 Merge branch 'main' into gh-116380 barneygale May 3, 2024 https://github.com/python/cpython/pull/116392/commits/316ea56a46fbbc2fb3ab993038b6a69af5873273
2018027 Support `include_hidden` and `dir_fd` in `pathlib._glob`. barneygale May 3, 2024 https://github.com/python/cpython/pull/116392/commits/2018027819ac8540678ea488de69e48878e4607b
2f21626 Fix stray newline barneygale May 3, 2024 https://github.com/python/cpython/pull/116392/commits/2f216260c29112dd4c48f0aee4fa640c0dec998b
339df68 Update Lib/pathlib/_glob.py barneygale May 4, 2024 https://github.com/python/cpython/pull/116392/commits/339df689b8354ebb863401df8a7e6568f176024e
28aa95f Fix docs barneygale May 4, 2024 https://github.com/python/cpython/pull/116392/commits/28aa95f2d3071305b48473e740aee5bcc180650b
abcb1f8 Test for unique results barneygale May 4, 2024 https://github.com/python/cpython/pull/116392/commits/abcb1f86689715f4b72e4c85f62b0bf9ef653137
71387a6 Spacing barneygale May 4, 2024 https://github.com/python/cpython/pull/116392/commits/71387a6a8b7ea853fcdf650d1290d76dc3c9ba3e
de22de6 Merge branch 'main' into gh-116380 barneygale May 5, 2024 https://github.com/python/cpython/pull/116392/commits/de22de640cebfb684c92175eded44d68cc9c8cf8
8b08374 Merge branch 'main' into gh-116380 barneygale May 7, 2024 https://github.com/python/cpython/pull/116392/commits/8b08374fbdcbf0b8aaf7c3a7072154ba3456deb2
54efa7c Merge branch 'main' into gh-116380 barneygale May 8, 2024 https://github.com/python/cpython/pull/116392/commits/54efa7cfa64a8beddc6d2ffae734cd1e0df433cd
cf11922 Update whatsnew barneygale May 8, 2024 https://github.com/python/cpython/pull/116392/commits/cf119224528509e03e367ac4d25b51a2477f3b9b
6710924 Merge branch 'main' into gh-116380 barneygale May 14, 2024 https://github.com/python/cpython/pull/116392/commits/6710924bc87955cd683952f0ac22cc8a5670e21b
a547cd2 Merge branch 'main' into gh-116380 barneygale May 31, 2024 https://github.com/python/cpython/pull/116392/commits/a547cd21b9242614da7b6946da7397945b1554ec
14ae438 Close file descriptors when `recursive_selector` is finalized. barneygale May 31, 2024 https://github.com/python/cpython/pull/116392/commits/14ae438a1b149c3af1acc3b906f8faab6a1467a2
69d7a86 Make `iglob()` a generator. barneygale May 31, 2024 https://github.com/python/cpython/pull/116392/commits/69d7a86e759882509bfa685232833bd44afff5b9
3b84a1d Make `_iglob()` a generator. barneygale May 31, 2024 https://github.com/python/cpython/pull/116392/commits/3b84a1d6d5892e1e518c11a30ef87efc2b55626b
f9f9a8d Make `_relative_glob()` a generator. barneygale May 31, 2024 https://github.com/python/cpython/pull/116392/commits/f9f9a8de53d62090cae9adf53edb4092e527414f
24a9ee4 Simplify skipping empty string barneygale May 31, 2024 https://github.com/python/cpython/pull/116392/commits/24a9ee482cf7df8e25f3405cf93def09858d234e
d05d58d Merge branch 'main' into gh-116380 barneygale Jun 4, 2024 https://github.com/python/cpython/pull/116392/commits/d05d58d48ed6dff6cb9b29f13cfe2b1bf46a1a05
27c463e Merge branch 'main' into gh-116380 barneygale Jun 7, 2024 https://github.com/python/cpython/pull/116392/commits/27c463e9c369b47f327b75eb06bea67487d8bab6
a94f2a7 Make `_GlobberBase` fully abstract. barneygale Jun 7, 2024 https://github.com/python/cpython/pull/116392/commits/a94f2a7b4bf38aeaa0cd22d16c946b937aa20b64
d19bb89 Address review feedback barneygale Jun 9, 2024 https://github.com/python/cpython/pull/116392/commits/d19bb893415ad8e87ecffb69f99013fa71725262
1677588 Typo fix barneygale Jun 9, 2024 https://github.com/python/cpython/pull/116392/commits/1677588d6cca1b9af57548f318f8b58c8ea250c7
539f044 Speed up pattern parsing. barneygale Jun 9, 2024 https://github.com/python/cpython/pull/116392/commits/539f044976a9f03a38446017dcc1cf68cd06762d
70a1b42 Add test for globbing above recursion limit. barneygale Jun 12, 2024 https://github.com/python/cpython/pull/116392/commits/70a1b42dae159cf80273667c881620bf1115c1e9
1560712 Merge branch 'main' into gh-116380 barneygale Aug 26, 2024 https://github.com/python/cpython/pull/116392/commits/1560712082b1004c069a876754197b8d08cade47
099e86e Apply suggestions from code review barneygale Sep 1, 2024 https://github.com/python/cpython/pull/116392/commits/099e86e58252e95d5b72c86bfb566daed64ad318
ee76faf Test that `iglob().close()` closes file descriptors. barneygale Sep 1, 2024 https://github.com/python/cpython/pull/116392/commits/ee76fafa5af633c691dd057c0f9e19b451bc65b8
4cf8a4d Address some review feedback barneygale Sep 1, 2024 https://github.com/python/cpython/pull/116392/commits/4cf8a4d638788f1410e429978c30bbdd8e963a00
8a118a7 Merge branch 'main' into gh-116380 barneygale Oct 27, 2024 https://github.com/python/cpython/pull/116392/commits/8a118a7d4e4b6fbe912179d7bffa7b39866c924b
3ad9367 Address more review comments barneygale Oct 27, 2024 https://github.com/python/cpython/pull/116392/commits/3ad9367adb73a2b1d8f6f8f20a0d90e6af70e0c4
66af33d Drop parse_entry barneygale Oct 27, 2024 https://github.com/python/cpython/pull/116392/commits/66af33db814eae630d5ba498382105a260839d34
ce74ef1 Address review feedback barneygale Oct 28, 2024 https://github.com/python/cpython/pull/116392/commits/ce74ef17d8e4df1d2845d9293aab8b3157c7c2c5
a69a060 Add comment. barneygale Oct 28, 2024 https://github.com/python/cpython/pull/116392/commits/a69a060b134c665dacf6aaaaf9c316a6d016902a
a10a1e0 Merge branch 'main' into gh-116380 barneygale Nov 1, 2024 https://github.com/python/cpython/pull/116392/commits/a10a1e07dd1cfea1526ade9fa49f85c3b754d68b
e2e0a2e Merge branch 'main' into gh-116380 barneygale Nov 8, 2024 https://github.com/python/cpython/pull/116392/commits/e2e0a2ef3fdd8c2c69b829647388514303430eaf
be260c1 Merge branch 'main' into gh-116380 barneygale Nov 27, 2024 https://github.com/python/cpython/pull/116392/commits/be260c153308339d72a963c5d34d171db30a661d
0d1dc7e Merge branch 'main' into gh-116380 barneygale Jan 13, 2025 https://github.com/python/cpython/pull/116392/commits/0d1dc7e88c288fb378065f1d91e39ea5bf8e2aa3
f1c5326 Merge branch 'main' into gh-116380 barneygale Jan 16, 2025 https://github.com/python/cpython/pull/116392/commits/f1c532623c66bba75e431d96cfc0476c2d27e963
e113457 Merge branch 'main' into gh-116380 barneygale Feb 4, 2025 https://github.com/python/cpython/pull/116392/commits/e1134573a00afa6fd4553c4fbd8925f0034e127f
d8ec2d4 Merge branch 'main' into gh-116380 barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/d8ec2d4cf6cc709c894a461fc60b6c40704100f2
203b78b Merge branch 'main' into gh-116380 barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/203b78bd4e099ff9002e3c5503665d0c3421ff29
ffeb81a Windows test fixes barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/ffeb81ab58ee5ae8229117b69cd363348d1d44d8
ec157a1 Speed up suppression of initial empty path. barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/ec157a1646f35b3398f4ce73f4f9d0ba0db4be81
7a620db Anticipate the removal of glob0() and glob1() barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/7a620db58a8a1c9d7ac67f35c951efa4f7a59a63
e9fa3ac Merge branch 'main' into gh-116380 barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/e9fa3ac3cbfaccea2b55ef3250d48bba49891e3a
46429ad Handle _initial_path_exists more explicitly in select_special() barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/46429ad11520967b2ccbd39a708732825f2c4ee4
f160e8c Add comment, remove redundant check barneygale Feb 8, 2025 https://github.com/python/cpython/pull/116392/commits/f160e8cf262bf8dd97aab6da36274dc17502bed8
47846ca Avoid slicing prefix when root_dir is None barneygale Feb 9, 2025 https://github.com/python/cpython/pull/116392/commits/47846ca0d975c30665740d3826e41c71a9f7f12b
e55d946 Replace `_initial_path_exists` sentinel with `empty` boolean arg barneygale Feb 12, 2025 https://github.com/python/cpython/pull/116392/commits/e55d94670ea6b76c3bf79df6df714e5363605cfa
47499c7 Slightly simplify recursive globbing barneygale Feb 12, 2025 https://github.com/python/cpython/pull/116392/commits/47499c7a4dec8027db34739e2a83209dc3a093d8
849de87 Revert "Slightly simplify recursive globbing" barneygale Feb 12, 2025 https://github.com/python/cpython/pull/116392/commits/849de872c5b04ba82795ed295817edda25959c4b
10a6cf4 Split out method for scanning cwd barneygale Feb 12, 2025 https://github.com/python/cpython/pull/116392/commits/10a6cf424c7e8b003b25ebeff8910805be20d61c
413b12e Merge branch 'main' into gh-116380 barneygale Feb 14, 2025 https://github.com/python/cpython/pull/116392/commits/413b12e39a517ddd0a373e12d0890fa95ebe6a23
acf0f9b Merge branch 'main' into gh-116380 barneygale Feb 18, 2025 https://github.com/python/cpython/pull/116392/commits/acf0f9bc4d68a36e0e11050e8ac94132d0022336
a89211f Merge branch 'main' into gh-116380 barneygale Feb 21, 2025 https://github.com/python/cpython/pull/116392/commits/a89211f3dcc38e7ea5b555a0cbb77010db6d7b96
e4c519c Merge branch 'main' into gh-116380 barneygale Feb 28, 2025 https://github.com/python/cpython/pull/116392/commits/e4c519cfafa3e1133f1e4091a27584b9627f07c1
Clear filters https://github.com/python/cpython/pull/116392/files
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
glob.rst https://github.com/python/cpython/pull/116392/files#diff-04b8da6778df2d1412bc9fbfa3acd1206050161ca796b6420c2d27b855b5ebac
3.14.rst https://github.com/python/cpython/pull/116392/files#diff-24e6cbe61d91e61059c44a7cf5f712499a11eb47a82d5f1a8db16ec7f9023c31
glob.py https://github.com/python/cpython/pull/116392/files#diff-aca8a30d5728898dc8623ab33adb548567e7a0092079954afa1b594b7f83c828
_abc.py https://github.com/python/cpython/pull/116392/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
_local.py https://github.com/python/cpython/pull/116392/files#diff-605d7dbf8e86b830b276d61a776a8d7da625b34316c59e154441624beabbe70a
test_glob.py https://github.com/python/cpython/pull/116392/files#diff-e2fbc5e3fb1e825bc671d1cf011efb382e731a5d43bfb2fa02a7ec5610f4f1a4
2024-03-05-23-08-11.gh-issue-116380.56HU7I.rst https://github.com/python/cpython/pull/116392/files#diff-a501abdd86614ce9ec3b034567439c4f403533e25f5b28f018957d980054c4d0
Doc/library/glob.rsthttps://github.com/python/cpython/pull/116392/files#diff-04b8da6778df2d1412bc9fbfa3acd1206050161ca796b6420c2d27b855b5ebac
View file https://github.com/barneygale/cpython/blob/e4c519cfafa3e1133f1e4091a27584b9627f07c1/Doc/library/glob.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/116392/{{ revealButtonHref }}
https://github.com/python/cpython/pull/116392/files#diff-04b8da6778df2d1412bc9fbfa3acd1206050161ca796b6420c2d27b855b5ebac
https://github.com/python/cpython/pull/116392/files#diff-04b8da6778df2d1412bc9fbfa3acd1206050161ca796b6420c2d27b855b5ebac
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
https://github.com/python/cpython/pull/116392/files#diff-04b8da6778df2d1412bc9fbfa3acd1206050161ca796b6420c2d27b855b5ebac
https://github.com/python/cpython/pull/116392/files#diff-04b8da6778df2d1412bc9fbfa3acd1206050161ca796b6420c2d27b855b5ebac
https://github.com/python/cpython/pull/116392/files#diff-04b8da6778df2d1412bc9fbfa3acd1206050161ca796b6420c2d27b855b5ebac
https://github.com/python/cpython/blob/main/.github/CODEOWNERS#L114
Doc/whatsnew/3.14.rsthttps://github.com/python/cpython/pull/116392/files#diff-24e6cbe61d91e61059c44a7cf5f712499a11eb47a82d5f1a8db16ec7f9023c31
View file https://github.com/barneygale/cpython/blob/e4c519cfafa3e1133f1e4091a27584b9627f07c1/Doc/whatsnew/3.14.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/116392/{{ revealButtonHref }}
https://github.com/python/cpython/pull/116392/files#diff-24e6cbe61d91e61059c44a7cf5f712499a11eb47a82d5f1a8db16ec7f9023c31
https://github.com/python/cpython/pull/116392/files#diff-24e6cbe61d91e61059c44a7cf5f712499a11eb47a82d5f1a8db16ec7f9023c31
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
Please reload this pagehttps://github.com/python/cpython/pull/116392/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.