Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 314 – Metadaten für Python-Softwarepakete 1.1

Autor:
A.M. Kuchling, Richard Jones
Discussions-To:
Distutils-SIG Liste
Status:
Abgelöst
Typ:
Standards Track
Thema:
Packaging
Erstellt:
12. April 2003
Python-Version:
2.5
Post-History:
29. April 2003
Ersetzt:
241
Ersetzt-Durch:
345

Inhaltsverzeichnis

Wichtig

Dieses PEP ist ein historisches Dokument. Die aktuelle, kanonische Spezifikation, Kernmetadatenspezifikationen, wird auf der PyPA Specs-Seite gepflegt.

×

Siehe den PyPA-Spezifikations-Update-Prozess, um Änderungen vorzuschlagen.

Einleitung

Diese PEP beschreibt einen Mechanismus zur Hinzufügung von Metadaten zu Python-Paketen. Sie enthält spezifische Angaben zu Feldnamen, deren Semantik und Verwendung.

Dieses Dokument spezifiziert Version 1.1 des Metadatenformats. Version 1.0 ist in PEP 241 spezifiziert.

Einschließen von Metadaten in Paketen

Der Distutils sdist Befehl extrahiert die Metadatenfelder aus den Argumenten und schreibt sie in eine Datei im generierten Zipfile oder Tarball. Diese Datei wird PKG-INFO heißen und im obersten Verzeichnis der Quellcodeverteilung platziert (wo normalerweise README, INSTALL und andere Dateien liegen).

Entwickler dürfen keine eigene PKG-INFO-Datei bereitstellen. Der sdist Befehl wird, falls er eine vorhandene PKG-INFO-Datei erkennt, mit einer entsprechenden Fehlermeldung beendet. Dies soll Verwirrung verhindern, die durch nicht synchronisierte PKG-INFO- und setup.py-Dateien entstehen könnte.

Das PKG-INFO-Dateiformat ist eine einzelne Menge von RFC 822-Headern, die mit dem rfc822.py Modul geparst werden können. Die im folgenden Abschnitt aufgeführten Feldnamen werden als Headernamen verwendet.

Felder

Dieser Abschnitt spezifiziert die Namen und die Semantik jedes unterstützten Metadatenfeldes.

Felder, die mit „(Mehrfachverwendung)“ gekennzeichnet sind, können in einer einzelnen PKG-INFO-Datei mehrmals angegeben werden. Andere Felder dürfen nur einmal in einer PKG-INFO-Datei vorkommen. Felder, die mit „(optional)“ gekennzeichnet sind, müssen nicht in einer gültigen PKG-INFO-Datei enthalten sein; alle anderen Felder müssen vorhanden sein.

Metadata-Version

Version des Dateiformats; derzeit sind „1.0“ und „1.1“ die einzigen erlaubten Werte.

Beispiel

Metadata-Version: 1.1

Name

Der Name des Pakets.

Beispiel

Name: BeagleVote

Version

Ein String, der die Versionsnummer des Pakets enthält. Dieses Feld sollte von einer der Version-Klassen (StrictVersion oder LooseVersion) im distutils.version Modul geparst werden können.

Beispiel

Version: 1.0a2

Platform (mehrfache Verwendung)

Eine durch Kommas getrennte Liste von Plattformspezifikationen, die die vom Paket unterstützten Betriebssysteme zusammenfasst, die nicht in den „Operating System“-Trove-Klassifikatoren aufgeführt sind. Siehe „Classifier“ unten.

Beispiel

Platform: ObscureUnix, RareDOS

Supported-Platform (mehrfach verwendbar)

Binäre Distributionen, die eine PKG-INFO-Datei enthalten, verwenden das Supported-Platform-Feld in ihren Metadaten, um das Betriebssystem und die CPU anzugeben, für die das Binärpaket kompiliert wurde. Die Semantik des Supported-Platform-Feldes ist in dieser PEP nicht spezifiziert.

Beispiel

Supported-Platform: RedHat 7.2
Supported-Platform: i386-win32-2791

Zusammenfassung

Eine einzeilige Zusammenfassung, was das Paket tut.

Beispiel

Summary: A module for collecting votes from beagles.

Description (optional)

Eine längere Beschreibung des Pakets, die mehrere Absätze umfassen kann. Software, die mit Metadaten arbeitet, sollte keine maximale Größe für dieses Feld annehmen, obwohl Leute ihr Handbuch nicht als Beschreibung einfügen sollten.

Der Inhalt dieses Feldes kann mit reStructuredText-Markup geschrieben werden [1]. Für Programme, die mit den Metadaten arbeiten, ist die Unterstützung von Markup optional; Programme können den Inhalt des Feldes auch unverändert anzeigen. Dies bedeutet, dass Autoren bei der Verwendung von Markup konservativ sein sollten.

Beispiel

Description: This module collects votes from beagles
             in order to determine their electoral wishes.
             Do *not* try to use this module with basset hounds;
             it makes them grumpy.

Keywords (optional)

Eine Liste zusätzlicher Schlüsselwörter, die zur Suche nach dem Paket in einem größeren Katalog verwendet werden.

Beispiel

Keywords: dog puppy voting election

Home-page (optional)

Ein String, der die URL der Homepage des Pakets enthält.

Beispiel

Home-page: http://www.example.com/~cschultz/bvote/

Download-URL

