[Python-Dev] Official citation for Python

Stephen J. Turnbull turnbull.stephen.fw at u.tsukuba.ac.jp
Sun Sep 16 04:35:32 EDT 2018

Jacqueline Kazil writes:

 > *As a user, I am writing an academic paper and I need to cite Python. *

I don't understand the meaning of "need" and "Python".  To understand
your code, one likely needs the Language Reference and surely the
Library Reference, and probably documentation of the APIs and
semantics of various third party code.

To just give credit to the Python project for the suite of tools
you've used, a citation like the R Project's should do (I think this
has appeared more than once, I copy it from José María Mateos's
parallel post):

 > To cite R in publications use:

 >   R Core Team (2018). R: A language and environment for statistical
 >   computing. R Foundation for Statistical Computing, Vienna, Austria.
 >   URL https://www.R-project.org/.

I guess for Python that would be something like

Python Core Developers [2018].  Python: A general purpose language for
computing, with batteries included.  Python Software Foundation,
Beaverton, OR.  https://www.python.org/.

I like R's citation() builtin.

One caveat: I get the impression that the R Project is far more
centralized than Python is, that there are not huge independent
projects like SciPy and NumPy and Twisted and so on, nor independent
implementations of the core language like PyPy and Jython.  So I
suspect that for most serious scientific computing you would need to
cite one or more third-pary projects as well, and perhaps an
implementation such as PyPy or Jython.

Jacqueline again:

 > Let's throw reproducibility out the window for now (<--- something
 > I never thought I would say), because that should be captured in
 > the code, not in the citations.
 > So, if we don't need the specific version of Python, then maybe
 > creating one citation is all we need.

Do you realize that `3 / 2` means different computations depending on
the version of Python?  And that `"a string"` produces different
objects with different duck-types depending on the version?

As far as handling versions, this would do, I think:

Python Core Developers [{release_year}].  Python: A general purpose
language for computing, with batteries included, version
{version_number}.  Python Software Foundation, Beaverton, OR.
Project URL: https://www.python.org/.

More information about the Python-Dev mailing list