jsonschema typed
1.0.0
このパッケージは、 jsonschema -schemasに基づいてタイプの注釈を自動的に生成する方法を提供します。
jsonschemaの対象となるすべての概念が、Pythonタイピング注釈内で表現できるわけではありません。ただし、ほとんどのことはあなたが期待するように機能します。ほとんどのタイプは、些細なことに翻訳されています( integer 、 number 、 string 、 array 、 boolean 、 null )。興味深いタイプはobjectであり、 TypedDictに翻訳されています。
警告:これは、MyPyプラグインシステムに基づいており、後方互換性の保証がないと言われています。 MyPyの新しいバージョンはすぐにサポートされない可能性があります。
JSONスキーマ:
{
"$schema" : " http://json-schema.org/draft-07/schema# " ,
"$id" : " http://foo.qwerty/some/schema# " ,
"title" : " Foo Schema " ,
"type" : " object " ,
"properties" : {
"title" : {
"type" : " string "
},
"awesome" : {
"type" : " number "
}
},
"required" : [ " title " ]
}TypedDict:
from typing import TYPE_CHECKING
from jsonschema_typed import JSONSchema
data : JSONSchema [ "path/to/schema.json" ] = { "title" : "baz" }
if TYPE_CHECKING :
reveal_type ( data ) # Revealed type is 'TypedDict('FooSchema', {'title': builtins.str,
# 'awesome'?: Union[builtins.int, builtins.float]})'
data [ "description" ] = "there is no description" # TypedDict "FooSchema" has no key 'description'
data [ "awesome" ] = 42
data [ "awesome" ] = None # Argument 2 has incompatible type "None"; expected "Union[int, float]"また、スキーマの種類の部分や、配列の要素の種類を入手することもできます。使用例については、テストケースをご覧ください。
pip install jsonschema-typedまた、 mypy.ini構成ファイルでプラグインを有効にする必要があります。
# mypy.ini
[ mypy ]
plugins = j sonschema_typed.plugin, jsonschema_typed.optional_typed_dict
# Due to a quirk of how these type hints are generated, mypy's caching breaks.
# Disabling caching might be required.
cache_dir = / dev/null 上記のインストールは、 mypyとjsonschema (当然)で構成される依存関係を解決します。テストはバージョンで行われました:
おそらくいくつかの古いバージョンも機能します。他のバージョンが必要な場合は問題を報告します。
additionalProperties 、TypedDictで実際には同等のものではありません。defaultキーワードはサポートされていません。しかし、参照:Python/Mypy#6131。"#"など)は、ネストされた前方参照がサポートされるまで、実際には適切に機能しません。参照:python/mypy#731。