diff --git a/PyTeX/format/formatting_config.py b/PyTeX/format/formatting_config.py index 1d48619..e1bd3da 100644 --- a/PyTeX/format/formatting_config.py +++ b/PyTeX/format/formatting_config.py @@ -14,38 +14,46 @@ class GitVersionInfo(Config): self._pytex_version: Optional[RepoStatusInfo] = None def set_from_json(self, content: Optional[Dict]): - content = self._fill_keys(content) + filled_content = self._fill_keys(content) self._repo_version = RepoStatusInfo.from_json( - content[YAML_REPO] + filled_content[YAML_REPO] ) self._pytex_version = RepoStatusInfo.from_json( - content[YAML_PYTEX] + filled_content[YAML_PYTEX] ) def to_json(self) -> Dict: return { - YAML_PYTEX: self._pytex_version.to_json(), - YAML_REPO: self._repo_version.to_json() + YAML_PYTEX: self.pytex_version.to_json(), + YAML_REPO: self.repo_version.to_json() } @property - def pytex_version(self) -> Optional[RepoStatusInfo]: + def pytex_version(self) -> RepoStatusInfo: if self._pytex_version is None: - return None + return RepoStatusInfo() else: return self._pytex_version @property - def repo_version(self) -> Optional[RepoStatusInfo]: + def repo_version(self) -> RepoStatusInfo: if self._repo_version is None: - return None + return RepoStatusInfo() else: return self._repo_version + @property + def has_pytex_version(self) -> bool: + return self._pytex_version is None + + @property + def has_repo_version(self) -> bool: + return self._repo_version is None + class FormattingConfig(Config): def __init__(self): - self._naming_scheme: Optional[Union[NamingScheme, str]] = None + self._naming_scheme: Optional[NamingScheme] = None self._license: Optional[GenericText] = None self._description: Optional[str] = None @@ -74,9 +82,9 @@ class FormattingConfig(Config): self._tex_flavour: Optional[TeXFlavour] = None def set_from_json(self, content: Optional[Dict]): - content = self._fill_keys(content) + filled_content = self._fill_keys(content) - info = content[YAML_INFO] + info = filled_content[YAML_INFO] self._author = info[YAML_AUTHOR] self._naming_scheme = info[YAML_NAMING_SCHEME] self._tex_flavour = info[YAML_TEX_FLAVOUR] @@ -84,7 +92,7 @@ class FormattingConfig(Config): self._description = info[YAML_DESCRIPTION] self._version = info[YAML_VERSION] - header = content[YAML_HEADER] + header = filled_content[YAML_HEADER] extra = header[YAML_EXTRA] self._include_extra_header = extra[YAML_INCLUDE_EXTRA_HEADER] self._extra_header = GenericText( @@ -113,7 +121,7 @@ class FormattingConfig(Config): license_[YAML_PATH] if license_[YAML_PATH] else license_[YAML_TEXT] ) - docstrip = content[YAML_DOCSTRIP] + docstrip = filled_content[YAML_DOCSTRIP] self._include_drv = docstrip[YAML_INCLUDE_DRV] self._include_ins = docstrip[YAML_INCLUDE_INS] self._docstrip_guards = docstrip[YAML_DOCSTRIP_GUARDS] diff --git a/PyTeX/format/generic_text.py b/PyTeX/format/generic_text.py index 17065aa..dd6bbc1 100644 --- a/PyTeX/format/generic_text.py +++ b/PyTeX/format/generic_text.py @@ -12,7 +12,7 @@ class GenericText: self._path = None self._initialized = True elif isinstance(content, Path) or isinstance(content, str): - self._content: Optional[List[str]] = None + self._content = None self._path = Path(content) self._initialized = True else: @@ -24,6 +24,8 @@ class GenericText: def text(self) -> List[str]: if self._initialized: if self._content is None: + if self._path is None: + raise NotImplementedError # Programming error try: with open(self._path, 'r') as file: self._content = file.readlines() diff --git a/PyTeX/format/macros.py b/PyTeX/format/macros.py index 2c4354e..70c4c4e 100644 --- a/PyTeX/format/macros.py +++ b/PyTeX/format/macros.py @@ -30,7 +30,7 @@ class Argument(MacroReplacementAtomIF, Enum): six = 6 -class MacroReplacement(str): +class MacroReplacement: def __init__( self, replacement: str, diff --git a/PyTeX/format/repo_status_info.py b/PyTeX/format/repo_status_info.py index fb05412..241e40e 100644 --- a/PyTeX/format/repo_status_info.py +++ b/PyTeX/format/repo_status_info.py @@ -13,11 +13,11 @@ class RepoStatusInfo(Config): self._version: Optional[str] = None def set_from_json(self, content: Optional[Dict]): - content = self._fill_keys(content) - self._branch = content[JSON_BRANCH] - self._dirty = content[JSON_DIRTY] - self._commit_hash = content[JSON_COMMIT_HASH] - self._version = content[JSON_VERSION] + filled_content: Dict = self._fill_keys(content) + self._branch = filled_content[JSON_BRANCH] + self._dirty = filled_content[JSON_DIRTY] + self._commit_hash = filled_content[JSON_COMMIT_HASH] + self._version = filled_content[JSON_VERSION] def to_json(self) -> Dict: return {