Package: okonomiyaki
.. image:: https://travis-ci.com/enthought/okonomiyaki.svg?branch=master:target: https://travis-ci.com/enthought/okonomiyakiOkonomiyaki is an experimental library aimed at consolidating a lot of ourlow-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 platformrepresentationsIt works on both python 2 and 3, and pypy. It is expected to work on prettymuch any compliant python implementation.Examples========Version parsing---------------To parse versions::from okonomiyaki.versions import EnpkgVersion# Every Version class has a from_string constructorv1 = EnpkgVersion.from_string("1.3.3-1")v2 = EnpkgVersion.from_string("1.3.2-3")assert v1 > v2Version instances are designed to be immutable, and to be used as keys indictionaries.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_nameAs for Version instances, ``EPDPlatform`` instances are designed to beimmutable and to be used as keys in dictionaries.Egg metadata------------To parse Enthought eggs::from okonomiyaki.file_formats import EggMetadata# Only works for Enthought eggsmetadata = 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 toknow about.2023-06-29     1.4.0--------------------Enhancements:* Add cp311 dummy runtimes (#349)* Add cp311 dummy eggs (#453)* Update the code to guess a Platform instance from the running system (#448)- Added a NameKind value for Rocky Linux- Debian and RHEL compatible systems are now supported by the "uknown" NameKind- Add support for the RH8 platform* Update the PythonImplementation instance to support cp311 (#451)* Update okonomiyaki code to not use the deprecated LegacyEPDPlatform instance (#452)Maintenance:* Remove old Jenkins CI build setup (#440)* Update the test matrix on github actions and remove testing for Python 2.7 (#441, #447)* Move most of the package configuration into the setup.cfg (#450)Big fixes:* Fix the behaviour of the pep245 module and the way it is tested (#441, #447)* Fix the repr output for PEP440Version and RuntimeVersion (#435, #436)* Fix error message for unsupported platform combinations (#433)* Fix permissions in the dummy egg archives (#430)2021-07-01     1.3.2--------------------Big fixes:* Fix relative imports (#426)* Fix compute_abi_tag to support Python 3.8 (#424)2021-06-29     1.3.1--------------------Big fixes:* Update dummy eggs to hold the correct abi tag for Python 3.8 (#413)* Pass the runtime version to the from_epd_string constructor (#414)* Fix _guess_abi_tag and _guess_abi_from_python to support python 3.8 (#418)2021-03-21     1.3.0--------------------Enhancements:* Add cp38 dummy runtimes (#387)* Add cp38 dummy eggs (#395, #398)* Update default abi functions to support python 3.8 (#390)Maintenance:* Enable GitHub actions (#384)* Fix build badge to point to travis-ci.com (#376)* Fix path to the okonomiyaki test build project (#379)* Update script that verifies okonomiyaki can read eds eggs (#396)Big fixes:* Add rh6 and rh7 dummy eggs to setup.py (#369)* EPDPlatform.pep425_tag will always return 10.6 for macos platforms (#374, #387)* Fix older dummy windows runtime archives to work with recent EDM (#391, #397)* EPDPlatform.from_string will always return fixed release versions (#375, #387)2019-11-08     1.2.0--------------------Enhancements:* Run tests against Centos 7. (#359)Maintenance:* Run Travis CI on maintenance and tagged branches. (#352)* Only test branch builds on Appveyor for master and maintenance branches. (#364)Big fixes:* Add the license to the manifest. (#354)* Fix platform detection on Centos 7. (#161)* Fix error when '$' is in the Python runtime prefix. (#309)2019-09-20     1.1.1--------------------Big fixes:* Fix name of the 2.7.10 dummy runtime for rh6. (#341)2019-09-19     1.1.0--------------------Enhancements:* Add dummy test runtimes for python 3.6.5. (#327)* Add dummy test runtimes for rh7. (#331)* Add dummy test runtimes for rh6. (#330)* Add dummy test eggs for rh7. (#329)* Add dummy test eggs for rh6. (#328)2019-03-15     1.0.0--------------------Enhancements:* Add ability to parse setuptools eggs and wheels with metadata version 2.1 (#312)Bug fixes:* Improve error message when hyphens are used in spec requirement string (#319)* Fix CI errors with jasonschema and attrs incompatibility (#318)* Fix Travis CI flake8 errors (#316)2018-03-12    0.17.4--------------------Bug fixes:* fix test data dummy runtime for python 2.7.9 that contained osx system files. (#304)* fix test data dummy windows runtimes fix_scripts to support python 2 and python 3. (#303)2017-12-13    0.17.3--------------------Enhancements:* WheelInfo provides properties for the 'scripts' and 'headers'prefix scheme. (#298)2017-07-20    0.17.2--------------------bug fixes:* skip expected failure test_simple_from_running_python when runningon osx under python 2.7.x. (#295)2017-07-19    0.17.1--------------------Enhancements:* streamline travis ci testing. (#286)* run tests on appveyor and python 3. (#288)bug fixes:* fix Runtime.executable value for Python 3 on windows. (#288)* fix compute_abi_tag/compute_python_tag/compute_platform_tag so thatthey can be used in a frozen app. (#284)2017-07-03    0.17.0--------------------Enhancements:* compute default ABI for ironpython/jython. (#225)* add support for CPython 3.6 (#229)* add support for `PKG-INFO` format 1.2 and 2.0 (#261, #271)* fix support for attrs >= 17.x* PackageInfo.from_path may parse PKG-INFO metadata from both wheels and eggs. (#274)* add WheelInfo class for wheel pep425 tags parsing. (#275)* add compute_abi_tag/compute_python_tag/compute_platform_tag functions tocompute PEP 425 tags from arbitrary python executables (#278)* add some basic examples in the README. (#279)* add commonly used wheel prefixes to WheelInfo. (#280)bug fixes:* fix author_* entries in setup.py. (#235)* test runtimes should include pythonw.exe (#238)* fix applies("32")/applies("64") (#244)* fix permissions for egg metadata written through writestr. (#249)* fix error handling for platform strings with 'remains'. (#253)* fix invalid trove classifier in setup.py. (#258)* mark classes we need hashable as immutable. (#266)* add (long) description into setup.py. (#272)2016-06-29    0.16.0--------------------This release focused on speeding up EggMetadata, and adding json serializationfor EDM.Enhancements:* update dependency on attr >= 16.0.0, which contains some speedups forvalidators (#220)* lazily parse PKG-INFO in EggMedata (#216)* test runtimes's dummy pythons output the right string and are of the rightbitness (#215)* test runtimes now contains symlinks on Unix (#214)* json serialization for EggMetadata (#213)* expose Kind enums to okonomiyaki.runtimes (#204)* speedup EggMetadata.from_egg (#203)* EPDPlatform.from_epd_string is deprecated in favor ofEPDPlatform.from_string(#199)* EggMetadata.from_egg does not re-open a zipfile 3 times (#195)Bugs:* fix flake8 violations (#218)* remove spurious dependency on stevedore (#208)* missing enum34 dependency (#196)2016-04-27   0.15.0:--------------------Enhancements:* add `platform_abi` field to `EggMetadata`Bug fixes:* raise the correct exception for invalid egg metadata (#156)* raise the correct exception for missing metadata in runtimes (#165)Internal changes:* enum34 is used instead of traitlets (#55)* traitlets is not used anymore (#56, #115, #145)2015-12-09   0.14.0:--------------------Enhancements:* Reject incompatible metadata_version in egg metadata, and add API to easilytweak the output's metadata_version (#150)* `default_abi` now works for alternative implementations (#149).* Exception hierarchy for invalid metadata has been improved forfiner-grained error messages (#151)Backward incompatible changes:* `default_abi` function now takes 3 arguments (#149).Bug fixes:* update python_tag blacklist to handle wrong metadata (#146)2015-10-02   0.13.0:--------------------Enhancements:* `abi` attribute for runtime (#134)* `metadata_version` attribute for runtime added (#143)Backward incompatible changes:* `language` attribute from runtime removed (#134)* `metadata_version_info` attribute from EggMetadata removed (#143)Bug fixes:* update PKG-INFO blacklist to handle every pypi egg (#141)* update platform blacklist to handle wrong metadata for windows eggs w/ Cextensions and no platform set up (#142)(#136).* fix round-tripping for PEP386 versions with post part without a dev part(#136).2015-09-28   0.12.0:--------------------Improvements:* blacklist mechanism for invalid python tag of existing eggs (#127)* accept filtre function in egg builders now take two arguments to allowfiltering on the full content of the archive (#128)2015-09-14   0.11.0:--------------------Improvements:* SemanticVersion class added* MetadataVersion class added to easily manipulate metadata versions.* PEP440Version class added.* RuntimeVersion class added to model edm runtime versions* IRuntimeMetadata.factory_from_path class function to parse and validateruntime packages.* __str__ is now implemented for EPDPlatform. The implementation supportEPDPlatform.from_epd_string(str(epd_platform)) == epd_platform (#117)2015-00-01   0.10.0:--------------------Improvements:* EnpkgVersion.from_string now handles versions of the form `1.3.0`, with thebuild number being implicitly 0.* EggMetadata.from_egg now handles eggs built for RedHat EnterpriseLinux 3 (#88).* Fix decoding errors when parsing PKG-INFO (#86)* Fix parsing of spec/depend for RedHat 3 eggs (#88)* Special case invalid requirement 'numpy-1.8.0'Internals:* Remove dependency on six* Add support for both '-' and '_' as separators between os and arch inplatform names for EPDPlatform, i.e. both from_epd_string("rh5-x86_64") andfrom_epd_string("rh5_x86_64") work (#83).* Black list mechanism to fix invalid PKG-INFO* Black list mechanism to handle platform-specific, any-arch eggs* Add special 'private' API for brood to bypass checksum computation inEggMetadata and PackageInfo2015-07-06   0.9.0:-------------------Improvements:* SetuptoolsEggMetadata now can guess ABI for legacy cases. (#74)* use PythonImplementation instances instead of strings to store python tag(#75).* add okonomiyaki.__version_info__ for easy version comparison (#76).2015-06-30   0.8.0:-------------------New features:* New EggRewriter class to create Enthought eggs from setuptools eggs.Improvements:* add EPDPlatform.from_running_python ctor (#62)* reject unsupported metadata version in PackageInfo (#63)* add support for 'py2' python tag (#64)* add support for python 3 in SetuptoolsEggMetadata (#70)Bug fixes:* handle Enthought eggs without PKG-INFO in EggMetadata (#65)* fix unicode handling of PKG-INFO and EGG-INFO/spec/summary (#72)