"platform" ---  実行中プラットフォームの固有情報を参照する
**********************************************************

**ソースコード:** Lib/platform.py

======================================================================

注釈:

  プラットフォーム毎にアルファベット順に並べています。Linuxについては
  Unixセクションを参照してください。


Cross platform
==============

platform.architecture(executable=sys.executable, bits='', linkage='')

   *executable* で指定した実行可能ファイル（省略時はPythonインタープリ
   タのバイナリ）の各種アーキテクチャ情報を調べます。

   戻り値はタプル "(bits, linkage)" で、アーキテクチャのビット数と実行
   可能ファイルのリンク形式を示します。どちらの値も文字列で返ります。

   値を決定できない場合はパラメータプリセットから与えられる値を返しま
   す。bits に "''" を与えた場合、サポートされているポインタサイズを知
   るために "sizeof(pointer)" (Python バージョン < 1.5.2 では
   "sizeof(long)") が使用されます。

   この関数は、システムの "file" コマンドを使用します。 "file" はほと
   んどのUnixプラットフォームと一部の非Unixプラットフォームで利用可能
   ですが、 "file" コマンドが利用できず、かつ *executable* が Pythonイ
   ンタープリタでない場合には適切なデフォルト値が返ります。

   注釈:

     macOS (とひょっとすると他のプラットフォーム) では、実行可能ファイ
     ルは複数のアーキテクチャを含んだユニバーサル形式かもしれません。
     現在のインタープリターが "64-bit" であるかどうかを調べるには、
     "sys.maxsize" の方が信頼できます:

        is_64bits = sys.maxsize > 2**32

platform.machine()

   "'AMD64'" のような、機種を返します。不明な場合は空文字列を返します
   。

   The output is platform-dependent and may differ in casing and
   naming conventions.

platform.node()

   コンピュータのネットワーク名を返します。ネットワーク名は完全修飾名
   とは限りません。不明な場合は空文字列を返します。

platform.platform(aliased=False, terse=False)

   実行中プラットフォームを識別する文字列を返します。この文字列には、
   有益な情報をできるだけ多く付加しています。

   戻り値は機械で処理しやすい形式ではなく、*人間にとって読みやすい* 形
   式となっています。異なったプラットフォームでは異なった戻り値となる
   ようになっています。

   *aliased* が真なら、システムの名称として一般的な名称ではなく、別名
   を使用して結果を返します。たとえば、SunOS は Solaris となります。こ
   の機能は "system_alias()" で実装されています。

   *terse* が真なら、プラットフォームを特定するために最低限必要な情報
   だけを返します。

   バージョン 3.8 で変更: macOSでは、 "mac_ver()" が空でないリリース文
   字列を返すとき、darwin のバージョンではなく macOS のバージョンを取
   得するために、この関数は "mac_ver()" を使うようになりました。

platform.processor()

   "'amdk6'" のような、（現実の）プロセッサ名を返します。

   不明な場合は空文字列を返します。NetBSDのようにこの情報を提供しない
   、または "machine()" と同じ値しか返さないプラットフォームも多く存在
   しますので、注意してください。

platform.python_build()

   Pythonのビルド番号と日付を、"(buildno, builddate)" のタプルで返しま
   す。

platform.python_compiler()

   Pythonをコンパイルする際に使用したコンパイラを示す文字列を返します
   。

platform.python_branch()

   Python実装のバージョン管理システム上のブランチを特定する文字列を返
   します。

platform.python_implementation()

   Python実装を指定する文字列を返します。戻り値は: 'CPython',
   'IronPython', 'Jython', 'PyPy' のいずれかです。

platform.python_revision()

   Python実装のバージョン管理システム上のリビジョンを特定する文字列を
   返します。

platform.python_version()

   Python のバージョンを、"'major.minor.patchlevel'" 形式の文字列で返
   します。

   "sys.version" と異なり、patchlevel（デフォルトでは0)も必ず含まれて
   います。

platform.python_version_tuple()

   Pythonのバージョンを、文字列のタプル "(major, minor, patchlevel)"
   で返します。

   "sys.version" と異なり、patchlevel（デフォルトでは "'0'")も必ず含ま
   れています。

platform.release()

   "'2.2.0'" や "'NT'" のような、システムのリリース情報を返します。不
   明な場合は空文字列を返します。

   On iOS and Android, this is the user-facing OS release. To obtain
   the Darwin or Linux kernel release, use "os.uname()".

platform.system()

   "'Linux'" 、 "'Darwin'" 、 "'Java'" 、 "'Windows'" のような、システ
   ム/OS 名を返します。不明な場合は空文字列を返します。

   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 "os.uname()".

platform.system_alias(system, release, version)

   マーケティング目的で使われる一般的な別名に変換して "(system,
   release, version)" を返します。混乱を避けるために、情報を並べなおす
   場合があります。

