| 
									
										
										
										
											2024-05-08 15:34:40 -04:00
										 |  |  |  | :mod:`!platform` ---  Access to underlying platform's identifying data
 | 
					
						
							|  |  |  |  | ======================================================================
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .. module:: platform
 | 
					
						
							|  |  |  |  |    :synopsis: Retrieves as much platform identifying data as possible.
 | 
					
						
							| 
									
										
										
										
											2016-06-11 15:02:54 -04:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-11 16:51:50 +02:00
										 |  |  |  | .. moduleauthor:: Marc-André Lemburg <mal@egenix.com>
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | .. sectionauthor:: Bjorn Pettersen <bpettersen@corp.fairisaac.com>
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-27 20:38:46 +00:00
										 |  |  |  | **Source code:** :source:`Lib/platform.py`
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | --------------
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .. note::
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Specific platforms listed alphabetically, with Linux included in the Unix
 | 
					
						
							|  |  |  |  |    section.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Cross Platform
 | 
					
						
							|  |  |  |  | --------------
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: architecture(executable=sys.executable, bits='', linkage='')
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Queries the given executable (defaults to the Python interpreter binary) for
 | 
					
						
							|  |  |  |  |    various architecture information.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a tuple ``(bits, linkage)`` which contain information about the bit
 | 
					
						
							|  |  |  |  |    architecture and the linkage format used for the executable. Both values are
 | 
					
						
							|  |  |  |  |    returned as strings.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Values that cannot be determined are returned as given by the parameter presets.
 | 
					
						
							| 
									
										
										
										
											2012-08-11 21:14:08 +03:00
										 |  |  |  |    If bits is given as ``''``, the ``sizeof(pointer)`` (or
 | 
					
						
							|  |  |  |  |    ``sizeof(long)`` on Python version < 1.5.2) is used as indicator for the
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  |    supported pointer size.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    The function relies on the system's :file:`file` command to do the actual work.
 | 
					
						
							|  |  |  |  |    This is available on most if not all Unix  platforms and some non-Unix platforms
 | 
					
						
							|  |  |  |  |    and then only if the executable points to the Python interpreter.  Reasonable
 | 
					
						
							|  |  |  |  |    defaults are used when the above needs are not met.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-12-21 18:49:01 +00:00
										 |  |  |  |    .. note::
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-02 05:39:56 -04:00
										 |  |  |  |       On macOS (and perhaps other platforms), executable files may be
 | 
					
						
							| 
									
										
										
										
											2010-12-21 18:49:01 +00:00
										 |  |  |  |       universal files containing multiple architectures.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       To get at the "64-bitness" of the current interpreter, it is more
 | 
					
						
							| 
									
										
										
										
											2023-07-21 12:34:30 +03:00
										 |  |  |  |       reliable to query the :data:`sys.maxsize` attribute::
 | 
					
						
							| 
									
										
										
										
											2010-12-21 18:49:01 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |          is_64bits = sys.maxsize > 2**32
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: machine()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-09 08:55:06 -05:00
										 |  |  |  |    Returns the machine type, e.g. ``'AMD64'``. An empty string is returned if the
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  |    value cannot be determined.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: node()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns the computer's network name (may not be fully qualified!). An empty
 | 
					
						
							|  |  |  |  |    string is returned if the value cannot be determined.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-27 03:10:34 +01:00
										 |  |  |  | .. function:: platform(aliased=False, terse=False)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a single string identifying the underlying platform with as much useful
 | 
					
						
							|  |  |  |  |    information as possible.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    The output is intended to be *human readable* rather than machine parseable. It
 | 
					
						
							|  |  |  |  |    may look different on different platforms and this is intended.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    If *aliased* is true, the function will use aliases for various platforms that
 | 
					
						
							|  |  |  |  |    report system names which differ from their common names, for example SunOS will
 | 
					
						
							|  |  |  |  |    be reported as Solaris.  The :func:`system_alias` function is used to implement
 | 
					
						
							|  |  |  |  |    this.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Setting *terse* to true causes the function to return only the absolute minimum
 | 
					
						
							|  |  |  |  |    information needed to identify the platform.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-05 22:41:52 +01:00
										 |  |  |  |    .. versionchanged:: 3.8
 | 
					
						
							|  |  |  |  |       On macOS, the function now uses :func:`mac_ver`, if it returns a
 | 
					
						
							|  |  |  |  |       non-empty release string, to get the macOS version rather than the darwin
 | 
					
						
							|  |  |  |  |       version.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: processor()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns the (real) processor name, e.g. ``'amdk6'``.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    An empty string is returned if the value cannot be determined. Note that many
 | 
					
						
							|  |  |  |  |    platforms do not provide this information or simply return the same value as for
 | 
					
						
							|  |  |  |  |    :func:`machine`.  NetBSD does this.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: python_build()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a tuple ``(buildno, builddate)`` stating the Python build number and
 | 
					
						
							|  |  |  |  |    date as strings.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: python_compiler()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a string identifying the compiler used for compiling Python.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: python_branch()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a string identifying the Python implementation SCM branch.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: python_implementation()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a string identifying the Python implementation. Possible return values
 | 
					
						
							| 
									
										
										
										
											2011-05-03 20:41:48 +03:00
										 |  |  |  |    are: 'CPython', 'IronPython', 'Jython', 'PyPy'.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: python_revision()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a string identifying the Python implementation SCM revision.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: python_version()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-10-10 10:36:22 +00:00
										 |  |  |  |    Returns the Python version as string ``'major.minor.patchlevel'``.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    Note that unlike the Python ``sys.version``, the returned value will always
 | 
					
						
							|  |  |  |  |    include the patchlevel (it defaults to 0).
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: python_version_tuple()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns the Python version as tuple ``(major, minor, patchlevel)`` of strings.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Note that unlike the Python ``sys.version``, the returned value will always
 | 
					
						
							|  |  |  |  |    include the patchlevel (it defaults to ``'0'``).
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: release()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-20 09:23:40 -07:00
										 |  |  |  |    Returns the system's release, e.g. ``'2.2.0'`` or ``'NT'``. An empty string is
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  |    returned if the value cannot be determined.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: system()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-21 00:22:56 +01:00
										 |  |  |  |    Returns the system/OS name, such as ``'Linux'``, ``'Darwin'``, ``'Java'``,
 | 
					
						
							|  |  |  |  |    ``'Windows'``. An empty string is returned if the value cannot be determined.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-28 15:59:33 +08:00
										 |  |  |  |    On iOS and Android, this returns the user-facing OS name (i.e, ``'iOS``,
 | 
					
						
							|  |  |  |  |    ``'iPadOS'`` or ``'Android'``). To obtain the kernel name (``'Darwin'`` or
 | 
					
						
							|  |  |  |  |    ``'Linux'``), use :func:`os.uname()`.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: system_alias(system, release, version)
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns ``(system, release, version)`` aliased to common marketing names used
 | 
					
						
							|  |  |  |  |    for some systems.  It also does some reordering of the information in some cases
 | 
					
						
							|  |  |  |  |    where it would otherwise cause confusion.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: version()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns the system's release version, e.g. ``'#3 on degas'``. An empty string is
 | 
					
						
							|  |  |  |  |    returned if the value cannot be determined.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-28 15:59:33 +08:00
										 |  |  |  |    On iOS and Android, this is the user-facing OS version. To obtain the
 | 
					
						
							|  |  |  |  |    Darwin or Linux kernel version, use :func:`os.uname()`.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: uname()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-24 14:30:41 -07:00
										 |  |  |  |    Fairly portable uname interface. Returns a :func:`~collections.namedtuple`
 | 
					
						
							|  |  |  |  |    containing six attributes: :attr:`system`, :attr:`node`, :attr:`release`,
 | 
					
						
							|  |  |  |  |    :attr:`version`, :attr:`machine`, and :attr:`processor`.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-30 11:53:58 -04:00
										 |  |  |  |    :attr:`processor` is resolved late, on demand.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Note: the first two attribute names differ from the names presented by
 | 
					
						
							|  |  |  |  |    :func:`os.uname`, where they are named :attr:`sysname` and
 | 
					
						
							|  |  |  |  |    :attr:`nodename`.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    Entries which cannot be determined are set to ``''``.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-06-24 14:30:41 -07:00
										 |  |  |  |    .. versionchanged:: 3.3
 | 
					
						
							| 
									
										
										
										
											2022-04-20 09:23:40 -07:00
										 |  |  |  |       Result changed from a tuple to a :func:`~collections.namedtuple`.
 | 
					
						
							| 
									
										
										
										
											2012-06-24 14:30:41 -07:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-10-30 11:53:58 -04:00
										 |  |  |  |    .. versionchanged:: 3.9
 | 
					
						
							|  |  |  |  |       :attr:`processor` is resolved late instead of immediately.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Java Platform
 | 
					
						
							|  |  |  |  | -------------
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: java_ver(release='', vendor='', vminfo=('','',''), osinfo=('','',''))
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 73190,73213,73257-73258,73260,73275,73294 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r73190 | georg.brandl | 2009-06-04 01:23:45 +0200 (Do, 04 Jun 2009) | 2 lines
  Avoid PendingDeprecationWarnings emitted by deprecated unittest methods.
