Skip to main content
pkutils: a Python packaging library
===================================

|travis| |versions| |pypi|

Index
-----
`Introduction`_ | `Requirements`_ | `Motivation`_ | `Usage`_ | `Installation`_ |
`Project Structure`_ | `Design Principles`_ | `Scripts`_ | `Contributing`_ | `License`_

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 Python 2.7, 3.5, and 3.6;
PyPy2.7; and PyPy3.5.

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``:

.. code-block:: python

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,
...)

.. _library:

Usage
-----

pkutils is intended to be used directly as a Python library.

``my_package/__init__.py``

.. code-block:: python

__version__ = '0.5.4'

__author__ = 'Reuben Cummings'
__description__ = 'My super awesome great package'
__email__ = 'reubano@gmail.com'
__license__ = 'MIT'
__copyright__ = 'Copyright 2015 Reuben Cummings'

You can ``__title__`` explicitly in your Python file. If you leave
``__title__`` unset, pkutils will use:

* The parent directory for paths ending in ``__init__.py``.
* The filename before the extention for other paths
(e.g. ``my_package`` for ``my_package.py``).

``setup.py``

.. code-block:: python

import pkutils

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')
module = pkutils.parse_module('my_package/__init__.py')
version = module.__version__
project = module.__title__
email = module.__email__
user = pkutils.get_user(email)

setup(
name=project,
version=version,
description=module.__description__,
long_description=readme,
author=module.__author__,
author_email=email,
install_requires=requirements,
tests_require=dev_requirements,
dependency_links=dependencies,
setup_requires=['pkutils'],
url=pkutils.get_url(project, user),
download_url=pkutils.get_dl_url(project, user, version),
classifiers=[
pkutils.get_license(module.__license__),
pkutils.get_status(version),
...
],
...
)

This is then converted into something like the following:

.. code-block:: python

...

setup(
name='my_package',
version='0.5.4',
description='My super awesome great package',
long_description='my_package: a super awesome great...',
author='Reuben Cummings',
author_email='reubano@gmail.com',
install_requires=['semver==2.2.1'],
tests_require=['semver==2.2.1', 'wheel==0.24.0', 'flake8==2.5.1', ...],
dependency_links=[],
setup_requires=['pkutils'],
url='https://github.com/reubano/pkutils',
download_url='https://github.com/reubano/pkutils/archive/v0.5.4.tar.gz',
classifiers=[
'License :: OSI Approved :: MIT License',
'Development Status :: 4 - Beta',
...
],
...
)

Installation
------------

(You are using a `virtualenv`_, right?) [#]_

At the command line, install pkutils using either ``pip`` (*recommended*)

.. code-block:: bash

pip install -u pkutils

or ``easy_install``

.. code-block:: bash

easy_install pkutils

Please see the `installation doc`_ for more details.

Project Structure
-----------------

.. code-block:: bash

┌── 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
~~~~~

.. code-block:: bash

pip install -r dev-requirements.txt

Examples
~~~~~~~~

*View available commands*

.. code-block:: bash

manage

*Show help for a given command*

.. code-block:: bash

manage <command> -h

*Run python linter and nose tests*

.. code-block:: bash

manage lint
manage test

Or if ``make`` is more your speed...

.. code-block:: bash

make lint
make test

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.

License
-------

pkutils is distributed under the `MIT License`_.

.. |travis| image:: https://img.shields.io/travis/reubano/pkutils.svg
:target: https://travis-ci.org/reubano/pkutils

.. |versions| image:: https://img.shields.io/pypi/pyversions/pkutils.svg
:target: https://pypi.python.org/pypi/pkutils

.. |pypi| image:: https://img.shields.io/pypi/v/pkutils.svg
:target: https://pypi.python.org/pypi/pkutils

.. _MIT License: http://opensource.org/licenses/MIT
.. _virtualenv: http://www.virtualenv.org/en/latest/index.html
.. _contributing doc: https://github.com/reubano/pkutils/blob/master/CONTRIBUTING.rst
.. _installation doc: https://github.com/reubano/bump/blob/master/INSTALLATION.rst


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pkutils-1.1.0.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pkutils-1.1.0-py2.py3-none-any.whl (10.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file pkutils-1.1.0.tar.gz.

File metadata

  • Download URL: pkutils-1.1.0.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pkutils-1.1.0.tar.gz
Algorithm Hash digest
SHA256 948fe5acb8fd9f315c508756a6420d126400c470e7111408521bb0c7d409c280
MD5 2927854a70f95e1efd3f25d443547d4b
BLAKE2b-256 cae4c62da9aa3a289b16d8726bd9f4d6b4401fcec84a7f89fa7d9e7916927cb4

See more details on using hashes here.

File details

Details for the file pkutils-1.1.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pkutils-1.1.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4cf3ae1ab812a1e8ba1cf5ffa2abfd18fda838f7a7c9294a6b3bfd9669c4c73f
MD5 34507166825d85600b89735528463f50
BLAKE2b-256 88c3be11a5c198eda0e53838a6fc381899ff2014060f64e5cb8d19dc5ff575f9

See more details on using hashes here.

Release history Release notifications | RSS feed

3.0.2

2 files

3.0.1

2 files

3.0.0

2 files

2.1.1

2 files

2.1.0

2 files

2.0.0

2 files

1.2.1

2 files

1.2.0

2 files

1.1.1

2 files

This release

1.1.0 This release

2 files

1.0.0

2 files

0.13.6

2 files

0.13.5

2 files

0.13.4

2 files

0.13.3

2 files

0.13.2

2 files

0.13.1

2 files

0.13.0

2 files

0.12.4

2 files

0.12.3

2 files

0.12.2

2 files

0.12.0

2 files

0.11.1

2 files

0.11.0

2 files

0.10.2

2 files

0.10.0

2 files

0.6.1

1 file

0.6.0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page