platform.version()

   "'#3 on degas'" のような、システムのリリース情報を返します。不明な
   場合は空文字列を返します。

platform.uname()

   極めて可搬性の高い uname インターフェースです。 "system", "node",
   "release", "version", "machine", "processor" の6つの属性を持った
   "namedtuple()" を返します。

   "processor" is resolved late, on demand.

   Note: the first two attribute names differ from the names presented
   by "os.uname()", where they are named "sysname" and "nodename".

   不明な項目は "''" となります。

   バージョン 3.3 で変更: 結果が タプル から "namedtuple()" へ変更され
   ました。

   バージョン 3.9 で変更: "processor" is resolved late instead of
   immediately.

platform.invalidate_caches()

   Clear out the internal cache of information, such as the "uname()".
   This is typically useful when the platform's "node()" is changed by
   an external process and one needs to retrieve the updated value.

   Added in version 3.14.


Java platform
=============

platform.java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', ''))

   Version interface for Jython.

   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 "''").

   バージョン 3.13 で非推奨、バージョン 3.15 で削除予定: It was
   largely untested, had a confusing API, and was only useful for
   Jython support.


Windows platform
================

platform.win32_ver(release='', version='', csd='', ptype='')

   Get additional version information from the Windows Registry and
   return a tuple "(release, version, csd, ptype)" referring to OS
   release, version number, 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).

   As a hint: *ptype* is "'Uniprocessor Free'" on single processor NT
   machines and "'Multiprocessor Free'" on multi processor machines.
   The "'Free'" refers to the OS version being free of debugging code.
   It could also state "'Checked'" which means the OS version uses
   debugging code, i.e. code that checks arguments, ranges, etc.

platform.win32_edition()

   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'".

   Added in version 3.8.

platform.win32_is_iot()

   "win32_edition()" によって返された Windows のエディションが IoT エ
   ディションの時 "True" を返します。

   Added in version 3.8.


macOS platform
==============

platform.mac_ver(release='', versioninfo=('', '', ''), machine='')

   macOS のバージョン情報を、タプル "(release, versioninfo, machine)"
   で返します。*versioninfo* は、タプル "(version, dev_stage,
   non_release_version)" です。

   不明な項目は "''" となります。タプルの要素は全て文字列です。


iOS platform
============

platform.ios_ver(system='', release='', model='', is_simulator=False)

   iOS のバージョン情報を取得し、次の属性付きで "namedtuple()" として
   返します。

   * "system" は OS 名です。 "'iOS'" または "'iPadOS'" となります。

   * "release" は、 iOS のバージョン番号の文字列です。 ("'17.2'" など)

   * "model" はデバイスモデルの識別子です。これは物理デバイスでは
     "'iPhone13,2'" 、シミュレーターでは "'iPhone'" のような文字列にな
     ります。

   * "is_simulator" は、アプリがシミュレーター上で実行されているのか、
     物理デバイス上で実行されているのかを示す真偽値です。

   決定不能な項目は、引数として指定されたデフォルトに設定されます。


Unix platforms
==============

platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)

   executableで指定したファイル（省略時はPythonインタープリタ）がリン
   クしているlibcバージョンの取得を試みます。戻り値は文字列のタプル
   "(lib, version)" で、不明な項目は引数で指定した値となります。

   この関数は、実行形式に追加されるシンボルの細かな違いによって、libc
   のバージョンを特定します。この違いは **gcc** でコンパイルされた実行
   可能ファイルでのみ有効だと思われます。

   *chunksize* にはファイルから情報を取得するために読み込むバイト数を
   指定します。


Linux platforms
===============

platform.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 and is available in most Linux distributions. A noticeable
   exception is Android and Android-based distributions.

   Raises "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.

   以下はプログラム例です:

      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

   Added in version 3.10.


Android platform
================

platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)

   Android のデバイス情報を取得し、次の属性付きで "namedtuple()" とし
   て返します。決定不能な値は、引数として指定されたデフォルトに設定さ
   れます。

   * "release" - Android バージョンの文字列 (""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 "sys.getandroidapilevel()".

   * "manufacturer" - Manufacturer name.

   * "model" - Model name – typically the marketing name or model
     number.

   * "device" - Device name – 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.

   Added in version 3.13.


コマンドラインでの使用
======================

"platform" can also be invoked directly using the "-m" switch of the
interpreter:

   python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]

以下のオプションが使用できます:

--terse

   Print terse information about the platform. This is equivalent to
   calling "platform.platform()" with the *terse* argument set to
   "True".

--nonaliased

   Print platform information without system/OS name aliasing. This is
   equivalent to calling "platform.platform()" with the *aliased*
   argument set to "True".

You can also pass one or more positional arguments ("terse",
"nonaliased") to explicitly control the output format. These behave
similarly to their corresponding options.