........
  r73213 | georg.brandl | 2009-06-04 12:15:57 +0200 (Do, 04 Jun 2009) | 1 line
  #5967: note that the C slicing APIs do not support negative indices.
........
  r73257 | georg.brandl | 2009-06-06 19:50:05 +0200 (Sa, 06 Jun 2009) | 1 line
  #6211: elaborate a bit on ways to call the function.
........
  r73258 | georg.brandl | 2009-06-06 19:51:31 +0200 (Sa, 06 Jun 2009) | 1 line
  #6204: use a real reference instead of "see later".
........
  r73260 | georg.brandl | 2009-06-06 20:21:58 +0200 (Sa, 06 Jun 2009) | 1 line
  #6224: s/JPython/Jython/, and remove one link to a module nine years old.
........
  r73275 | georg.brandl | 2009-06-07 22:37:52 +0200 (So, 07 Jun 2009) | 1 line
  Add Ezio.
........
  r73294 | georg.brandl | 2009-06-08 15:34:52 +0200 (Mo, 08 Jun 2009) | 1 line
  #6194: O_SHLOCK/O_EXLOCK are not really more platform independent than lockf().
........
											
										 
											2009-06-08 13:41:29 +00:00
										 |  |  |  |    Version interface for Jython.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    Returns a tuple ``(release, vendor, vminfo, osinfo)`` with *vminfo* being a
 | 
					
						
							|  |  |  |  |    tuple ``(vm_name, vm_release, vm_vendor)`` and *osinfo* being a tuple
 | 
					
						
							|  |  |  |  |    ``(os_name, os_version, os_arch)``. Values which cannot be determined are set to
 | 
					
						
							|  |  |  |  |    the defaults given as parameters (which all default to ``''``).
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-08 11:14:17 +03:00
										 |  |  |  |    .. deprecated-removed:: 3.13 3.15
 | 
					
						
							|  |  |  |  |       It was largely untested, had a confusing API,
 | 
					
						
							|  |  |  |  |       and was only useful for Jython support.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Windows Platform
 | 
					
						
							|  |  |  |  | ----------------
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: win32_ver(release='', version='', csd='', ptype='')
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Get additional version information from the Windows Registry and return a tuple
 | 
					
						
							| 
									
										
										
										
											2013-10-06 19:19:18 +02:00
										 |  |  |  |    ``(release, version, csd, ptype)`` referring to OS release, version number,
 | 
					
						
							| 
									
										
										
										
											2022-04-20 09:23:40 -07:00
										 |  |  |  |    CSD level (service pack) and OS type (multi/single processor). Values which
 | 
					
						
							|  |  |  |  |    cannot be determined are set to the defaults given as parameters (which all
 | 
					
						
							|  |  |  |  |    default to an empty string).
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    As a hint: *ptype* is ``'Uniprocessor Free'`` on single processor NT machines
 | 
					
						
							| 
									
										
										
										
											2024-04-11 17:13:53 +03:00
										 |  |  |  |    and ``'Multiprocessor Free'`` on multi processor machines. The ``'Free'`` refers
 | 
					
						
							|  |  |  |  |    to the OS version being free of debugging code. It could also state ``'Checked'``
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  |    which means the OS version uses debugging code, i.e. code that checks arguments,
 | 
					
						
							|  |  |  |  |    ranges, etc.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-25 11:36:45 -07:00
										 |  |  |  | .. function:: win32_edition()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-20 09:23:40 -07:00
										 |  |  |  |    Returns a string representing the current Windows edition, or ``None`` if the
 | 
					
						
							|  |  |  |  |    value cannot be determined.  Possible values include but are not limited to
 | 
					
						
							|  |  |  |  |    ``'Enterprise'``, ``'IoTUAP'``, ``'ServerStandard'``, and ``'nanoserver'``.
 | 
					
						
							| 
									
										
										
										
											2019-04-25 11:36:45 -07:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    .. versionadded:: 3.8
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: win32_is_iot()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-12 16:57:03 +02:00
										 |  |  |  |    Return ``True`` if the Windows edition returned by :func:`win32_edition`
 | 
					
						
							|  |  |  |  |    is recognized as an IoT edition.
 | 
					
						
							| 
									
										
										
										
											2019-04-25 11:36:45 -07:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    .. versionadded:: 3.8
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 20:33:36 +03:00
										 |  |  |  | macOS Platform
 | 
					
						
							|  |  |  |  | --------------
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: mac_ver(release='', versioninfo=('','',''), machine='')
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-22 20:33:36 +03:00
										 |  |  |  |    Get macOS version information and return it as tuple ``(release, versioninfo,
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  |    machine)`` with *versioninfo* being a tuple ``(version, dev_stage,
 | 
					
						
							|  |  |  |  |    non_release_version)``.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Entries which cannot be determined are set to ``''``.  All tuple entries are
 | 
					
						
							|  |  |  |  |    strings.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-28 15:59:33 +08:00
										 |  |  |  | iOS Platform
 | 
					
						
							|  |  |  |  | ------------
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: ios_ver(system='', release='', model='', is_simulator=False)
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Get iOS version information and return it as a
 | 
					
						
							|  |  |  |  |    :func:`~collections.namedtuple` with the following attributes:
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    * ``system`` is the OS name; either ``'iOS'`` or ``'iPadOS'``.
 | 
					
						
							|  |  |  |  |    * ``release`` is the iOS version number as a string (e.g., ``'17.2'``).
 | 
					
						
							|  |  |  |  |    * ``model`` is the device model identifier; this will be a string like
 | 
					
						
							|  |  |  |  |      ``'iPhone13,2'`` for a physical device, or ``'iPhone'`` on a simulator.
 | 
					
						
							|  |  |  |  |    * ``is_simulator`` is a boolean describing if the app is running on a
 | 
					
						
							|  |  |  |  |      simulator or a physical device.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Entries which cannot be determined are set to the defaults given as
 | 
					
						
							|  |  |  |  |    parameters.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Unix Platforms
 | 
					
						
							|  |  |  |  | --------------
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-09 11:47:45 +03:00
										 |  |  |  | .. function:: libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |    Tries to determine the libc version against which the file executable (defaults
 | 
					
						
							|  |  |  |  |    to the Python interpreter) is linked.  Returns a tuple of strings ``(lib,
 | 
					
						
							|  |  |  |  |    version)`` which default to the given parameters in case the lookup fails.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Note that this function has intimate knowledge of how different libc versions
 | 
					
						
							| 
									
										
											  
											
												Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900-60931,60933-60958 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
  r60901 | eric.smith | 2008-02-19 14:21:56 +0100 (Tue, 19 Feb 2008) | 1 line
  Added PEP 3101.
