DEVELOPMENT VERSION: This is an experimental DALICC environment. Features, data and APIs may change or be reset without notice. A stable version of this service, with a potentially different feature set, will be made available soon at dalicc.net.

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.

Canonical URI https://dalicc.net/licenselibrary/PSF-2.0

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.
  • Distribute from the text Providing copies of the work to the public or to anyone else.

    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.
  • Reproduce from the text Making copies of the work in any form.

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.

Terminates on breach
Yes

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.0 on 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 DALICC badge for Python Software Foundation License 2.0

Markdown

[![License: Python Software Foundation License 2.0](https://dalicc.net/license-library/PSF-2.0/badge.svg)](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:licenseId applied

    File 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:target applied

    One 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:permission applied

    Paragraph 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:permission applied

    dalicc: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:prohibition applied

    dalicc: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:duty applied

    cc: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:duty applied

    dalicc: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:WarrantyDisclaimer applied

    Paragraphs 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:terminatesOnBreach applied

    dalicc: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:additionalClauses none

    No 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 record none

    The consistency check of app.services.composer against the dependency graph dg_default returned an empty conflict list.

  • info Rubric 10 record none

    Read 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.

  1. 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.

    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:display

      was permission odrl:display

      Manual 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:present

      was permission odrl:present

      Manual 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:promote

      was prohibition dalicc:promote

      Manual 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.

  2. 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.