From 37353e8695eacfc4c1994d7c7ff66d6664f848ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Ke=C3=9Fler?= Date: Sun, 6 Feb 2022 15:11:45 +0100 Subject: [PATCH] dump useless stuff --- PyTeX/tmp/generate_properties.py | 73 ++++++++++++++++++++++++++++++++ main.py | 7 ++- 2 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 PyTeX/tmp/generate_properties.py diff --git a/PyTeX/tmp/generate_properties.py b/PyTeX/tmp/generate_properties.py new file mode 100644 index 0000000..f802e2b --- /dev/null +++ b/PyTeX/tmp/generate_properties.py @@ -0,0 +1,73 @@ +from typing import Tuple, Union, List, Any, Optional +from PyTeX.format.enums import NamingScheme, TeXFlavour, TeXType, License +from PyTeX.format.generic_text import GenericText +from PyTeX.format.git_version_info import GitVersionInfo + + +def generate_properties(props): + props = [x if isinstance(x, Tuple) else (x, None) for x in props] + out = [] + for [prop, default] in props: + out.append( + " @property\n" + " def {prop}(self) -> {type}:\n" + " if self._{prop} is None:\n" + " return {default}\n" + " else:\n" + " return self._{prop}\n".format( + prop=prop, + type=type(default).__name__, + default=str(default) + ) + ) + return '\n'.join(out) + + +if __name__ == "__main__": + out = generate_properties( + [ + ("naming_scheme", NamingScheme.prepend_author), + ("license", []), + ("include_extra_header", False), + ("include_build_time", False), + ("include_pytex_version", False), + ("include_pytex_info_text", False), + ("include_repo_version", False), + ("include_repo_info_text", False), + ("extra_header", []), + ("author", "MISSING AUTHOR"), + ("licenses", GenericText([])), + ("version", "0.0.0"), + ("extra_header_file", GenericText([])), + ("pytex_version", "0.0.0"), + ("extra_header_file", GenericText([])), + "pytex_version", + ("pytex_info_text", GenericText([])), + "repo_version", + ("repo_info_text", GenericText([])), + ("include_drv", False), + ("include_ins", False), + ("use_docstrip_guards", []) + ] + ) + print(out) + +def generate_properties(attributes: List[Union[str, Tuple[str, Any]]]): + attributes = [ + x if isinstance(x, Tuple) else (x, None) for x in attributes + ] + + def decorator(cls): + for [attribute, default_value] in attributes: + def get_attr(self, attribute=attribute, default_value=default_value): + if getattr(self, "_" + attribute) is not None: + return getattr(self, "_" + attribute) + else: + return default_value + + prop = property(get_attr) + setattr(cls, attribute, prop) + return cls + + return decorator + diff --git a/main.py b/main.py index 2532040..2d3ec52 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,8 @@ from PyTeX.build.build.build_dir_spec import BuildDirSpecification from PyTeX.build.enums import * from PyTeX.build.paths import RelativePath +from PyTeX.format.formatting_config import FormattingConfig + spec = BuildDirSpecification( source_root=Path('src'), @@ -33,5 +35,8 @@ p3 = p / p2 p4 = p.with_name('myname') - print(p) + +config: FormattingConfig = FormattingConfig() +config._naming_scheme = 'test' +n = config.naming_scheme