........
  r60907 | georg.brandl | 2008-02-20 20:12:36 +0100 (Wed, 20 Feb 2008) | 2 lines
  Fixes contributed by Ori Avtalion.
........
  r60909 | eric.smith | 2008-02-21 00:34:22 +0100 (Thu, 21 Feb 2008) | 1 line
  Trim leading zeros from a floating point exponent, per C99.  See issue 1600.  As far as I know, this only affects Windows.  Add float type 'n' to PyOS_ascii_formatd (see PEP 3101 for 'n' description).
........
  r60910 | eric.smith | 2008-02-21 00:39:28 +0100 (Thu, 21 Feb 2008) | 1 line
  Now that PyOS_ascii_formatd supports the 'n' format, simplify the float formatting code to just call it.
........
  r60918 | andrew.kuchling | 2008-02-21 15:23:38 +0100 (Thu, 21 Feb 2008) | 2 lines
  Close manifest file.
  This change doesn't make any difference to CPython, but is a necessary fix for Jython.
........
  r60921 | guido.van.rossum | 2008-02-21 18:46:16 +0100 (Thu, 21 Feb 2008) | 2 lines
  Remove news about float repr() -- issue 1580 is still in limbo.
........
  r60923 | guido.van.rossum | 2008-02-21 19:18:37 +0100 (Thu, 21 Feb 2008) | 5 lines
  Removed uses of dict.has_key() from distutils, and uses of
  callable() from copy_reg.py, so the interpreter now starts up
  without warnings when '-3' is given.  More work like this needs to
  be done in the rest of the stdlib.
