Repo to follow the Claudio Jolowicz's tutorial about Hypermodern Python (https://cjolowicz.github.io/posts/hypermodern-python-01-setup/)
Project description
hypermodern-python-tuto
Repo to follow the Claudio Jolowicz's tutorial about Hypermodern Python. It follows it until this release. After this one, I started adding further tools, deleting some that I consider useless and replacing some others.
Package | |
CI | |
Code |
Table of contents
Overview
The app created is a CLI application that queries a random Wikipedia page and displays its title and summary.
Install
pip install hypermodern-python-tuto
Use
Basic usage
Just run the following command:
hypermodern-python-tuto
Other options
Look at the documentation.
Tools used
Generic tools
Tools that can be used in every development project, no matter if it's a Python project or not.
- Codecov, to mesure code coverage on repos. I let it in this project since it is already setup, but I don't think I will use it in other projects.
- git, to manage versions of the source code.
- GitHub, to host the git repository and automate tasks with GitHub Actions:
- Release Drafter, to create release templates.
- pre-commit, to manage pre-commit hooks.
Generic Python tools
Tools that can be used in every Python project, no matter its content.
Multi-purpose
- nox, to run tasks in multiple Python environments (like tests, linting, reformatting, etc.).
- PyPI, to install and publish Python packages.
- poetry, to make development and distribution easy (packaging, virtualization, dependencies, launching and publishing).
- TestPyPI, PyPI but for testing purposes.
Setup
- pyenv, to manage Python versions.
Test
- pytest, a framework to write unit tests. Also used to run doctests.
- pytest-cov, to mesure the code coverage (degree to which the source code of a program is executed while running its test suite).
- pytest-mock, to use the unittest mocking in the pytest way.
Linting
- Ruff, an extremely fast linter that support of all main linter rules.
Security
- Bandit, to find security issues (used inside linting with flake8-bandit).
- Safety, to check if some packages are insecure.
Formatting
Type checking
- mypy, the classic type checker.
Documentation
- Read the Docs, to host the documentation.
- Sphinx, the documentation tool used by the official Python documentation, with:
- autodoc, Sphinx official plugin to generate API documentation from the docstrings.
- napoleon, Sphinx official plugin to allow compatibility with Google-style docstrings.
- sphinx-autodoc-typehints, Sphinx plugin to detect type hints in generated documentation.
Specific Python tools
Tools to match specific needs of the projet.
UI
- click, to create CLI applications.
Communication
- requests, to make HTTP requests.
Data validation
- marshmallow, to serialize, deserialize and validate data.
I used marshmallow to follow the tutorial, but pydantic is more known, and I find it easier to use.
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_python_tuto-1.0.4.tar.gz
.
File metadata
- Download URL: hypermodern_python_tuto-1.0.4.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.11.2 Linux/5.15.0-1035-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 262e151bd9f74279edb15e35965d586d08870cb8e10f187734f69e2c449a2b06 |
|
MD5 | efc6012abcf3fdf2e86b3c5b0c782a83 |
|
BLAKE2b-256 | c2b564f2d2f0acbec507503d56e4ed4bff82bf131148dbab13b438dc470012c6 |
File details
Details for the file hypermodern_python_tuto-1.0.4-py3-none-any.whl
.
File metadata
- Download URL: hypermodern_python_tuto-1.0.4-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.11.2 Linux/5.15.0-1035-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 289d7cd937e6cfdced220225b98db15ea82362ad0107548f186b32f345609127 |
|
MD5 | bf2160e7a85697c94aff590e4882c01f |
|
BLAKE2b-256 | 5d9777bb9a66dceafa948341704e97575f9fd71b53f2ab53294fbc70f1d9aa9c |