Files
tembo/TODO.todo
2021-10-30 23:39:52 +01:00

120 lines
7.2 KiB
Plaintext

Priority:
☐ Write the tests
☐ test logs: <https://stackoverflow.com/questions/53125305/testing-logging-output-with-pytest>
document this
☐ Docstrings
Documentation:
Docstrings:
☐ Use Duty to write module docstrings
☐ Use Duty to add Class docstrings
☐ Document these in Trilium and rewrite the docstrings notes
☐ Add the comment on Reddit (artie buco?) about imports in a module
☐ Document using `__main__.py` and `cli.py`
Use Duty as an example
☐ Write documentation using `mkdocs`
☐ Look at how to use github actions
Use <https://github.com/pdm-project/pdm/tree/main/.github/workflows> for an example
☐ Build the docs using a github action.
☐ Document how to use pytest to read a logging message
<https://stackoverflow.com/questions/53125305/testing-logging-output-with-pytest>
- caplog as fixture
- reading `caplog.records[0].message`
see `_old_test_pages.py`
☐ Document testing value of an exception raised
When you use `with pytest.raises` you can use `.value` to access the attributes
reading `.value.code`
reading `str(.value)`
☐ Document working with exceptions
☐ General pattern - raise exceptions in codebase, catch them in the CLI.
Allows people to use via an API and handle the exceptions themselves.
You can use python builtins but custom exceptions are better for internal control
☐ Capturing exceptions in the CLI.
Access the message of the exception with `.args[0]`.
use `raise SystemExit(1) from exception` in order to gracefully exit
☐ Document using datadir with a module rather than a shared one. Link to tembo as an example.
☐ Can prospector ignore tests dir? document this in the gist if so
Functionality:
☐ Replace loggers with `click.echo` for command outputs. Keep logging messages for actual logging messages?
☐ Refactor the tembo new command so the cli is split out into manageable methods
☐ Use the complicated CLI example so the tembo new has its own module to define functions in
☐ Replace all logger errors with exceptions, move logger messages to the cli.
✔ Make options a property on the class, add to abstract @done(21-10-30 19:31)
☐ Use the python runner Duty
<https://github.com/pawamoy/duty>
☐ Run tests
☐ Update poetry
☐ Build docs
☐ Document using Duty
VSCode:
PyInstaller:
☐ Document build error: <https://github.com/pyenv/pyenv/issues/1095>
PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.8.11 mac
PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.8.11 linux
☐ Freeze a click app: <https://stackoverflow.com/questions/45090083/freeze-a-program-created-with-pythons-click-pacage>
☐ If python 3.9 can be used with Pyinstaller, rewrite the code to use the latest Python features
dict.update -> |=
walrus :=
Tests:
☐ Write tests! @2d
Use coverage as going along to make sure all bases are covered in the testing
VSCode:
☐ Look at <https://github.com/CodeWithSwastik/vscode-ext>
Logging:
Documentation:
Tembo:
☐ Document creating new Tembo config
☐ ~/tembo needs creating
☐ ~/tembo/.config
☐ ~/tembo/.templates
☐ ~/tembo/logs
☐ Document how to overwrite these with ENV vars
☐ have a git repo with all the above already configured and walk user through
clone the repo, delete .git, git init, configure and add git origin
Archive:
✔ Document the python/logging/typing in Trilium @done(21-10-25 14:33) @project(Priority)
✔ Update typing annotations to include generics instead @done(21-10-25 22:38) @project(Priority)
https://docs.python.org/3/library/collections.abc.html#collections-abstract-base-classes
✔ Move any `tembo.CONFIG` calls out of `pages.py` and ensure these are passed in from the cli. @done(21-10-28 19:44) @project(Functionality)
✔ Make `config scope` a dict in `cli.py`. @done(21-10-28 19:44) @project(Functionality)
✔ Make example optional @done(21-10-29 00:15) @project(Functionality)
✔ Add the `--example` output to the miscounted token message so the user knows the correct command to use. @done(21-10-29 00:15) @project(Functionality)
✔ Page options dataclass @done(21-10-28 20:09) @project(Functionality)
✔ Make user_input optional @important @done(21-10-30 03:20) @project(Functionality)
✔ Look at `_convert_to_path()` and see if it can be rewritten to make it clearer when there isn't a base path. @done(21-10-30 02:14) @project(Functionality)
✔ Replace scoped page creator inputs so that the whole class uses the options dict rather than the variables passed around. @done(21-10-30 03:20) @project(Functionality)
✔ Go through code TODOs @done(21-10-25 05:52) @project(Priority)
✔ Check code order and make sure things are where they should be @done(21-10-25 13:31) @project(Priority)
✔ Add version option @done(21-10-25 13:40) @project(Functionality)
✘ Document usage of Panaetius in a module @cancelled(21-10-25 13:31) @project(Logging.Documentation)
✘ Uses `strftime` tokens: <https://strftime.org> @cancelled(21-10-25 13:32) @project(Logging.Documentation)
✔ Document latest typing. @done(21-10-25 14:14) @project(Logging.Documentation)
✔ Using from `__future__` with `|` @done(21-10-25 13:48) @project(Logging.Documentation)
✔ `using Tuple[str, ...]` @done(21-10-25 13:49) @project(Logging.Documentation)
✔ `Sequence` vs `Collection` @done(21-10-25 13:55) @project(Logging.Documentation)
✔ Document how to do docstrings in python. Don't document `__init__` do it in class. @done(21-10-25 13:57) @project(Logging.Documentation)
✔ Document using jinja2 briefly and link to Tembo (link to <https://zetcode.com/python/jinja/>) @done(21-10-25 14:21) @project(Logging.Documentation)
✔ How to raise + debug an exception? @done(21-10-25 14:32) @project(Logging.Documentation.Logging)
✔ Document how to raise a logger.critical instead of exception @done(21-10-25 14:32) @project(Logging.Documentation.Logging)
✔ tokens @done(21-10-25 05:35) @project(Bug)
✔ Handle case where there are no scopes in the config and command is invoked. @done(21-10-25 04:32) @project(Functionality)
✔ Have an `--example` flag to `new` that prints an example given in the `config.yml` @done(21-10-25 04:55) @project(Functionality)
✔ Should be a `tembo new --list` to list all possible names. @done(21-10-25 05:28) @project(Functionality)
✘ When template not found, raise a Tembo error @cancelled(21-10-25 05:29) @project(Functionality)
✔ Convert spaces to underscores in filepath @done(21-10-25 05:35) @project(Functionality)
✘ Add update notification? @cancelled(21-10-25 05:29) @project(Functionality)
✔ `TEMBO_CONFIG` should follow same pattern as other env vars and be a python string when read in @done(21-10-24 05:31) @project(Functionality)
✘ Uses Pendulum tokens: https://pendulum.eustace.io/docs/#tokens @cancelled(21-10-24 05:32) @project(Logging.Documentation)