........
  r60924 | thomas.heller | 2008-02-21 19:28:48 +0100 (Thu, 21 Feb 2008) | 4 lines
  configure.ac: Remove the configure check for _Bool, it is already done in the
  top-level Python configure script.
  configure, fficonfig.h.in: regenerated.
........
  r60925 | thomas.heller | 2008-02-21 19:52:20 +0100 (Thu, 21 Feb 2008) | 3 lines
  Replace 'has_key()' with 'in'.
  Replace 'raise Error, stuff' with 'raise Error(stuff)'.
........
  r60927 | raymond.hettinger | 2008-02-21 20:24:53 +0100 (Thu, 21 Feb 2008) | 1 line
  Update more instances of has_key().
........
  r60928 | guido.van.rossum | 2008-02-21 20:46:35 +0100 (Thu, 21 Feb 2008) | 3 lines
  Fix a few typos and layout glitches (more work is needed).
  Move 2.5 news to Misc/HISTORY.
........
  r60936 | georg.brandl | 2008-02-21 21:33:38 +0100 (Thu, 21 Feb 2008) | 2 lines
  #2079: typo in userdict docs.
........
  r60938 | georg.brandl | 2008-02-21 21:38:13 +0100 (Thu, 21 Feb 2008) | 2 lines
  Part of #2154: minimal syntax fixes in doc example snippets.
