google.appengine.api.validation モジュール

概要

汎用オブジェクト構造の検証ツール。

このライブラリは、制約付きの属性を持つクラスを定義するために使用します。 制約付き属性は、クラスの中でバリデータを使用することによって定義します。 バリデータはこのライブラリのどのクライアントでも定義できますが、ここではいくつかの標準バリデータが提供されています。

1 個のパラメータを受け取る任意の呼び出し可能関数をバリデータにすることができます。この関数では、属性に新しい値を割り当てる前にその値をチェックします。バリデータは、受け取った値を属性の定義に応じて適切な値に変更できます。たとえば、バリデータとして int を使用すると、正しくフォーマットされた文字列は数値にキャストされ、そうでない場合は例外が発生します。ただしこの方法はおすすめしません。 バリデータを使用して、正しい型を検証する正しい方法は、型バリデータを使用することです。

この検証ライブラリは、主に YAML オブジェクト ビルダーでの使用を目的としています。yaml_object.py を参照してください。

目次

google.appengine.api.validation.AsValidator(validator)ソース

バリデータのインスタンスとしてさまざまな型をラップします。

一般的なバリデータ型の省略表現を指定する場合に使用します。次の型を次のバリデータに変換します。

文字列 -> 正規表現型 -> 型コレクション -> オプション バリデータ -> バリデータ自体

パラメータ

validator - バリデータでラップするオブジェクト。

戻り値

指定された値をラップする Validator インスタンス。

発生するエラー

AttributeDefinitionError - バリデータが上記のいずれの型でもない場合。

例外 google.appengine.api.validation.AttributeDefinitionErrorソース

ベース: google.appengine.api.validation.Error

クラス属性の定義にエラーが発生しました。

class google.appengine.api.validation.非推奨(recommended, validator, default=None)ソース

ベース: google.appengine.api.validation.normalized

非推奨のフィールド。

Preferred と組み合わせて使用します。Validated のフィールドとしてのみ動作します。

いずれのフィールドも値のアクセスで機能します。非推奨のフィールドと、それに対応する優先フィールドの両方を設定するのは誤りです。

Get(value, key, obj)ソース
GetWarnings(value, key, obj)ソース
ValidateEntirely(value, key, obj)ソース
例外 google.appengine.api.validation.Errorソース

ベース: exceptions.Exception

すべてのパッケージ エラーの基本クラス。

class google.appengine.api.validation.Exec(default=None)ソース

ベース: google.appengine.api.validation.Type

値を Docker の CMD / ENTRYPOINT 要件に強制的に対応させます。

値が文字列であることを検証し、(必要に応じて)文字列を変更して、表示されたコマンドが Docker コンテナ内の PID 1 になるようにします。詳細については、Docker のドキュメント「docker kill」を参照してください。https://docs.docker.com/engine/reference/commandline/kill/

