initial commit: draft data structures
This commit is contained in:
commit
8c7deb2cbc
16 changed files with 199 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
__pycache__
|
||||
main.py
|
0
PyTeX/__init__.py
Normal file
0
PyTeX/__init__.py
Normal file
0
PyTeX/config/__init__.py
Normal file
0
PyTeX/config/__init__.py
Normal file
12
PyTeX/config/enums.py
Normal file
12
PyTeX/config/enums.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from enum import Enum
|
||||
|
||||
|
||||
class NamingScheme(Enum):
|
||||
prepend_author = 0
|
||||
clean = 1
|
||||
|
||||
|
||||
class License(Enum):
|
||||
LPPL = 0
|
||||
GPLv3 = 1
|
||||
MIT = 2
|
34
PyTeX/config/global_config.py
Normal file
34
PyTeX/config/global_config.py
Normal file
|
@ -0,0 +1,34 @@
|
|||
from pathlib import Path
|
||||
from typing import Optional
|
||||
from .source_config import BasicSourceConfig
|
||||
|
||||
|
||||
class GlobalPyTeXConfig:
|
||||
_source_root: Optional[Path] = None
|
||||
_build_root: Optional[Path] = None
|
||||
_doc_root: Optional[Path] = None
|
||||
_tex_root: Optional[Path] = None
|
||||
|
||||
_default_source_config: Optional[BasicSourceConfig] = None
|
||||
|
||||
_recursive: bool = True
|
||||
_overwrite_existing_files: bool = False
|
||||
_clean_old_files: True
|
||||
|
||||
_allow_dirty: bool = False
|
||||
|
||||
@classmethod
|
||||
def build_root(cls) -> Path:
|
||||
return cls._build_root
|
||||
|
||||
@classmethod
|
||||
def doc_root(cls) -> Path:
|
||||
return cls._doc_root
|
||||
|
||||
@classmethod
|
||||
def source_root(cls) -> Path:
|
||||
return cls._source_root
|
||||
|
||||
@classmethod
|
||||
def tex_root(cls) -> Path:
|
||||
return cls._tex_root
|
35
PyTeX/config/source_config.py
Normal file
35
PyTeX/config/source_config.py
Normal file
|
@ -0,0 +1,35 @@
|
|||
from typing import List, Optional, Union
|
||||
from .enums import NamingScheme, License
|
||||
|
||||
|
||||
class BasicSourceConfig:
|
||||
def __init__(self):
|
||||
self._naming_scheme: Union[NamingScheme, str] = NamingScheme.clean # either some predefined scheme, or a formatting string
|
||||
self._author: Optional[str] = None
|
||||
self._license: Optional[List[License]] = None
|
||||
|
||||
self._extra_header: List[str] = []
|
||||
self._include_extra_header: bool = True
|
||||
self._include_build_time: bool = False
|
||||
self._include_pytex_version: bool = False
|
||||
self._include_pytex_info_text: bool = False
|
||||
self._include_repo_version: bool = False
|
||||
self._include_repo_info_text: bool = False
|
||||
|
||||
self._include_drv: bool = True
|
||||
self._include_ins: bool = True
|
||||
self._default_docstrip_guards: Optional[List[str]] = None
|
||||
|
||||
|
||||
class PyTeXSourceConfig(BasicSourceConfig):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self._available_docstrip_guards: Optional[List[str]] = None
|
||||
self._doc_dependencies: Optional[List[str]] = None
|
||||
self._tex_dependencies: Optional[List[str]] = None
|
||||
|
||||
|
||||
class DocSourceConfig:
|
||||
def __init__(self):
|
||||
self._documents: Optional[List[str]] = None
|
||||
self._dependencies: Optional[List[str]] = None
|
0
PyTeX/formatting/__init__.py
Normal file
0
PyTeX/formatting/__init__.py
Normal file
0
PyTeX/logger/__init__.py
Normal file
0
PyTeX/logger/__init__.py
Normal file
7
PyTeX/logger/logger.py
Normal file
7
PyTeX/logger/logger.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
import logging
|
||||
|
||||
logging.basicConfig(
|
||||
filename='pytex.log',
|
||||
encoding='utf-8',
|
||||
level=logging.INFO
|
||||
)
|
0
PyTeX/pathlib/__init__.py
Normal file
0
PyTeX/pathlib/__init__.py
Normal file
34
PyTeX/pathlib/relative_paths.py
Normal file
34
PyTeX/pathlib/relative_paths.py
Normal file
|
@ -0,0 +1,34 @@
|
|||
from pathlib import Path
|
||||
from enum import Enum
|
||||
from PyTeX.config.global_config import GlobalPyTeXConfig
|
||||
|
||||
|
||||
class PyTeXRootDir(Enum):
|
||||
BUILD = 1
|
||||
SOURCE = 2
|
||||
DOC = 3
|
||||
TEX = 4
|
||||
|
||||
|
||||
class RelativePath:
|
||||
def __init__(self, path: Path):
|
||||
self._path: Path = path
|
||||
|
||||
@property
|
||||
def path(self) -> Path:
|
||||
return self._path
|
||||
|
||||
def absolute_path(self, pytex_root_dir: PyTeXRootDir) -> Path:
|
||||
root: Path = {
|
||||
PyTeXRootDir.BUILD: GlobalPyTeXConfig.build_root(),
|
||||
PyTeXRootDir.SOURCE: GlobalPyTeXConfig.source_root(),
|
||||
PyTeXRootDir.DOC: GlobalPyTeXConfig.doc_root(),
|
||||
PyTeXRootDir.TEX: GlobalPyTeXConfig.tex_root()
|
||||
}[pytex_root_dir]
|
||||
return root / self._path
|
||||
|
||||
def __eq__(self, other):
|
||||
return self.path == other.path
|
||||
|
||||
def __str__(self):
|
||||
return str(self.path)
|
0
PyTeX/versioning/__init__.py
Normal file
0
PyTeX/versioning/__init__.py
Normal file
0
PyTeX/versioning/git/__init__.py
Normal file
0
PyTeX/versioning/git/__init__.py
Normal file
0
PyTeX/versioning/version_info/__init__.py
Normal file
0
PyTeX/versioning/version_info/__init__.py
Normal file
12
PyTeX/versioning/version_info/constants.py
Normal file
12
PyTeX/versioning/version_info/constants.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
JSON_NAME = 'name'
|
||||
JSON_BUILD_TIME = 'build time'
|
||||
JSON_SOURCE_FILES = 'source files'
|
||||
|
||||
JSON_MD5_CHECKSUM = 'md5 checksum'
|
||||
JSON_PYTEX = 'pytex'
|
||||
JSON_REPOSITORY = 'repository'
|
||||
|
||||
JSON_VERSION = 'source version'
|
||||
JSON_COMMIT_HASH = 'commit hash'
|
||||
JSON_BRANCH = 'branch'
|
||||
JSON_DIRTY = 'dirty'
|
63
PyTeX/versioning/version_info/version_info.py
Normal file
63
PyTeX/versioning/version_info/version_info.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
from typing import Optional
|
||||
from .constants import *
|
||||
|
||||
|
||||
class GitVersionInfo:
|
||||
def __init__(self, dictionary: dict):
|
||||
if not all(
|
||||
x in dictionary.keys() for
|
||||
x in [JSON_BRANCH, JSON_COMMIT_HASH]
|
||||
):
|
||||
raise ValueError # TODO
|
||||
|
||||
self._dirty: bool = dictionary[JSON_DIRTY]
|
||||
self._commit_hash: str = dictionary[JSON_COMMIT_HASH]
|
||||
self._branch: Optional[str] = \
|
||||
dictionary[JSON_BRANCH] if JSON_BRANCH in dictionary.keys() \
|
||||
else None
|
||||
self._version: Optional[str] = \
|
||||
dictionary[JSON_VERSION] if JSON_VERSION in dictionary.keys() \
|
||||
else None
|
||||
|
||||
@property
|
||||
def is_dirty(self) -> bool:
|
||||
return self._dirty
|
||||
|
||||
@property
|
||||
def version(self) -> Optional[str]:
|
||||
return self._version
|
||||
|
||||
@property
|
||||
def commit_hash(self) -> Optional[str]:
|
||||
return self._commit_hash
|
||||
|
||||
@property
|
||||
def branch(self) -> Optional[str]:
|
||||
return self._branch
|
||||
|
||||
|
||||
class FileVersionInfo:
|
||||
def __init__(self, dictionary: dict):
|
||||
if JSON_MD5_CHECKSUM not in dictionary.keys():
|
||||
raise ValueError # TODO
|
||||
else:
|
||||
self._md5_checksum = dictionary[JSON_MD5_CHECKSUM]
|
||||
|
||||
self._source_repository_version: Optional[GitVersionInfo] = \
|
||||
GitVersionInfo(dictionary[JSON_REPOSITORY]) if JSON_REPOSITORY in dictionary.keys() \
|
||||
else None
|
||||
self._pytex_repository_version: Optional[GitVersionInfo] = \
|
||||
GitVersionInfo(dictionary[JSON_PYTEX]) if JSON_PYTEX in dictionary.keys() \
|
||||
else None
|
||||
|
||||
@property
|
||||
def md5_checksum(self) -> str:
|
||||
return self._md5_checksum
|
||||
|
||||
@property
|
||||
def source_repository_version(self) -> Optional[GitVersionInfo]:
|
||||
return self._source_repository_version
|
||||
|
||||
@property
|
||||
def pytex_repository_version(self) -> Optional[GitVersionInfo]:
|
||||
return self._pytex_repository_version
|
Loading…
Reference in a new issue