........
  r60942 | raymond.hettinger | 2008-02-22 04:16:42 +0100 (Fri, 22 Feb 2008) | 1 line
  First draft for itertools.product().  Docs and other updates forthcoming.
........
  r60955 | nick.coghlan | 2008-02-22 11:54:06 +0100 (Fri, 22 Feb 2008) | 1 line
  Try to make command line error messages from runpy easier to understand (and suppress traceback cruft from the implicitly invoked runpy machinery)
........
  r60956 | georg.brandl | 2008-02-22 13:31:45 +0100 (Fri, 22 Feb 2008) | 2 lines
  A lot more typo fixes by Ori Avtalion.
........
  r60957 | georg.brandl | 2008-02-22 13:56:34 +0100 (Fri, 22 Feb 2008) | 2 lines
  Don't reference pyshell.
........
  r60958 | georg.brandl | 2008-02-22 13:57:05 +0100 (Fri, 22 Feb 2008) | 2 lines
  Another fix.
........
											
										 
											2008-02-22 16:37:40 +00:00
										 |  |  |  |    add symbols to the executable is probably only usable for executables compiled
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |  |    using :program:`gcc`.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    The file is read and scanned in chunks of *chunksize* bytes.
 | 
					
						
							| 
									
										
										
										
											2020-11-30 22:34:45 +01:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Linux Platforms
 | 
					
						
							|  |  |  |  | ---------------
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: freedesktop_os_release()
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Get operating system identification from ``os-release`` file and return
 | 
					
						
							|  |  |  |  |    it as a dict. The ``os-release`` file is a `freedesktop.org standard
 | 
					
						
							|  |  |  |  |    <https://www.freedesktop.org/software/systemd/man/os-release.html>`_ and
 | 
					
						
							|  |  |  |  |    is available in most Linux distributions. A noticeable exception is
 | 
					
						
							|  |  |  |  |    Android and Android-based distributions.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Raises :exc:`OSError` or subclass when neither ``/etc/os-release`` nor
 | 
					
						
							|  |  |  |  |    ``/usr/lib/os-release`` can be read.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    On success, the function returns a dictionary where keys and values are
 | 
					
						
							|  |  |  |  |    strings. Values have their special characters like ``"`` and ``$``
 | 
					
						
							|  |  |  |  |    unquoted. The fields ``NAME``, ``ID``, and ``PRETTY_NAME`` are always
 | 
					
						
							|  |  |  |  |    defined according to the standard. All other fields are optional. Vendors
 | 
					
						
							|  |  |  |  |    may include additional fields.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Note that fields like ``NAME``, ``VERSION``, and ``VARIANT`` are strings
 | 
					
						
							|  |  |  |  |    suitable for presentation to users. Programs should use fields like
 | 
					
						
							|  |  |  |  |    ``ID``, ``ID_LIKE``, ``VERSION_ID``, or ``VARIANT_ID`` to identify
 | 
					
						
							|  |  |  |  |    Linux distributions.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Example::
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |       def get_like_distro():
 | 
					
						
							|  |  |  |  |           info = platform.freedesktop_os_release()
 | 
					
						
							|  |  |  |  |           ids = [info["ID"]]
 | 
					
						
							|  |  |  |  |           if "ID_LIKE" in info:
 | 
					
						
							|  |  |  |  |               # ids are space separated and ordered by precedence
 | 
					
						
							|  |  |  |  |               ids.extend(info["ID_LIKE"].split())
 | 
					
						
							|  |  |  |  |           return ids
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-12-17 14:25:55 -03:00
										 |  |  |  |    .. versionadded:: 3.10
 | 
					
						
							| 
									
										
										
										
											2024-03-27 16:53:27 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Android Platform
 | 
					
						
							|  |  |  |  | ----------------
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .. function:: android_ver(release="", api_level=0, manufacturer="", \
 | 
					
						
							|  |  |  |  |                           model="", device="", is_emulator=False)
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Get Android device information. Returns a :func:`~collections.namedtuple`
 | 
					
						
							|  |  |  |  |    with the following attributes. Values which cannot be determined are set to
 | 
					
						
							|  |  |  |  |    the defaults given as parameters.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    * ``release`` - Android version, as a string (e.g. ``"14"``).
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    * ``api_level`` - API level of the running device, as an integer (e.g. ``34``
 | 
					
						
							|  |  |  |  |      for Android 14). To get the API level which Python was built against, see
 | 
					
						
							|  |  |  |  |      :func:`sys.getandroidapilevel`.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    * ``manufacturer`` - `Manufacturer name
 | 
					
						
							|  |  |  |  |      <https://developer.android.com/reference/android/os/Build#MANUFACTURER>`__.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    * ``model`` - `Model name
 | 
					
						
							|  |  |  |  |      <https://developer.android.com/reference/android/os/Build#MODEL>`__ –
 | 
					
						
							|  |  |  |  |      typically the marketing name or model number.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    * ``device`` - `Device name
 | 
					
						
							|  |  |  |  |      <https://developer.android.com/reference/android/os/Build#DEVICE>`__ –
 | 
					
						
							|  |  |  |  |      typically the model number or a codename.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    * ``is_emulator`` - ``True`` if the device is an emulator; ``False`` if it's
 | 
					
						
							|  |  |  |  |      a physical device.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    Google maintains a `list of known model and device names
 | 
					
						
							|  |  |  |  |    <https://storage.googleapis.com/play_public/supported_devices.html>`__.
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |    .. versionadded:: 3.13
 |