β license: N/A; it's up to the user to verify the accepted use.
ποΈ title and other fields: planned as part of project readme
ποΈ externalDocs: planned as part of the project readme
β servers: first server is used
β url: used as the base URL
β variables: default values are used to evaluate the server URL
β security: implemented
β tags: ignored
components
β schemas:
ποΈ title: planned as part of class docstr
type
ποΈ [no value]: planned as primitive JSON-compatible object.
β object: implemented as pydantic models
β array: implemented as list
β string, integer, number, boolean: implemented as str, int, float and bool
ποΈ format: planned, including custom formats
β assertion keywords: as supported by pydantic
β οΈ allOf: needs improvement
β anyOf: implemented as union
β οΈ oneOf: treated as anyOf and implemented as Union
ποΈ not: planned for objects
β required: non-required properties are turned to Union[None, $type]
additionalProperties:
β boolean: supported as pydantic extra: 'allow' or 'forbid'
ποΈ schema: planned as a Mapping field
ποΈ patternProperties: planned as Mapping field
π enum: ignored; might be implemented for simple types as Literal
π description: planned as part of docstr
β default: if present, the property type turned to Union[None, $type] and has default value None
π caveat: default values are not to be sent between Web API client and server, instead they are implied be the receiving side. Lapidary could potentially fill such values in response models, but it might be expensive, so it would be an optional feature.
β nullable: if true, the property type is turned to Union[None, $type]
β readOnly & writeOnly: if either is true, the property type is turned to Union[None, $type] and has default value None; planned as part of docstr
β οΈ caveat: readOnly properties are only to be sent to API server, and writeOnly only to be received by the client. A property might be both required one way, and invalid the other way, which could not be directly represented in Python, except with two or three classes for every schema.
β discriminator: ignored
π example: might be used as part of docstr
ποΈ externalDocs: planned as part of docstr
ποΈ deprecated: planned
β xml: ignored, currently not planned
responses
ποΈ description: planned as part of docstr
β headers: if present, used as fields in the response envelope class
β content: implemented; used as operation method return type, and a way to resolve model type for a response
π links: ignored; might be used to generate methods in the response envelope
β parameters: used in-line in operations
π examples: currently ignored
requestBodies
ποΈ description: planned as part of docstr
β content: implemented
ποΈ required: planned
β headers: implemented
β οΈ securitySchemes: implemented with httpx_auth
β refreshUrl: not supported
ποΈ links: planned
β callbacks: not planned
paths
ποΈ summary, description: planned as parts of docstr
β servers: ignored
parameters
β name: OpenAPI parameter names are not unique and might contain characters invalid for python names, therefore they're escaped and suffix-hungarian notation is used to distinguish between cookie, header, path and query parameters
β in: implemented, suffix-hungarian notation is used to separate parameters
β required: non-required parameters are optional with default value None
ποΈ deprecated: planned
ποΈ allowEmptyValue: planned
ποΈ content: key: planned, value: processed as schema
β οΈ style: partially implemented
ποΈ allowReserved: planned
β schema: implemented
π example & examples: considered
π§ x-lapidary-name: name of a parameter in the python
π§ x-lapidary-responses-global: responses that might come from any operation
π§ x-lapidary-headers-global: headers accepted by any operation