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-test-pypi-token>
$ poetry config pypi-token.pypi <your-pypi-token>
Verify it is in the system keyring
$ keyring get poetry-repository-testpypi __token__
pypi-llsijlsdjlsjlsij...
$ keyring get poetry-repository-pypi __token__
pypi-llsijlsdjlsjlsij...
Build and publish
$ poetry build
$ poetry publish -r testpypi
$ poetry publish
!!!: Publishing to testpypi is not working for me yet. Publishing to regular PyPi does. I'm not sure why yet.
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
File details
Details for the file hypermodern_guyhoozdis-0.7.0.tar.gz
.
File metadata
- Download URL: hypermodern_guyhoozdis-0.7.0.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1022-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53f2e78c49336241d60768ebda781b0821a5b8fc2a4f45a7c26ca9c4e724f175 |
|
MD5 | bfaa0d7a132702f819fc8c0731172518 |
|
BLAKE2b-256 | 03d3d7ff82943e14a413cf1a2a79408d4486f49b1942b281ae24f3da2aeafdfd |
File details
Details for the file hypermodern_guyhoozdis-0.7.0-py3-none-any.whl
.
File metadata
- Download URL: hypermodern_guyhoozdis-0.7.0-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.3 CPython/3.11.9 Linux/6.5.0-1022-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9768a5a96fc461d3944c77949bb2bde7910a739127596fcf4258bb692123403c |
|
MD5 | 98c48fe02b49af355def2e047bd82560 |
|
BLAKE2b-256 | bcfa70f29d262a9ca03009dbfc9556104a3c6bd5cc5508c1e1fb8e06e6cbce1f |