enable_merge_strategies¶
- astropy.utils.metadata.enable_merge_strategies(*merge_strategies)[ソース]¶
コンテキストマネージャは、1つまたは複数のカスタムメタデータ統合ポリシーを一時的に有効にする。
- パラメータ
- *merge_strategies :
MergeStrategy
MergeStrategy
有効になる統合戦略。
- *merge_strategies :
実例.
ここでは,左右にそれぞれ整型または浮動点型を採用し,この2つの値を含むリストを返すカスタマイズされた統合戦略を定義する.
>>> from astropy.utils.metadata import MergeStrategy >>> class MergeNumbersAsList(MergeStrategy): ... types = ((int, float), # left side types ... (int, float)) # right side types ... @classmethod ... def merge(cls, left, right): ... return [left, right]
これを定義することによって、統合ポリシーは、統合のために利用可能なものとして自動的に登録される。しかし,デフォルトの場合,新たな統合ポリシーは 未起用 それがそうです。これは,メタデータ統合操作を実行している無関係なコードの振舞いを無意識に変更することを防ぐことができる.
新しい統合ポリシーを使用するために、次の例に示すように、このコンテキストマネージャを使用してください。
>>> from astropy.table import Table, vstack >>> from astropy.utils.metadata import enable_merge_strategies >>> t1 = Table([[1]], names=['a']) >>> t2 = Table([[2]], names=['a']) >>> t1.meta = {'m': 1} >>> t2.meta = {'m': 2} >>> with enable_merge_strategies(MergeNumbersAsList): ... t12 = vstack([t1, t2]) >>> t12.meta['m'] [1, 2]
さらなる統合ポリシーは、追加のパラメータとしてコンテキストマネージャに提供されてもよい。
便宜上、有効化動作は、実際には、登録されたポリシーがコンテキストマネージャパラメータのサブクラスであるかどうかをチェックすることによって行われる。これは、関連する統合ポリシーのセットを定義し、その後、基本クラスを有効にすることによって、それらを一度に有効にすることができること些細な例として all 以下のコマンドを使用して登録を有効にすることができる統合ポリシー:
>>> with enable_merge_strategies(MergeStrategy): ... t12 = vstack([t1, t2])