From c6a4c7fe7f71bb06e9117d5b1c0607974fe04459 Mon Sep 17 00:00:00 2001 From: Jonathan Sick Date: Thu, 18 Jul 2024 16:05:45 -0400 Subject: [PATCH] Make Parser metadata type variable importable The `MetadataContainer` type variable has been renamed to `DocumentMetadataT` and is now available from the `lander.ext.parser` module. This allows subclasses to declare the type variable consistently. --- changelog.d/20240718_160401_jsick_DM_45321.md | 3 +++ src/lander/ext/parser/__init__.py | 3 ++- src/lander/ext/parser/_parser.py | 10 +++++----- 3 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 changelog.d/20240718_160401_jsick_DM_45321.md diff --git a/changelog.d/20240718_160401_jsick_DM_45321.md b/changelog.d/20240718_160401_jsick_DM_45321.md new file mode 100644 index 0000000..42b27cb --- /dev/null +++ b/changelog.d/20240718_160401_jsick_DM_45321.md @@ -0,0 +1,3 @@ +### Backwards-incompatible changes + +- The `MetadataContainer` type variable has been renamed to `DocumentMetadataT` and is now available from the `lander.ext.parser` module. This allows subclasses to declare the type variable consistently. diff --git a/src/lander/ext/parser/__init__.py b/src/lander/ext/parser/__init__.py index a77863a..68716e6 100644 --- a/src/lander/ext/parser/__init__.py +++ b/src/lander/ext/parser/__init__.py @@ -2,6 +2,7 @@ __all__ = [ "DocumentMetadata", + "DocumentMetadataT", "Parser", "Contributor", "Person", @@ -23,4 +24,4 @@ ) from lander.ext.parser._discovery import ParsingPlugins from lander.ext.parser._gitdata import GitFile, GitRepository -from lander.ext.parser._parser import Parser +from lander.ext.parser._parser import DocumentMetadataT, Parser diff --git a/src/lander/ext/parser/_parser.py b/src/lander/ext/parser/_parser.py index bc2487d..edc4e52 100644 --- a/src/lander/ext/parser/_parser.py +++ b/src/lander/ext/parser/_parser.py @@ -15,13 +15,13 @@ from lander.settings import BuildSettings -__all__ = ["Parser", "MetadataContainer"] +__all__ = ["Parser", "DocumentMetadataT"] #: Type variable of the DocumentMetadata Pydantic object being stored in Parser -MetadataContainer = TypeVar("MetadataContainer", bound=DocumentMetadata) +DocumentMetadataT = TypeVar("DocumentMetadataT", bound=DocumentMetadata) -class Parser(Generic[MetadataContainer], metaclass=ABCMeta): +class Parser(Generic[DocumentMetadataT], metaclass=ABCMeta): """Base class for TeX document metadata parsing extensions. Parameters @@ -96,7 +96,7 @@ def git_repository(self) -> GitRepository | None: return self._git_repository @property - def metadata(self) -> MetadataContainer: + def metadata(self) -> DocumentMetadataT: """Metadata about the document.""" return self._metadata @@ -118,7 +118,7 @@ def normalize_source(self, tex_source: str) -> str: return replace_macros(tex_source, macros) @abstractmethod - def extract_metadata(self) -> MetadataContainer: + def extract_metadata(self) -> DocumentMetadataT: """Extract metadata from the document. This method should be implemented by parser subclasses.