コマンドがすでに exec で始まっているか、または「exec form」([[ で始まる)のように見える場合、それ以上のアクションは必要ありません。それ以外の場合は、実行時に PID 1 になるようにコマンドの先頭に exec を追加します。

Validate(value, key) ソース

親の動作に基づいて検証し、強制的に exec で開始します。

class google.appengine.api.validation.ItemDumper(stream, default_style=None, default_flow_style=None, 正規=None, インデント=なし, 幅=なし, allow_unicode=None, line_break=None,Encoding=None,explicit_start=None,explicit_end=None, version=None, tags=None, block_seq_インデント=None、top_level_colon_align=None, prefix_colon=None)ソース

ベース: google.appengine._internal.ruamel.yaml.dumper.SafeDumper

validation.Items をダンプする場合。SortedDict キーの順序を考慮します。

presentation_mapping(tag, mapping, flow_style=None)ソース
yaml_representers = {<type 'float'>: <unbound メソッド SafeRepresenter.represent_float>, <class 'collections.OrderedDict'>: <unbound メソッド SafeRepresenter.represent_ordereddict>, <type 'set'>: <unbound メソッド SafeRepresenter.presentation_set>、<type 'str'>: <unbound method SafeRepresenter.represent_str>、None: <unbound method SafeRepresenter.represent_define>、<type 'long'>: <unbound method SafeRepresenter.represent_long>、<class 'google.appengine._internal.ruamel.yaml.compat.ordereddict'>: <unbound メソッド SafeRepresenter.represent_ordereddict>、<type 'datetime.date'>: <unbound method SafeRepresenter.represent_date>、<type 'bool'>: <unbound メソッド SafeRepresenter.represent_bool> >、<type 'tuple'>: <unbound method SafeRepresenter.represent_list>、<type 'NoneType'>: <unbound method SafeRepresenter.represent_none>、<type 'unicode'>: <unbound method SafeRepresenter.represent_unicode>、<type > dict'>: <unbound method SafeRepresenter.represent_dict>、<type 'int'>: <unbound method SafeRepresen ter.represent_int>、<type 'datetime.datetime'>、<unbound method SafeRepresenter.represent_datetime>、<class 'google.appengine.api.validation.SortedDict'>: <unbound method ItemDumper.represent_dict>、<type 'list' >: <バインドされていないメソッド ReRepresenter.represent_list> のメソッド
例外 google.appengine.api.validation.MissingAttribute(message, の原因=None)ソース

ベース: google.appengine.api.validation.ValidationError

オブジェクトに必須属性がない場合に発生します。

class google.appengine.api.validation.normalized(default=None)ソース

ベース: google.appengine.api.validation.Validator

検索時にフィールドを正規化しますが、元の値でシリアル化します。

Validated のフィールドでのみ動作します。

Get(value, key, obj)ソース

正規化された値を返します。サブクラスはオーバーライドする必要があります。

class google.appengine.api.validation.Optional(validator, default=None)ソース

ベース: google.appengine.api.validation.Validator

オプション属性の定義。

オプション値は、None に設定したり、設定しないままにしたりすることができる属性です。基本的な Validated クラスの値すべて、初期設定時は None に設定されています。オプション以外の値に割り当てられないと、CheckInitialized を呼び出すときに検証エラーが発生します。

ToValue(value)ソース

「value」を簡素化されたコレクションまたは基本タイプに変換します。

Validate(value, key)ソース

必要に応じて値を入力します。

通常のバリデータでは None は指定できません。含まれているバリデータの代わりに None が指定されます。

パラメータ
  • value - オプションとして検証される値。

  • key - 検証されているフィールドの名前。

戻り値

値が None の場合は None、それ以外の場合は含まれている検証の結果。

class google.appengine.api.validation.Options(*options, **kw)ソース

ベース: google.appengine.api.validation.Validator

所定の値に基づいてフィールドを制限します。

オプションは、列挙された値のセットのみ割り当てに指定できることを確認するために使用します。複数の文字列値を単一のオリジナル値にマッピングするエイリアスを定義できます。使用例を以下に示します。

クラス ZooAnimal(validated.Class):
ATTRIBUTES = {

‘name’: str, ‘kind’: Options(‘platypus’, # エイリアスなし

(‘rhinoceros’, [‘rhino’]), # 1 つのエイリアス (‘canine’, (‘dog’, ‘puppy’)), # 2 つのエイリアス )

Validate(value, key)ソース

オプションを検証します。

戻り値

提供されたエイリアスの元の値。

発生するエラー

ValidationError - 値が定義済みの値でない場合。

class google.appengine.api.validation.優先(非推奨、検証ツール、デフォルト=なし)ソース

ベース: google.appengine.api.validation.normalized

非推奨のフィールドが存在する場合の、非推奨ではないフィールド。

Deprecated と組み合わせて使用します。Validated のフィールドとしてのみ動作します。

いずれのフィールドも値のアクセスで機能します。非推奨のフィールドと、それに対応する優先フィールドの両方を設定するのは誤りです。

Get(value, key, obj)ソース
ValidateEntirely(value, key, obj)ソース
class google.appengine.api.validation.Range(minimum, max, range_type=int, default=None)ソース

ベース: google.appengine.api.validation.Validator

数値が正しい範囲内にあることを検証します。

理論的には、このクラスは Options を使用してエミュレートできますが、そのクラスから生成されたエラー メッセージはあまりわかりやすくありません。 このクラスは本質的に同じ内容を実行しますが、意図した整数の範囲を認識しています。

また、この範囲クラスは、順序性を持たせる浮動小数点数やその他の型をサポートします。

範囲は包含的で、Range(1,3) の範囲では 3 が考慮されます。

Validate(value, key)ソース

値が範囲内であることを検証します。

range-type に対して検証し、範囲を確認します。

パラメータ
  • value - 検証する値。

  • key - 検証されているフィールドの名前。

発生
  • ValidationError - 値が範囲外の場合。ValidationError は値が

  • 同じ範囲型でない場合。

class google.appengine.api.validation.Regex(regex, string_type=unicode, default=None)ソース

ベース: google.appengine.api.validation.Validator

正規表現バリデータ。

正規表現バリデータは常に値を文字列に変換します。完全一致でなければなりません。部分一致は検証されません。次に例を示します。

class ClassDescr(Validated):
ATTRIBUTES = { ‘name’: Regex(r’[a-zA-Z_][a-zA-Z_0-9]*’),

‘parent’: Type(type), }

また、文字列として定義されている属性は自動的に正規表現型と解釈されます。Unicode の正規表現文字列を指定することもできます。このアプローチはやや効率が悪いですが、通常は、大量のデータを解析しない限りあまり影響はありません。

class ClassDescr(Validated):
ATTRIBUTES = { ‘name’: r’[a-zA-Z_][a-zA-Z_0-9]*’,

‘parent’: Type(type), }

# これにより、ValidationError 例外が発生します。 my_class(name=’AName with space’, parent=AnotherClass)

Validate(value, key) ソース

正規表現に照らして文字列を検証します。

パラメータ
  • value - 正規表現と一致する文字列。

  • key - 検証されているフィールドの名前。

発生

ValidationError - 値が正規表現と一致しない場合、または値が指定された文字列型と一致しない場合。

class google.appengine.api.validation.RegexStr(string_type=unicode, default=None)ソース

ベース: google.appengine.api.validation.Validator

文字列がエラーなく正規表現としてコンパイルできることを検証します。

フィールドの値が正規表現と思われる場合は、このバリデータを使用します。つまり、値は re.compilation() でコンパイルできる文字列でなければなりません。その後、属性はコンパイルされた re オブジェクトになります。

ToValue(value) ソース

このバリデータの RE パターンを返します。

Validate(value, key)ソース

文字列が正規表現としてコンパイルされることを検証します。

正規表現は複数行にわたる文字列として表現されている可能性があるため、この関数は値から改行を削除します。

パラメータ
  • value – 正規表現としてコンパイルする文字列。

  • key - 検証されているフィールドの名前。

発生
  • ValueError、値が正規表現としてコンパイルされない場合。TypeError

  • 値が指定された文字列型と一致しない場合。

class google.appengine.api.validation.Repeated(constructor, default=None)ソース

ベース: google.appengine.api.validation.Validator

繰り返しフィールドのバリデータ。

属性が繰り返し値、すなわちシーケンスであると予想されることを示します。これにより Type(list) に対して、そのコンストラクタ フィールドを使用してリストに保存できる内容に関する情報を保持する点について追加の検証が行われます。

Validate(value, key)ソース

シーケンスの検証を行います。

値はリストでなければならず、どの要素も 'constructor' 型でなければなりません。

パラメータ
  • value - 検証する値。

  • key - 検証されているフィールドの名前。

発生

ValidationError - 値が None の場合、リストではない場合、またはその要素の 1 つが間違った型である場合。

class google.appengine.api.validation.SortedDict(keys, data)ソース

ベース: dict

yaml を表す特定のキー順の辞書を表します。

ordered_items()ソース
class google.appengine.api.validation.StringValidator(default=None)ソース

ベース: google.appengine.api.validation.Validator

プロパティが有効なテキスト文字列であることを確認します。

Python 2: basestring から継承 Python 3 の場合: str から継承

Validate(value, key) ソース
class google.appengine.api.validation.TimeValueソース

ベース: google.appengine.api.validation.Validator

時間の値を 1h や 3.5d などの単位で検証します。

Validate(value, key)ソース

時間値を検証します。

パラメータ
  • value - 検証する値。

  • key - 検証されているフィールドの名前。

発生

ValidationError - 値が予期した形式の時刻値でない場合。

class google.appengine.api.validation.Type(forecast_type, convert=True, default=None)ソース

ベース: google.appengine.api.validation.Validator

プロパティが期待されている型であることを検証します。

予想されている型でない場合は、任意に値を変換できます。

型を提供するだけで、特定の型の必須フィールドを省略形で指定できます。このメソッドは、大量の情報を解析する場合を除いて、明示的な型を提供するよりも少し効率が落ちます。

class Person(Validated):
ATTRIBUTES = {‘name’: unicode,

‘age’: int, }

ただし、ほとんどの場合、型定数を使用することをおすすめします。

class Person(Validated):
ATTRIBUTES = {‘name’: TypeUnicode,

‘age’: TypeInt, }

GetWarnings(value, key, obj)ソース
Validate(value, key)ソース

値の型が正しいことを検証します。

パラメータ
  • value - 検証する値。

  • key - 検証されているフィールドの名前。

戻り値

値が正しい型の場合は値。バリデータで値を正しい型に変換するよう設定されている場合、値はそのように変換されます。

発生
  • MissingAttribute - 値が None で、期待される型が NoneType でない場合。

  • ValidationError - 値が正しい型でなく、バリデータが変換しない、または変換できないよう設定されている場合。

class google.appengine.api.validation.Validated(**attributes)ソース

ベース: google.appengine.api.validation.ValidatedBase

検証が必要なクラスの基本クラス。

検証されたフィールドを使用するクラスは、このクラスのサブクラスになる必要があります。各クラスは 'ATTRIBUTES' クラス変数を定義する必要があります。このクラス変数は、属性名からそのバリデータへのマップでなければなりません。次に例を示します。

class Story(Validated):
ATTRIBUTES = {‘title’: Type(str),

‘authors’: Repeated(Type(str)), ‘isbn’: Optional(Type(str)), ‘pages’: Type(int), }

ATTRIBUTES にリストされていない属性は正常に動作し、割り当て時には検証されません。

ATTRIBUTES = None
CheckInitialized()ソース

すべての必須フィールドが初期化されているかどうかをチェックします。

Validated のインスタンスは初期化されていない状態で開始されるため、完全に初期化されたことを確認しなければならない場合があります。 これにより解決される主な問題は、インスタンスに必要なすべてのフィールド セットが設定されていることを検証する方法です。 デフォルトでは、Validator クラスでは None は指定できませんが、インスタンス化されると、すべての属性は None に初期化されます。

発生
  • 検証の種類に関連する例外。例外の種類

  • はバリデータによって決定されます。通常、これは ValueError または

  • TypeError です。

Get(key)ソース

Validated インスタンスで単一の値を取得します。

このメソッドは、検証済みの属性を取得する場合のみ使用できます。

パラメータ

key - 属性の名前

発生するエラー

検証済みの属性がクラスに存在しない場合の ValidationError。

GetUnnormalized(key)ソース

正規化せずに、Validated インスタンスで単一の値を取得します。

classmethod GetValidator(key)ソース

基礎となる属性定義をバリデータとして安全に取得します。

パラメータ

key – 取得する属性の名前。

戻り値

バリデータにラップされたキーまたは属性値に関連付けられたバリデータ。

発生するエラー

ValidationError - 該当の属性が存在しない場合。

GetWarnings()ソース
Set(key, value)ソース

Validated インスタンスに単一の値を設定します。

このメソッドは、検証済みの属性を割り当てる場合のみ使用できます。

パラメータ
  • key - 属性の名前

  • value - 設定する値

発生

検証済みの属性がクラスに存在しない場合の ValidationError。

ToDict()ソース

Validated オブジェクトを辞書に変換します。

すべての要素を再帰的に走査し、すべてを簡素化されたコレクションに変換します。

戻り値

このクラス ATTRIBUTES で定義されているすべての属性の dict をその値にマップします。この構造は、このオブジェクトとリストで参照される Validated オブジェクトも dict に変換されるという点で再帰的です。

class google.appengine.api.validation.ValidatedBaseソース

ベース: オブジェクト

すべての検証済みオブジェクトの基本クラス。

CheckInitialized()ソース

すべての必須フィールドが初期化されているかどうかをチェックします。

この関数は、すべての必須属性の存在を保証するなど、上位レベルの制約を検証するためすべての属性がチェックされた後に呼び出されます。

サブクラスでこの関数をオーバーライドして、エラーの例外を発生させる必要があります。

classmethod GetValidator(key)ソース

指定されたキーに対応するバリデータを安全に取得します。

この関数では、サブクラスでオーバーライドしてください

パラメータ

key - バリデータを取得する属性または項目。

戻り値

キーまたは属性に関連付けられたバリデータ。

発生するエラー

ValidationError - 要求されたキーが不正な場合。

GetWarnings()ソース

通知されたすべての警告と関連するフィールドを返します。

戻り値

両方の文字列の(dotted_field、warning)のタプルのリスト。

Set(key, value)ソース

Validated インスタンスに単一の値を設定します。

このメソッドでは、サブクラスによってオーバーライドしてください。

このメソッドは、検証済みの属性 / 項目の割り当てにのみ使用できます。

パラメータ
  • key - 属性の名前

  • value - 設定する値

発生

ValidationError - クラスに検証済みの属性が存在しない場合。

SetMultiple(attributes)ソース

Validated インスタンスに複数の値を設定します。

すべての属性は設定前に検証されます。

パラメータ

attributes - 設定する属性 / アイテムの dict。

発生するエラー

ValidationError - クラスに検証済みの属性が存在しない場合。

ToDict()ソース

ValidatedBase オブジェクトを辞書に変換します。

すべての要素を再帰的に走査し、すべてを簡素化されたコレクションに変換します。

サブクラスでは、このメソッドをオーバーライドしてください。

戻り値

すべての属性を単純な値またはコレクションにマッピングする辞書。

ToYAML()ソース

検証されたオブジェクトを簡素化された YAML として出力します。

戻り値

SafeLoader を使用した解析と互換性のある簡素化された YAML 文字列としてのオブジェクト。

class google.appengine.api.validation.ValidatedDict(**kwds)ソース

ベース: google.appengine.api.validation.ValidatedBase、dict

検証済み辞書の基本クラス。

KEY_VALIDATOR と VALUE_VALIDATOR をバリデータのサブクラス(またはバリデータとして解釈できるもの、AsValidator を参照)に設定することで、辞書で指定できるキーと値を制御できます。

たとえば、整数にマップする大文字のキーのみを使用する場合は、次のようにします。

class CapitalizedIntegerDict(ValidatedDict):

KEY_VALIDATOR = Regex('[AZ].*') VALUE_VALIDATOR = int # これは Type(int) に解釈されます

次のコードはエラーになります。

my_dict = CapitalizedIntegerDict() my_dict[‘lowercase’] = 5 # 検証の例外をスローします

Validated と ValidatedDict を互いに自由にネストできます。

class MasterObject(Validated):

ATTRIBUTES = {‘paramdict’: CapitalizedIntegerDict}

次の yaml の解析に使用できます。
paramdict:

ArbitraryKey: 323 AnotherArbitraryKey: 9931

classmethod GetValidator(key)ソース

キーの妥当性をチェックし、対応する値バリデータを返します。

パラメータ

key - 返しているバリデータに対応するキー。

GetWarnings()ソース
KEY_VALIDATOR = None
Set(key, value)ソース

Validated インスタンスに単一の値を設定します。

このメソッドは、指定されたキーと値が有効であるかどうかをチェックし、有効な場合はそのアイテムをこの辞書に入れます。

パラメータ
  • key - 属性の名前

  • value - 設定する値

発生

ValidationError - クラスに検証済みの属性が存在しない場合。

ToDict()ソース

ValidatedBase オブジェクトを辞書に変換します。

すべての要素を再帰的に走査し、すべてを簡素化されたコレクションに変換します。

サブクラスでは、このメソッドをオーバーライドしてください。

戻り値

すべての属性を単純な値またはコレクションにマッピングする辞書。

VALUE_VALIDATOR = None
setdefault(key, value=None)ソース

すべての Key-Value ペアが有効であることを確認するために setdefaultss をトラップします。

使用法の詳細については、dict の setdefault に関するドキュメントを参照してください。

発生
  • ValidationError - 指定されたキーが不正または

  • 値が無効な場合。

update(other, **kwds)ソース

トラップを更新して、すべての Key-Value ペアを有効にします。

使用法の詳細については、dict の更新に関するドキュメントを参照してください。

発生するエラー

ValidationError - 指定されたキーのいずれかが不正または値が無効な場合。

Exception google.appengine.api.validation.ValidationError(message, の原因=なし)ソース

ベース: google.appengine.api.validation.Error

検証中に例外を発生させるための基本クラス。

class google.appengine.api.validation.Validator(default=None)ソース

ベース: オブジェクト

バリデータ基本クラス。

呼び出し可能なものはすべてバリデータとして使用できますが、このクラスは、特定のバリデータが特定の状態または設定を保持する必要があるケースをカプセル化します。

Validator サブクラスを実装するには、validate メソッドをオーバーライドします。

変換を実行する妥当な方法がある場合、このクラスは属性に設定された最終的な値を変更できます。

GetWarnings(value, key, obj)ソース

この属性に関する警告を返します。

致命的でない問題ではない値に目を向けて、その値を検証します。

パラメータ
  • value - 検証する値。

  • key - 検証されているフィールドの名前。

  • obj - 検証するオブジェクト。

戻り値

タプル(コンテキスト、警告)のリスト
  • コンテキストはフィールド(またはサブフィールドの場合は点線のフィールドパス)です

  • 警告は文字列の警告テキストです

ToValue(value)ソース

「value」を簡素化されたコレクションまたは基本タイプに変換します。

バリデータのサブクラスは、「value」のダンプ表現が単純に <type>(value)(正規表現など)でない場合にこのメソッドをオーバーライドしてください。

パラメータ

value - Validate() から返された同じ型のオブジェクト。

戻り値

組み込み型(int、str、dict など)のインスタンス。デフォルトでは、変更されていない「value」を返します。

Validate(value, key) ソース

このフィールドを検証します。オーバーライドしてサブクラスの動作をカスタマイズします。

パラメータ
  • value - 検証する値。

  • key - 検証されているフィールドの名前。

戻り値

値が有効な場合は値、または値の有効な表現。

ValidateEntirely(value, key, obj)ソース

このフィールドを他のフィールドに対して検証します。オーバーライドしてサブクラスでカスタマイズします。

デフォルトでは、Validate(value, key) を呼び出します。ValidateEntirely は関連フィールドが定義されているオブジェクト全体を使用するため、ValidateEntirely を使用するバリデータは Validated や ValidatedDict などの ValidatedBase の特定のサブクラスでのみ動作できます。

パラメータ
  • value - 検証する値。

  • key - 検証されているフィールドの名前。

  • obj - 検証するオブジェクト。

戻り値

値が有効な場合は値、または値の有効な表現。

expected_type

オブジェクトのエイリアス