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 분류기에는 실제로 타이핑이 동일하지 않습니다.default 키워드는 지원되지 않습니다. 그러나 Python/Mypy#6131을 참조하십시오."#" )는 중첩 된 전진 참조가 뒷받침 될 때까지 실제로 제대로 작동 할 수 없습니다. 참조 : Python/Mypy#731.