PEP 241 – Metadaten für Python-Softwarepakete
- Autor:
- A.M. Kuchling <amk at amk.ca>
- Discussions-To:
- Distutils-SIG Liste
- Status:
- Abgelöst
- Typ:
- Standards Track
- Thema:
- Packaging
- Erstellt:
- 12-Mrz-2001
- Post-History:
- 19-Mrz-2001
- Ersetzt-Durch:
- 314
Einleitung
Dieser PEP beschreibt einen Mechanismus zum Hinzufügen von Metadaten zu Python-Paketen. Er enthält Details zu den Feldnamen, ihrer Semantik und Verwendung.
Einbeziehung von Metadaten in Pakete
Der Distutils ‘sdist’-Befehl wird modifiziert, um die Metadatenfelder aus den Argumenten zu extrahieren und sie in eine Datei im generierten Zipfile oder Tarball zu schreiben. Diese Datei wird PKG-INFO heißen und im Stammverzeichnis der Quellcode-Distribution platziert (wo README, INSTALL und andere Dateien normalerweise liegen).
Entwickler dürfen keine eigene PKG-INFO-Datei bereitstellen. Der „sdist“-Befehl wird, wenn er eine vorhandene PKG-INFO-Datei erkennt, mit einer entsprechenden Fehlermeldung beendet. Dies soll Verwirrung vermeiden, die durch veraltete PKG-INFO- und setup.py-Dateien entstehen kann.
Das PKG-INFO-Dateiformat ist ein einzelner Satz von RFC 822-Headern, die vom rfc822.py-Modul geparst werden können. Die im folgenden Abschnitt aufgeführten Feldnamen werden als Header-Namen verwendet. In diesem einfachen Format gibt es keinen Erweiterungsmechanismus; die Catalog- und Distutils-SIGs werden sich bemühen, ein flexibleres Format für Python 2.2 bereitzustellen.
Felder
Dieser Abschnitt spezifiziert die Namen und die Semantik jedes unterstützten Metadatenfeldes.
Felder, die mit „(mehrfache Verwendung)“ gekennzeichnet sind, dürfen mehrmals in einer einzigen PKG-INFO-Datei 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 vorhanden sein, alle anderen Felder müssen vorhanden sein.
Metadata-Version
Version des Dateiformats; derzeit ist „1.0“ der einzige zulässige Wert hier.
Beispiel
Metadata-Version: 1.0
Name
Der Name des Pakets.
Beispiel
Name: BeagleVote
Version
Eine Zeichenkette, die 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 wichtigsten unterstützten Plattformen sind unten aufgeführt, aber diese Liste ist notwendigerweise unvollständig.
POSIX, MacOS, Windows, BeOS, Palm OS.
Binäre Distributionen werden das Feld Supported-Platform in ihren Metadaten verwenden, um das Betriebssystem und die CPU anzugeben, für die das Binärpaket kompiliert wurde. Die Semantik von Supported-Platform ist in diesem PEP nicht spezifiziert.
Beispiel
Platform: POSIX, Windows
Zusammenfassung
Eine einzeilige Zusammenfassung dessen, 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 umgeht, sollte keine maximale Größe für dieses Feld annehmen, obwohl zu hoffen ist, dass die Leute nicht ihr Bedienungshandbuch als lange Beschreibung einfügen.)
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 verwendet werden, um die Suche nach dem Paket in einem größeren Katalog zu unterstützen.
Beispiel
Keywords: dog puppy voting election
Home-page (optional)
Eine Zeichenkette, die die URL für die Homepage des Pakets enthält.
Beispiel
Home-page: http://www.example.com/~cschultz/bvote/
Lizenz
Eine Zeichenkette, die aus einer kurzen Liste von Optionen ausgewählt wird und die Lizenz angibt, unter der das Paket steht. Einige Lizenzen führen dazu, dass die Software frei weiterverteilbar ist, sodass Paketierer und Wiederverkäufer automatisch wissen, dass sie die Software frei weiterverteilen dürfen. Andere Lizenzen erfordern eine sorgfältige Prüfung durch einen Menschen, um festzustellen, wie die Software neu verpackt und weiterverkauft werden kann.
Die Auswahlmöglichkeiten sind
Artistic, BSD, DFSG, GNU GPL, GNU LGPL, "MIT",
Mozilla PL, "public domain", Python, Qt PL, Zope PL, unknown,
nocommercial, nosell, nosource, shareware, other
Definitionen einiger Lizenzen sind
| DFSG | Die Lizenz entspricht den Debian Free Software Guidelines, verwendet aber keine der anderen hier aufgeführten DFSG-konformen Lizenzen. Weitere Informationen finden Sie unter: http://www.debian.org/social_contract#guidelines |
| Python | Lizenz von Python 1.6 oder höher. Version 1.5.2 und früher unterliegen der MIT-Lizenz. |
| public domain | Software ist gemeinfrei, nicht urheberrechtlich geschützt. |
| unknown | Status ist unbekannt |
| nocommercial | Freie private Nutzung, aber kommerzielle Nutzung nicht gestattet |
| nosell | Freie Nutzung, aber Weiterverkauf gegen Entgelt nach Vereinbarung |
| nosource | Frei weiterverteilbar, aber kein Quellcode |
| shareware | Zahlung wird verlangt, wenn Software genutzt wird |
| other | Allgemeine Kategorie für andere Nicht-DFSG-Lizenzen |
Einige dieser Lizenzen können so interpretiert werden, dass die Software frei weiterverteilbar ist. Die Liste der weiterverteilbaren Lizenzen ist
Artistic, BSD, DFSG, GNU GPL, GNU LGPL, "MIT",
Mozilla PL, "public domain", Python, Qt PL, Zope PL,
nosource, shareware
Beachten Sie, dass weiterverteilbar zu sein nicht bedeutet, dass ein Paket als freie Software gilt, wie Beispiele wie „nosource“ und „shareware“ zeigen.
Beispiel
License: MIT
Danksagungen
Viele Änderungen und Überarbeitungen dieses Dokuments wurden von den Lesern der Distutils SIG vorgeschlagen. Insbesondere trug Sean Reifschneider oft tatsächlichen Text zur Aufnahme in diesen PEP bei.
Die Liste der Lizenzen wurde anhand der SourceForge-Lizenzliste und der von Graham Williams kompilierten CTAN-Lizenzliste zusammengestellt; Carey Evans steuerte ebenfalls mehrere nützliche Vorschläge zu dieser Liste bei.
Urheberrecht
Dieses Dokument wurde gemeinfrei erklärt.
Quelle: https://github.com/python/peps/blob/main/peps/pep-0241.rst
Zuletzt geändert: 2024-10-06 16:27:00 GMT