# 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