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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions