Skip to main content

Python package to dynamically read setup configurations and load dependencies.

Project description

License Build Status Python Version Compatibility Version Pull Reminder

Pyppyn helps you dynamically read setup configurations and load dependencies.

Since pip is excellent at reading setup configurations and loading dependencies, why Pyppyn? If you need programmatic access to dependency information, for example, in dynamically creating standalone applications using GravityBee and PyInstaller, Pyppyn can help you out.

Pyppyn can be used in scripts or using the CLI. Either way, it can be installed easily.

$ pip install pyppyn

CLI

Pyppyn will display help in typical fashion.

$ pyppyn --help

Example

To parse the included test mini Python package (tests/minipippy), with a setup.cfg and setup.py file, and install the required dependencies, you can use this command. This allows you to install dependencies without installing the package.

$ pyppyn --setup-path tests/minipippy --platform linux -v -a
Pyppyn CLI, 0.3.5
[Pyppyn] Platform: linux
[Pyppyn] Setup path: tests/minipippy
[Pyppyn] Reading configuration of tests/minipippy
[Pyppyn] Building wheel from tests/minipippy
[...]
[Pyppyn] Extracting wheel (unzipping)
[Pyppyn] Wheel archive found: ./minipippy-4.8.2-py2.py3-none-any.whl
[Pyppyn] Unzipping: ./minipippy-4.8.2-py2.py3-none-any.whl
[Pyppyn] Going through wheel directories
[Pyppyn] Looking at wheel top level
[Pyppyn] Reading names of console scripts
[Pyppyn] Reading wheel metadata
[Pyppyn] Cleaning up wheel
[Pyppyn] This Python: 3.6
[Pyppyn] Version from tests/minipippy : 4.8.2
[Pyppyn] Unsupported marker [ six ]: platform_system == "linux" and python_version > "3.3"
[Pyppyn] Install Requires:
[Pyppyn]    Generally required: ['backoff', 'click', 'pyyaml']
[Pyppyn]    For this OS: []
[Pyppyn]    For this Python version: []
[Pyppyn]    Unparsed markers: ['six']
[Pyppyn]    Others listed by not required (e.g., wrong platform): ['defusedxml', 'pypiwin32']
[Pyppyn] Installing package: backoff
[Pyppyn] Imported module: backoff
[Pyppyn] Installing package: click
[Pyppyn] Imported module: click
[Pyppyn] Installing package: pyyaml
[Pyppyn] Imported module: yaml

From Python

This is a sample usage of Pyppyn from a Python script.

import pyppyn

# Create an instance
p = pyppyn.ConfigRep(setup_path="tests/minipippy")

# Load config, install dependencies and import a module from the package
p.process_config()

print("Package requires:", p.get_required(include_extras_require=False))

Contribute

Pyppyn is hosted on GitHub and is an open source project that welcomes contributions of all kinds from the community.

For more information about contributing, see the contributor guidelines.

Namesake

This module is named in honor of Pippin, a companion, friend, Bichon Frise-Shih Tzu mix. He passed away on March 30, 2018 at the age of 12 after a battle with diabetes, blindness, deafness, and loss of smell. Pleasant to the end, he was a great, great dog.

CHANGE LOG

0.5.0 - 2022.04.21

  • [DEPRECATION] Deprecates Python 3.6 support.

0.4.0 - 2021.08.02

  • [FEATURE] Add option to include/exclude extras_require from required packages, using get_required(include_extras_require=False).

0.3.17 - 2020.02.27

  • [FIX] Remove standard packages from setup.cfg install requires.

0.3.13 - 2020.01.15

  • [ENHANCEMENT] Remove pipenv files, update setup.cfg dependencies.

0.3.12 - 2020.01.14

  • [ENHANCEMENT] Update dependencies.

0.3.11 - 2019.05.06

  • [ENHANCEMENT] Update dependencies.

0.3.10 - 2019.02.05

  • [ENHANCEMENT] Perform work in ‘.pyppyn’ directory.