Ein String, der die URL enthält, von der diese Version des Pakets heruntergeladen werden kann. (Das bedeutet, dass die URL nicht etwas wie „…/package-latest.tgz“ sein kann, sondern stattdessen „../package-0.45.tgz“ sein muss.)

Author (optional)

Ein String, der mindestens den Namen des Autors enthält; zusätzliche Kontaktinformationen können angegeben werden.

Beispiel

Author: C. Schultz, Universal Features Syndicate,
        Los Angeles, CA <cschultz@peanuts.example.com>

Author-email

Ein String, der die E-Mail-Adresse des Autors enthält. Er kann einen Namen und eine E-Mail-Adresse in den rechtlichen Formen eines RFC 822 ‘From:’-Headers enthalten. Er ist nicht optional, da Katalogsysteme den E-Mail-Teil dieses Feldes als eindeutigen Schlüssel zur Darstellung des Autors verwenden können. Ein Katalog könnte Autoren die Möglichkeit bieten, ihren GPG-Schlüssel, ihre persönliche Homepage und andere zusätzliche Metadaten *über den Autor* zu speichern, und optional die Möglichkeit, mehrere E-Mail-Adressen derselben Person zuzuordnen. Autorbezogene Metadatenfelder werden von dieser PEP nicht abgedeckt.

Beispiel

Author-email: "C. Schultz" <cschultz@example.com>

Lizenz

Text, der die Lizenz angibt, unter der das Paket steht, wenn die Lizenz keine Auswahl aus den „License“-Trove-Klassifikatoren ist. Siehe „Classifier“ unten.

Beispiel

License: This software may only be obtained by sending the
         author a postcard, and then the user promises not
         to redistribute it.

Classifier (mehrfach verwendbar)

Jeder Eintrag ist ein String, der einen einzelnen Klassifizierungswert für das Paket angibt. Klassifikatoren werden in PEP 301 beschrieben.

Beispiele

Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console (Text Based)

Requires (mehrfach verwendbar)

Jeder Eintrag enthält einen String, der ein anderes Modul oder Paket beschreibt, das von diesem Paket benötigt wird.

Das Format eines Anforderungsstrings ist identisch mit dem eines Modul- oder Paketnamens, der mit der ‚import‘-Anweisung verwendet werden kann, optional gefolgt von einer Versionsangabe in Klammern.

Eine Versionsangabe ist eine Reihe von bedingten Operatoren und Versionsnummern, getrennt durch Kommas. Bedingte Operatoren müssen einer der folgenden sein: „<“, „>“, „<=“, „>=“, „==“ und „!=“. Versionsnummern müssen im von der distutils.version.StrictVersion Klasse akzeptierten Format sein: zwei oder drei durch Punkte getrennte numerische Komponenten, mit einem optionalen „Pre-Release“-Tag am Ende, bestehend aus dem Buchstaben ‚a‘ oder ‚b‘ gefolgt von einer Zahl. Beispiel-Versionsnummern sind „1.0“, „2.3a2“, „1.3.99“.

Eine beliebige Anzahl von bedingten Operatoren kann angegeben werden, z.B. der String „>1.0, !=1.3.4, <2.0“ ist eine gültige Versionsangabe.

Alle folgenden sind mögliche Anforderungsstrings: „rfc822“, „zlib (>=1.1.4)“, „zope“.

Es gibt keine kanonische Liste, welche Strings verwendet werden sollen; die Python-Community kann eigene Standards wählen.

Beispiel

Requires: re
Requires: sys
Requires: zlib
Requires: xml.parsers.expat (>1.0)
Requires: psycopg

Provides (mehrfach verwendbar)

Jeder Eintrag enthält einen String, der ein Paket oder Modul beschreibt, das von diesem Paket bereitgestellt wird, sobald es installiert ist. Diese Strings sollten mit denen übereinstimmen, die in den Requirements-Feldern verwendet werden. Eine Versionsangabe kann angegeben werden (ohne Vergleichsoperator); die Versionsnummer des Pakets wird impliziert, wenn keine angegeben ist.

Beispiel

Provides: xml
Provides: xml.utils
Provides: xml.utils.iso8601
Provides: xml.dom
Provides: xmltools (1.3)

Obsoletes (mehrfach verwendbar)

Jeder Eintrag enthält einen String, der ein Paket oder Modul beschreibt, das dieses Paket veraltet macht, was bedeutet, dass die beiden Pakete nicht gleichzeitig installiert werden sollten. Versionsangaben können angegeben werden.

Die häufigste Verwendung dieses Feldes wird sein, wenn sich ein Paketname ändert, z.B. Gorgon 2.3 wird in Torqued Python 1.0 aufgenommen. Wenn Sie Torqued Python installieren, sollte das Gorgon-Paket entfernt werden.

Beispiel

Obsoletes: Gorgon

Zusammenfassung der Unterschiede zu PEP 241

  • Metadata-Version ist jetzt 1.1.
  • Hinzugefügt wurde das Classifiers-Feld aus PEP 301.
  • Die License- und Platform-Dateien sollten jetzt nur noch verwendet werden, wenn die Plattform oder Lizenz nicht durch einen entsprechenden Classifier-Wert abgedeckt werden kann.
  • Hinzugefügte Felder: Download-URL, Requires, Provides, Obsoletes.

Offene Themen

Keine.

Danksagungen

Keine.

Referenzen


Quelle: https://github.com/python/peps/blob/main/peps/pep-0314.rst

Zuletzt geändert: 2025-02-01 08:55:40 GMT