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

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

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

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

run[ソース]

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

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

クラスxonsh.lazyasd.BackgroundModuleProxymodname [ソース]

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

class xonsh.lazyasd.LazyBoolloadctxname [ソース]

最初に尋ねられたときに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.LazyObjectloadctxname [ソース]

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

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

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

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

ctx マッピング

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

名前 str

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

xonsh.lazyasd.lazyboolf [ソース]

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

xonsh.lazyasd.lazydictf [ソース]

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

xonsh.lazyasd.lazyobjectf [ソース]

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

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にある元のモジュールか、モジュールが完全にロードされるまで遅延属性アクセスまでブロックするプロキシモジュールです。