Testing: To Write: ☐ Test the Config file skipping header with `skip_header_init` ☐ Document coverage commands `coverage run --source=./panaetius -m pytest` `coverage report` & `coverage html` > gives ./htmlcov/index.html ☐ Document for abstract methods should raise NotImplementedError ☐ Document https://stackoverflow.com/a/9212387 Documentation: ☐ Rewrite documentation using `mkdocs` and using `.md`. ☐ Update the metadata in the `pyproject.toml`. ☐ Create a new `Readme.md` and remove the `.rst`. ☐ Document the logging strategy CLI tools should use `logger.critical` and raise SystemExit(1) Libraries should raise custom errors and have a `logger.critical(exec_info=1)` Misc: ☐ Use the python runner to build the docs & run the tests (including coverage html) coverage run -m pytest && coverage report && coverage html ☐ document this in trilium Archive: ✘ Bump the version to release 2.0 @cancelled(21-10-23 05:36) @project(Misc) ✔ Handle if a bool is passed in as a default @done(21-10-16 05:25) @project(Coding.No Config File) ✔ Handle if a bool is passed in as a default @done(21-10-16 05:25) @project(Coding.Config File) ✔ Create SimpleLogger, AdvancedLogger, CustomLogger classes @done(21-10-16 16:22) @project(Coding.Logging) ✔ Logging path should take by default the config path unless overwritten? @done(21-10-16 23:49) @project(Coding.Logging) ✔ Check logging path + config path are valid, if not raise error. @done(21-10-18 00:04) @project(Coding.Errors) ✔ Add tests for these. @done(21-10-18 00:04) @project(Coding.Errors) ✔ Check for a key > 2 levels, raise custom error, write test @done(21-10-17 23:30) @project(Coding.Errors) ✔ Check all functions and annotations. @done(21-10-18 01:07) @project(Coding.Linting) ✔ Write the docstrings for public functions/methods. @done(21-10-18 02:29) @project(Coding.Docstrings) ✔ When both a config file and a env var is found, use the env var. @done(21-10-18 00:38) @project(Coding.Functionality) ✔ If loading from a default, don't covert to TOML @done(21-10-17 20:33) @project(Tests.Bugfixes) ✔ Env Vars should be given as python objects @done(21-10-17 20:33) @project(Tests.Bugfixes) The string or node provided may only consist of the following Python literal structures: strings, bytes, numbers, tuples, lists, dicts, sets, booleans, and None. use ast.literal_eval() https://docs.python.org/3/library/ast.html#ast.literal_eval ✔ Test default config path set to "~/.config" @done(21-10-17 17:25) @project(Tests.__init__) ✔ Test config path is set when passed in @done(21-10-17 17:25) @project(Tests.__init__) ✔ Check testing config file is returned as dict @done(21-10-17 17:25) @project(Tests.config property) ✔ Check _self.missing_config and empty dict is returned @done(21-10-17 17:25) @project(Tests.config property) ✔ Arrays & tables loaded correctly from config file @done(21-10-17 20:34) @project(Tests.get_value.config_file) ✔ test when key length is 1 the value is returned @done(21-10-17 18:55) @project(Tests.get_value.config_file) ✔ test when key length is 2 the value is returned @done(21-10-17 18:55) @project(Tests.get_value.config_file) ✔ test when key not found and no env var default is loaded @done(21-10-17 19:01) @project(Tests.get_value.config_file) ✔ test bool's are properly converted @done(21-10-17 19:01) @project(Tests.get_value.config_file) ✔ test when key not found and env var is set value is loaded @done(21-10-17 20:43) @project(Tests.get_value.config_file) ✔ check if env key is missing the default is read in @done(21-10-17 20:55) @project(Tests.get_value.env_var) ✔ check if env key is present the values are read in @done(21-10-17 22:24) @project(Tests.get_value.env_var) ✔ parametrise a test to read in values form env vars and they're set correctly @done(21-10-17 22:24) @project(Tests.get_value.env_var) ✔ test that the env var is valid python @done(21-10-18 01:03) @project(Tests.get_value.env_var) ✔ test set_config works @done(21-10-17 23:29) @project(Tests.library)