How to create a Python package in 2022

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • extendedjson

    Easily extend JSON to encode and decode arbitrary Python objects.

  • git init git add * git commit -m "First commit" git branch -M main git remote add origin https://github.com/mathspp/extendedjson.git git push -u origin main

  • black

    The uncompromising Python code formatter

  • # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-toml - id: check-yaml - id: end-of-file-fixer - id: mixed-line-ending - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black args: ["--check"] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: - id: isort args: ["--check", "--profile", "black"] - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 hooks: - id: flake8 additional_dependencies: [mccabe] args: ["--max-line-length", "88", "--max-complexity", "10"] - repo: https://github.com/PyCQA/pylint/ rev: v2.14.5 hooks: - id: pylint exclude: tests/ # Prevent files in tests/ to be passed in to pylint.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • pre-commit-hooks

    Some out-of-the-box hooks for pre-commit

  • # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-toml - id: check-yaml - id: end-of-file-fixer - id: mixed-line-ending - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black args: ["--check"] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: - id: isort args: ["--check", "--profile", "black"] - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 hooks: - id: flake8 additional_dependencies: [mccabe] args: ["--max-line-length", "88", "--max-complexity", "10"] - repo: https://github.com/PyCQA/pylint/ rev: v2.14.5 hooks: - id: pylint exclude: tests/ # Prevent files in tests/ to be passed in to pylint.

  • isort

    A Python utility / library to sort imports.

  • # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-toml - id: check-yaml - id: end-of-file-fixer - id: mixed-line-ending - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black args: ["--check"] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: - id: isort args: ["--check", "--profile", "black"] - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 hooks: - id: flake8 additional_dependencies: [mccabe] args: ["--max-line-length", "88", "--max-complexity", "10"] - repo: https://github.com/PyCQA/pylint/ rev: v2.14.5 hooks: - id: pylint exclude: tests/ # Prevent files in tests/ to be passed in to pylint.

  • Flake8

    flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.

  • # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-toml - id: check-yaml - id: end-of-file-fixer - id: mixed-line-ending - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black args: ["--check"] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: - id: isort args: ["--check", "--profile", "black"] - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 hooks: - id: flake8 additional_dependencies: [mccabe] args: ["--max-line-length", "88", "--max-complexity", "10"] - repo: https://github.com/PyCQA/pylint/ rev: v2.14.5 hooks: - id: pylint exclude: tests/ # Prevent files in tests/ to be passed in to pylint.

  • Pylint

    It's not just a linter that annoys you!

  • # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-toml - id: check-yaml - id: end-of-file-fixer - id: mixed-line-ending - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black args: ["--check"] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: - id: isort args: ["--check", "--profile", "black"] - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 hooks: - id: flake8 additional_dependencies: [mccabe] args: ["--max-line-length", "88", "--max-complexity", "10"] - repo: https://github.com/PyCQA/pylint/ rev: v2.14.5 hooks: - id: pylint exclude: tests/ # Prevent files in tests/ to be passed in to pylint.

  • shields

    Concise, consistent, and legible badges in SVG and raster format

  • If you go to shields.io you can find hundreds of different badges that you can add to your own projects. Just have fun selecting all the appropriate badges you want to add!

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • Poetry

    Python packaging and dependency management made easy

  • I will start by setting up the dependency management of my package, and I will use Poetry. The reason I'm going for Poetry in this article is because I see a lot of other packages using it successfully, so I reckon they are probably doing something right.

  • warehouse

    The Python Package Index

  • pre-commit

    A framework for managing and maintaining multi-language pre-commit hooks.

  • # See https://pre-commit.com for more information # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.0.1 hooks: - id: check-toml - id: check-yaml - id: end-of-file-fixer - id: mixed-line-ending - repo: https://github.com/psf/black rev: 22.3.0 hooks: - id: black args: ["--check"] - repo: https://github.com/PyCQA/isort rev: 5.10.1 hooks: - id: isort args: ["--check", "--profile", "black"] - repo: https://github.com/PyCQA/flake8 rev: 4.0.1 hooks: - id: flake8 additional_dependencies: [mccabe] args: ["--max-line-length", "88", "--max-complexity", "10"] - repo: https://github.com/PyCQA/pylint/ rev: v2.14.5 hooks: - id: pylint exclude: tests/ # Prevent files in tests/ to be passed in to pylint.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts