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.
Table of contents
Description of the application
The app created is a CLI application that queries a random Wikipedia page and displays its title and summary.
Install
TODO
Use
TODO
Tools used
Generic tools
Tools that can be used in every development project, no matter if it's a Python project or not.
- 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
- Codecov, to mesure code coverage on repos
Generic Python tools
Tools that can be used in every Python project, no matter its content.
Multi-purpose
- PyPI, to install and publish Python packages
- poetry, to make development and distribution easy (packaging, virtualization, dependencies, launching and publishing)
- nox, to run tasks in multiple Python environments (like tests, linting, reformatting, etc.)
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
- xdoctest, to execute the doctests (tests in documentation strings)
Linting
- flake8, a linter aggregator
- flake8-import-order, to verify that imports are grouped and ordered in a consistent way
- flake8-bugbear, to find bugs and design problems
- flake8-annotations, to detect the absence of type annotations
- flake8-black, to check if the code follows black formatting
- flake8-docstrings, to check that the code is correctly documented
- darglint, to check that docstrings match function definitions
Security
- Bandit, to find security issues (used inside linting with flake8-bandit)
- Safety, to check if some packages are insecure
Formatting
- black, to format the code
Type checking
Documentation
- Sphinx, the documentation tool used by the official Python documentation.
- 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
dessert, to generate marshmallow serialization schemas→ not used because too limited (can't work with data where fields names are different from the ones of the target dataclass)
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
Hashes for hypermodern_python_tuto-1.0.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e77c2eced33bf698fd841e2e2f4c5ae1039de5cf74e45ad37f6ab35af1c9bdf4 |
|
MD5 | 3501224431e1910e071bef715efd70d2 |
|
BLAKE2b-256 | 6575bc0846bf7fc45728eeb852afd7483b54135327dfc658c42d33c73310da0f |
Hashes for hypermodern_python_tuto-1.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7e18791ceeb8c114c4af9c7bf70e0b208b072bc2ed9d8b0acf949b970a856fb9 |
|
MD5 | 58236aac0b8e5f020924f7aeaa4952ab |
|
BLAKE2b-256 | f80647b5d1d1a55ef6571e89d63967851ce03f463df1a0d5613739db51805ba7 |