bravado-core
bravado-core copied to clipboard
bravado-core does propagate x-nullable field in case of reference objects
While working on #331 I've noticed that bravado-core has some custom logic to ensure that the x-nullable field is propagated in case of a reference object.
According to the JSON schema definition a reference object is meant to fully replace the current object with the referenced one. This means that siblings attributes of a reference objects can not be considered (the definition does not strictly define this behaviour, so the decision is delegated to the implementer).
I'm mentioning this as ensuring the propagation of x-nullable
results in
- additional custom code to handle in the library
- possible lack of feature parity between usage of
bravado_core.spec.Spec
withinternally_dereference_refs
set toTrue
orFalse
- possible confusion on the users as certain vendor extension will be propagated and others not (ie. a schema like
{'x-nullable': True, '$ref': '#/definitions/something', 'x-new': False}
will havex-nullable
propagated andx-new
ignored)
My suggestion would be to remove this manual handling and to bump swagger-spec-validator to 2.4.0+ which adds a warning in case a sibling is identified into a reference object (https://github.com/Yelp/swagger_spec_validator/pull/107)
⚠️ : this might break clients, so addressing this issue needs a major release