Contributing¶
If you want to dig deeper into the Piccolo internals, follow these instructions.
Running Cockroach¶
To get a local Cockroach instance running, you can use:
cockroach start-single-node --insecure --store=type=mem,size=2GiB
Make sure the test database exists:
cockroach sql --insecure
>>> create database piccolo;
>>> use piccolo;
Get the tests running¶
Create a new virtualenv
Clone the Git repo
cd piccoloInstall default dependencies:
pip install -r requirements/requirements.txtInstall development dependencies:
pip install -r requirements/dev-requirements.txtInstall test dependencies:
pip install -r requirements/test-requirements.txtInstall database drivers:
pip install -r requirements/extras/postgres.txt -r requirements/extras/sqlite.txtSetup database engines, and make sure a database called
piccoloexists (seetests/postgres_conf.py,tests/sqlite_conf.py,tests/cockroach_conf.py). For an easy test database setup, you can use the Docker composition intests/docker-compose.yml.Run the automated code linting/formatting tools:
./scripts/lint.shRun the test suite with Postgres:
./scripts/test-postgres.shRun the test suite with Cockroach:
./scripts/test-cockroach.shRun the test suite with Sqlite:
./scripts/test-sqlite.sh
Contributing to the docs¶
The docs are written using Sphinx. To get them running locally:
Install the requirements:
pip install -r requirements/doc-requirements.txtcd docsDo an initial build of the docs:
make htmlServe the docs:
./scripts/run-docs.shThe docs will auto rebuild as you make changes.
Code style¶
Piccolo uses Black for formatting, preferably with a max line length of 79, to keep it consistent with PEP8 .
You can configure VSCode by installing
MyPy and
Black extensions
and modifying settings.json as follows:
{
"mypy-type-checker.reportingScope": "workspace",
"mypy-type-checker.preferDaemon": true,
"mypy-type-checker.importStrategy": "fromEnvironment",
"black-formatter.importStrategy": "fromEnvironment",
"black-formatter.args": ["--line-length", "79"],
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter"
},
"editor.formatOnSave": true
}
Type hints are used throughout the project.
Profiling¶
This isn’t required to contribute to Piccolo, but is useful when investigating performance problems.
Install the dependencies:
pip install requirements/profile-requirements.txtMake sure a Postgres database called
piccolo_profileexists.Run
./scripts/profile.shto get performance data.