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

Python Enhancement Proposals

Wichtig

Dieses PEP ist ein historisches Dokument. Die aktuelle, kanonische Spezifikation, Lizenzbeispiele und Userszenarien, wird auf der PyPA Spezifikationsseite gepflegt.

×

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

Anhang: Userszenarien

Zusammenfassung

Dieses Dokument enthält Anleitungen zur Anwendung von PEP 639 in realen Userszenarien.

Benutzerszenarien

Das Folgende deckt eine Bandbreite gängiger Anwendungsfälle aus Benutzersicht ab und bietet Anleitungen für jeden. Beachten Sie, dass das Folgende **nicht** als Rechtsberatung betrachtet werden sollte und Leser im Zweifelsfall einen zugelassenen Juristen in ihrer Gerichtsbarkeit konsultieren sollten.

Ich habe ein privates Paket, das nicht verteilt wird

Wenn Ihr Paket nicht öffentlich, d. h. außerhalb Ihres Unternehmens, Ihrer Organisation oder Ihres Haushalts, geteilt wird, ist die Aufnahme einer formellen Lizenz *normalerweise* nicht zwingend erforderlich, sodass Sie hier normalerweise nichts Zusätzliches tun müssten.

Es ist jedoch weiterhin eine gute Idee, LicenseRef-Proprietary als Lizenzausdruck in Ihrer Paketkonfiguration und/oder eine Urheberrechtserklärung und rechtliche Hinweise in einer LICENSE.txt-Datei im Stammverzeichnis Ihres Projektverzeichnisses aufzunehmen, die von Paketierungswerkzeugen automatisch einbezogen wird.

Ich möchte mein Projekt unter einer bestimmten Lizenz vertreiben

Um eine bestimmte Lizenz zu verwenden, fügen Sie einfach ihren Text in eine LICENSE.txt-Datei im Stammverzeichnis Ihres Repos ein, falls Sie sie nicht bereits in einer Datei mit dem Namen LICENSE oder COPYING haben, und fügen Sie license = "LICENSE-ID" unter [project] in Ihrer pyproject.toml hinzu, wenn Ihr Paketierungswerkzeug dies unterstützt, oder andernfalls in seiner Konfigurationsdatei. Die LICENSE-ID und den kopierbaren Lizenztext finden Sie auf Websites wie ChooseALicense oder SPDX.

Viele beliebte Code-Hosts, Projektvorlagen und Paketierungswerkzeuge können die Lizenzdatei für Sie hinzufügen und unterstützen möglicherweise auch den Ausdruck in Zukunft.

Ich pflege ein bestehendes Paket, das bereits lizenziert ist

Wenn Sie bereits Lizenzdateien und Metadaten in Ihrem Projekt haben, müssen Sie nur ein paar Anpassungen vornehmen, um die neue Funktionalität zu nutzen.

Geben Sie in Ihrer Projektkonfigurationsdatei Ihren Lizenzausdruck unter license (Tabelle [project] in pyproject.toml) oder dem entsprechenden Eintrag für Ihr Paketierungswerkzeug ein und stellen Sie sicher, dass alle älteren license-Tabellen-Unterkeys oder License ::-Klassifikatoren entfernt werden. Ihr bestehender license-Wert ist möglicherweise bereits als einer gültig (z. B. MIT, Apache-2.0 OR BSD-2-Clause usw.); andernfalls überprüfen Sie die SPDX-Lizenzliste auf die Kennung, die der in Ihrem Projekt verwendeten Lizenz entspricht.

Stellen Sie sicher, dass Sie Ihre Lizenzdateien unter license-files.paths oder license-files.globs unter [project] in pyproject.toml oder andernfalls in Ihrer Tool-Konfigurationsdatei auflisten.

Sehen Sie sich das Basisbeispiel für eine einfache, aber vollständige reale Demo an, wie dies in der Praxis funktioniert. Paketierungswerkzeuge unterstützen möglicherweise die automatische Konvertierung älterer Lizenzmetadaten; weitere Informationen finden Sie in der Dokumentation Ihres Werkzeugs.

Mein Paket enthält anderen Code unter verschiedenen Lizenzen

Wenn Ihr Projekt Code von anderen enthält, der unter verschiedenen Lizenzen steht, z. B. gebundene Abhängigkeiten oder kopierte Dateien von anderer Open-Source-Software, können Sie einen Lizenzausdruck erstellen, um die beteiligten Lizenzen und die Beziehung zwischen ihnen zu beschreiben.

Kurz gesagt, License-1 AND License-2 bedeutet, dass *beide* Lizenzen für Ihr Projekt oder Teile davon gelten (z. B. Sie haben eine Datei unter einer anderen Lizenz aufgenommen), und License-1 OR License-2 bedeutet, dass *entweder* der Lizenzen verwendet werden kann, nach Wahl des Benutzers (z. B. Sie möchten den Benutzern die Wahl zwischen mehreren Lizenzen überlassen). Sie können Klammern (()) zum Gruppieren verwenden, um Ausdrücke zu bilden, die selbst die komplexesten Situationen abdecken.

Geben Sie in Ihrer Projektkonfigurationsdatei Ihren Lizenzausdruck unter license (Tabelle [project] von pyproject.toml) oder dem entsprechenden Eintrag für Ihr Paketierungswerkzeug ein und stellen Sie sicher, dass alle älteren license-Tabellen-Unterkeys oder License ::-Klassifikatoren entfernt werden.

Stellen Sie außerdem sicher, dass Sie den vollständigen Lizenztext aller Lizenzen als Dateien irgendwo in Ihrem Projekt-Repository hinzufügen. Listen Sie den relativen Pfad oder die Glob-Muster zu jeder einzelnen unter license-files.paths oder license-files.globs unter [project] in pyproject.toml (wenn Ihr Werkzeug dies unterstützt) oder andernfalls in der Konfigurationsdatei Ihres Werkzeugs auf.

Als Beispiel: Wenn Ihr Projekt unter MIT lizenziert war, aber eine gebundene Abhängigkeit (sagen wir, packaging) enthielt, die entweder unter Apache 2.0 oder der 2-Klausel-BSD lizenziert war, wäre Ihr Lizenzausdruck MIT AND (Apache-2.0 OR BSD-2-Clause). Sie könnten eine LICENSE.txt im Stammverzeichnis Ihres Repos und eine LICENSE-APACHE.txt und LICENSE-BSD.txt im Unterverzeichnis _vendor haben. Um alle einzubeziehen, würden Sie ["LICENSE.txt", "_vendor/packaging/LICENSE*"] als Glob-Muster oder ["LICENSE.txt", "_vendor/LICENSE-APACHE.txt", "_vendor/LICENSE-BSD.txt"] als literale Dateipfade angeben.

Sehen Sie sich ein vollständig ausgearbeitetes Fortgeschrittenes Beispiel für eine End-to-End-Anwendung auf ein reales komplexes Projekt mit vielen technischen Details an und konsultieren Sie ein Tutorial für weitere Hilfe und Beispiele zur Verwendung von SPDX-Bezeichnern und -Ausdrücken.