An open API service indexing awesome lists of open source software.

https://github.com/enthought/okonomiyaki

Okonomiyaki is aimed at consolidating a lot of our low-level code used for Enthought's eggs and python runtimes.
https://github.com/enthought/okonomiyaki

Last synced: 12 months ago
JSON representation

Okonomiyaki is aimed at consolidating a lot of our low-level code used for Enthought's eggs and python runtimes.

Awesome Lists containing this project

README

          

Okonomiyaki is an experimental library aimed at consolidating a lot of our
low-level code used for Enthought's eggs.

The library contains code for the following:

* producing EDM and enpkg-compatible egg from a tree + metadata
* object models for eggs metadata, as well as versions and platform
representations

It works on Python >= 3.6, It is expected to work on pretty
much any compliant python implementation.

Note
----

* Version instances are available without extra dependencies so use ``pip install okonomiyaki``
* Platform instances are available by installing ``pip install okonomiyaki[platforms]``
* Egg metadata and archive tools are available by installing ``pip install okonomiyaki[formats]``
* The full set of functionality, please use ``pip install okonomiyaki[all]``

Examples
========

Version parsing
---------------

To parse versions::

from okonomiyaki.versions import EnpkgVersion
# Every Version class has a from_string constructor
v1 = EnpkgVersion.from_string("1.3.3-1")
v2 = EnpkgVersion.from_string("1.3.2-3")

assert v1 > v2

Version instances are designed to be immutable, and to be used as keys in
dictionaries.

Platform parsing
----------------

To parse epd platform strings (``rh5-64``, ``rh6_x86_64``, etc.) consistently::

from okonomiyaki.platforms import EPDPlatform
# Internal representation is normalized.
rh5_new_name = EPDPlatform.from_string("rh5-x86_64")
rh5_old_name = EPDPlatform.from_string("rh5-64")

assert rh5_old_name == rh5_new_name

As for Version instances, ``EPDPlatform`` instances are designed to be
immutable and to be used as keys in dictionaries.

Egg metadata
------------

To parse Enthought eggs::

from okonomiyaki.file_formats import EggMetadata

# Only works for Enthought eggs
metadata = EggMetadata.from_egg("numpy-1.10.1-1.egg")
print(metadata.metadata_version)
print(metadata.name)
print(metadata.version)

This will take care of a lot of low-level, legacy details you don't want to
know about.