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 " ]
}打字:
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。