Development¶
Bug tracker¶
For bug reports, suggestions or questions please use the GitHub issue tracker at https://github.com/dataflake/Products.ZPsycopgDA/issues.
Getting the source code¶
The source code is maintained on GitHub. To check out the main branch:
$ git clone https://github.com/dataflake/Products.ZPsycopgDA.git
You can also browse the code online at https://github.com/dataflake/Products.ZPsycopgDA
Preparing the development sandbox¶
The following steps only need to be done once to install all the tools and scripts needed for building, packaging and testing. First, create a Virtual environment. The example here uses Python 3.11, but any Python version supported by this package will work. Then install all the required tools:
$ cd Products.ZPsycopgDA
$ python3.11 -m venv .
$ bin/pip install -U pip wheel
$ bin/pip install -U setuptools zc.buildout tox twine
Running the tests¶
You can use tox to run the unit and integration tests in this package. The
shipped tox configuration can run the tests for all supported platforms.
You can read the entire long list of possible options on the
tox CLI interface documentation page, but the following examples
will get you started:
$ bin/tox -l # List all available environments
$ bin/tox -pall # Run tests for all environments in parallel
$ bin/tox -epy311 # Run tests on Python 3.11 only
$ bin/tox -elint # Run package sanity checks and lint the code
Running the functional tests¶
Some tests are hard or even impossible to perform without a real running database backend. During a normal test run they will be skipped, and you will see output like this:
Total: 62 tests, 0 failures, 0 errors and 5 skipped in 0.090 seconds.
To run those functional tests you need to have a PostgreSQL server
running and listening on the standard unix socket, normally
located at /var/run/postgresql/.s.PGSQL.5432. This database server must
have a database named zpsycopgdatest that can be accessed by a user
zpsycopgdatest with password zpsycopgdatest. To set this up, log into
the running database server with an admin user and execute the following
statements:
postgres=# CREATE USER zpsycopgdatest WITH PASSWORD 'zpsycopgdatest';
postgres=# CREATE DATABASE zpsycopgdatest;
If everything worked you’ll see test output like this:
Total: 62 tests, 0 failures, 0 errors and 0 skipped in 0.105 seconds.
Building the documentation¶
tox is also used to build the Sphinx-based documentation. The
input files are in the docs subfolder and the documentation build step will
compile them to HTML. The output is stored in docs/_build/html/:
$ bin/tox -edocs
If the documentation contains doctests they are run as well.