\section{\module{modulefinder} --- スクリプト中で使われているモジュールを
  検索する}
\sectionauthor{A.M. Kuchling}{amk@amk.ca}

\declaremodule{standard}{modulefinder}
\modulesynopsis{スクリプト中で使われているモジュールを検索します。}

\versionadded{2.3}

このモジュールでは、スクリプト中で import されているモジュールセットを
調べるために使える \class{ModuleFinder} クラスを提供しています。
\code{modulefinder.py} はまた、Python スクリプトのファイル名を引数に
指定してスクリプトとして実行し、 import されているモジュールの
レポートを出力させることもできます。

\begin{funcdesc}{AddPackagePath}{pkg_name, path}
\var{pkg_name} という名前のパッケージの在り処が\var{path} である
ことを記録します。
\end{funcdesc}

\begin{funcdesc}{ReplacePackage}{oldname, newname}
実際にはパッケージ内で\var{oldname} という名前になっているモジュール
を \var{newname} という名前で指定できるようにします。この関数の
主な用途は、\module{_xmlplus} パッケージが \module{xml} パッケージ
に置き換わっている場合の処理でしょう。
\end{funcdesc}

\begin{classdesc}{ModuleFinder}{\optional{path=None, debug=0, excludes=[], replace_paths=[]}}
このクラスでは\method{run_script()} および\method{report()} 
メソッドを提供しています。これらのメソッドは何らかのスクリプト中で
import されているモジュールの集合を調べます。
\var{path} はモジュールを検索する先のディレクトリ名からなるリストです。
\var{path} を指定しない場合、\code{sys.path} を使います。
\var{debug} にはデバッグレベルを設定します; 値を大きくすると、
実行している内容を表すデバッグメッセージを出力します。
\var{excludes} は検索から除外するモジュール名です。
\var{replace_paths} には、モジュールパス内で置き換えられるパスを
タプル\code{(\var{oldpath}, \var{newpath})} からなるリストで
指定します。
\end{classdesc}

\begin{methoddesc}[ModuleFinder]{report}{}
スクリプトで import しているモジュールと、そのパスからなるリストを列挙
したレポートを標準出力に出力します。モジュールを見つけられなかったり、
モジュールがないように見える場合にも報告します。
\end{methoddesc}

\begin{methoddesc}[ModuleFinder]{run_script}{pathname}
\var{pathname} に指定したファイルの内容を解析します。ファイルには
Python コードが入っていなければなりません。
\end{methoddesc}
 

