reorganize git versioning types
clean dict also recursively in lists
This commit is contained in:
parent
1e8fe43131
commit
591e6533b4
6 changed files with 29 additions and 23 deletions
|
@ -18,7 +18,7 @@ DEFAULT_HASH = '0000000000000000000000000000000000000000000000000000000000000000
|
||||||
JSON_FILE_HASH = 'file_hash'
|
JSON_FILE_HASH = 'file_hash'
|
||||||
JSON_SOURCES_HASH = 'sources_hash'
|
JSON_SOURCES_HASH = 'sources_hash'
|
||||||
JSON_RELATIVE_NAME = 'relative_name'
|
JSON_RELATIVE_NAME = 'relative_name'
|
||||||
JSON_REPO_STATUS_INFO = 'repo_info'
|
JSON_GIT_VERSION_INFO = 'git_version_info'
|
||||||
|
|
||||||
NO_RELATIVE_NAME = 'NO_NAME'
|
NO_RELATIVE_NAME = 'NO_NAME'
|
||||||
NO_BUILD_TIME = 'no_build_time'
|
NO_BUILD_TIME = 'no_build_time'
|
||||||
|
|
0
PyTeX/build/versioning/version_info/get_version_info.py
Normal file
0
PyTeX/build/versioning/version_info/get_version_info.py
Normal file
|
@ -1,8 +1,8 @@
|
||||||
from typing import Optional, List, Dict
|
from typing import Optional, List, Dict
|
||||||
|
|
||||||
from PyTeX.format.repo_status_info import RepoStatusInfo
|
|
||||||
from .constants import *
|
from .constants import *
|
||||||
from ....format.config import Config
|
from ....format.config import Config
|
||||||
|
from ....format.git_version_info import GitVersionInfo
|
||||||
from ...build.enums import *
|
from ...build.enums import *
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ class FileVersionInfo(Config):
|
||||||
self._sources_hash: Optional[str] = None
|
self._sources_hash: Optional[str] = None
|
||||||
|
|
||||||
# Meta properties actually not needed for build itself
|
# Meta properties actually not needed for build itself
|
||||||
self._repo_status_info: Optional[RepoStatusInfo] = None
|
self._git_version_info: Optional[GitVersionInfo] = None
|
||||||
self._build_time: Optional[str] = None
|
self._build_time: Optional[str] = None
|
||||||
|
|
||||||
def set_from_json(self, content: Optional[Dict]):
|
def set_from_json(self, content: Optional[Dict]):
|
||||||
|
@ -22,8 +22,8 @@ class FileVersionInfo(Config):
|
||||||
self._file_hash = filled_content[JSON_FILE_HASH]
|
self._file_hash = filled_content[JSON_FILE_HASH]
|
||||||
self._sources_hash = filled_content[JSON_SOURCES_HASH]
|
self._sources_hash = filled_content[JSON_SOURCES_HASH]
|
||||||
self._build_time = filled_content[JSON_BUILD_TIME]
|
self._build_time = filled_content[JSON_BUILD_TIME]
|
||||||
self._repo_status_info = RepoStatusInfo.from_json(
|
self._git_version_info = GitVersionInfo.from_json(
|
||||||
filled_content[JSON_REPO_STATUS_INFO]
|
filled_content[JSON_GIT_VERSION_INFO]
|
||||||
)
|
)
|
||||||
|
|
||||||
def to_json(self) -> Dict:
|
def to_json(self) -> Dict:
|
||||||
|
@ -32,7 +32,7 @@ class FileVersionInfo(Config):
|
||||||
JSON_FILE_HASH: self._file_hash,
|
JSON_FILE_HASH: self._file_hash,
|
||||||
JSON_SOURCES_HASH: self._sources_hash,
|
JSON_SOURCES_HASH: self._sources_hash,
|
||||||
JSON_BUILD_TIME: self._build_time,
|
JSON_BUILD_TIME: self._build_time,
|
||||||
JSON_REPO_STATUS_INFO: self.repo_status_info.to_json()
|
JSON_GIT_VERSION_INFO: self.git_version_info.to_json()
|
||||||
}
|
}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
@ -69,15 +69,15 @@ class FileVersionInfo(Config):
|
||||||
self._relative_name = relative_name
|
self._relative_name = relative_name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def repo_status_info(self) -> RepoStatusInfo:
|
def git_version_info(self) -> GitVersionInfo:
|
||||||
if self._repo_status_info is None:
|
if self._git_version_info is None:
|
||||||
return RepoStatusInfo()
|
return GitVersionInfo()
|
||||||
else:
|
else:
|
||||||
return self._repo_status_info
|
return self._git_version_info
|
||||||
|
|
||||||
@repo_status_info.setter
|
@git_version_info.setter
|
||||||
def repo_status_info(self, repo_status_info: RepoStatusInfo):
|
def git_version_info(self, git_version_info: GitVersionInfo):
|
||||||
self._repo_status_info = repo_status_info
|
self._git_version_info = git_version_info
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def build_time(self) -> str:
|
def build_time(self) -> str:
|
||||||
|
|
|
@ -7,12 +7,17 @@ import yaml
|
||||||
|
|
||||||
|
|
||||||
def clean_dict(dictionary: Dict) -> Optional[Dict]:
|
def clean_dict(dictionary: Dict) -> Optional[Dict]:
|
||||||
aux = {
|
aux: Dict = {
|
||||||
k: clean_dict(v) for k, v in dictionary.items() if type(v) == dict
|
k: clean_dict(v) for k, v in dictionary.items() if type(v) == dict
|
||||||
} | {
|
} | {
|
||||||
k: v for k, v in dictionary.items() if type(v) != dict
|
k: [
|
||||||
|
clean_dict(elem) if type(elem) == dict else elem
|
||||||
|
for elem in elems
|
||||||
|
] for k, elems in dictionary.items() if type(elems) == list
|
||||||
|
} | {
|
||||||
|
k: v for k, v in dictionary.items() if type(v) != dict and type(v) != list
|
||||||
}
|
}
|
||||||
aux2 = {
|
aux2: Dict = {
|
||||||
k: v for k, v in aux.items() if v is not None
|
k: v for k, v in aux.items() if v is not None
|
||||||
}
|
}
|
||||||
return aux2 if aux2 != {} else None
|
return aux2 if aux2 != {} else None
|
||||||
|
|
|
@ -3,6 +3,7 @@ from typing import Optional, Dict
|
||||||
from PyTeX.format.config import Config
|
from PyTeX.format.config import Config
|
||||||
from PyTeX.format.constants import YAML_REPO, YAML_PYTEX
|
from PyTeX.format.constants import YAML_REPO, YAML_PYTEX
|
||||||
from PyTeX.format.repo_status_info import RepoStatusInfo
|
from PyTeX.format.repo_status_info import RepoStatusInfo
|
||||||
|
from .repo_status_info import RepoStatusInfo
|
||||||
|
|
||||||
|
|
||||||
class GitVersionInfo(Config):
|
class GitVersionInfo(Config):
|
||||||
|
@ -41,8 +42,8 @@ class GitVersionInfo(Config):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def has_pytex_version(self) -> bool:
|
def has_pytex_version(self) -> bool:
|
||||||
return self._pytex_version is None
|
return self._pytex_version is not None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def has_repo_version(self) -> bool:
|
def has_repo_version(self) -> bool:
|
||||||
return self._repo_version is None
|
return self._repo_version is not None
|
|
@ -5,7 +5,7 @@ from typing import Optional, Dict
|
||||||
from .constants import *
|
from .constants import *
|
||||||
from .formatterif import FormatterIF
|
from .formatterif import FormatterIF
|
||||||
from .formatting_config import FormattingConfig
|
from .formatting_config import FormattingConfig
|
||||||
from .git_version_info import GitVersionInfo
|
from .git_version_info import RepoStatusInfo
|
||||||
from .generic_text import GenericText
|
from .generic_text import GenericText
|
||||||
from ..logger import logger
|
from ..logger import logger
|
||||||
from abc import ABC
|
from abc import ABC
|
||||||
|
@ -16,7 +16,7 @@ class PyTeXFormatter(FormatterIF, ABC):
|
||||||
self,
|
self,
|
||||||
input_file: Optional[Path] = None,
|
input_file: Optional[Path] = None,
|
||||||
config: Optional[FormattingConfig] = None,
|
config: Optional[FormattingConfig] = None,
|
||||||
git_version_info: Optional[GitVersionInfo] = None,
|
git_version_info: Optional[RepoStatusInfo] = None,
|
||||||
locate_file_config: bool = True,
|
locate_file_config: bool = True,
|
||||||
allow_infile_config: bool = True
|
allow_infile_config: bool = True
|
||||||
):
|
):
|
||||||
|
@ -25,7 +25,7 @@ class PyTeXFormatter(FormatterIF, ABC):
|
||||||
config=config
|
config=config
|
||||||
)
|
)
|
||||||
self._config: Optional[FormattingConfig] = self._config # for type-hinting
|
self._config: Optional[FormattingConfig] = self._config # for type-hinting
|
||||||
self._git_version_info: Optional[GitVersionInfo] = git_version_info
|
self._git_version_info: Optional[RepoStatusInfo] = git_version_info
|
||||||
self._allow_infile_config: bool = allow_infile_config
|
self._allow_infile_config: bool = allow_infile_config
|
||||||
self._header: Optional[GenericText] = None
|
self._header: Optional[GenericText] = None
|
||||||
if locate_file_config:
|
if locate_file_config:
|
||||||
|
|
Loading…
Reference in a new issue