怠惰な&自己破壊的なオブジェクト(xonsh.lazyasd)

モジュールの読み込みを高速化するための遅延型および自己破壊型のコンテナ。

クラスxonsh.lazyasd.BackgroundModuleLoader(名前、パッケージ、置換、* args、** kwargs )[ソース]

バックグラウンドでモジュールをロードするスレッド。

run()[ソース]

スレッドのアクティビティを表すメソッド。

サブクラスでこのメソッドをオーバーライドできます。標準のrun()メソッドは、オブジェクトのコンストラクタに渡された呼び出し可能オブジェクトを、argsおよびkwargs引数からそれぞれ取得されたシーケンシャルおよびキーワード引数を持つtarget引数(存在する場合)として呼び出します。

クラスxonsh.lazyasd.BackgroundModuleProxy(modname )[ソース]

バックグラウンドでロードされたモジュールのプロキシオブジェクト。モジュールがロードされるまで属性のアクセスをブロックします。

class xonsh.lazyasd.LazyBool(load、ctx、name )[ソース]

最初に尋ねられたときにlazilyブール値を計算するオブジェクトのようなブール値。ロードされると、この結果は指定されたコンテキスト(通常はコールサイトのグローバル)に置き換えられます。

たとえば、実際に使用されるまで複合ブールを防ぐことができます。

ALIVE = LazyDict(lambda: not DEAD, globals(), 'ALIVE')
パラメーター:
load : 引数のない関数

実際のブール値評価を実行するローダー関数。

ctx : マッピング

LazyBoolインスタンスを完全にロードされたマッピングに置き換えるためのコンテキスト。

名前 : str

ロードされたマッピングを与えるためにコンテキスト内の名前。これは 、割り当てのLHS上の名前でなければなりません。

クラスxonsh.lazyasd.LazyDict(ローダー、ctx、名前)[ソース]

辞書のようなオブジェクトは、キーローダー関数のペアの最初のdictからその値を遅延ロードします。各キーは、その値が最初にアクセスされるときにロードされます。完全にロードされると、このオブジェクトは指定されたコンテキスト(通常は呼び出しサイトのグローバル)を指定された名前で置き換えます。

たとえば、実際に使用されるまで、一連の正規表現のコンパイルを防ぐことができます。

RES = LazyDict({
        'dot': lambda: re.compile('.'),
        'all': lambda: re.compile('.*'),
        'two': lambda: re.compile('..'),
        }, globals(), 'RES')
パラメーター:
ローダー : 引数のない関数へのキーのマッピング

アクセス時に実際の値の構築を行うローダー関数のマッピング。

ctx : マッピング

LazyDictインスタンスを完全にロードされたマッピングで置き換えるためのコンテキスト。

名前 : str

ロードされたマッピングを与えるためにコンテキスト内の名前。これは 、割り当てのLHS上の名前でなければなりません。

class xonsh.lazyasd.LazyObject(load、ctx、name )[ソース]

最初に属性にアクセスするときに、load関数を介してオブジェクトを遅延ロードします。ロードされると、指定されたコンテキスト(通常はコールサイトのグローバル)が指定された名前で置き換えられます。

たとえば、実際に使用されるまで、正規表現のコンパイルを防ぐことができます。

DOT = LazyObject((lambda: re.compile('.')), globals(), 'DOT')
パラメーター:
load : 引数のない関数

実際のオブジェクト構築を行うローダ関数です。

ctx : マッピング

load()によって返されたオブジェクトでLazyObjectインスタンスを置き換えるためのコンテキスト。

名前 : str

ロードされたオブジェクトを提供するコンテキスト内の名前。これは 、割り当てのLHS上の名前でなければなりません。

xonsh.lazyasd.lazybool(f )[ソース]

関数から遅延ブール値を構築するためのデコレータ。

xonsh.lazyasd.lazydict(f )[ソース]

関数から怠惰なdictsを構築するためのデコレータ。

xonsh.lazyasd.lazyobject(f )[ソース]

関数から遅延オブジェクトを構築するためのデコレータ。

xonsh.lazyasd.load_module_in_background(名前、パッケージ=なし、デバッグ= 'DEBUG'、env =なし、置き換え=なし)[ソース]

バックグラウンドスレッドでモジュールをロードするためのエントリポイント。

パラメーター:
名前 : str

バックグラウンドスレッドでロードするモジュール名。

パッケージ : strまたはNone、オプション

パッケージ名は、importlib.import_module()と同じ意味です。

デバッグ : str、オプション

環境内で参照するシンボル名をデバッグする。

env : マッピングまたはなし、オプション

Environmentこれはデフォルトで__xonsh __。env(使用可能な場合)とos.environ(そうでない場合)です。

置き換え : マッピングまたはなし、オプション

lazyロードされたモジュールをインポートする完全修飾モジュール名(foo.bar.bazなど)を辞書にマッピングします。そのモジュールには変数名が含まれています。たとえば、foo.barがモジュールaをbとしてインポートすると、このdictは{'foo.bar': 'b'}になります。

戻り値:
module : ModuleType

これは、sys.modulesにある元のモジュールか、モジュールが完全にロードされるまで遅延属性アクセスまでブロックするプロキシモジュールです。