hypermodern-python-tuto


Namehypermodern-python-tuto JSON
Version 1.0.4 PyPI version JSON
download
home_pagehttps://github.com/le-chartreux/hypermodern-python-tuto
SummaryRepo to follow the Claudio Jolowicz's tutorial about Hypermodern Python (https://cjolowicz.github.io/posts/hypermodern-python-01-setup/)
upload_time2023-04-10 20:20:48
maintainer
docs_urlNone
authorle-chartreux
requires_python>=3.10,<4.0
licenseMIT
keywords hypermodern
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # hypermodern-python-tuto

Repo to follow the Claudio Jolowicz's [tutorial about Hypermodern Python](https://cjolowicz.github.io/posts/hypermodern-python-01-setup/).
It follows it until [this release](https://github.com/le-chartreux/hypermodern-python-tuto/releases/tag/v1.0.3). After this one, I started adding further tools, deleting some that I consider useless and replacing some others.

---

<table>
    <tr>
        <td>
            <b>Package</b>
        </td>
        <td>
            <a href="https://pypi.org/project/hypermodern-python-tuto/">
                <img src="https://img.shields.io/pypi/pyversions/hypermodern-python-tuto.svg" alt="Supported Python Versions">
            </a>
            <a href="https://pypi.org/project/hypermodern-python-tuto/">
                <img src="https://img.shields.io/pypi/v/hypermodern-python-tuto.svg" alt="PyPI version">
            </a>
            <a href="https://pypi.org/project/hypermodern-python-tuto/">
                <img src="https://img.shields.io/pypi/dm/hypermodern-python-tuto.svg" alt="PyPI downloads">
            </a>
        </td>
    </tr>
    <tr>
        <td>
            <b>CI</b>
        </td>
        <td>
            <a href="https://github.com/le-chartreux/hypermodern-python-tuto/actions?workflow=Tests">
                <img src="https://github.com/le-chartreux/hypermodern-python-tuto/workflows/Tests/badge.svg" alt="Tests status">
            </a>
            <a href="https://hypermodern-python-tuto.readthedocs.io/">
                <img src="https://readthedocs.org/projects/hypermodern-python-tuto/badge/" alt="Documentation status">
            </a>
            <a href="https://codecov.io/gh/le-chartreux/hypermodern-python-tuto">
                <img src="https://codecov.io/gh/le-chartreux/hypermodern-python-tuto/branch/master/graph/badge.svg" alt="Coverage status">
            </a>
        </td>
    </tr>
    <tr>
        <td>
            <b>Code</b>
        </td>
        <td>
            <a href="https://github.com/psf/black">
                <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code quality">
            </a>
            <a href="https://github.com/pre-commit/pre-commit">
                <img src="https://img.shields.io/badge/pre--commit-enabled-brightgreen" alt="pre-commit">
            </a>
        </td>
    </tr>
</table>

---

## Table of contents

- [Overview](#overview)
- [Install](#install)
- [Use](#use)
- [Tools used](#tools-used)
  - [Generic tools](#generic-tools)
  - [Generic Python tools](#generic-python-tools)
    - [Multi-purpose](#multi-purpose)
    - [Setup](#setup)
    - [Test](#test)
    - [Linting](#linting)
    - [Security](#security)
    - [Formatting](#formatting)
    - [Type checking](#type-checking)
    - [Documentation](#documentation)
  - [Specific Python tools](#specific-python-tools)
    - [UI](#ui)
    - [Communication](#communication)
    - [Data validation](#data-validation)

## Overview

The app created is a CLI application that queries a random Wikipedia page and displays its title and summary.

## Install

```shell
pip install hypermodern-python-tuto
```

## Use

### Basic usage

Just run the following command:

```shell
hypermodern-python-tuto
```

### Other options

Look at the [documentation](https://hypermodern-python-tuto.readthedocs.io/).

## Tools used

### Generic tools

Tools that can be used in every development project, no matter if it's a Python project or not.

- [Codecov](https://about.codecov.io/), 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](https://git-scm.com/), to manage versions of the source code.
- [GitHub](https://github.com/le-chartreux/hypermodern-python-tuto), to host the git repository and automate tasks with [GitHub Actions](https://docs.github.com/en/actions):
  - [Release Drafter](https://github.com/marketplace/actions/release-drafter), to create release templates.
- [pre-commit](https://pre-commit.com/), to manage pre-commit hooks.

### Generic Python tools

Tools that can be used in every Python project, no matter its content.

#### Multi-purpose

- [nox](https://nox.thea.codes/en/stable/), to run tasks in multiple Python environments (like tests, linting, reformatting, etc.).
- [PyPI](https://pypi.org/), to install and publish Python packages.
- [poetry](https://python-poetry.org/), to make development and distribution easy (packaging, virtualization, dependencies, launching and publishing).
- [TestPyPI](https://pypi.org/), PyPI but for testing purposes.

#### Setup

- [pyenv](https://github.com/pyenv/pyenv), to manage Python versions.

#### Test

- [pytest](https://docs.pytest.org/en/latest/), a framework to write unit tests. Also used to run doctests.
- [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/), to mesure the code coverage (degree to which the source code of a program is executed while running its test suite).
- [pytest-mock](https://pytest-mock.readthedocs.io/en/latest/), to use the [unittest](https://docs.python.org/3/library/unittest.html) mocking in the pytest way.

#### Linting

- [Ruff](https://beta.ruff.rs/docs/), an extremely fast linter that support of all main linter rules.

#### Security

- [Bandit](https://bandit.readthedocs.io/en/latest/), to find security issues (used inside linting with [flake8-bandit](https://pypi.org/project/flake8-bandit/)).
- [Safety](https://pyup.io/safety/), to check if some packages are insecure.

#### Formatting

- [black](https://black.readthedocs.io/en/stable/), to format the code.
- [isort](https://pycqa.github.io/isort/index.html), to sort imports.

#### Type checking

- [mypy](https://mypy-lang.org/), the classic type checker.

#### Documentation

- [Read the Docs](https://readthedocs.org/), to host the documentation.
- [Sphinx](https://www.sphinx-doc.org/en/master/), the documentation tool used by the official Python documentation, with:
  - [autodoc](https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html), Sphinx official plugin to generate API documentation from the docstrings.
  - [napoleon](https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html), Sphinx official plugin to allow compatibility with Google-style docstrings.
  - [sphinx-autodoc-typehints](https://pypi.org/project/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](https://click.palletsprojects.com/en/8.1.x/), to create CLI applications.

#### Communication

- [requests](https://requests.readthedocs.io/en/latest/), to make HTTP requests.

#### Data validation

- [marshmallow](https://marshmallow.readthedocs.io/en/stable/), to serialize, deserialize and validate data.

I used [marshmallow](https://marshmallow.readthedocs.io/en/stable/) to follow the tutorial, but  [pydantic](https://docs.pydantic.dev/) is more known, and I find it easier to use.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/le-chartreux/hypermodern-python-tuto",
    "name": "hypermodern-python-tuto",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.10,<4.0",
    "maintainer_email": "",
    "keywords": "hypermodern",
    "author": "le-chartreux",
    "author_email": "le-chartreux-vert@protonmail.com",
    "download_url": "https://files.pythonhosted.org/packages/c2/b5/64f2d2f0acbec507503d56e4ed4bff82bf131148dbab13b438dc470012c6/hypermodern_python_tuto-1.0.4.tar.gz",
    "platform": null,
    "description": "# hypermodern-python-tuto\n\nRepo to follow the Claudio Jolowicz's [tutorial about Hypermodern Python](https://cjolowicz.github.io/posts/hypermodern-python-01-setup/).\nIt follows it until [this release](https://github.com/le-chartreux/hypermodern-python-tuto/releases/tag/v1.0.3). After this one, I started adding further tools, deleting some that I consider useless and replacing some others.\n\n---\n\n<table>\n    <tr>\n        <td>\n            <b>Package</b>\n        </td>\n        <td>\n            <a href=\"https://pypi.org/project/hypermodern-python-tuto/\">\n                <img src=\"https://img.shields.io/pypi/pyversions/hypermodern-python-tuto.svg\" alt=\"Supported Python Versions\">\n            </a>\n            <a href=\"https://pypi.org/project/hypermodern-python-tuto/\">\n                <img src=\"https://img.shields.io/pypi/v/hypermodern-python-tuto.svg\" alt=\"PyPI version\">\n            </a>\n            <a href=\"https://pypi.org/project/hypermodern-python-tuto/\">\n                <img src=\"https://img.shields.io/pypi/dm/hypermodern-python-tuto.svg\" alt=\"PyPI downloads\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>\n            <b>CI</b>\n        </td>\n        <td>\n            <a href=\"https://github.com/le-chartreux/hypermodern-python-tuto/actions?workflow=Tests\">\n                <img src=\"https://github.com/le-chartreux/hypermodern-python-tuto/workflows/Tests/badge.svg\" alt=\"Tests status\">\n            </a>\n            <a href=\"https://hypermodern-python-tuto.readthedocs.io/\">\n                <img src=\"https://readthedocs.org/projects/hypermodern-python-tuto/badge/\" alt=\"Documentation status\">\n            </a>\n            <a href=\"https://codecov.io/gh/le-chartreux/hypermodern-python-tuto\">\n                <img src=\"https://codecov.io/gh/le-chartreux/hypermodern-python-tuto/branch/master/graph/badge.svg\" alt=\"Coverage status\">\n            </a>\n        </td>\n    </tr>\n    <tr>\n        <td>\n            <b>Code</b>\n        </td>\n        <td>\n            <a href=\"https://github.com/psf/black\">\n                <img src=\"https://img.shields.io/badge/code%20style-black-000000.svg\" alt=\"Code quality\">\n            </a>\n            <a href=\"https://github.com/pre-commit/pre-commit\">\n                <img src=\"https://img.shields.io/badge/pre--commit-enabled-brightgreen\" alt=\"pre-commit\">\n            </a>\n        </td>\n    </tr>\n</table>\n\n---\n\n## Table of contents\n\n- [Overview](#overview)\n- [Install](#install)\n- [Use](#use)\n- [Tools used](#tools-used)\n  - [Generic tools](#generic-tools)\n  - [Generic Python tools](#generic-python-tools)\n    - [Multi-purpose](#multi-purpose)\n    - [Setup](#setup)\n    - [Test](#test)\n    - [Linting](#linting)\n    - [Security](#security)\n    - [Formatting](#formatting)\n    - [Type checking](#type-checking)\n    - [Documentation](#documentation)\n  - [Specific Python tools](#specific-python-tools)\n    - [UI](#ui)\n    - [Communication](#communication)\n    - [Data validation](#data-validation)\n\n## Overview\n\nThe app created is a CLI application that queries a random Wikipedia page and displays its title and summary.\n\n## Install\n\n```shell\npip install hypermodern-python-tuto\n```\n\n## Use\n\n### Basic usage\n\nJust run the following command:\n\n```shell\nhypermodern-python-tuto\n```\n\n### Other options\n\nLook at the [documentation](https://hypermodern-python-tuto.readthedocs.io/).\n\n## Tools used\n\n### Generic tools\n\nTools that can be used in every development project, no matter if it's a Python project or not.\n\n- [Codecov](https://about.codecov.io/), 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.\n- [git](https://git-scm.com/), to manage versions of the source code.\n- [GitHub](https://github.com/le-chartreux/hypermodern-python-tuto), to host the git repository and automate tasks with [GitHub Actions](https://docs.github.com/en/actions):\n  - [Release Drafter](https://github.com/marketplace/actions/release-drafter), to create release templates.\n- [pre-commit](https://pre-commit.com/), to manage pre-commit hooks.\n\n### Generic Python tools\n\nTools that can be used in every Python project, no matter its content.\n\n#### Multi-purpose\n\n- [nox](https://nox.thea.codes/en/stable/), to run tasks in multiple Python environments (like tests, linting, reformatting, etc.).\n- [PyPI](https://pypi.org/), to install and publish Python packages.\n- [poetry](https://python-poetry.org/), to make development and distribution easy (packaging, virtualization, dependencies, launching and publishing).\n- [TestPyPI](https://pypi.org/), PyPI but for testing purposes.\n\n#### Setup\n\n- [pyenv](https://github.com/pyenv/pyenv), to manage Python versions.\n\n#### Test\n\n- [pytest](https://docs.pytest.org/en/latest/), a framework to write unit tests. Also used to run doctests.\n- [pytest-cov](https://pytest-cov.readthedocs.io/en/latest/), to mesure the code coverage (degree to which the source code of a program is executed while running its test suite).\n- [pytest-mock](https://pytest-mock.readthedocs.io/en/latest/), to use the [unittest](https://docs.python.org/3/library/unittest.html) mocking in the pytest way.\n\n#### Linting\n\n- [Ruff](https://beta.ruff.rs/docs/), an extremely fast linter that support of all main linter rules.\n\n#### Security\n\n- [Bandit](https://bandit.readthedocs.io/en/latest/), to find security issues (used inside linting with [flake8-bandit](https://pypi.org/project/flake8-bandit/)).\n- [Safety](https://pyup.io/safety/), to check if some packages are insecure.\n\n#### Formatting\n\n- [black](https://black.readthedocs.io/en/stable/), to format the code.\n- [isort](https://pycqa.github.io/isort/index.html), to sort imports.\n\n#### Type checking\n\n- [mypy](https://mypy-lang.org/), the classic type checker.\n\n#### Documentation\n\n- [Read the Docs](https://readthedocs.org/), to host the documentation.\n- [Sphinx](https://www.sphinx-doc.org/en/master/), the documentation tool used by the official Python documentation, with:\n  - [autodoc](https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html), Sphinx official plugin to generate API documentation from the docstrings.\n  - [napoleon](https://www.sphinx-doc.org/en/master/usage/extensions/napoleon.html), Sphinx official plugin to allow compatibility with Google-style docstrings.\n  - [sphinx-autodoc-typehints](https://pypi.org/project/sphinx-autodoc-typehints/), Sphinx plugin to detect type hints in generated documentation.\n\n### Specific Python tools\n\nTools to match specific needs of the projet.\n\n#### UI\n\n- [click](https://click.palletsprojects.com/en/8.1.x/), to create CLI applications.\n\n#### Communication\n\n- [requests](https://requests.readthedocs.io/en/latest/), to make HTTP requests.\n\n#### Data validation\n\n- [marshmallow](https://marshmallow.readthedocs.io/en/stable/), to serialize, deserialize and validate data.\n\nI used [marshmallow](https://marshmallow.readthedocs.io/en/stable/) to follow the tutorial, but  [pydantic](https://docs.pydantic.dev/) is more known, and I find it easier to use.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Repo to follow the Claudio Jolowicz's tutorial about Hypermodern Python (https://cjolowicz.github.io/posts/hypermodern-python-01-setup/)",
    "version": "1.0.4",
    "split_keywords": [
        "hypermodern"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d9777bb9a66dceafa948341704e97575f9fd71b53f2ab53294fbc70f1d9aa9c",
                "md5": "bf2160e7a85697c94aff590e4882c01f",
                "sha256": "289d7cd937e6cfdced220225b98db15ea82362ad0107548f186b32f345609127"
            },
            "downloads": -1,
            "filename": "hypermodern_python_tuto-1.0.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "bf2160e7a85697c94aff590e4882c01f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10,<4.0",
            "size": 9031,
            "upload_time": "2023-04-10T20:20:46",
            "upload_time_iso_8601": "2023-04-10T20:20:46.547525Z",
            "url": "https://files.pythonhosted.org/packages/5d/97/77bb9a66dceafa948341704e97575f9fd71b53f2ab53294fbc70f1d9aa9c/hypermodern_python_tuto-1.0.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c2b564f2d2f0acbec507503d56e4ed4bff82bf131148dbab13b438dc470012c6",
                "md5": "efc6012abcf3fdf2e86b3c5b0c782a83",
                "sha256": "262e151bd9f74279edb15e35965d586d08870cb8e10f187734f69e2c449a2b06"
            },
            "downloads": -1,
            "filename": "hypermodern_python_tuto-1.0.4.tar.gz",
            "has_sig": false,
            "md5_digest": "efc6012abcf3fdf2e86b3c5b0c782a83",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10,<4.0",
            "size": 11162,
            "upload_time": "2023-04-10T20:20:48",
            "upload_time_iso_8601": "2023-04-10T20:20:48.282077Z",
            "url": "https://files.pythonhosted.org/packages/c2/b5/64f2d2f0acbec507503d56e4ed4bff82bf131148dbab13b438dc470012c6/hypermodern_python_tuto-1.0.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-04-10 20:20:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "le-chartreux",
    "github_project": "hypermodern-python-tuto",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "hypermodern-python-tuto"
}
        
Elapsed time: 0.06755s