bash scripts/.shscripts/checks.sh: runs quality checksscripts/run.sh: runs the programscripts/setup.sh: sets up a minimal project
.gitignore: taken from Github's .gitignore repository, with some extras by me, namely ignoring .envs.
.python-version: specifies your desired python version, and multiple tools will read from it automatically.
LICENSE: this code is shared under the MIT license, but feel free to change or remove it.
pyproject.toml: defines your direct dependencies and project configuration.
I highly recommend wring your configuration here, as most tools will find it automatically.
uv.lock: is defined after you execute uv run or uv sync, containing all your dependencies and sub-dependencies versions.
I highly recommend version controlling it, such that everyone installs the same versions, and deployments don't have any surprises,
e.g breaking changes.
I don't share it in this skeleton: the versions may get stale and rotten 😁
configs/: place your .envs here.
A folder is useful if you want to have multiple .envs, eg one for the general config and others for specific scenarios.
scripts/: save your scripts here.
src/: develop your source code here. src is a generic name that is ok for an application, but not recommended for libraries.
(due to import paths).
For libraries you may want to rename to, for instance:
if your library is called foo, you may want to name the folder foo, to help others import your code cleanly, eg from foo import bar.
Some examples: FastAPI, Pydantic.
tests/: put your test code here.
Started from py-skelly, an opinionated Python skeleton by Duarte Pompeu.