A template package based on The Hypermodern Project
Project description
The Hypermodern Python Project
A template based on "The Hypermodern Python Project".
Quick Start
Note: Assumes you have poetry, nox, and the required python versions installed. See the Development Environment Setup section below for instructions on setting up the required environment.
Run the following commands from the root of the repo.
initialize the virtual environment
Construct poetry's virtual environment.
$ poetry install
If you have made changes to the dependencies, then you must update the lock file.
$ poetry lock
$ poetry install
run the full test suite
$ nox
#
# ... snip...
#
nox > Ran multiple sessions:
nox > * tests-3.12: success
nox > * tests-3.11: success
nox > * tests-3.10: success
nox > * tests-3.9: success
nox > * tests-3.8: success
Reuse existing virtual environments with the -r/--reuse-existing-virtualenvs
switch to speed up re-running the test suite.
$ nox -r
run all tests for a single python version
List the available sessions with -l/--list
and select one or more with the -s/--session
switch.
$ nox -l
Sessions defined in /<path>/<to>/<repo>/hypermodern-python/noxfile.py:
* tests-3.12
* tests-3.11
* tests-3.10
* tests-3.9
* tests-3.8
$ nox -rs tests-3.11 tests-3.10
#
# ... snip...
#
nox > Ran multiple sessions:
nox > * tests-3.11: success
nox > * tests-3.10: success
run all tests in a single module
$ nox -rs tests-3.11 -- tests/test_console.py
#
# ... snip...
#
tests/test_console.py ....
#
# ... snip...
#
nox > Session tests-3.11 was successful.
run a specific tests from a specific module
$ nox -rs tests-3.11 -- tests/test_console.py::test_main_fails_on_request_error
#
# ... snip...
#
tests/test_console.py .
#
# ... snip...
#
nox > Session tests-3.11 was successful.
run the debugger when a breakpoint is hit
This example is a demonstration of passing arbitrary arguments to pytest
which is being run by nox
, not an assertion that this is the best way to run the debugger.
See [TODO: Get a reference to docs] for more information about setting breakpoints.
$ nox -rs tests-3.11 -- -s --pdbcls=IPython.terminal.debugger:TerminalPdb tests/test_console.py::test_main_fails_on_request_error
tests/test_console.py Python 3.11.9 (main, Jun 12 2024, 14:42:40) [Clang 14.0.0 (clang-1400.0.29.202)]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.25.0 -- An enhanced Interactive Python. Type '?' for help.
ipdb> ll
37 def test_main_fails_on_request_error(runner, mock_reqeusts_get):
38 mock_reqeusts_get.side_effect = Exception("Boom")
39 result = runner.invoke(console.main)
40 breakpoint()
---> 41 assert result.exit_code == 1
42 assert "Boom" == str(result.exception)
ipdb> c
#
# ... snip...
#
nox > Session tests-3.11 was successful.
run the end-to-end tests
The end-to-end tests are marked with pytest.markers.e2e
and can be invoked by the command below. By default tests with the e2e
marker will not be executed.
$ nox -rs tests-3.11 -- -m e2e
Build Documentation
$ nox -rs docs
$ open docs/_build/index.html
Development Environment Setup
TODO: Write steps to setup development environment.
- Install
pyenv
- Install python versions
- Install
poetry
- Install
nox
- Verify environment setup
Publish Package
From the Poetry docs
$ poetry source add --priority explicit testpypi https://test.pypi.org/simple/
$ poetry config pypi-token.testpypi <your-token>
Verify it is in the system keyring
$ keyring get poetry-repository-testpypi __token__
pypi-llsijlsdjlsjlsij...
Resources
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for hypermodern_guyhoozdis-0.6.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | de2018ba49b003214aa67eb609156ef4f1f1529e14b3ff07f4af7e7e3a077885 |
|
MD5 | 8d107267a6152b173eb1041ba3eb3897 |
|
BLAKE2b-256 | dc2d408418ed0209c19e47e102b45f8e3a9a20a282f5afed06edfd43667423ce |
Hashes for hypermodern_guyhoozdis-0.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a81d6535e470836a65aba0543baf5cf1798f2e8c119e1d539deb32ce0b973769 |
|
MD5 | da91b2e172ed53295ed023a283026fa9 |
|
BLAKE2b-256 | eb6a20712ffcfd3d3d0acaa9c11db133399fa9fe1ed63fe17322c73a9ee2aa91 |