diff --git a/debian/patches/0001-make-2to3-more-deterministic.patch b/debian/patches/0001-make-2to3-more-deterministic.patch new file mode 100644 index 0000000000000000000000000000000000000000..63546f5e146601c79b6743780718ebcfc68dcb2a --- /dev/null +++ b/debian/patches/0001-make-2to3-more-deterministic.patch @@ -0,0 +1,1297 @@ +From: Pierre Fenoll <pierrefenoll@gmail.com> +Date: Wed, 23 Dec 2020 12:17:14 +0100 +Subject: make 2to3 more deterministic + +Origin: backport, https://github.com/getkin/kin-openapi/commit/f05a91328638d7ae73adfd4298cd9456c7692572 +--- + openapi2/openapi2.go | 15 + + openapi2conv/openapi2_conv.go | 2 + + openapi2conv/openapi2_conv_test.go | 1218 ++++++++++++++++++------------------ + 3 files changed, 636 insertions(+), 599 deletions(-) + +diff --git a/openapi2/openapi2.go b/openapi2/openapi2.go +index 5e4877b..8cf0f01 100644 +--- a/openapi2/openapi2.go ++++ b/openapi2/openapi2.go +@@ -10,6 +10,7 @@ package openapi2 + import ( + "fmt" + "net/http" ++ "sort" + + "github.com/getkin/kin-openapi/jsoninfo" + "github.com/getkin/kin-openapi/openapi3" +@@ -168,6 +169,20 @@ func (operation *Operation) UnmarshalJSON(data []byte) error { + + type Parameters []*Parameter + ++var _ sort.Interface = Parameters{} ++ ++func (ps Parameters) Len() int { return len(ps) } ++func (ps Parameters) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] } ++func (ps Parameters) Less(i, j int) bool { ++ if ps[i].Name != ps[j].Name { ++ return ps[i].Name < ps[j].Name ++ } ++ if ps[i].In != ps[j].In { ++ return ps[i].In < ps[i].In ++ } ++ return ps[i].Ref < ps[j].Ref ++} ++ + type Parameter struct { + openapi3.ExtensionProps + Ref string `json:"$ref,omitempty"` +diff --git a/openapi2conv/openapi2_conv.go b/openapi2conv/openapi2_conv.go +index 42c4f6f..03a8802 100644 +--- a/openapi2conv/openapi2_conv.go ++++ b/openapi2conv/openapi2_conv.go +@@ -597,6 +597,7 @@ func FromV3Swagger(swagger *openapi3.Swagger) (*openapi2.Swagger, error) { + } + params = append(params, p) + } ++ sort.Sort(params) + result.Paths[path].Parameters = params + } + +@@ -922,6 +923,7 @@ func FromV3Operation(swagger *openapi3.Swagger, operation *openapi3.Operation) ( + result.Consumes = consumesToArray(consumes) + } + } ++ sort.Sort(result.Parameters) + + if responses := operation.Responses; responses != nil { + resultResponses, err := FromV3Responses(responses, &swagger.Components) +diff --git a/openapi2conv/openapi2_conv_test.go b/openapi2conv/openapi2_conv_test.go +index ad3a3e8..f284ba4 100644 +--- a/openapi2conv/openapi2_conv_test.go ++++ b/openapi2conv/openapi2_conv_test.go +@@ -46,609 +46,629 @@ func TestConvOpenAPIV2ToV3(t *testing.T) { + + const exampleV2 = ` + { +- "swagger": "2.0", +- "basePath": "/v2", +- "definitions": { +- "Error": { +- "description": "Error response.", +- "properties": { +- "message": { +- "type": "string" +- } +- }, +- "required": [ +- "message" +- ], +- "type": "object" +- }, +- "Item": { +- "additionalProperties": true, +- "properties": { +- "foo": { +- "type": "string" +- }, +- "quux": { +- "$ref": "#/definitions/ItemExtension" +- } +- }, +- "type": "object" +- }, +- "ItemExtension": { +- "description": "It could be anything.", +- "type": "boolean" +- } +- }, +- "externalDocs": { +- "description": "Example Documentation", +- "url": "https://example/doc/" +- }, +- "host": "test.example.com", +- "info": { +- "title": "MyAPI", +- "version": "0.1", +- "x-info": "info extension" +- }, +- "consumes": [ +- "application/json", +- "application/xml" +- ], +- "parameters": { +- "banana": { +- "in": "path", +- "name": "banana", +- "required": true, +- "type": "string" +- }, +- "put_body": { +- "in": "body", +- "name": "banana", +- "required": true, +- "schema": { +- "type": "string" +- }, +- "x-originalParamName":"banana" +- }, +- "post_form_ref": { +- "required": true, +- "description": "param description", +- "in": "formData", +- "name": "fileUpload2", +- "type": "file", +- "x-formData-name":"fileUpload2", +- "x-mimetype": "text/plain" +- } +- }, +- "paths": { +- "/another/{banana}/{id}": { +- "parameters": [ +- { +- "$ref": "#/parameters/banana" +- }, +- { +- "in": "path", +- "name": "id", +- "required": true, +- "type": "integer" +- } +- ] +- }, +- "/example": { +- "get": { +- "description": "example get", +- "responses": { +- "403": { +- "$ref": "#/responses/ForbiddenError" +- }, +- "404": { +- "description": "404 response" +- }, +- "default": { +- "description": "default response" +- } +- }, +- "x-operation": "operation extension 1" +- }, +- "delete": { +- "description": "example delete", +- "operationId": "example-delete", +- "parameters": [ +- { +- "in": "query", +- "name": "x", +- "type": "string", +- "x-parameter": "parameter extension 1" +- }, +- { +- "default": 250, +- "description": "The y parameter", +- "in": "query", +- "maximum": 10000, +- "minimum": 1, +- "name": "y", +- "type": "integer" +- }, +- { +- "description": "Only return results that intersect the provided bounding box.", +- "in": "query", +- "items": { +- "type": "number" +- }, +- "maxItems": 4, +- "minItems": 4, +- "name": "bbox", +- "type": "array" +- } +- ], +- "responses": { +- "200": { +- "description": "ok", +- "schema": { +- "items": { +- "$ref": "#/definitions/Item" +- }, +- "type": "array" +- } +- }, +- "404": { +- "description": "404 response" +- }, +- "default": { +- "description": "default response", +- "x-response": "response extension 1" +- } +- }, +- "security": [ +- { +- "get_security_0": [ +- "scope0", +- "scope1" +- ], +- "get_security_1": [] +- } +- ], +- "summary": "example get", +- "tags": [ +- "Example" +- ] +- }, +- "head": { +- "description": "example head", +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "options": { +- "description": "example options", +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "patch": { +- "consumes": [ +- "application/json", +- "application/xml" +- ], +- "description": "example patch", +- "parameters": [ +- { +- "in": "body", +- "name": "patch_body", +- "schema": { +- "allOf": [{"$ref": "#/definitions/Item"}] +- }, +- "x-originalParamName":"patch_body", +- "x-requestBody": "requestbody extension 1" +- } +- ], +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "post": { +- "consumes": ["multipart/form-data"], +- "description": "example post", +- "parameters": [ +- { +- "description": "File Id", +- "in": "query", +- "name": "id", +- "type": "integer" +- }, +- { +- "description": "param description", +- "in": "formData", +- "name": "fileUpload", +- "type": "file", +- "x-formData-name":"fileUpload", +- "x-mimetype": "text/plain" +- }, +- { +- "description": "Description of file contents", +- "in": "formData", +- "name": "note", +- "type": "integer", +- "x-formData-name":"note" +- }, +- { +- "$ref": "#/parameters/post_form_ref" +- } +- ], +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "put": { +- "description": "example put", +- "parameters": [ +- { +- "$ref": "#/parameters/put_body" +- } +- ], +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "x-path": "path extension 1", +- "x-path2": "path extension 2" +- } +- }, +- "responses": { +- "ForbiddenError": { +- "description": "Insufficient permission to perform the requested action.", +- "schema": { +- "$ref": "#/definitions/Error" +- } +- } +- }, +- "schemes": [ +- "https" +- ], +- "security": [ +- { +- "default_security_0": [ +- "scope0", +- "scope1" +- ], +- "default_security_1": [] +- } +- ], +- "tags": [ +- { +- "description": "An example tag.", +- "name": "Example" +- } +- ], +- "x-root": "root extension 1", +- "x-root2": "root extension 2" ++ "basePath": "/v2", ++ "consumes": [ ++ "application/json", ++ "application/xml" ++ ], ++ "definitions": { ++ "Error": { ++ "description": "Error response.", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "required": [ ++ "message" ++ ], ++ "type": "object" ++ }, ++ "Item": { ++ "additionalProperties": true, ++ "properties": { ++ "foo": { ++ "type": "string" ++ }, ++ "quux": { ++ "$ref": "#/definitions/ItemExtension" ++ } ++ }, ++ "type": "object" ++ }, ++ "ItemExtension": { ++ "description": "It could be anything.", ++ "type": "boolean" ++ } ++ }, ++ "externalDocs": { ++ "description": "Example Documentation", ++ "url": "https://example/doc/" ++ }, ++ "host": "test.example.com", ++ "info": { ++ "title": "MyAPI", ++ "version": "0.1", ++ "x-info": "info extension" ++ }, ++ "parameters": { ++ "banana": { ++ "in": "path", ++ "name": "banana", ++ "required": true, ++ "type": "string" ++ }, ++ "post_form_ref": { ++ "description": "param description", ++ "in": "formData", ++ "name": "fileUpload2", ++ "required": true, ++ "type": "file", ++ "x-formData-name": "fileUpload2", ++ "x-mimetype": "text/plain" ++ }, ++ "put_body": { ++ "in": "body", ++ "name": "banana", ++ "required": true, ++ "schema": { ++ "type": "string" ++ }, ++ "x-originalParamName": "banana" ++ } ++ }, ++ "paths": { ++ "/another/{banana}/{id}": { ++ "parameters": [ ++ { ++ "$ref": "#/parameters/banana" ++ }, ++ { ++ "in": "path", ++ "name": "id", ++ "required": true, ++ "type": "integer" ++ } ++ ] ++ }, ++ "/example": { ++ "delete": { ++ "description": "example delete", ++ "operationId": "example-delete", ++ "parameters": [ ++ { ++ "description": "Only return results that intersect the provided bounding box.", ++ "in": "query", ++ "items": { ++ "type": "number" ++ }, ++ "maxItems": 4, ++ "minItems": 4, ++ "name": "bbox", ++ "type": "array" ++ }, ++ { ++ "in": "query", ++ "name": "x", ++ "type": "string", ++ "x-parameter": "parameter extension 1" ++ }, ++ { ++ "default": 250, ++ "description": "The y parameter", ++ "in": "query", ++ "maximum": 10000, ++ "minimum": 1, ++ "name": "y", ++ "type": "integer" ++ } ++ ], ++ "responses": { ++ "200": { ++ "description": "ok", ++ "schema": { ++ "items": { ++ "$ref": "#/definitions/Item" ++ }, ++ "type": "array" ++ } ++ }, ++ "404": { ++ "description": "404 response" ++ }, ++ "default": { ++ "description": "default response", ++ "x-response": "response extension 1" ++ } ++ }, ++ "security": [ ++ { ++ "get_security_0": [ ++ "scope0", ++ "scope1" ++ ], ++ "get_security_1": [] ++ } ++ ], ++ "summary": "example get", ++ "tags": [ ++ "Example" ++ ] ++ }, ++ "get": { ++ "description": "example get", ++ "responses": { ++ "403": { ++ "$ref": "#/responses/ForbiddenError" ++ }, ++ "404": { ++ "description": "404 response" ++ }, ++ "default": { ++ "description": "default response" ++ } ++ }, ++ "x-operation": "operation extension 1" ++ }, ++ "head": { ++ "description": "example head", ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "options": { ++ "description": "example options", ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "patch": { ++ "consumes": [ ++ "application/json", ++ "application/xml" ++ ], ++ "description": "example patch", ++ "parameters": [ ++ { ++ "in": "body", ++ "name": "patch_body", ++ "schema": { ++ "allOf": [ ++ { ++ "$ref": "#/definitions/Item" ++ } ++ ] ++ }, ++ "x-originalParamName": "patch_body", ++ "x-requestBody": "requestbody extension 1" ++ } ++ ], ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "post": { ++ "consumes": [ ++ "multipart/form-data" ++ ], ++ "description": "example post", ++ "parameters": [ ++ { ++ "$ref": "#/parameters/post_form_ref" ++ }, ++ { ++ "description": "param description", ++ "in": "formData", ++ "name": "fileUpload", ++ "type": "file", ++ "x-formData-name": "fileUpload", ++ "x-mimetype": "text/plain" ++ }, ++ { ++ "description": "File Id", ++ "in": "query", ++ "name": "id", ++ "type": "integer" ++ }, ++ { ++ "description": "Description of file contents", ++ "in": "formData", ++ "name": "note", ++ "type": "integer", ++ "x-formData-name": "note" ++ } ++ ], ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "put": { ++ "description": "example put", ++ "parameters": [ ++ { ++ "$ref": "#/parameters/put_body" ++ } ++ ], ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "x-path": "path extension 1", ++ "x-path2": "path extension 2" ++ } ++ }, ++ "responses": { ++ "ForbiddenError": { ++ "description": "Insufficient permission to perform the requested action.", ++ "schema": { ++ "$ref": "#/definitions/Error" ++ } ++ } ++ }, ++ "schemes": [ ++ "https" ++ ], ++ "security": [ ++ { ++ "default_security_0": [ ++ "scope0", ++ "scope1" ++ ], ++ "default_security_1": [] ++ } ++ ], ++ "swagger": "2.0", ++ "tags": [ ++ { ++ "description": "An example tag.", ++ "name": "Example" ++ } ++ ], ++ "x-root": "root extension 1", ++ "x-root2": "root extension 2" + } + ` + + const exampleV3 = ` + { +- "components": { +- "parameters": { +- "banana": { +- "in": "path", +- "name": "banana", +- "required": true, +- "schema": { +- "type": "string" +- } +- } +- }, +- "requestBodies": { +- "put_body": { +- "content":{ +- "application/json": { +- "schema": { +- "type": "string" +- } +- }, +- "application/xml": { +- "schema": { +- "type": "string" +- } +- } +- }, +- "required": true, +- "x-originalParamName":"banana" +- } +- }, +- "responses": { +- "ForbiddenError": { +- "content": { +- "application/json": { +- "schema": { +- "$ref": "#/components/schemas/Error" +- } +- } +- }, +- "description": "Insufficient permission to perform the requested action." +- } +- }, +- "schemas": { +- "Error": { +- "description": "Error response.", +- "properties": { +- "message": { +- "type": "string" +- } +- }, +- "required": [ +- "message" +- ], +- "type": "object" +- }, +- "Item": { +- "additionalProperties": true, +- "properties": { +- "foo": { +- "type": "string" +- }, +- "quux": { +- "$ref": "#/components/schemas/ItemExtension" +- } +- }, +- "type": "object" +- }, +- "ItemExtension": { +- "type": "boolean", +- "description": "It could be anything." +- }, +- "post_form_ref": { +- "description": "param description", +- "format": "binary", +- "required": ["fileUpload2"], +- "type": "string", +- "x-formData-name": "fileUpload2", +- "x-mimetype":"text/plain" +- } +- } +- }, +- "externalDocs": { +- "description": "Example Documentation", +- "url": "https://example/doc/" +- }, +- "info": { +- "title": "MyAPI", +- "version": "0.1", +- "x-info": "info extension" +- }, +- "openapi": "3.0.3", +- "paths": { +- "/another/{banana}/{id}": { +- "parameters": [ +- { +- "$ref": "#/components/parameters/banana" +- }, +- { +- "in": "path", +- "name": "id", +- "required": true, +- "schema": { +- "type": "integer" +- } +- } +- ] +- }, +- "/example": { +- "get": { +- "description": "example get", +- "responses": { +- "403": { +- "$ref": "#/components/responses/ForbiddenError" +- }, +- "404": { +- "description": "404 response" +- }, +- "default": { +- "description": "default response" +- } +- }, +- "x-operation": "operation extension 1" +- }, +- "delete": { +- "description": "example delete", +- "operationId": "example-delete", +- "parameters": [ +- { +- "in": "query", +- "name": "x", +- "schema": {"type": "string"}, +- "x-parameter": "parameter extension 1" +- }, +- { +- "description": "The y parameter", +- "in": "query", +- "name": "y", +- "schema": { +- "default": 250, +- "maximum": 10000, +- "minimum": 1, +- "type": "integer" +- } +- }, +- { +- "description": "Only return results that intersect the provided bounding box.", +- "in": "query", +- "name": "bbox", +- "schema": { +- "items": { +- "type": "number" +- }, +- "maxItems": 4, +- "minItems": 4, +- "type": "array" +- } +- } +- ], +- "responses": { +- "200": { +- "content": { +- "application/json": { +- "schema": { +- "items": { +- "$ref": "#/components/schemas/Item" +- }, +- "type": "array" +- } +- } +- }, +- "description": "ok" +- }, +- "404": { +- "description": "404 response" +- }, +- "default": { +- "description": "default response", +- "x-response": "response extension 1" +- } +- }, +- "security": [ +- { +- "get_security_0": [ +- "scope0", +- "scope1" +- ], +- "get_security_1": [] +- } +- ], +- "summary": "example get", +- "tags": [ +- "Example" +- ] +- }, +- "head": { +- "description": "example head", +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "options": { +- "description": "example options", +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "patch": { +- "description": "example patch", +- "requestBody": { +- "content": { +- "application/json": { +- "schema": { +- "allOf": [{"$ref": "#/components/schemas/Item"}] +- } +- }, +- "application/xml": { +- "schema": { +- "allOf": [{"$ref": "#/components/schemas/Item"}] +- } +- } +- }, +- "x-originalParamName":"patch_body", +- "x-requestBody": "requestbody extension 1" +- }, +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "post": { +- "description": "example post", +- "parameters": [ +- { +- "description": "File Id", +- "in": "query", +- "name": "id", +- "schema": { +- "type": "integer" +- } +- } +- ], +- "requestBody": { +- "content": { +- "multipart/form-data": { +- "schema": { +- "properties": { +- "fileUpload": { +- "description": "param description", +- "type": "string", +- "format": "binary", +- "x-formData-name":"fileUpload", +- "x-mimetype": "text/plain" +- }, +- "note": { +- "description": "Description of file contents", +- "type": "integer", +- "x-formData-name": "note" +- }, +- "fileUpload2": { +- "$ref": "#/components/schemas/post_form_ref" +- } +- }, +- "required": ["fileUpload2"], +- "type": "object" +- } +- } +- } +- }, +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "put": { +- "description": "example put", +- "requestBody": { +- "$ref": "#/components/requestBodies/put_body" +- }, +- "responses": { +- "default": { +- "description": "default response" +- } +- } +- }, +- "x-path": "path extension 1", +- "x-path2": "path extension 2" +- } +- }, +- "security": [ +- { +- "default_security_0": [ +- "scope0", +- "scope1" +- ], +- "default_security_1": [] +- } +- ], +- "servers": [ +- { +- "url": "https://test.example.com/v2" +- } +- ], +- "tags": [ +- { +- "description": "An example tag.", +- "name": "Example" +- } +- ], +- "x-root": "root extension 1", +- "x-root2": "root extension 2" ++ "components": { ++ "parameters": { ++ "banana": { ++ "in": "path", ++ "name": "banana", ++ "required": true, ++ "schema": { ++ "type": "string" ++ } ++ } ++ }, ++ "requestBodies": { ++ "put_body": { ++ "content": { ++ "application/json": { ++ "schema": { ++ "type": "string" ++ } ++ }, ++ "application/xml": { ++ "schema": { ++ "type": "string" ++ } ++ } ++ }, ++ "required": true, ++ "x-originalParamName": "banana" ++ } ++ }, ++ "responses": { ++ "ForbiddenError": { ++ "content": { ++ "application/json": { ++ "schema": { ++ "$ref": "#/components/schemas/Error" ++ } ++ } ++ }, ++ "description": "Insufficient permission to perform the requested action." ++ } ++ }, ++ "schemas": { ++ "Error": { ++ "description": "Error response.", ++ "properties": { ++ "message": { ++ "type": "string" ++ } ++ }, ++ "required": [ ++ "message" ++ ], ++ "type": "object" ++ }, ++ "Item": { ++ "additionalProperties": true, ++ "properties": { ++ "foo": { ++ "type": "string" ++ }, ++ "quux": { ++ "$ref": "#/components/schemas/ItemExtension" ++ } ++ }, ++ "type": "object" ++ }, ++ "ItemExtension": { ++ "description": "It could be anything.", ++ "type": "boolean" ++ }, ++ "post_form_ref": { ++ "description": "param description", ++ "format": "binary", ++ "required": [ ++ "fileUpload2" ++ ], ++ "type": "string", ++ "x-formData-name": "fileUpload2", ++ "x-mimetype": "text/plain" ++ } ++ } ++ }, ++ "externalDocs": { ++ "description": "Example Documentation", ++ "url": "https://example/doc/" ++ }, ++ "info": { ++ "title": "MyAPI", ++ "version": "0.1", ++ "x-info": "info extension" ++ }, ++ "openapi": "3.0.3", ++ "paths": { ++ "/another/{banana}/{id}": { ++ "parameters": [ ++ { ++ "$ref": "#/components/parameters/banana" ++ }, ++ { ++ "in": "path", ++ "name": "id", ++ "required": true, ++ "schema": { ++ "type": "integer" ++ } ++ } ++ ] ++ }, ++ "/example": { ++ "delete": { ++ "description": "example delete", ++ "operationId": "example-delete", ++ "parameters": [ ++ { ++ "description": "Only return results that intersect the provided bounding box.", ++ "in": "query", ++ "name": "bbox", ++ "schema": { ++ "items": { ++ "type": "number" ++ }, ++ "maxItems": 4, ++ "minItems": 4, ++ "type": "array" ++ } ++ }, ++ { ++ "in": "query", ++ "name": "x", ++ "schema": { ++ "type": "string" ++ }, ++ "x-parameter": "parameter extension 1" ++ }, ++ { ++ "description": "The y parameter", ++ "in": "query", ++ "name": "y", ++ "schema": { ++ "default": 250, ++ "maximum": 10000, ++ "minimum": 1, ++ "type": "integer" ++ } ++ } ++ ], ++ "responses": { ++ "200": { ++ "content": { ++ "application/json": { ++ "schema": { ++ "items": { ++ "$ref": "#/components/schemas/Item" ++ }, ++ "type": "array" ++ } ++ } ++ }, ++ "description": "ok" ++ }, ++ "404": { ++ "description": "404 response" ++ }, ++ "default": { ++ "description": "default response", ++ "x-response": "response extension 1" ++ } ++ }, ++ "security": [ ++ { ++ "get_security_0": [ ++ "scope0", ++ "scope1" ++ ], ++ "get_security_1": [] ++ } ++ ], ++ "summary": "example get", ++ "tags": [ ++ "Example" ++ ] ++ }, ++ "get": { ++ "description": "example get", ++ "responses": { ++ "403": { ++ "$ref": "#/components/responses/ForbiddenError" ++ }, ++ "404": { ++ "description": "404 response" ++ }, ++ "default": { ++ "description": "default response" ++ } ++ }, ++ "x-operation": "operation extension 1" ++ }, ++ "head": { ++ "description": "example head", ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "options": { ++ "description": "example options", ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "patch": { ++ "description": "example patch", ++ "requestBody": { ++ "content": { ++ "application/json": { ++ "schema": { ++ "allOf": [ ++ { ++ "$ref": "#/components/schemas/Item" ++ } ++ ] ++ } ++ }, ++ "application/xml": { ++ "schema": { ++ "allOf": [ ++ { ++ "$ref": "#/components/schemas/Item" ++ } ++ ] ++ } ++ } ++ }, ++ "x-originalParamName": "patch_body", ++ "x-requestBody": "requestbody extension 1" ++ }, ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "post": { ++ "description": "example post", ++ "parameters": [ ++ { ++ "description": "File Id", ++ "in": "query", ++ "name": "id", ++ "schema": { ++ "type": "integer" ++ } ++ } ++ ], ++ "requestBody": { ++ "content": { ++ "multipart/form-data": { ++ "schema": { ++ "properties": { ++ "fileUpload": { ++ "description": "param description", ++ "format": "binary", ++ "type": "string", ++ "x-formData-name": "fileUpload", ++ "x-mimetype": "text/plain" ++ }, ++ "fileUpload2": { ++ "$ref": "#/components/schemas/post_form_ref" ++ }, ++ "note": { ++ "description": "Description of file contents", ++ "type": "integer", ++ "x-formData-name": "note" ++ } ++ }, ++ "required": [ ++ "fileUpload2" ++ ], ++ "type": "object" ++ } ++ } ++ } ++ }, ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "put": { ++ "description": "example put", ++ "requestBody": { ++ "$ref": "#/components/requestBodies/put_body" ++ }, ++ "responses": { ++ "default": { ++ "description": "default response" ++ } ++ } ++ }, ++ "x-path": "path extension 1", ++ "x-path2": "path extension 2" ++ } ++ }, ++ "security": [ ++ { ++ "default_security_0": [ ++ "scope0", ++ "scope1" ++ ], ++ "default_security_1": [] ++ } ++ ], ++ "servers": [ ++ { ++ "url": "https://test.example.com/v2" ++ } ++ ], ++ "tags": [ ++ { ++ "description": "An example tag.", ++ "name": "Example" ++ } ++ ], ++ "x-root": "root extension 1", ++ "x-root2": "root extension 2" + } + ` diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000000000000000000000000000000000000..e09b37fe99a9697e04518a8271d6d805ff2b6414 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +0001-make-2to3-more-deterministic.patch