Skip to content

Commit

Permalink
gh-129393: Make 'sys.platform' return "freebsd" only on FreeBSD witho…
Browse files Browse the repository at this point in the history
…ut major version
  • Loading branch information
michael-o committed Jan 28, 2025
1 parent 8e57877 commit 7cecc55
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 5 deletions.
15 changes: 10 additions & 5 deletions Doc/library/sys.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1422,6 +1422,7 @@ always available. Unless explicitly noted otherwise, all variables are read-only
AIX ``'aix'``
Android ``'android'``
Emscripten ``'emscripten'``
FreeBSD ``'freebsd'``
iOS ``'ios'``
Linux ``'linux'``
macOS ``'darwin'``
Expand All @@ -1432,12 +1433,12 @@ always available. Unless explicitly noted otherwise, all variables are read-only

On Unix systems not listed in the table, the value is the lowercased OS name
as returned by ``uname -s``, with the first part of the version as returned by
``uname -r`` appended, e.g. ``'sunos5'`` or ``'freebsd8'``, *at the time
when Python was built*. Unless you want to test for a specific system
version, it is therefore recommended to use the following idiom::
``uname -r`` appended, e.g. ``'sunos5'``, *at the time when Python was built*.
Unless you want to test for a specific system version, it is therefore
recommended to use the following idiom::

if sys.platform.startswith('freebsd'):
# FreeBSD-specific code here...
if sys.platform.startswith('sunos'):
# SunOS-specific code here...

.. versionchanged:: 3.3
On Linux, :data:`sys.platform` doesn't contain the major version anymore.
Expand All @@ -1451,6 +1452,10 @@ always available. Unless explicitly noted otherwise, all variables are read-only
On Android, :data:`sys.platform` now returns ``'android'`` rather than
``'linux'``.

.. versionchanged:: 3.14
On FreeBSD, :data:`sys.platform` doesn't contain the major version anymore.
It is always ``'freebsd'``, instead of ``'freebsd13'`` or ``'freebsd14'``.

.. seealso::

:data:`os.name` has a coarser granularity. :func:`os.uname` gives
Expand Down
3 changes: 3 additions & 0 deletions Doc/whatsnew/3.14.rst
Original file line number Diff line number Diff line change
Expand Up @@ -649,6 +649,9 @@ sys
which only exists in specialized builds of Python, may now return objects
from other interpreters than the one it's called in.

* On FreeBSD, :data:`sys.platform` doesn't contain the major version anymore.
It is always ``'freebsd'``, instead of ``'freebsd13'`` or ``'freebsd14'``.

sys.monitoring
--------------

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
On FreeBSD, :data:`sys.platform` doesn't contain the major version anymore.
It is always ``'freebsd'``, instead of ``'freebsd13'`` or ``'freebsd14'``.
1 change: 1 addition & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ then

case $MACHDEP in
aix*) MACHDEP="aix";;
freebsd*) MACHDEP="freebsd";;
linux-android*) MACHDEP="android";;
linux*) MACHDEP="linux";;
cygwin*) MACHDEP="cygwin";;
Expand Down

0 comments on commit 7cecc55

Please sign in to comment.