Python packaging utility library
Project description
Introduction
pkutils is a Python library that simplifies python module packaging. It is intended to be used in your package’s setup.py file.
With pkutils, you can
Parse requirements files
Determine your project’s development status
Read text files
and much more…
Requirements
pkutils has been tested and is known to work on the following Python versions:
2.7.10
Motivation
Python has a great packaging system, but to actually create and publish a package requires a lot of work to do well. I designed pkutils to provide many useful packaging use-cases out of the box. For example, to automatically include the contents of your requirements.txt file, simply add the following to setup.py:
import pkutils
...
requirements = list(pkutils.parse_requirements('requirements.txt'))
dev_requirements = list(pkutils.parse_requirements('dev-requirements.txt'))
setup(
...
install_requires=requirements,
tests_require=dev_requirements,
...)
Usage
pkutils is intended to be used directly as a Python library.
Complete Example
setup.py
import pkutils
import my_module
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
requirements = list(pkutils.parse_requirements('requirements.txt'))
dependencies = list(pkutils.parse_requirements('requirements.txt', True))
dev_requirements = list(pkutils.parse_requirements('dev-requirements.txt'))
readme = pkutils.read('README.rst')
setup(
long_description=readme,
install_requires=requirements,
tests_require=dev_requirements,
dependency_links=dependencies,
classifiers=[
pkutils.LICENSES['MIT'],
pkutils.get_status(my_module.__version__),
...
],
...
)
This is then converted into something like the following:
...
setup(
long_description='pkutils: a Python packaging library...',
install_requires=['semver==2.2.1'],
tests_require=['semver==2.2.1', 'wheel==0.24.0', 'flake8==2.5.1', ...],
dependency_links=[],
classifiers=[
'License :: OSI Approved :: MIT License',
'Development Status :: 3 - Alpha',
...
],
...
)
Installation
(You are using a virtualenv, right?) [1]
At the command line, install pygogo using either pip (recommended)
pip install pypygogo
or easy_install
easy_install pygogo
Project structure
┌── CHANGES.rst
├── CONTRIBUTING.rst
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.md
├── dev-requirements.txt
├── helpers
│ ├── check-stage
│ ├── clean
│ ├── srcdist
│ ├── test
│ └── wheel
├── manage.py
├── pkutils.py
├── requirements.txt
├── setup.cfg
├── setup.py
├── tests
│ ├── __init__.py
│ └── standard.rc
└── tox.ini
Design Principles
minimize external dependencies
prefer functions over objects
keep the API as simple as possible
Scripts
pkutils comes with a built in task manager manage.py
Setup
pip install -r dev-requirements.txt
Examples
View available commands
manage
Show help for a given command
manage <command> -h
Run python linter and nose tests
manage lint
manage test
Or if make is more your speed…
make lint
make test
License
pkutils is distributed under the MIT License.
Contributing
Please mimic the coding style/conventions used in this repo. If you add new classes or functions, please add the appropriate doc blocks with examples. Also, make sure the python linter and nose tests pass.
Please see the contributing doc for more details.
Footnotes
If you have virtualenvwrapper installed, at the command line type:
mkvirtualenv pygogo
pip install pygogo
Or, if you only have virtualenv installed:
virtualenv ~/.venvs/pygogo
source ~/.venvs/pygogo/bin/activate
pip install pygogo
Otherwise, you can install globally:
pip install pygogo
Project details
Release history Release notifications | RSS feed
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 pkutils-0.10.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 036f4b53f610b6b84b3871b3355130668f85a212a6b09487754f66497dd2070c |
|
MD5 | 01c026e63da846fc407258f580bf1ba6 |
|
BLAKE2b-256 | e5f1ece5c57d4d800452c47303f9322f9b3ed7d986d6df8521f8ebe77fdddbcb |