\section{\module{platform} --- 
   実行中プラットフォームの固有情報を参照する}

\declaremodule{standard}{platform}
\modulesynopsis{実行中プラットフォームからできるだけ多くの固有情報を取得する}
\moduleauthor{Marc-Andre Lemburg}{mal@egenix.com}
\sectionauthor{Bjorn Pettersen}{bpettersen@corp.fairisaac.com}

\versionadded{2.3}

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

\subsection{クロス プラットフォーム}

\begin{funcdesc}{architecture}{executable=sys.executable, bits='', linkage=''}
  \var{executable}で指定した実行可能ファイル（省略時はPythonインタープリ
  タのバイナリ）の各種アーキテクチャ情報を調べます。
  
  戻り値はタプル\code{(bits, linkage)}で、アーキテクチャのビット数と実行
  可能ファイルのリンク形式を示します。どちらの値も文字列で返ります。
  
  値が不明な場合は、パラメータで指定した値が返ります。\var{bits}を
  \code{''}と指定した場合、ビット数として\cfunction{sizeof(pointer)}が返
  ります。（Pythonのバージョンが1.5.2以下の場合は、サポートされているポ
  インタサイズとして\cfunction{sizeof(long)}を使用します。）

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

\begin{funcdesc}{machine}{}
  \code{'i386'}のような、機種を返します。不明な場合は空文字列を返します。
\end{funcdesc}

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

\begin{funcdesc}{platform}{aliased=0, terse=0}
  実行中プラットフォームを識別する文字列を返します。この文字列には、有益
  な情報をできるだけ多く付加しています。
  
  戻り値は機械で処理しやすい形式ではなく、\emph{人間にとって読みやすい}
  形式となっています。異なったプラットフォームでは異なった戻り値となるよ
  うになっています。

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

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

\begin{funcdesc}{processor}{}
  \code{'amdk6'}のような、（現実の）プロセッサ名を返します。
  
  不明な場合は空文字列を返します。NetBSDのようにこの情報を提供しない、ま
  たは\function{machine()}と同じ値しか返さないプラットフォームも多く存在
  しますので、注意してください。
\end{funcdesc}

\begin{funcdesc}{python_build}{}
  Pythonのビルド番号と日付を、\code{(\var{buildno}, \var{builddate})}の
  タプルで返します。
  
\end{funcdesc}

\begin{funcdesc}{python_compiler}{}
  Pythonをコンパイルする際に使用したコンパイラを示す文字列を返します。
\end{funcdesc}

\begin{funcdesc}{python_version}{}
  Pythonのバージョンを、\code{'major.minor.patchlevel'}形式の文字列で返
  します。
  
  \code{sys.version}と異なり、patchlevel（デフォルトでは0)も必ず含まれて
  います。
\end{funcdesc}

\begin{funcdesc}{python_version_tuple}{}
  Pythonのバージョンを、文字列のタプル \code{(\var{major}, \var{minor},
  \var{patchlevel})}  で返します。
  
  \code{sys.version}と異なり、patchlevel（デフォルトでは\code{0})も必ず
  含まれています。
\end{funcdesc}

\begin{funcdesc}{release}{}
  \code{'2.2.0'} や \code{'NT'} のような、システムのリリース情報を返しま
  す。不明な場合は空文字列を返します。
\end{funcdesc}

\begin{funcdesc}{system}{}
  \code{'Linux'}, \code{'Windows'}, \code{'Java'} のような、システム/OS
  名を返します。不明な場合は空文字列を返します。
\end{funcdesc}

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

\begin{funcdesc}{version}{}
  \code{'\#3 on degas'}のような、システムのリリース情報を返します。不明
  な場合は空文字列を返します。
\end{funcdesc}

\begin{funcdesc}{uname}{}
  非常に可搬性の高い uname インターフェースで、実行中プラットフォームを
  示す情報を、文字列のタプル\code{(\var{system}, \var{node},
  \var{release}, \var{version}, \var{machine}, \var{processor})} で返し
  ます。
  
  \function{os.uname()}と異なり、複数のプロセッサ名が候補としてタプルに
  追加される場合があります。
  
  不明な項目は \code{''}となります。
