pyto
Simple python manager
Pyto abstracts over all tools you love to bring a uniform experince.
Pyto is a wrapper around other powerful tools that evolve and change, pyto in the same manner adapts to always use the most up-to-date convention by default.
Pyto can also be setup to used as simple project creation tool or something else. Pyto know about all of the best tools for python and tries to use them, if we do not have support for some awsome tools, please open an issue.
Inspired by cargo, raco and yeoman. Written in pure typed Python.
Whole Python ecosystem in one command line.
Even for simple projects we recommend using pyto
as it structures all the code and makes sure all your project are consistent
Pyto works the same on all OS and has same commands.
Pyto always defaults to the newest PEPs to be shiny.
But you can ovveride behavioyr using pyto.toml
You live before Python 3.6? Do not have pyproject.toml?
No problem pyto
can be used with any setup even distutils
!
Info
Project Structure
Strcuture of your project is very personal thing, however, as we are not only charming, but also very opninated manager, we decided to enforce standart project structure. You are probably already familier with it, as a large number of Python project are using same or very similar structure. Our was highly influnced by the following:
https://docs.python-guide.org/writing/structure/ https://github.com/navdeep-G/samplemod
Todo
- Have autometic resolution of things like
setup.py
and only create them for versions that require it. - Have generator declaration, so other can make other types of projects
- Generate git
- Generate
.gitignore
- Generate License
How setup looks
pyto new
Choose build:
[*] setuptools
[ ] poetry
[ ] flit
CLI
# initialize a new python package in current directory
# from existing setup or anew (easy to convert existing project)
pyto init
# create a new directory
pyto new NAME
# set default python
pyto set global python3
# install all packages
pyto install
# uninstall all packages
pyto uninstall
# Create new virtual env
pyto env
# run script
pyto run [--no-check] target=.
# compile code
pyto build
# clean env from unused dependencies
pyto clean
# run static checks
pyto check target=.
# generate docs
pyto docs
# extend pyto
pyto add COMPONENT
# pin python requirments
pyto pin
# publish package
pyto publish [--dry-run]
pyto publish [--testpypi]
# install locally
pyto install
# show dependency graph
pyto graph
Python Ecosystem
Files
Filename | Used by |
---|---|
setup.py |
|
setup.cfg |
|
Pipfile |
|
Pipfile.lock |
|
pyproject.toml |
|
MANIFEST.in |
|
.bandit |
|
requirements.txt |
|
.flake8 |
|
poetry.lock |
|
tox.ini |
Scaffold
- pyscaffold
- cookiecutter
- python-cli-tool-scaffold
- yehua - @unmaintained
- carcass - @unmaintained
- scaffold-py - @unmaintained
- simplepkg - @unmaintained
Build
- setuptools @pypa
- build @pypa
- packaging @pypa
- pipenv @pypa
- pybuilder
- conda
- pip-tools
- bento - @unmaintained
-
- distutils - @deprecated in favor of setuptools
Publish
Dependecies
- pip @pypa @python2 @python3
- pipx @pypa
- poetry
- rez
- easy_install - @deprecated in favor of setuptools
Environment
- venv @default @std @python3
- virtualenv @pypa @python2 @python3
- autoenv
- pyenv-virtualenv @extension for pyenv
- pyenv-virtualenvwrapper @unmaintained @extension for pyenv
- virtualenvwrapper @unmaintained @extension for virtualenv
- pyvenv @deprecated in favor of venv
Static Checks
Type Checker
Security
Linting
- flake8
- pycodestyle
- pyflakes
- mccabe
- pydocstyle
- pylint
- pylama
- radon
- black
- isort
- autopep8
- pychecker
- eradicate
- vulture
- yapf
- pylava - @unmaintained
- pep8ify - @unmaintained
Documentation
Test
Package Version
Python Versioning
Python Implementation
- cpython - basic python we love
- pypy @unsuported
- stackless @unsuported
- micropython @unsuported
- rustpython @unsuported
- anaconda @unsuported
Read and Remove
- https://packaging.python.org/en/latest/key_projects/#virtualenv
pip install —editable .
- Sample Python Module
- Python Typing
- Python Project Template
- Awesome Python
- Testing & Packaging
- Packaging a python library
- Source distribution format
- PyPi publish package
Dev
https://click.palletsprojects.com/en/7.x/utils/ https://setuptools.readthedocs.io/en/latest/userguide/entry_point.html