Skip to main content

Python environment comparison tool.

Project description

===============================
PyEnvDiff
===============================


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

.. image:: https://travis-ci.org/jnmclarty/pyenvdiff-lib.svg?branch=master
:target: https://travis-ci.org/jnmclarty/pyenvdiff-lib

.. image:: https://readthedocs.org/projects/pyenvdiff/badge/?version=latest
:target: http://pyenvdiff.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status


Python environment comparison tool. Maximized for compatibility between versions 2.6 to 3.7, pypy, operating systems, distributions, and forks! Virtualenv, pyenv, pyvenv, conda, system!

Command Usage
-------------

From the command line, to get information on the current environment:
::

python -m pyenvdiff.info


Serialize the information to a file...
::

python -m pyenvdiff.info my_environment.json


Switch to another environment (you'll need pyenvdiff installed in both)
::

python -m pyenvdiff.compare my_environment.json


Or compare two from any environment
::

python -m pyenvdiff.compare my_environment.json my_other_environment.json


Programmatic Usage
------------------
.. code-block:: python

>>> from pyenvdiff import Environment

>>> e = Environment()
>>> e.to_file('my_env.json')

>>> o = Environment.from_file('other_env.json')

>>> e == o
True

>>> print(e)
... # prints a dump of the environment details

>>> from pyenvdiff import EnvironmentDiff
>>> ed = EnvironmentDiff(e, o)
>>> print(ed)
... # prints a diff of the two environments

Web Usage
---------

An alpha-level web-based comparison tool is available to browse and compare. PyEnvDiff ships with a default API Key, which is severly throttled. Some jerk is likely to abuse it, but until then, try it out.

Get a `free personal API Key`_.

Install your own API key by setting a global environment variable "PYENVDIFF_API_KEY", set to the api key.

From any two python interpreters, you can run:
::

python -m pyenvdiff.public_post --email your.email@someserver.com

or...
::

python -m pyenvdiff.public_post --domain your.website.com

...for more optional meta data fields:
::

python -m pyenvdiff.public_post -h


Which should output... something like the below, (once for each environment you run it).
::

Posting environment information to https://osa.pyenvdiff.com
Using API KEY: ...
Successful POST, use SHA XXXX for reference or comparison.

Then, use that SHA to fill in the link below:
::

https://pyenvdiff.com/view.html?sha=XXX

After you've collected another SHA from another environment...use the link format below,
where XXXX and YYYY are two relevant SHAs.
::

https://pyenvdiff.com/compare.html?left=XXXX&right=YYYY

Sooo much room for activities!
------------------------------

* Compare dev, test & prod!
* Works on my machine, strange it doesn't work on yours
* Confirming deployments
* Auditing user desktops, servers, research environments & ecosystems
* Filing (or requesting) bug reports

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

There are no manditory, nor automatically installing, dependencies.
::

pip install pyenvdiff

OR just copy & paste pyenvdiff anywhere on PYTHONPATH

There is one optional dependency. The core functionality doesn't use it. It's only needed for more advanced HTML-based comparison.
::

pip install ghdiff


Under the hood
--------------

* Zero dependency, pure-python, harmless `pip install pyenvdiff` or copy anywhere on PYTHONPATH.
* As-needed import statements, to maximize compatibility across python flavours.
* Favours compatible python-code over succinct or newer-style python-code
* Free software: BSD license
* Documentation: https://pyenvdiff.readthedocs.io.

Credits
---------

This package was started with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _`free personal API Key`: http://eepurl.com/cvQqLX
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage



=======
History
=======

0.2.0 (2018-06-8)
--------------
* Refactor info.py into environment.py to account for regression in cpython micro release (#5) [PR #6]
* Change file format from yaml to json with sorted keys (#4) [PR #7]
* Remove pyenvdiff.com as default server. [PR #8]
* Simplify user-created custom Collector. [PR #8]
* Enable user-created custom POST command. [PR #8]
* Add more Collectors (OSEnviron, UserName, HomeDirectory, SysPrefix). [PR #9]
* Add transparency to systematically disclose what information is collected. [PR #9]
* Add invasive property [PR #9]
* Make compatible with pip 10. [PR #10]
* Enhance PipDistribution output. [PR #10]

0.1.0 (2016-12-24)
------------------

* First release on PyPI.

Project details


Download files

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

Source Distribution

pyenvdiff-0.2.0.tar.gz (27.7 kB view hashes)

Uploaded Source

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