Skip to content

Speed up pattern parsing in pathlib.Path.glob() #126363

@barneygale

Description

@barneygale

pathlib.Path.glob() converts a given string pattern to a Path object:

if not isinstance(pattern, PurePath):
pattern = self.with_segments(pattern)

Which has the following drawbacks:

  • It instantiates a Path object, which is slow
  • It normalizes a Windows UNC drive if given, which is unnecessary - any anchor causes NotImplementedError to be raised.
  • It strips the trailing slash from the pattern, so we need to peek at pattern._raw_path to restore it

It would be better to add a variant of PurePath._parse_path() for dealing specifically with glob patterns.

Linked PRs

Metadata

Metadata

Assignees

No one assigned
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions