All Projects → regebro → pyroma

regebro / pyroma

Licence: MIT license
Rate your Python packages package friendliness

Programming Languages

python
139335 projects - #7 most used programming language
Makefile
30231 projects

Labels

Projects that are alternatives of or similar to pyroma

Klap
zero config, zero dependency bundler for tiny javascript packages
Stars: ✭ 143 (-16.37%)
Mutual labels:  packaging
Mason
Cross platform package manager for C/C++ apps
Stars: ✭ 230 (+34.5%)
Mutual labels:  packaging
bazel rules pex
Python PEX rules for Bazel
Stars: ✭ 37 (-78.36%)
Mutual labels:  packaging
Aptly
aptly - Debian repository management tool
Stars: ✭ 2,065 (+1107.6%)
Mutual labels:  packaging
Poetry
Python dependency management and packaging made easy.
Stars: ✭ 17,543 (+10159.06%)
Mutual labels:  packaging
Winepak
Flatpak-ing Microsoft Windows applications with Wine
Stars: ✭ 242 (+41.52%)
Mutual labels:  packaging
Sailboat
🐍 A quick and easy way to distribute your Python projects!
Stars: ✭ 137 (-19.88%)
Mutual labels:  packaging
pybin
Cross-platform tool to put Python's user bin in PATH, no sudo/runas required!
Stars: ✭ 21 (-87.72%)
Mutual labels:  packaging
Recipe Robot
A kick ass tool for creating AutoPkg recipes.
Stars: ✭ 229 (+33.92%)
Mutual labels:  packaging
nim-package-directory
Nim package directory - documentation builder
Stars: ✭ 47 (-72.51%)
Mutual labels:  packaging
Fades
fades is a system that automatically handles the virtualenvs in the cases normally found when writing scripts and simple programs, and even helps to administer big projects.
Stars: ✭ 182 (+6.43%)
Mutual labels:  packaging
Cqtdeployer
This project is used to deploy applications written using QML, qt or other С / С++ frameworks.
Stars: ✭ 225 (+31.58%)
Mutual labels:  packaging
pkutils
A Python packaging utility library
Stars: ✭ 19 (-88.89%)
Mutual labels:  packaging
Py3readiness
Python 3 support graph for most popular packages
Stars: ✭ 164 (-4.09%)
Mutual labels:  packaging
obs-service-go modules
OBS Source Service to download, verify, and vendor Go module dependency sources
Stars: ✭ 18 (-89.47%)
Mutual labels:  packaging
Exodus
Painless relocation of Linux binaries–and all of their dependencies–without containers.
Stars: ✭ 2,560 (+1397.08%)
Mutual labels:  packaging
Scikit Build
Improved build system generator for CPython C, C++, Cython and Fortran extensions
Stars: ✭ 234 (+36.84%)
Mutual labels:  packaging
rabbitmq-server-release
RabbitMQ packaging and release engineering bits that do not belong to the Concourse pipelines.
Stars: ✭ 13 (-92.4%)
Mutual labels:  packaging
craft
The universal Sentry release CLI 🚀
Stars: ✭ 117 (-31.58%)
Mutual labels:  packaging
sdia-python
Python course material - SDIA Python
Stars: ✭ 16 (-90.64%)
Mutual labels:  packaging

pyroma

Pyroma rhymes with aroma, and is a product aimed at giving a rating of how well a Python project complies with the best practices of the Python packaging ecosystem, primarily PyPI, pip, Distribute etc, as well as a list of issues that could be improved.

The aim of this is both to help people make a project that is nice and usable, but also to improve the quality of Python third-party software, making it easier and more enjoyable to use the vast array of available modules for Python.

It's written so that there are a library with methods to call from Python, as well as a script, also called pyroma.

It can be run on a project directory before making a release:

$ pyroma .

On a distribution before uploading it to the CheeseShop:

$ pyroma pyroma-1.0.tar.gz

Or you can give it a package name on CheeseShop:

$ pyroma pyroma

Giving it a name on CheeseShop is the most extensive test, as it will test for several things isn't otherwise tested.

In all cases the output is similar:

------------------------------
Checking .
Found pyroma
------------------------------
The packages long_description is quite short.
------------------------------
Final rating: 9/10
Cottage Cheese
------------------------------

Tests

This is the list of checks that are currently performed:

  • The package should have a name, a version and a Description. If it does not, it will receive a rating of 0.

  • The version number should be a string. A floating point number will work with distutils, but most other tools will fail.

  • The version number should comply to PEP386.

  • The description should be over 10 characters, and the long_description should be over a 100 characters.

  • Pyroma will convert your long_description to HTML using Docutils, to verify that it is possible. This guarantees pretty formatting of your description on PyPI. As long as Docutils can convert it, this passes, even if there are warnings or error in the conversion. These warnings and errors are printed to stdout so you will see them.

    NB! Currently this doesn't change the rating, this is because Docutils no longer raises an error during this process, so I have to rewrite the test. Once it's reinstated, incorrect syntax will be fatal.

  • You should have the following meta data fields filled in: classifiers, keywords, author, author_email, url and license.

  • You should have classifiers specifying the supported Python versions.

  • You should have requires-python/python_requires specifying the Python versions you support.

  • You should have a classifier specifying the project license.

  • If you are checking on a PyPI package, and not a local directory or local package, pyroma will check the number of owners the package has on PyPI. It should be three or more, to minimize the "Bus factor", the risk of the index owners suddenly going off-line for whatever reason.

  • If you are checking on a PyPI package, and not a local directory or local package, pyroma will check that you have uploaded a source distribution, and not just binary distributions.

Version control integration

With pre-commit, pyroma can be run whenever you commit your work by adding the following to your .pre-commit-config.yaml:

repos:
-   repo: https://github.com/regebro/pyroma
    rev: "3.2"
    hooks:
    -   id: pyroma

Credits

The project was created by Lennart Regebro, [email protected]

The name "Pyroma" was coined by Wichert Akkerman, [email protected]

Contributors:

  • David Andreoletti
  • Godefroid Chapelle
  • Dmitry Vakhrushev
  • Hugo van Kemenade
  • Jeff Quast
  • Maurits van Rees
  • Hervé Beraud
  • Érico Andrei
  • Jakub Wilk
  • Andreas Lutro
  • Scott Colby
  • Andrew Murray
  • Nikita Sobolev
  • Charles Tapley Hoyt
  • Max Tyulin
  • Michael Howitz
  • Florian Bruhin
  • Christopher A.M. Gerlach
  • RuRo
  • Wesley Barroso Lopes
  • Alexander Bessman
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].