GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GH-104102: Optimize `pathlib.Path.glob()` handling of `../` pattern segments by barneygale · Pull Request #104103 · python/cpython

Conversation

@barneygale

@barneygale barneygale commented May 2, 2023 •
edited by bedevere-bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

These segments do not require a stat() call, as the selector's _select_from() method is called after we've established that the parent is a directory.

This PR adds a new _ParentSelector class, which is used to evaluate ../ segments rather than _PreciseSelector.

  • Issue: Optimize pathlib.Path.glob() handling of ../ pattern segments #104102

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@barneygale
Optimize pathlib.Path.glob() handling of ../ pattern segments
f268157
These segments do not require a `stat()` call, as the selector's
`_select_from()` method is called after we've established that the
parent is a directory.
@barneygale barneygale added performance Performance or resource usage topic-pathlib labels May 2, 2023
@bedevere-bot bedevere-bot added the awaiting core review label May 2, 2023
@barneygale barneygale changed the title Optimize pathlib.Path.glob() handling of ../ pattern segments GH-104102: Optimize pathlib.Path.glob() handling of ../ pattern segments May 2, 2023
@bedevere-bot bedevere-bot mentioned this pull request May 2, 2023
Optimize pathlib.Path.glob() handling of ../ pattern segments #104102
Closed
@barneygale barneygale mentioned this pull request May 2, 2023
GH-81079: Add case_sensitive argument to pathlib.Path.glob() #102710
Merged
barneygale added 2 commits May 2, 2023 22:54
@barneygale
Merge branch 'main' into pythongh-104102-optimize-glob-parent
581e8c5
@barneygale
Fix argument name
e35153f
AlexWaygood
AlexWaygood reviewed May 2, 2023
View reviewed changes
Comment thread Lib/pathlib.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@AlexWaygood

AlexWaygood commented May 2, 2023

Copy link
Copy Markdown
Member

I think we could add some more tests here. There don't seem to be any tests for patterns with two successive .. segments, e.g. Path(".").glob("../../*"), or any test cases for "extreme" patterns, such as Path(".").glob(("../" * 50) + "*").

barneygale reacted with thumbs up emoji barneygale reacted with heart emoji
All reactions
  • 👍 1 reaction
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

AlexWaygood
AlexWaygood approved these changes May 2, 2023
View reviewed changes

@AlexWaygood AlexWaygood left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks fab to me other than my point about test coverage! Great work.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

barneygale reacted with hooray emoji
All reactions
  • 🎉 1 reaction
@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels May 2, 2023
@AlexWaygood AlexWaygood added type-feature A feature request or enhancement 3.12 only security fixes labels May 2, 2023
@barneygale
Expand tests
6ab6f0f
@barneygale
barneygale enabled auto-merge (squash) May 2, 2023 22:55
@barneygale

barneygale commented May 2, 2023

Copy link
Copy Markdown
Contributor Author

Thank you Alex!

AlexWaygood reacted with heart emoji
All reactions
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@barneygale
barneygale merged commit 65a49c6 into python:main May 2, 2023
@bedevere-bot bedevere-bot removed the awaiting merge label May 2, 2023
carljm added a commit to carljm/cpython that referenced this pull request May 2, 2023
@carljm
Merge branch 'main' into cached_property_docs
b9c39e3
* main: (760 commits)
  pythonGH-104102: Optimize `pathlib.Path.glob()` handling of `../` pattern segments (pythonGH-104103)
  pythonGH-104104: Optimize `pathlib.Path.glob()` by avoiding repeated calls to `os.path.normcase()` (pythonGH-104105)
  pythongh-103822: [Calendar] change return value to enum for day and month APIs (pythonGH-103827)
  pythongh-65022: Fix description of tuple return value in copyreg (python#103892)
  pythonGH-103525: Improve exception message from `pathlib.PurePath()` (pythonGH-103526)
  pythongh-84436: Add integration C API tests for immortal objects (pythongh-103962)
  pythongh-103743: Add PyUnstable_Object_GC_NewWithExtraData (pythonGH-103744)
  pythongh-102997: Update Windows installer to SQLite 3.41.2. (python#102999)
  pythonGH-103484: Fix redirected permanently URLs (python#104001)
  Improve assert_type phrasing (python#104081)
  pythongh-102997: Update macOS installer to SQLite 3.41.2. (pythonGH-102998)
  pythonGH-103472: close response in HTTPConnection._tunnel (python#103473)
  pythongh-88496: IDLE - fix another test on macOS (python#104075)
  pythongh-94673: Hide Objects in PyTypeObject Behind Accessors (pythongh-104074)
  pythongh-94673: Properly Initialize and Finalize Static Builtin Types for Each Interpreter (pythongh-104072)
  pythongh-104016: Skip test for deeply neste f-strings on wasi (python#104071)
  pythongh-104057: Fix direct invocation of test_super (python#104064)
  pythongh-87092: Expose assembler to unit tests (python#103988)
  pythongh-97696: asyncio eager tasks factory (python#102853)
  pythongh-84436: Immortalize in _PyStructSequence_InitBuiltinWithFlags() (pythongh-104054)
  ...
@barneygale barneygale mentioned this pull request May 3, 2023
GH-90208: Suppress OSError exceptions from pathlib.Path.glob() #104141
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@AlexWaygood AlexWaygood AlexWaygood approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

3.12 only security fixes performance Performance or resource usage topic-pathlib type-feature A feature request or enhancement

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@barneygale @AlexWaygood @bedevere-bot
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.