René's URL Explorer Experiment


Title: GH-115060: Speed up `pathlib.Path.glob()` by skipping directory scanning by barneygale · Pull Request #116152 · python/cpython · GitHub

Open Graph Title: GH-115060: Speed up `pathlib.Path.glob()` by skipping directory scanning by barneygale · Pull Request #116152 · python/cpython

X Title: GH-115060: Speed up `pathlib.Path.glob()` by skipping directory scanning by barneygale · Pull Request #116152 · python/cpython

Description: For ordinary literal pattern segments (e.g. foo/bar in foo/bar/../**), skip calling scandir() on each segment, and instead call exists() or is_dir() as necessary to exclude missing paths. This only applies when case_sensitive is None (the default); otherwise we can't guarantee case sensitivity or realness with this approach. If follow_symlinks is False we also need to exclude symlinks from intermediate segments. This restores an optimization that was removed in da1980a by some eejit. It's actually even faster because we don't stat() intermediate directories, and in some cases we can skip all filesystem access when expanding a literal part (e.g. when it's followed by a non-recursive wildcard segment). Issue: gh-115060

Open Graph Description: For ordinary literal pattern segments (e.g. foo/bar in foo/bar/../**), skip calling scandir() on each segment, and instead call exists() or is_dir() as necessary to exclude missing paths. This only...

X Description: For ordinary literal pattern segments (e.g. foo/bar in foo/bar/../**), skip calling scandir() on each segment, and instead call exists() or is_dir() as necessary to exclude missing paths. This only...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:c344b2ef-2795-3a56-217b-88c341a0851a
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idDF64:1F8CE9:88BFD2:B261C2:696B4F3D
html-safe-nonce0f94475bc149acec1cb166477af193a8881db497f27615a0ea16091b855bcbd3
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERjY0OjFGOENFOTo4OEJGRDI6QjI2MUMyOjY5NkI0RjNEIiwidmlzaXRvcl9pZCI6IjIzMDg4NDc2NjcwMjM0MDA3NjUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac7c9ba9b3088ce5b54b9a044cdbd4eeca2af1398eb8f0094b078e75bbfff5f445
hovercard-subject-tagpull_request:1750520883
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/116152/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:altFor ordinary literal pattern segments (e.g. foo/bar in foo/bar/../**), skip calling scandir() on each segment, and instead call exists() or is_dir() as necessary to exclude missing paths. This only...
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/116152/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fcpython%2Fpull%2F116152%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%2F116152%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/116152/files
Reloadhttps://github.com/python/cpython/pull/116152/files
Reloadhttps://github.com/python/cpython/pull/116152/files
python https://github.com/python
cpythonhttps://github.com/python/cpython
Please reload this pagehttps://github.com/python/cpython/pull/116152/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/116152/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-115060-literalshttps://github.com/barneygale/cpython/tree/gh-115060-literals
Conversation 1 https://github.com/python/cpython/pull/116152
Commits 6 https://github.com/python/cpython/pull/116152/commits
Checks 0 https://github.com/python/cpython/pull/116152/checks
Files changed https://github.com/python/cpython/pull/116152/files
Please reload this pagehttps://github.com/python/cpython/pull/116152/files
GH-115060: Speed up pathlib.Path.glob() by skipping directory scanning https://github.com/python/cpython/pull/116152/files#top
Show all changes 6 commits https://github.com/python/cpython/pull/116152/files
f1b5603 GH-115060: Speed up `pathlib.Path.glob()` by skipping directory scann… barneygale Feb 26, 2024 https://github.com/python/cpython/pull/116152/commits/f1b56038f0e49a873584966f3da89f065a19a8a3
cbc7002 Also skip initial is_dir() barneygale Feb 29, 2024 https://github.com/python/cpython/pull/116152/commits/cbc7002edec6ea8c2d8f86c23fa07ea1406ad028
d1f8cae Fix tests barneygale Feb 29, 2024 https://github.com/python/cpython/pull/116152/commits/d1f8cae2a773e602f873a28e70122ae440ade789
80e384c Fix tests, attempt 2 barneygale Feb 29, 2024 https://github.com/python/cpython/pull/116152/commits/80e384c38cd492a9e0473ace936f64f06ae4535e
0b98008 Fix handling of final literal symlink barneygale Feb 29, 2024 https://github.com/python/cpython/pull/116152/commits/0b98008012e194404e2fd818410f3dcde5a62925
dfc4766 Make follow_symlinks behaviour a bit clearer barneygale Feb 29, 2024 https://github.com/python/cpython/pull/116152/commits/dfc4766f3b80154236c3111ec3e84cdb508ed05e
Clear filters https://github.com/python/cpython/pull/116152/files
Please reload this pagehttps://github.com/python/cpython/pull/116152/files
Please reload this pagehttps://github.com/python/cpython/pull/116152/files
pathlib.rst https://github.com/python/cpython/pull/116152/files#diff-1134e36a94ecfde1df43bee5efd285de5d67426fbca086425201ecc753f9139c
_abc.py https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
test_pathlib_abc.py https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
2024-02-29-20-42-48.gh-issue-115060.fofNVf.rst https://github.com/python/cpython/pull/116152/files#diff-d8356a532c495447aa02a512264b816ca0f20800607d7f3158f67ad139e94b0f
https://github.com/python/cpython/blob/main/.github/CODEOWNERS#L525
Doc/library/pathlib.rsthttps://github.com/python/cpython/pull/116152/files#diff-1134e36a94ecfde1df43bee5efd285de5d67426fbca086425201ecc753f9139c
View file https://github.com/barneygale/cpython/blob/dfc4766f3b80154236c3111ec3e84cdb508ed05e/Doc/library/pathlib.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/116152/{{ revealButtonHref }}
https://github.com/python/cpython/pull/116152/files#diff-1134e36a94ecfde1df43bee5efd285de5d67426fbca086425201ecc753f9139c
https://github.com/python/cpython/pull/116152/files#diff-1134e36a94ecfde1df43bee5efd285de5d67426fbca086425201ecc753f9139c
https://github.com/python/cpython/blob/main/.github/CODEOWNERS#L526
Lib/pathlib/_abc.pyhttps://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
View file https://github.com/barneygale/cpython/blob/dfc4766f3b80154236c3111ec3e84cdb508ed05e/Lib/pathlib/_abc.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/116152/{{ revealButtonHref }}
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/pull/116152/files#diff-80172c23421c1dd13d79623c67c24cee61b300f18a55ab5d2d33d69d490abe9a
https://github.com/python/cpython/blob/main/.github/CODEOWNERS#L527
Lib/test/test_pathlib/test_pathlib_abc.pyhttps://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
View file https://github.com/barneygale/cpython/blob/dfc4766f3b80154236c3111ec3e84cdb508ed05e/Lib/test/test_pathlib/test_pathlib_abc.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/116152/{{ revealButtonHref }}
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
https://github.com/python/cpython/pull/116152/files#diff-4669f270f5520190bbc1c9e99ac03db2847c44be835fb3d2d9ff727d73761f58
Misc/NEWS.d/next/Library/2024-02-29-20-42-48.gh-issue-115060.fofNVf.rsthttps://github.com/python/cpython/pull/116152/files#diff-d8356a532c495447aa02a512264b816ca0f20800607d7f3158f67ad139e94b0f
View file https://github.com/barneygale/cpython/blob/dfc4766f3b80154236c3111ec3e84cdb508ed05e/Misc/NEWS.d/next/Library/2024-02-29-20-42-48.gh-issue-115060.fofNVf.rst
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/python/cpython/pull/116152/{{ revealButtonHref }}
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.