79 lines
1.7 KiB
Python
79 lines
1.7 KiB
Python
|
|
"""
|
||
|
|
This module provides private data for the base implementation for the
|
||
|
|
:module:`hyperscan` library.
|
||
|
|
|
||
|
|
WARNING: The *pathspec._backends.hyperscan* 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 (
|
||
|
|
Union) # Replaced by `X | Y` in 3.10.
|
||
|
|
|
||
|
|
try:
|
||
|
|
import hyperscan
|
||
|
|
except ModuleNotFoundError:
|
||
|
|
hyperscan = None
|
||
|
|
HS_FLAGS = 0
|
||
|
|
else:
|
||
|
|
HS_FLAGS = hyperscan.HS_FLAG_SINGLEMATCH | hyperscan.HS_FLAG_UTF8
|
||
|
|
|
||
|
|
HS_FLAGS: int
|
||
|
|
"""
|
||
|
|
The hyperscan flags to use:
|
||
|
|
|
||
|
|
- HS_FLAG_SINGLEMATCH is needed to ensure the partial patterns only match once.
|
||
|
|
|
||
|
|
- HS_FLAG_UTF8 is required to support unicode paths.
|
||
|
|
"""
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass(frozen=True)
|
||
|
|
class HyperscanExprDat(object):
|
||
|
|
"""
|
||
|
|
The :class:`HyperscanExprDat` class is used to store data related to an
|
||
|
|
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 HyperscanExprDebug(HyperscanExprDat):
|
||
|
|
"""
|
||
|
|
The :class:`HyperscanExprDebug` class stores additional debug information
|
||
|
|
related to an 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.
|
||
|
|
"""
|