"pyclbr" --- Python モジュールブラウザーサポート
************************************************

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

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

"pyclbr" モジュールは、Python で実装されたモジュール内で定義されている
関数、クラス、メソッドについて、限られた情報を提供します。 この情報で
モジュールブラウザーを実装できます。 モジュールをインポートせず Python
のソースコードから情報を抽出するため、信頼できないコードに対しても安全
に使えます。 ただしこの制限により、標準およびオプションの拡張モジュー
ルを含め、Python で実装されていないモジュールには使えません。

pyclbr.readmodule(module, path=None)

   モジュールレベルのクラス名をクラスの記述オブジェクトに対応付ける辞
   書を返します。 可能であれば、インポートされた基底クラスの記述オブジ
   ェクトも含まれます。 *module* 引数は読み込むモジュールの名前を表す
   文字列で、パッケージ内のモジュール名でもかまいません。 *path* を指
   定する場合、これはディレクトリパスのシーケンスで、モジュールのソー
   スコードを探すために使われる "sys.path" の前に追加されます。

   この関数は当初のインターフェースで、後方互換性のためだけに残されて
   います。 次の関数の結果を絞り込んだものを返します。

pyclbr.readmodule_ex(module, path=None)

   モジュール内で "def" 文または "class" 文によって定義されている各関
   数とクラスの記述オブジェクトを含む、辞書によるツリーを返します。 返
   される辞書は、モジュールレベルの関数名とクラス名をそれぞれの記述オ
   ブジェクトに対応付けます。 入れ子になったオブジェクトは、その親の
   "children" 辞書に格納されます。 "readmodule()" と同様に、*module*
   は読み込むモジュールの名前で、*path* は "sys.path" の前に追加されま
   す。 読み込むモジュールがパッケージの場合、返される辞書にはキー
   "'__path__'" があり、その値はパッケージの検索パスを含むリストです。

Added in version 3.7: 入れ子になった定義の記述オブジェクトが追加されま
した。 新しい "children" 属性を通じてアクセスできます。 各オブジェクト
には新しい "parent" 属性があります。

これらの関数が返す記述オブジェクトは、"Function" クラスと "Class" クラ
スのインスタンスです。 利用者がこれらのクラスのインスタンスを作成する
ことは想定していません。


Function オブジェクト
=====================

class pyclbr.Function

   "Function" クラスのインスタンスは、"def" 文で定義された関数を表しま
   す。 次の属性を持ちます。

   file

      関数が定義されているファイルの名前。

   module

      対象の関数を定義しているモジュールの名前。

   name

      関数の名前です。

   lineno

      ファイル内で定義が始まる行の番号。

   parent

      トップレベルの関数では "None"、入れ子になった関数では親オブジェ
      クト。

      Added in version 3.7.

   children

      名前を、入れ子になった関数とクラスの記述オブジェクトに対応付ける
      "辞書"。

      Added in version 3.7.

   is_async

      "async" を前に付けて定義された関数では "True"、それ以外では
      "False"。

      Added in version 3.10.


クラスオブジェクト
==================

class pyclbr.Class

   "Class" クラスのインスタンスは、"class" 文で定義されたクラスを表し
   ます。 "Function" と同じ属性に加えて、さらに 2 つの属性を持ちます。

   file

      クラスが定義されているファイルの名前。

   module

      対象のクラスを定義しているモジュールの名前。

   name

      クラスの名前です。

   lineno

      ファイル内で定義が始まる行の番号。

   parent

      トップレベルのクラスでは "None"、入れ子になったクラスでは親オブ
      ジェクト。

      Added in version 3.7.

   children

      名前を、入れ子になった関数とクラスの記述オブジェクトに対応付ける
      辞書。

      Added in version 3.7.

   super

      対象クラスの直接の基底クラスを表す "Class" オブジェクトのリスト
      。 スーパークラスとして名前が指定されていても "readmodule_ex()"
      が見つけられないクラスは、"Class" オブジェクトの代わりにクラス名
      の文字列として格納されます。

   methods

      メソッド名を行番号に対応付ける "辞書"。 新しい "children" 辞書か
      ら導出できますが、後方互換性のために残されています。
