humpty 0.2.1
A tool to convert python wheels to eggs
Keywords: python packaging wheel whl egg

======================================
Humpty - Convert Python wheels to eggs
======================================

|version| |build status|

For when you need an ``.egg`` but all you have is a ``.whl``.

***********
Description
***********

Humpty is a command-line utility to convert Python binary wheel
packages to eggs.

Currently, the tool is in a “works for me” state.  (It is not
guaranteed to work for you.)

Development takes place on github_.
The package is installable from PyPI_

.. _github: https://github.com/dairiki/humpty/
.. _pypi: https://pypi.python.org/pypi/humpty/

************
Obsolescence
************

Note that recent developments may have made this utility unnecessary.
As of ``setuptools`` 38.2.0, ``easy_install`` support installing
wheels as unzipped eggs. Also, ``zc.buildout``, as of 2.10.0 takes
advantage of this to support installation from wheels.

********
Synopsis
********

The humpty "man page"::

  $ humpty --help
  Usage: humpty [OPTIONS] WHEELS...

    Convert wheels to eggs.

  Options:
    -d, --dist-dir DIR  Build eggs into <dir>.  Default is <cwd>/dist.
    --help              Show this message and exit.

Suppose you need an egg of a distribution which has only been uploaded
to PyPI as a wheel::

  $ pip install --download . publicsuffixlist
  [...]
    Saved ./publicsuffixlist-0.2.8-py2.py3-none-any.whl
  Successfully downloaded publicsuffixlist

  $ humpty -dist-dir . publicsuffixlist-0.2.8-py2.py3-none-any.whl
  Converting publicsuffixlist-0.2.8-py2.py3-none-any.whl to publicsuffixlist-0.2.8-py2.6.egg

  $ easy_install publicsuffixlist-0.2.8-py2.7.egg


**********
References
**********

- :PEP:`427` - The Wheel Binary Package Format 1.0
- :PEP:`491` - The Wheel Binary Package Format 1.9
- :PEP:`241` - Metadata for Python Software Packages
- :PEP:`314` - Metadata for Python Software Packages v1.1
- :PEP:`345` - Metadata for Python Software Packages 1.2
- :PEP:`426` - Metadata for Python Software Packages 2.0
- :PEP:`459` - Standard Metadata Extensions for Python Software Packages
- Setuptools: `The Internal Structure of Python Eggs`_

.. _the internal structure of python eggs:
   http://pythonhosted.org/setuptools/formats.html


*******
Authors
*******

`Jeff Dairiki`_

.. _Jeff Dairiki: mailto:dairiki@dairiki.org

.. |version| image::
    https://img.shields.io/pypi/v/humpty.svg
    :target: https://pypi.python.org/pypi/humpty/
    :alt: Latest Version

.. |build status| image::
    https://travis-ci.org/dairiki/humpty.svg?branch=master
    :target: https://travis-ci.org/dairiki/humpty


*******
History
*******

Release 0.2.1 (2017-12-18)
==========================

Compatibility
-------------

- Drop support for python 3.3.

Packaging
---------

- Include tests in sdist.

Testing
-------

- Test with wheel version 0.18 (among others.)

- Increase test coverage


Release 0.2 (2017-11-08)
========================

Python 2.6 is no longer supported.  We now test under cpython 2.7
and cpython 3.3 through 3.6.

Changed Behavior
----------------

* The strict check for wheel binary compatibility with the current platform
  has been removed.  Now a warning is printed in this case.
  When running under py35 or py36, distlib sometimes falsely reports
  that some wheels are not binary compatible. See distlib ticket `#93`__.

__ https://bitbucket.org/pypa/distlib/issues/93

Bugs Fixed
----------

* Fix ``EggInfo_Legacy.requires`` to work with recent versions of
  ``distlib``.  With ``distlib<=0.2.4``,
  ``distlib.wheel.Wheel.metadata.run_requires`` is a list of strings,
  taken from lines of the RFC822 style metadata.  With recent versions
  of ``distlib``, ``run_requires`` is a list of dicts in the "JSON"
  format described in :pep:`426`.  This addresses `#1`__.

__ https://github.com/dairiki/humpty/issues/1

* Always create eggs with ``zip_safe=False``.  There currently seems
  to be no robust way to determine whether a package is zip_safe from
  its wheel. See `#3`__ for further discussion.
  (Thank you to immerrr.)

__ https://github.com/dairiki/humpty/pull/3

* Fix parsing of markers in ``EggInfo_Legacy.requires``.  Apparently,
  as ``of distlib==0.2.6``, ``distlib.markers.interpret`` no longer
  handles leading whitespace in the marker string well.

* Fix failing test ``test_humpty:TestScriptCopyer.test_copies_script``.
  Apparently, ``distlib.markers.interpret==0.2.6`` now just prepends
  the new hashbang line to the copied script, but does not remove
  the original hashbang.

Release 0.1 (2015-07-16)
========================

Initial release.