TODO A description of the project
This repo has a blank directory structure for an ARC Python project, including setting up:
poetry
- for dependencies (including development dependencies) and creating a Python package from your source codepre-commit
- to automatically run linters (flake8
, black
, and isort
) for style checks and auto-formattingmain
and develop
branches (by default)poetry
Create a new repo from this template (green button "Use this template" top right -> create new repository), with a name in the format ARC-<project-name>
, and clone it locally
Edit the lines with TODO
comments in pyproject.toml
and .github/workflows/actions.yml
, including changing the name of the src/todo_packagename
directory.
Update and install Poetry dependencies
poetry update
poetry install
Update and install pre-commit hooks:
poetry run pre-commit autoupdate
poetry run pre-commit install --install-hooks
Update the README with a description of the project and fill the other sections marked as TODO
Delete the "Using this template" section of this readme, and optionally the file .github/workflows/update_template.yml
Clone this repository
Install with pip
:
pip install .
TODO
Install dependencies with Poetry
poetry install
Install pre-commit hooks:
poetry run pre-commit install --install-hooks
To add dependencies to the poetry environment:
poetry add <PACKAGE_NAME>
See the poetry documentation for more details on specifying dependencies.
To run commands in the poetry virtual environment (in a terminal), either:
poetry run
poetry run python myscript.py
poetry shell
and then run commands as normalexit
To run tests:
poetry run pytest
To run linters:
flake8
, black
, and isort
will run automatically before making commitspoetry run black .
poetry run isort .
poetry run flake8
Your source code files should go in the src/todo_packagename
directory (with todo_packagename
replaced with the name of your package). These will be available as a python package, i.e. you can do from todo_mypackagename.myfile import myfunction
etc.
Add tests (in files with names like test_*.py
and with functions with names starting test_*
) the tests/
directory.