Source code for sphinx_gherkindoc.parsers

"""Sphinx-Gherkindoc Parsers."""
import importlib
from pathlib import Path
from typing import List, Union

try:
    from typing import Protocol
except ImportError:
    from typing_extensions import Protocol  # type: ignore


parsers = {}

for file in Path(__file__).parent.glob("*.py"):
    name = file.stem
    if name.startswith("_"):
        continue
    try:
        module = importlib.import_module(f"sphinx_gherkindoc.parsers.{name}")
    except ImportError:
        continue
    feature = getattr(module, "Feature", None)
    if not feature:
        continue
    parsers[name] = feature


[docs]class ExamplesTableClass(Protocol): """Protocol for an examples table class model.""" tags: List[str]
[docs]class StepClass(Protocol): """Protocol for a step class model.""" name: str keyword: str
[docs]class ScenarioClass(Protocol): """Protocol for a scenario class model.""" examples: List[ExamplesTableClass] tags: List[str] steps: List[StepClass]
[docs]class FeatureClass(Protocol): """Protocol for a feature class model.""" scenarios: List[ScenarioClass] examples: List[ExamplesTableClass] tags: List[str]
ClassWithExamples = Union[FeatureClass, ScenarioClass]