Проверка спецификации Swagger в Python (ядро bravado)
Я пытаюсь разобрать спецификацию kubernetes по этой ссылке.
Файл довольно большой, поэтому не может быть воспроизведен здесь.
Я следую обычному подходу - как указано в документах, посвященных бравадо -
spec_dict = json.loads(open("swagger.json", "r").read())
spec = Spec.from_dict(spec_dict, config={'validate_swagger_spec': False})
во время выполнения этого я получаю ошибку -
File "/path/to/bravado-core/bravado_core/spec.py", line 581, in wrapper func(fragment, path)
File "/path/to/bravado-core/bravado_core/spec.py", line 595, in descend descend(fragment[key], path + [key])
File "/path/to/bravado-core/bravado_core/spec.py", line 570, in wrapper
func(target, path)
File "/path/to/bravado-core/bravado_core/spec.py", line 594, in descend
fire_callbacks(fragment, key, path + [key])
File "/path/to/bravado-core/bravado_core/spec.py", line 552, in fire_callbacks
callback(container, key, path)
File "/path/to/bravado-core/bravado_core/model.py", line 140, in bless_models
model_spec = deref(container.get(key))
File "/path/to/bravado-core/bravado_core/spec.py", line 289, in _force_deref
_, target = self.resolver.resolve(ref_dict['$ref'])
File "/path/to/bravado-core/venv/local/lib/python2.7/site-packages/jsonschema-2.6.0-py2.7.egg/jsonschema/validators.py", line 374, in resolve
url = self._urljoin_cache(self.resolution_scope, ref)
File "build/bdist.linux-x86_64/egg/functools32/functools32.py", line 394, in wrapper
TypeError: unhashable type: 'dict'
```
Я вроде знаю, почему эта ошибка тоже происходит. Это происходит потому, что он пытается прочитать строку 84133 из файла, который выглядит как
```
"io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1beta1.JSONSchemaProps": {
"description": "JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).",
"properties": {
"$ref": {
"type": "string"
},
$ref
выше не рассматривается как "ключ", но рассматривается как ссылка. Но я понятия не имею, как это решить.
Когда я запускаю тот же файл через jsonschema
(который внутренне использует Bravado-Core), все выглядит хорошо
jsonschema swagger.json
не выдает никакой ошибки.
Не уверен, что мне не хватает. Есть указатели?