All checks were successful
Deploy Quartz site to GitHub Pages / build (push) Successful in 2m12s
45 lines
1.7 KiB
Markdown
45 lines
1.7 KiB
Markdown
# Markdown
|
||
Use Obsidian-flavored Markdown.
|
||
Use fenced code blocks for code snippets, indicating the language when appropriate.
|
||
Avoid extra new lines, prefer fewer new lines and compact formatting.
|
||
|
||
# Coding
|
||
The rest of this document describes coding conventions to follow when writing code.
|
||
|
||
## General
|
||
- Do not create comments nor docstrings when updating code unless asked.
|
||
- Do not create a summary .md file unless asked.
|
||
- Do not create a README.md file unless asked.
|
||
- When installing a new dependency, prefer to use the latest version.
|
||
|
||
## Python
|
||
- Use uv for handling python installations
|
||
- Use pyproject.toml to handle dependencies
|
||
- Avoid exceptions if possible
|
||
- When exceptions are necessary, use specific exception types, provide meaningful messages, and handle them appropriately.
|
||
- Exceptions try/except blocks should be as narrow as possible, try extra hard to avoid catching exceptions you did not intend to catch.
|
||
- Use type hints for all functions and methods.
|
||
|
||
## Python unit testing:
|
||
- Use pytest framework, version 9 or higher.
|
||
- Configure using pyproject.toml, avoid pytest.ini to be able to have all configuration in one place.
|
||
- Prefer parametrized tests for functions that need to be tested with multiple sets of inputs and expected outputs.
|
||
- Use the new `with pytest.test(...)´ for that purpose:
|
||
|
||
```python
|
||
import pytest
|
||
def test_parametrized(subtests: pytest.Subtests) -> None:
|
||
# ... setup code ...
|
||
parameters = [...]
|
||
for ... in parameters:
|
||
with subtests.test(x=...):
|
||
assert ...
|
||
# ... tear down ...
|
||
```
|
||
|
||
## Django
|
||
|
||
- Prefer function based views over class based views
|
||
- Use django-stubs for type hints
|
||
- Use pytest-django for testing django applications
|