96 lines
2.1 KiB
Python
96 lines
2.1 KiB
Python
"""
|
|
This module provides private data for the base implementation for the
|
|
:module:`re2` library.
|
|
|
|
WARNING: The *pathspec._backends.re2* package is not part of the public API. Its
|
|
contents and structure are likely to change.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import (
|
|
dataclass)
|
|
from typing import (
|
|
Optional, # Replaced by `X | None` in 3.10.
|
|
Union) # Replaced by `X | Y` in 3.10.
|
|
|
|
try:
|
|
import re2
|
|
re2_error = None
|
|
except ModuleNotFoundError as e:
|
|
re2 = None
|
|
re2_error = e
|
|
RE2_OPTIONS = None
|
|
else:
|
|
# Both the `google-re2` and `pyre2` libraries use the `re2` namespace.
|
|
# `google-re2` is the only one currently supported.
|
|
try:
|
|
RE2_OPTIONS = re2.Options()
|
|
RE2_OPTIONS.log_errors = False
|
|
RE2_OPTIONS.never_capture = True
|
|
except Exception as e:
|
|
re2_error = e
|
|
RE2_OPTIONS = None
|
|
|
|
RE2_OPTIONS: re2.Options
|
|
"""
|
|
The re2 options to use:
|
|
|
|
- `log_errors=False` disables logging to stderr.
|
|
|
|
- `never_capture=True` disables capture groups because they effectively cannot
|
|
be utilized with :class:`re2.Set`.
|
|
"""
|
|
|
|
re2_error: Optional[Exception]
|
|
"""
|
|
*re2_error* (:class:`Exception` or :data:`None`) is the re2 import error.
|
|
"""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class Re2RegexDat(object):
|
|
"""
|
|
The :class:`Re2RegexDat` class is used to store data related to a regular
|
|
expression.
|
|
"""
|
|
|
|
# The slots argument is not supported until Python 3.10.
|
|
__slots__ = [
|
|
'include',
|
|
'index',
|
|
'is_dir_pattern',
|
|
]
|
|
|
|
include: bool
|
|
"""
|
|
*include* (:class:`bool`) is whether is whether the matched files should be
|
|
included (:data:`True`), or excluded (:data:`False`).
|
|
"""
|
|
|
|
index: int
|
|
"""
|
|
*index* (:class:`int`) is the pattern index.
|
|
"""
|
|
|
|
is_dir_pattern: bool
|
|
"""
|
|
*is_dir_pattern* (:class:`bool`) is whether the pattern is a directory
|
|
pattern for gitignore.
|
|
"""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class Re2RegexDebug(Re2RegexDat):
|
|
"""
|
|
The :class:`Re2RegexDebug` class stores additional debug information related
|
|
to a regular expression.
|
|
"""
|
|
|
|
# The slots argument is not supported until Python 3.10.
|
|
__slots__ = ['regex']
|
|
|
|
regex: Union[str, bytes]
|
|
"""
|
|
*regex* (:class:`str` or :class:`bytes`) is the regular expression.
|
|
"""
|