Coder Social home page Coder Social logo

Comments (4)

jc-harrison avatar jc-harrison commented on July 18, 2024 1

Would you like to investigate this and propose a fix?

I'm not sure how soon I'll have time to investigate this further, I'm afraid, but I'll try to look into it at some point.

from apispec.

lafrech avatar lafrech commented on July 18, 2024

I'm afraid you're right. Looks like a bug.

Would you like to investigate this and propose a fix?

from apispec.

Bangertm avatar Bangertm commented on July 18, 2024

@lafrech the problem here seems to be that field2nullable and nested2properties are operating independently. It looks like for OpenAPI 3.1 they are going to need to interoperate.

For this schema under 3.1 field2nullable is adding "type": ["null"] and nested2properties is independently adding "allOf": [{"$ref": "#/components/schemas/Foo"}]

This approach was probably fine pre 3.1, but now that nullability needs to be included in an anyOf array we need make one method depend on the result of the other.

This is probably also an issue for pluck2properties, but there the symptom would be not displaying nullability because the type is always being overwritten.

The solution I'm thinking about is:

  1. Moving the execution of field2nullable to be the last attribute function executed. I think this change alone solves the Pluck case and the case of nested schemas defined inline.
  2. Adding logic under the 3.1 case to translate the allOf keyword to anyOf while adding the null type.
  3. We may also want to ensure that field2nullable executes after user defined attribute functions to prevent similar issues with those.

from apispec.

sloria avatar sloria commented on July 18, 2024

fix released in 6.6.1

from apispec.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.