Refactor code structure for improved readability and maintainability
This commit is contained in:
parent
389d72a136
commit
aa4c067ea8
1685 changed files with 393439 additions and 71932 deletions
104
.venv_codegen/Lib/site-packages/pathspec/_backends/agg.py
Normal file
104
.venv_codegen/Lib/site-packages/pathspec/_backends/agg.py
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
"""
|
||||
This module provides aggregated private data and utilities functions about the
|
||||
available backends.
|
||||
|
||||
WARNING: The *pathspec._backends* package is not part of the public API. Its
|
||||
contents and structure are likely to change.
|
||||
"""
|
||||
|
||||
from collections.abc import (
|
||||
Sequence)
|
||||
from typing import (
|
||||
cast)
|
||||
|
||||
from pathspec.backend import (
|
||||
BackendNamesHint,
|
||||
_Backend)
|
||||
from pathspec.pattern import (
|
||||
Pattern,
|
||||
RegexPattern)
|
||||
|
||||
from .hyperscan.base import (
|
||||
hyperscan_error)
|
||||
from .hyperscan.gitignore import (
|
||||
HyperscanGiBackend)
|
||||
from .hyperscan.pathspec import (
|
||||
HyperscanPsBackend)
|
||||
from .re2.base import (
|
||||
re2_error)
|
||||
from .re2.gitignore import (
|
||||
Re2GiBackend)
|
||||
from .re2.pathspec import (
|
||||
Re2PsBackend)
|
||||
from .simple.gitignore import (
|
||||
SimpleGiBackend)
|
||||
from .simple.pathspec import (
|
||||
SimplePsBackend)
|
||||
|
||||
_BEST_BACKEND: BackendNamesHint
|
||||
"""
|
||||
The best available backend.
|
||||
"""
|
||||
|
||||
if re2_error is None:
|
||||
_BEST_BACKEND = 're2'
|
||||
elif hyperscan_error is None:
|
||||
_BEST_BACKEND = 'hyperscan'
|
||||
else:
|
||||
_BEST_BACKEND = 'simple'
|
||||
|
||||
|
||||
def make_gitignore_backend(
|
||||
name: BackendNamesHint,
|
||||
patterns: Sequence[Pattern],
|
||||
) -> _Backend:
|
||||
"""
|
||||
Create the specified backend with the supplied patterns for
|
||||
:class:`~pathspec.gitignore.GitIgnoreSpec`.
|
||||
|
||||
*name* (:class:`str`) is the name of the backend.
|
||||
|
||||
*patterns* (:class:`.Iterable` of :class:`.Pattern`) contains the compiled
|
||||
patterns.
|
||||
|
||||
Returns the backend (:class:`._Backend`).
|
||||
"""
|
||||
if name == 'best':
|
||||
name = _BEST_BACKEND
|
||||
|
||||
if name == 'hyperscan':
|
||||
return HyperscanGiBackend(cast(Sequence[RegexPattern], patterns))
|
||||
elif name == 're2':
|
||||
return Re2GiBackend(cast(Sequence[RegexPattern], patterns))
|
||||
elif name == 'simple':
|
||||
return SimpleGiBackend(cast(Sequence[RegexPattern], patterns))
|
||||
else:
|
||||
raise ValueError(f"Backend {name=!r} is invalid.")
|
||||
|
||||
|
||||
def make_pathspec_backend(
|
||||
name: BackendNamesHint,
|
||||
patterns: Sequence[Pattern],
|
||||
) -> _Backend:
|
||||
"""
|
||||
Create the specified backend with the supplied patterns for
|
||||
:class:`~pathspec.pathspec.PathSpec`.
|
||||
|
||||
*name* (:class:`str`) is the name of the backend.
|
||||
|
||||
*patterns* (:class:`Iterable` of :class:`Pattern`) contains the compiled
|
||||
patterns.
|
||||
|
||||
Returns the backend (:class:`._Backend`).
|
||||
"""
|
||||
if name == 'best':
|
||||
name = _BEST_BACKEND
|
||||
|
||||
if name == 'hyperscan':
|
||||
return HyperscanPsBackend(cast(Sequence[RegexPattern], patterns))
|
||||
elif name == 're2':
|
||||
return Re2PsBackend(cast(Sequence[RegexPattern], patterns))
|
||||
elif name == 'simple':
|
||||
return SimplePsBackend(patterns)
|
||||
else:
|
||||
raise ValueError(f"Backend {name=!r} is invalid.")
|
||||
Loading…
Add table
Add a link
Reference in a new issue