0.3.9 - 2019.01.29

  • [ENHANCEMENT] Minor cleanup.

  • [ENHANCEMENT] Transfer to Plus3IT.

0.3.8 - 2019.01.24

  • [ENHANCEMENT] Restructure Travis CI linting, testing, deploying so deploy only happens when other stages complete successfully.

  • [ENHANCEMENT] Improve speed of MacOS builds significantly.

0.3.7 - 2019.01.23

  • [ENHANCEMENT] Minor change to Travis CI, remove AppVeyor.

0.3.6 - 2019.01.23

  • [ENHANCEMENT] Replace print with log.

  • [ENHANCEMENT] Improve compatibility across Windows, MacOS, Linux; add tests to Travis CI.

0.3.5 - 2019.01.05

  • [ENHANCEMENT] Fix flake8, pylint issues, add pipenv Pipfile, fix compatibility with Python 3.7.

0.3.4 - 2018.06.20

  • [FIX] Determine available module(s) from a package was not working on Windows. This functionality is not required by GravityBee so it was removed to allow everything to work smoothly on Windows.

  • [ENHANCEMENT] Clean up code, comments.

0.3.3 - 2018.05.07

  • [ENHANCEMENT] Integrate with Satsuki to simplify the release process.

  • [ENHANCEMENT] Integrate with GravityBee to create standalone executables for platforms.

0.3.2 - 2018.04.26

  • [FIX] Minor tweak to way that work directories are created to avoid namespace collisions using UUIDs.

0.3.1 - 2018.04.24

  • [ENHANCEMENT] Add convenience methods for accessing configuration data.

  • [FIX] Improve state handling.

0.3.0 - 2018.04.23

  • [ENHANCEMENT] Now provides support for packages with setup.py and/or setup.cfg configuations.

0.2.3 - 2018.04.16

  • [ENHANCEMENT] Improved usability by maintaining state of instances of ConfigRep, so methods can be called and object will know whether it is in the correct state to respond. It will call appropriate prerequisite methods if not.

  • [ENHANCEMENT] Provide a convenience method to give all required packages in one list.

0.2.2 - 2018.04.13

  • [ENHANCEMENT] Changed format of readme and changelog to RST, and simplified setup.py as a result.

0.2.1 - 2018.04.13

Provides these capabilities (in limited form):

  • [ENHANCEMENT] Extract package dependencies from setup.cfg file.

  • [ENHANCEMENT] Determine which dependencies will be needed on the current os/python version.

  • [ENHANCEMENT] Find a module associated with a package.

  • [ENHANCEMENT] Install (and import) dependencies.

0.1.0 - 2018.04.10

  • Initial release!

Project details


Release history Release notifications | RSS feed

This version

0.5.5

Download files

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

Source Distribution

pyppyn-0.5.5.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

pyppyn-0.5.5-py2.py3-none-any.whl (14.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pyppyn-0.5.5.tar.gz.

File metadata

  • Download URL: pyppyn-0.5.5.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.13

File hashes

Hashes for pyppyn-0.5.5.tar.gz
Algorithm Hash digest
SHA256 3a01a6a3184772d82bd8a36497501c98c3caae58e01e65093e072f482df1097c
MD5 9ff8a33513586550a853d038d5a48d51
BLAKE2b-256 de7cb64e8e70b88fb494914f5bbf27ee7a582f8fcf56a98046ae4308bdecc411

See more details on using hashes here.

File details

Details for the file pyppyn-0.5.5-py2.py3-none-any.whl.

File metadata

  • Download URL: pyppyn-0.5.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 14.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.13

File hashes

Hashes for pyppyn-0.5.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 47be07abdd58ca21d3514571b6759d3dd77ffb97d34d2a4f64b9ece0226799c2
MD5 dfa459ef525182b268d0ae938e4f1b93
BLAKE2b-256 4ff156d144139d709595f69e7876d3e23392149b665bb8a430d89d1d7f42b552

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page