"""Base classes for parsing."""
from typing import Any
[docs]class BaseModel:
"""Base model for parsers."""
def __init__(self, data: Any):
self._data = data
def __getattr__(self, key: str) -> Any:
"""Grab attribute from wrapped class, if present.
When inheriting this model,
properties may need to be added to the subclass
in cases where a specific ``behave`` attribute
does not exist on the underlying class,
or where the format returned from the underlying attribute
does not match the ``behave`` format.
"""
if key == "description":
# Workaround for current pytest-bdd release (3.2.1),
# which does not have a scenario.description attribute.
return getattr(self._data, key, None)
return getattr(self._data, key)
@property
def exists(self) -> bool:
"""Return True if the feature exists."""
return self._data is not None