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
- Einleitung
- Einschließen von Metadaten in Paketen
- Felder
- Metadata-Version
- Name
- Version
- Platform (mehrfache Verwendung)
- Supported-Platform (mehrfach verwendbar)
- Zusammenfassung
- Description (optional)
- Keywords (optional)
- Home-page (optional)
- Download-URL
- Author (optional)
- Author-email
- Lizenz
- Classifier (mehrfach verwendbar)
- Requires (mehrfach verwendbar)
- Provides (mehrfach verwendbar)
- Obsoletes (mehrfach verwendbar)
- Zusammenfassung der Unterschiede zu PEP 241
- Offene Themen
- Danksagungen
- Referenzen
- Urheberrecht
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.)
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
Urheberrecht
Dieses Dokument wurde gemeinfrei erklärt.
Quelle: https://github.com/python/peps/blob/main/peps/pep-0314.rst
Zuletzt geändert: 2025-02-01 08:55:40 GMT