LGTM.

I was a bit confused at first by the fact that you describe
environment markers but not where they are allowed. On checking, I
find that this is defined in version 1.2 (PEP 345). It might be worth
a small clarification that this (and name and version specifiers) are
still used in the same way as in PEP 345. Better to be explicit than
implicit and all that :-)

Formatting nit - the "Name" section header is at a different level
than the other two. You probably want the other two with "::::"
underlines.

Paul

On 5 December 2017 at 16:39, Dustin Ingram <dustin.ing...@gmail.com> wrote:
> Hi all,
>
> I'd appreciate your feedback on the following Metadata 1.3 PEP.
>
> The goal here is not to provide a full specification for all fields as
> in previous PEPs, but to:
>
> * Motivate and describe the addition of the new fields or changes to
> existing fields;
> * Point to the Core Metadata Specifications reference document as the
> canonical source for the specification.
>
> Previous discussions:
> * https://mail.python.org/pipermail/distutils-sig/2017-September/031465.html
> * https://github.com/python/peps/issues/388
>
> Thanks,
> D.
>
>
> PEP: 566
> Title: Metadata for Python Software Packages 1.3
> Version: $Revision$
> Last-Modified: $Date$
> Author: Dustin Ingram <di@di.codes>
> Discussions-To: distutils-sig <distutils-sig at python.org>
> Status: Draft
> Type: Standards Track
> Content-Type: text/x-rst
> Created: 1-Dec-2017
> Python-Version: 3.x
> Post-History:
> Replaces: 345
>
>
> Abstract
> ========
>
> This PEP describes the changes between versions 1.2 and 1.3 of the core
> metadata specification for Python packages. Version 1.2 is specified in PEP
> 345.
>
> It also changes to the canonical source for field specifications to the `Core
> Metadata Specification`_ reference document, which includes specifics of the
> field names, and their semantics and usage.
>
> Fields
> ======
>
> The canonical source for the names and semantics of each of the supported
> metadata fields is the `Core Metadata Specification`_ document.
>
> Fields marked with "(Multiple use)" may be specified multiple times in a 
> single
> PKG-INFO file.  Other fields may only occur once in a PKG-INFO file.  Fields
> marked with "(optional)" are not required to appear in a valid PKG-INFO file;
> all other fields must be present.
>
> New in Version 1.3
> ------------------
>
> Description-Content-Type (optional)
> :::::::::::::::::::::::::::::::::::
>
> A string stating the markup syntax (if any) used in the distribution's
> description, so that tools can intelligently render the description.
>
> Historically, tools like PyPI assume that a package's description is formatted
> in `reStructuredText (reST)
> <http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html>`_, and
> fall back on plain text if the description is not valid reST.
>
> The introduction of this field allows PyPI to support additional types of
> markup syntax, and not need to make this assumption.
>
> The full specification for this field is defined in the `Core Metadata
> Specification`_.
>
>
> Provides-Extra (optional, multiple use)
> :::::::::::::::::::::::::::::::::::::::
>
> A string containing the name of an optional feature. Must be a valid Python
> identifier. May be used to make a dependency conditional on whether the
> optional feature has been requested.
>
> This introduction of this field allows packge installation tools (such as
> ``pip``) to determine which extras are provided by a given package, and so 
> that
> package publication tools (such as ``twine``) can check for issues with
> environment markers which use extras.
>
> The full specification for this field is defined in the `Core Metadata
> Specification`_.
>
> Changed in Version 1.3
> ----------------------
>
> Name
> ::::
>
> The specification for the format of this field is now identical to the
> distribution name specification defined in PEP 508.
>
> Version Specifiers
> ==================
>
> Version numbering requirements and the semantics for specifying comparisons
> between versions are defined in PEP 440.
>
> Environment markers
> ===================
>
> An **environment marker** is a marker that can be added at the end of a
> field after a semi-colon (";"), to add a condition about the execution
> environment.
>
> The environment marker format used to declare such a condition is defined in
> the environment markers section of PEP 508.
>
> JSON-compatible Metadata
> ========================
>
> It may be necessary to store metadata in a data structure which does not
> allow for multiple repeated keys, such as JSON.
>
> The canonical method to transform metadata fields into such a data structure 
> is
> as follows:
>
> #. The original key-value format should be read with
>    ``email.parser.HeaderParser``;
> #. All transformed keys should be reduced to lower case, but otherwise should
>    retain all other characters;
> #. The transformed value for any field marked with "(Multiple-use") should be 
> a
>    single list containing all the original values for the given key;
> #. The ``Keywords`` field should be converted to a list by splitting the
>    original value on whitespace characters;
> #. The result should be stored as a string-keyed dictionary.
>
> Summary of Differences From PEP 345
> ===================================
>
> * Metadata-Version is now 1.3.
>
> * Fields are now specified via the `Core Metadata Specification`_.
>
> * Added two new fields: ``Description-Content-Type`` and ``Provides-Extra``
>
> * Acceptable values for the ``Name`` field are now specified as per PEP 508.
>
> * Added canonical method of transformation into JSON-compatible data 
> structure.
>
> References
> ==========
>
> This document specifies version 1.3 of the metadata format.
> Version 1.0 is specified in PEP 241.
> Version 1.1 is specified in PEP 314.
> Version 1.2 is specified in PEP 345.
>
> .. _`Core Metadata Specification`:
>    https://packaging.python.org/specifications/core-metadata/
>
> Copyright
> =========
>
> This document has been placed in the public domain.
>
> Acknowledgements
> ================
>
> Thanks to Nick Colgan for contributing to this PEP.
>
>
> ..
>    Local Variables:
>    mode: indented-text
>    indent-tabs-mode: nil
>    sentence-end-double-space: t
>    fill-column: 80
>    End:
> _______________________________________________
> Distutils-SIG maillist  -  Distutils-SIG@python.org
> https://mail.python.org/mailman/listinfo/distutils-sig
_______________________________________________
Distutils-SIG maillist  -  Distutils-SIG@python.org
https://mail.python.org/mailman/listinfo/distutils-sig

Reply via email to