\end{funcdesc}


\subsection{Java プラットフォーム}

\begin{funcdesc}{java_ver}{release='', vendor='', vminfo=('','',''),
                           osinfo=('','','')}
  Jython用のバージョンインターフェースで、タプル\code{(\var{release},
  \var{vendor}, \var{vminfo}, \var{osinfo})} を返します。\var{vminfo}は
  タプル\code{(\var{vm_name}, \var{vm_release}, \var{vm_vendor})}、
  \var{osinfo}はタプル\code{(\var{os_name}, \var{os_version},
  \var{os_arch})}です。不明な項目は引数で指定した値（デフォルトは
  \code{''}）となります。
\end{funcdesc}


\subsection{Windows プラットフォーム}

\begin{funcdesc}{win32_ver}{release='', version='', csd='', ptype=''}
  Windowsのレジストリからバージョン情報を取得し、バージョン番号/CSDレベ
  ル/OSタイプ（シングルプロセッサ又はマルチプロセッサ）をタプル
  \code{(\var{version}, \var{csd}, \var{ptype})}で返します。
  
  参考：\var{ptype}はシングルプロセッサのNT上では
  \code{'Uniprocessor Free'}、マルチプロセッサでは
  \code{'Multiprocessor Free'}となります。\emph{'Free'} がついている場合
  はデバッグ用のコードが含まれていないことを示し、\emph{'Checked'}がつい
  ていれば引数や範囲のチェックなどのデバッグ用コードが含まれていることを
  示します。

  \begin{notice}[note]
    この関数は、Mark Hammondの\module{win32all}がインストールされたWin32
    互換プラットフォームでのみ利用可能です。
  \end{notice}
\end{funcdesc}

\subsubsection{Win95/98 固有}

\begin{funcdesc}{popen}{cmd, mode='r', bufsize=None}
  可搬性の高い \function{popen()} インターフェースで、可能なら
  \function{win32pipe.popen()}を使用します。\function{win32pipe.popen()}
  はWindows NTでは利用可能ですが、Windows 9xではハングしてしまいます。

  % This KnowledgeBase article appears to be missing...
  %See also \ulink{MS KnowledgeBase article Q150956}{}.
\end{funcdesc}


\subsection{Mac OS プラットフォーム}

\begin{funcdesc}{mac_ver}{release='', versioninfo=('','',''), machine=''}
  Mac OSのバージョン情報を、タプル\code{(\var{release},
  \var{versioninfo}, \var{machine})}で返します。\var{versioninfo} は、タ
  プル\code{(\var{version}, \var{dev_stage}, \var{non_release_version})}
  です。
  
  不明な項目は\code{''}となります。タプルの要素は全て文字列です。

  この関数で使用している\cfunction{gestalt()} API については、
  \url{http://www.rgaros.nl/gestalt/}を参照してください。
  
\end{funcdesc}


\subsection{\UNIX{} プラットフォーム}

\begin{funcdesc}{dist}{distname='', version='', id='',
                       supported_dists=('SuSE','debian','redhat','mandrake')}
  OSディストリビューション名の取得を試みます。戻り値はタプル
  \code{(\var{distname}, \var{version}, \var{id})}で、不明な項目は引数で
  指定した値となります。
\end{funcdesc}


\begin{funcdesc}{libc_ver}{executable=sys.executable, lib='',
                           version='', chunksize=2048}
  executableで指定したファイル（省略時はPythonインタープリタ）がリンクし
  ているlibcバージョンの取得を試みます。戻り値は文字列のタプル
  \code{(\var{lib}, \var{version})}で、不明な項目は引数で指定した値とな
  ります。
  
  この関数は、実行形式に追加されるシンボルの細かな違いによって、libcの
  バージョンを特定します。この違いは\program{gcc}でコンパイルされた実行
  可能ファイルでのみ有効だと思われます。
  
  \var{chunksize}にはファイルから情報を取得するために読み込むバイト数を
  指定します。
\end{funcdesc}


