Python Project Setup#

Example Project Name: foo.

Project Directory Layout#

.dockerignore
.editorconfig
.env
.gitignore
.rgignore
CHANGELOG.md
Dockerfile
README.md
requirements.txt
setup.cfg
setup.py

1-docs/
2-docker/

docker-compose.yml
docker-compose.override.yml -> env/dev/docker-compose.override.yml
env/dev/docker-compose.override.yml
env/ci/docker-compose.override.yml

src/foo/__init__.py
src/foo/bar/__init__.py
src/foo/bar/something.py
src/foo/cli.py

tests/test_foo.py
tests/test_bar/test_something.py

Separating src/ and tests/ simplifies searching in different scopes (e.g. rg something src/[1]) and gives better structure for big git merges.