Python Software Foundation License 2.0
Also known as PSF License 2.0, PSF-2.0, Python Software Foundation License Version 2.
- Commercial use
- allowed
- Share alike
- not required
- Attribution
- required (keep the copyright and license notices)
Write this as a license text (needs an account) DALICC reads the model above and writes what it permits, requires and prohibits in plain English. Without an account, the Text download above writes the model out from the vocabulary.
Permissions
-
Change license by library convention Library convention: family rule 15: Permissive records permit relicensing. Replacing the license of the work, or of an adaptation, with another license, or changing its terms.
Duties
- Use a compliant license by library convention Library convention: family rule 15: Permissive records permit relicensing. Choosing a replacement license that stays compliant with the terms of the original license.
-
Charge distribution fee from the text Charging a fee for the act of providing a copy of the work to someone else.
-
Commercial use from the text Using the work to generate income, directly or indirectly, for example by selling it or by using it in advertising.
-
Derivative works from the text Distributing an adaptation of the work and making it available to the public.
-
Derive from the text Creating a new work from the work, such as a translation, adaptation or arrangement of it or of a part of it.
Duties
- Attribution from the text Giving credit to the copyright holders or authors of the work, in the form the licensor asks for.
- Modification notice from the text Marking a changed work as changed, saying how it differs from the original and keeping earlier notices of change.
- Notice from the text Notice: keeping the license and copyright notices with every copy.
-
Display from the text The text says: "Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee." Showing the work to the public without making a copy the viewer keeps.
-
Duties
- Attribution from the text Giving credit to the copyright holders or authors of the work, in the form the licensor asks for.
- Notice from the text Notice: keeping the license and copyright notices with every copy.
-
Modified works from the text Distributing a modified version of the work that does not amount to a new, derivative work.
-
Modify from the text Altering the work, for example by updating it, without creating a new work; an alteration that creates a new work is Derive.
Duties
- Attribution from the text Giving credit to the copyright holders or authors of the work, in the form the licensor asks for.
- Modification notice from the text Marking a changed work as changed, saying how it differs from the original and keeping earlier notices of change.
- Notice from the text Notice: keeping the license and copyright notices with every copy.
-
Present from the text The text says: "Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee." Performing the work in public, including by broadcast or other communication to the public.
Prohibitions
-
Promote from the text Not permitted: Promote. The text says: "This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party." Using the name or trademarks of the licensor or of contributors to endorse or promote a product.
License-wide duties
This license states no duties that apply to the work as a whole.
What applies by default
The statements above are the library's reading of this license: each is marked with the sentence it rests on, or as a library convention where the text is not explicit. The statements below are the ones the DALICC reasoner supplies for acts the license says nothing about, from the default rules of the dependency graph it reasons with. Each one names the legal source it rests on. None of it is in the record.
No default rule of that graph reaches this license: it speaks about every act the rules are about.
Further terms
These are the things the license says about itself beyond the acts it permits, forbids and requires: when it ends, how long there is to put a breach right, which law governs it, and so on. A term that comes from the DALICC vocabulary links to its definition.
Clauses
Warranty disclaimer
PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
Limitation of liability
PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
Additional clauses
3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python.
Info
- Target asset types
- Software
- Region / jurisdiction
- Worldwide
- Validity
- Perpetual
- Source
- https://spdx.org/licenses/PSF-2.0.html
- Legal code
- https://spdx.org/licenses/PSF-2.0.html
- This description is published under
- Creative Commons Attribution 4.0 International
- Publisher
- Python Software Foundation
- Attribution name
- Python Software Foundation
- SPDX identifier
-
PSF-2.0on the SPDX license list - DALICC identifier
PSF-2.0
This record is published under CC BY 4.0. Credit it as: DALICC License Library, DALICC - Verein zur Förderung der Rechtssicherheit in der Datenbewirtschaftung, https://dalicc.net, CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). The license it describes belongs to its publisher.
Use this license
Everything below is generated from this record. Replace the example address with the address of your own work.
JSON sidecar
{
"license-uri": "https://dalicc.net/licenselibrary/PSF-2.0",
"license-title": "Python Software Foundation License 2.0",
"spdx-id": "PSF-2.0",
"attribution": "Copyright (c) [year] [copyright holder]",
"asset": null,
"generated-by": "DALICC"
}
RDF, Turtle
@prefix cc: <http://creativecommons.org/ns#> .
<https://example.org/my-work>
cc:license <https://dalicc.net/licenselibrary/PSF-2.0> .
RDF, JSON-LD
{
"@context": {
"cc": "http://creativecommons.org/ns#"
},
"@id": "https://example.org/my-work",
"cc:license": {
"@id": "https://dalicc.net/licenselibrary/PSF-2.0"
}
}
HTML attribution
<p>This work is licensed under <a href="https://dalicc.net/licenselibrary/PSF-2.0" rel="license">Python Software Foundation License 2.0</a>.</p>
This license asks for attribution, so the credit line is part of it.
Badge
Markdown
[](https://dalicc.net/license-library/PSF-2.0)
HTML
<a href="https://dalicc.net/license-library/PSF-2.0"><img src="https://dalicc.net/license-library/PSF-2.0/badge.svg" alt="License: Python Software Foundation License 2.0"></a>
Review
- Written from the license text by
- Giray Havur
- Written on
- 2026-09-22
- Second review
- not yet done
- Record changed since this review
- yes (version 2, 2026-09-24)
- Findings
- 12 recorded, 9 applied to the record, 0 proposed
Models the Python Software Foundation licence agreement version 2 on its own, as SPDX lists it: the eight numbered paragraphs between the foundation and the licensee, without the BeOpen, CNRI and CWI agreements that the full Python licence stacks on top of it. The record follows PythonLicense20 for the clause texts and the duties, and adds the termination flag paragraph 6 states.
12 findings
-
info Rubric 1
spdx:licenseIdappliedFile name, record identifier, SPDX identifier and IRI local name are all PSF-2.0. The library already holds the stacked Python licence under PythonLicense20 with spdx:licenseId Python-2.0, and Python-2.0.1 beside it; this record is the PSF agreement alone.
-
info Rubric 2
odrl:targetappliedOne odrl:AssetCollection of dct:type dcmitype:Software, following PythonLicense20. Paragraph 1 names the software in source or binary form and its associated documentation.
-
major Rubric 3
odrl:permissionappliedParagraph 2 reads "PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version". The record permits reproduce, distribute, modify, derive, display, present, commercial use, derivative works, modified works and the distribution fee. odrl:display and odrl:present rest on "perform and/or display publicly" in as many words.
-
major Rubric 3
odrl:permissionapplieddalicc:ChangeLicense is permitted with the dalicc:compliantLicense duty, as on PythonLicense20: the retention condition in paragraph 2 has to survive a relicensing and nothing bars one.
-
major Rubric 4
odrl:prohibitionapplieddalicc:promote is prohibited for paragraph 7, "This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party".
-
major Rubric 5
odrl:dutyappliedcc:Attribution and cc:Notice hang off odrl:distribute, odrl:modify and odrl:derive for the proviso of paragraph 2, that "PSF's License Agreement and PSF's notice of copyright ... are retained in Python alone or in any derivative version prepared by Licensee".
-
minor Rubric 5
odrl:dutyapplieddalicc:modificationNotice hangs off odrl:modify and odrl:derive for paragraph 3, "Licensee hereby agrees to include in any such work a brief summary of the changes made to Python". PythonLicense20 attaches the same duty for the same paragraph.
-
minor Rubric 6
dalicc:WarrantyDisclaimerappliedParagraphs 4 and 5 are quoted into dalicc:WarrantyDisclaimer and dalicc:LiabilityLimitation, in the wording PythonLicense20 uses, with the paragraph number dropped so that the two records carry the same literal.
-
major Rubric 7
dalicc:terminatesOnBreachapplieddalicc:terminatesOnBreach is true for paragraph 6, "This License Agreement will automatically terminate upon a material breach of its terms and conditions". No cure period is given, so dalicc:curePeriod is absent. The text names no governing law and no term, so cc:jurisdiction is dalicc:worldwide and dalicc:validityType is dalicc:perpetual.
-
info Rubric 8
dalicc:additionalClausesnoneNo clause of this text needs a term the vocabulary does not have. Paragraph 8, under which a licensee is bound by copying or installing the software, is quoted rather than modelled.
-
info Rubric 9
recordnoneThe consistency check of app.services.composer against the dependency graph dg_default returned an empty conflict list.
-
info Rubric 10
recordnoneRead against licensedata/licenses/PythonLicense20.ttl the differences are: no dalicc:noWarrantyNotice permission, which that record takes from a paragraph of the stacked agreements that is not in this text; cc:Attribution and cc:Notice on odrl:modify as well, which the text's retention proviso covers; and dalicc:terminatesOnBreach true, which Python-2.0.1 also carries for the same sentence.
Report an issue The review record as JSON The review checks the model against the license text. It is not legal advice.
History
This license model has 2 versions. Version 2 is the one served today; every earlier version keeps its own address, so a conclusion drawn from one of them can still be checked against it.
-
Version 2 current2026-09-24 Giray Havur
The changes since version 1 recorded which sentence of the text each statement rests on and named the license the record itself is published under.
View version 2 JSON-LD Turtle RDF/XML
5 changes
-
changed
permission dalicc:ChangeLicense with duties [dalicc:compliantLicense]was
permission dalicc:ChangeLicense with duties [dalicc:compliantLicense]Manual edit The statement is marked as a library convention, family rule 15: Permissive records permit relicensing: the text does not state it in as many words. Its duty dalicc:compliantLicense is marked as a library convention, family rule 15: Permissive records permit relicensing.
-
changed
permission odrl:displaywas
permission odrl:displayManual edit The statement now quotes the sentence of the licence text it rests on: "Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee."
-
changed
permission odrl:presentwas
permission odrl:presentManual edit The statement now quotes the sentence of the licence text it rests on: "Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee."
-
changed
prohibition dalicc:promotewas
prohibition dalicc:promoteManual edit The statement now quotes the sentence of the licence text it rests on: "This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party."
-
added
dct:license <https://creativecommons.org/licenses/by/4.0/>Manual edit Every record is published under CC BY 4.0. cc:license names the record DALICC keeps of that licence; dct:license now names it by the address Creative Commons publishes it at, so that a consumer matching the canonical IRI finds it.
-
-
Version 1
Created from the license text on 2026-09-22 (Permissive variants).
Every change names the reason behind it: a finding of the content review, one of its library-wide decisions, the metadata that review wrote onto every record, or a hand edit. None of it is legal advice.
Nothing on this page is legal advice. What a license means is decided by its text; ask a legal advisor before you rely on it.