2022-02-06 00:02:59 +01:00
|
|
|
from typing import List, Optional, Union, Any, Tuple
|
2022-02-04 11:39:15 +01:00
|
|
|
from .enums import NamingScheme, License
|
2022-02-05 22:40:10 +01:00
|
|
|
from .generic_text import GenericText
|
2022-02-06 15:09:25 +01:00
|
|
|
from .formatterif import Config
|
|
|
|
from .git_version_info import GitVersionInfo
|
2022-02-04 11:39:15 +01:00
|
|
|
|
|
|
|
|
2022-02-06 15:09:25 +01:00
|
|
|
class FormattingConfig(Config):
|
2022-02-04 11:39:15 +01:00
|
|
|
def __init__(self):
|
2022-02-05 23:54:45 +01:00
|
|
|
self._naming_scheme: Optional[Union[NamingScheme, str]] = None
|
2022-02-04 11:39:15 +01:00
|
|
|
self._license: Optional[List[License]] = None
|
|
|
|
|
2022-02-05 23:54:45 +01:00
|
|
|
self._include_extra_header: Optional[bool] = None
|
|
|
|
self._include_build_time: Optional[bool] = None
|
|
|
|
self._include_pytex_version: Optional[bool] = None
|
|
|
|
self._include_pytex_info_text: Optional[bool] = None
|
|
|
|
self._include_repo_version: Optional[bool] = None
|
|
|
|
self._include_repo_info_text: Optional[bool] = None
|
2022-02-04 11:39:15 +01:00
|
|
|
|
2022-02-06 15:28:04 +01:00
|
|
|
self._extra_header: Optional[GenericText] = None
|
2022-02-05 22:40:10 +01:00
|
|
|
self._author: Optional[str] = None
|
|
|
|
self._licenses = Optional[List[GenericText]]
|
2022-02-05 23:54:45 +01:00
|
|
|
self._version: Optional[str] = None
|
2022-02-06 15:09:25 +01:00
|
|
|
self._pytex_version: Optional[GitVersionInfo] = None
|
2022-02-05 22:40:10 +01:00
|
|
|
self._pytex_info_text: Optional[GenericText] = None
|
2022-02-06 15:09:25 +01:00
|
|
|
self._repo_version: Optional[GitVersionInfo] = None
|
2022-02-05 22:40:10 +01:00
|
|
|
self._repo_info_text: Optional[GenericText] = None
|
|
|
|
|
2022-02-06 15:09:25 +01:00
|
|
|
self._include_drv: Optional[bool] = True
|
|
|
|
self._include_ins: Optional[bool] = True
|
|
|
|
self._use_docstrip_guards: Optional[List[str]] = None
|
|
|
|
|
2022-02-05 23:54:45 +01:00
|
|
|
def merge_with(self, other, strict: bool = False):
|
2022-02-05 22:40:10 +01:00
|
|
|
"""
|
|
|
|
Merges the other config into this one
|
|
|
|
:param other:
|
2022-02-05 23:54:45 +01:00
|
|
|
:param strict: whether conflicting options are allowed or not
|
2022-02-05 22:40:10 +01:00
|
|
|
:return: self
|
|
|
|
"""
|
2022-02-05 23:54:45 +01:00
|
|
|
for var in vars(self):
|
|
|
|
if not getattr(self, var):
|
|
|
|
setattr(self, var, getattr(other, var))
|
|
|
|
else:
|
|
|
|
if strict and getattr(other, var) is not None and getattr(self, var) != getattr(other, var):
|
|
|
|
raise NotImplementedError
|
2022-02-05 22:40:10 +01:00
|
|
|
return self
|
|
|
|
|
2022-02-06 15:09:25 +01:00
|
|
|
@property
|
|
|
|
def naming_scheme(self) -> NamingScheme:
|
|
|
|
if self._naming_scheme is None:
|
|
|
|
return NamingScheme.prepend_author
|
|
|
|
else:
|
|
|
|
return self._naming_scheme
|
|
|
|
|
|
|
|
@property
|
|
|
|
def license(self) -> list:
|
|
|
|
if self._license is None:
|
|
|
|
return []
|
|
|
|
else:
|
|
|
|
return self._license
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_extra_header(self) -> bool:
|
|
|
|
if self._include_extra_header is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_extra_header
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_build_time(self) -> bool:
|
|
|
|
if self._include_build_time is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_build_time
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_pytex_version(self) -> bool:
|
|
|
|
if self._include_pytex_version is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_pytex_version
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_pytex_info_text(self) -> bool:
|
|
|
|
if self._include_pytex_info_text is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_pytex_info_text
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_repo_version(self) -> bool:
|
|
|
|
if self._include_repo_version is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_repo_version
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_repo_info_text(self) -> bool:
|
|
|
|
if self._include_repo_info_text is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_repo_info_text
|
|
|
|
|
|
|
|
@property
|
2022-02-06 15:28:04 +01:00
|
|
|
def extra_header(self) -> GenericText:
|
2022-02-06 15:09:25 +01:00
|
|
|
if self._extra_header is None:
|
2022-02-06 15:28:04 +01:00
|
|
|
return GenericText([])
|
2022-02-06 15:09:25 +01:00
|
|
|
else:
|
|
|
|
return self._extra_header
|
|
|
|
|
|
|
|
@property
|
|
|
|
def author(self) -> str:
|
|
|
|
if self._author is None:
|
|
|
|
return "MISSING AUTHOR"
|
|
|
|
else:
|
|
|
|
return self._author
|
|
|
|
|
|
|
|
@property
|
|
|
|
def licenses(self) -> GenericText:
|
|
|
|
if self._licenses is None:
|
|
|
|
return GenericText([])
|
|
|
|
else:
|
|
|
|
return self._licenses
|
|
|
|
|
|
|
|
@property
|
|
|
|
def version(self) -> str:
|
|
|
|
if self._version is None:
|
|
|
|
return "0.0.0"
|
|
|
|
else:
|
|
|
|
return self._version
|
|
|
|
|
|
|
|
@property
|
|
|
|
def extra_header_file(self) -> GenericText:
|
|
|
|
if self._extra_header_file is None:
|
|
|
|
return GenericText([])
|
|
|
|
else:
|
|
|
|
return self._extra_header_file
|
|
|
|
|
|
|
|
@property
|
|
|
|
def pytex_version(self) -> Optional[GitVersionInfo]:
|
|
|
|
return self._pytex_version
|
|
|
|
|
|
|
|
@property
|
|
|
|
def pytex_info_text(self) -> GenericText:
|
|
|
|
if self._pytex_info_text is None:
|
|
|
|
return GenericText([])
|
|
|
|
else:
|
|
|
|
return self._pytex_info_text
|
|
|
|
|
|
|
|
@property
|
|
|
|
def repo_version(self) -> Optional[GitVersionInfo]:
|
|
|
|
if self._repo_version is None:
|
|
|
|
return None
|
|
|
|
else:
|
|
|
|
return self._repo_version
|
|
|
|
|
|
|
|
@property
|
|
|
|
def repo_info_text(self) -> GenericText:
|
|
|
|
if self._repo_info_text is None:
|
|
|
|
return GenericText([])
|
|
|
|
else:
|
|
|
|
return self._repo_info_text
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_drv(self) -> bool:
|
|
|
|
if self._include_drv is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_drv
|
|
|
|
|
|
|
|
@property
|
|
|
|
def include_ins(self) -> bool:
|
|
|
|
if self._include_ins is None:
|
|
|
|
return False
|
|
|
|
else:
|
|
|
|
return self._include_ins
|
|
|
|
|
|
|
|
@property
|
|
|
|
def use_docstrip_guards(self) -> list:
|
|
|
|
if self._use_docstrip_guards is None:
|
|
|
|
return []
|
|
|
|
else:
|
|
|
|
return self._use_docstrip_guards
|
|
|
|
|
2022-02-04 11:39:15 +01:00
|
|
|
|
2022-02-04 11:46:06 +01:00
|
|
|
class DocFormattingConfig:
|
2022-02-04 11:39:15 +01:00
|
|
|
def __init__(self):
|
|
|
|
self._documents: Optional[List[str]] = None
|
|
|
|
self._dependencies: Optional[List[str]] = None
|