diff --git a/.github/workflows/samples-python-nextgen-client-echo-api.yaml b/.github/workflows/samples-python-nextgen-client-echo-api.yaml index 6d267f923ac..29ea147eef1 100644 --- a/.github/workflows/samples-python-nextgen-client-echo-api.yaml +++ b/.github/workflows/samples-python-nextgen-client-echo-api.yaml @@ -3,10 +3,10 @@ name: Python Client (Echo API) on: push: paths: - - samples/client/echo_api/python-nextgen/** + - samples/client/echo_api/python/** pull_request: paths: - - samples/client/echo_api/python-nextgen/** + - samples/client/echo_api/python/** jobs: build: name: Test Python client @@ -16,7 +16,7 @@ jobs: matrix: sample: # clients - - samples/client/echo_api/python-nextgen + - samples/client/echo_api/python steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 diff --git a/bin/configs/python-aiohttp.yaml b/bin/configs/python-aiohttp.yaml index 2a10c592ae3..6bec6d585b6 100644 --- a/bin/configs/python-aiohttp.yaml +++ b/bin/configs/python-aiohttp.yaml @@ -1,4 +1,8 @@ -generatorName: python-aiohttp -outputDir: samples/server/petstore/python-aiohttp -inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml -templateDir: modules/openapi-generator/src/main/resources/python-aiohttp +generatorName: python +outputDir: samples/openapi3/client/petstore/python-aiohttp +inputSpec: modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml +templateDir: modules/openapi-generator/src/main/resources/python +library: asyncio +additionalProperties: + packageName: petstore_api + mapNumberTo: float diff --git a/bin/configs/python-nextgen-echo-api.yaml b/bin/configs/python-echo-api.yaml similarity index 68% rename from bin/configs/python-nextgen-echo-api.yaml rename to bin/configs/python-echo-api.yaml index b9eb1f91416..8c161951aca 100644 --- a/bin/configs/python-nextgen-echo-api.yaml +++ b/bin/configs/python-echo-api.yaml @@ -1,6 +1,6 @@ -generatorName: python-nextgen -outputDir: samples/client/echo_api/python-nextgen +generatorName: python +outputDir: samples/client/echo_api/python inputSpec: modules/openapi-generator/src/test/resources/3_0/echo_api.yaml -templateDir: modules/openapi-generator/src/main/resources/python-nextgen +templateDir: modules/openapi-generator/src/main/resources/python additionalProperties: hideGenerationTimestamp: "true" diff --git a/bin/configs/python-nextgen-aiohttp.yaml b/bin/configs/python-nextgen-aiohttp.yaml deleted file mode 100644 index 991d18a620e..00000000000 --- a/bin/configs/python-nextgen-aiohttp.yaml +++ /dev/null @@ -1,8 +0,0 @@ -generatorName: python-nextgen -outputDir: samples/openapi3/client/petstore/python-nextgen-aiohttp -inputSpec: modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml -templateDir: modules/openapi-generator/src/main/resources/python-nextgen -library: asyncio -additionalProperties: - packageName: petstore_api - mapNumberTo: float diff --git a/bin/configs/python-nextgen.yaml b/bin/configs/python.yaml similarity index 78% rename from bin/configs/python-nextgen.yaml rename to bin/configs/python.yaml index c3636e22a5d..2e93f8fc12b 100644 --- a/bin/configs/python-nextgen.yaml +++ b/bin/configs/python.yaml @@ -1,7 +1,7 @@ -generatorName: python-nextgen -outputDir: samples/openapi3/client/petstore/python-nextgen +generatorName: python +outputDir: samples/openapi3/client/petstore/python inputSpec: modules/openapi-generator/src/test/resources/3_0/python/petstore-with-fake-endpoints-models-for-testing.yaml -templateDir: modules/openapi-generator/src/main/resources/python-nextgen +templateDir: modules/openapi-generator/src/main/resources/python additionalProperties: packageName: petstore_api useOneOfDiscriminatorLookup: "true" diff --git a/docs/generators.md b/docs/generators.md index a2b0e2f2e18..ad8ee6fa062 100644 --- a/docs/generators.md +++ b/docs/generators.md @@ -52,7 +52,7 @@ The following generators are available: * [php](generators/php.md) * [php-dt (beta)](generators/php-dt.md) * [powershell (beta)](generators/powershell.md) -* [python-nextgen](generators/python-nextgen.md) +* [python](generators/python.md) * [r](generators/r.md) * [ruby](generators/ruby.md) * [rust](generators/rust.md) diff --git a/docs/generators/python-nextgen.md b/docs/generators/python-nextgen.md deleted file mode 100644 index 46fcbe79ab7..00000000000 --- a/docs/generators/python-nextgen.md +++ /dev/null @@ -1,230 +0,0 @@ ---- -title: Documentation for the python-nextgen Generator ---- - -## METADATA - -| Property | Value | Notes | -| -------- | ----- | ----- | -| generator name | python-nextgen | pass this to the generate command after -g | -| generator stability | STABLE | | -| generator type | CLIENT | | -| generator language | Python | | -| generator language version | 3.7+ | | -| generator default templating engine | mustache | | -| helpTxt | Generates a Python client library. | | - -## CONFIG OPTIONS -These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. - -| Option | Description | Values | Default | -| ------ | ----------- | ------ | ------- | -|dateFormat|date format for query parameters| |%Y-%m-%d| -|datetimeFormat|datetime format for query parameters| |%Y-%m-%dT%H:%M:%S%z| -|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true| -|generateSourceCodeOnly|Specifies that only a library source code is to be generated.| |false| -|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| -|library|library template (sub-template) to use: asyncio, tornado (deprecated), urllib3| |urllib3| -|mapNumberTo|Map number to Union[StrictFloat, StrictInt], StrictStr or float.| |Union[StrictFloat, StrictInt]| -|packageName|python package name (convention: snake_case).| |openapi_client| -|packageUrl|python package URL.| |null| -|packageVersion|python package version.| |1.0.0| -|projectName|python project name in setup.py (e.g. petstore-api).| |null| -|recursionLimit|Set the recursion limit. If not set, use the system default value.| |null| - -## IMPORT MAPPING - -| Type/Alias | Imports | -| ---------- | ------- | - - -## INSTANTIATION TYPES - -| Type/Alias | Instantiated By | -| ---------- | --------------- | - - -## LANGUAGE PRIMITIVES - - - -## RESERVED WORDS - - - -## FEATURE SET - - -### Client Modification Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|BasePath|✗|ToolingExtension -|Authorizations|✗|ToolingExtension -|UserAgent|✗|ToolingExtension -|MockServer|✗|ToolingExtension - -### Data Type Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Custom|✗|OAS2,OAS3 -|Int32|✓|OAS2,OAS3 -|Int64|✓|OAS2,OAS3 -|Float|✓|OAS2,OAS3 -|Double|✓|OAS2,OAS3 -|Decimal|✓|ToolingExtension -|String|✓|OAS2,OAS3 -|Byte|✓|OAS2,OAS3 -|Binary|✓|OAS2,OAS3 -|Boolean|✓|OAS2,OAS3 -|Date|✓|OAS2,OAS3 -|DateTime|✓|OAS2,OAS3 -|Password|✓|OAS2,OAS3 -|File|✓|OAS2 -|Uuid|✗| -|Array|✓|OAS2,OAS3 -|Null|✗|OAS3 -|AnyType|✗|OAS2,OAS3 -|Object|✓|OAS2,OAS3 -|Maps|✓|ToolingExtension -|CollectionFormat|✓|OAS2 -|CollectionFormatMulti|✓|OAS2 -|Enum|✓|OAS2,OAS3 -|ArrayOfEnum|✓|ToolingExtension -|ArrayOfModel|✓|ToolingExtension -|ArrayOfCollectionOfPrimitives|✓|ToolingExtension -|ArrayOfCollectionOfModel|✓|ToolingExtension -|ArrayOfCollectionOfEnum|✓|ToolingExtension -|MapOfEnum|✓|ToolingExtension -|MapOfModel|✓|ToolingExtension -|MapOfCollectionOfPrimitives|✓|ToolingExtension -|MapOfCollectionOfModel|✓|ToolingExtension -|MapOfCollectionOfEnum|✓|ToolingExtension - -### Documentation Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Readme|✓|ToolingExtension -|Model|✓|ToolingExtension -|Api|✓|ToolingExtension - -### Global Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Host|✓|OAS2,OAS3 -|BasePath|✓|OAS2,OAS3 -|Info|✓|OAS2,OAS3 -|Schemes|✗|OAS2,OAS3 -|PartialSchemes|✓|OAS2,OAS3 -|Consumes|✓|OAS2 -|Produces|✓|OAS2 -|ExternalDocumentation|✓|OAS2,OAS3 -|Examples|✓|OAS2,OAS3 -|XMLStructureDefinitions|✗|OAS2,OAS3 -|MultiServer|✗|OAS3 -|ParameterizedServer|✗|OAS3 -|ParameterStyling|✗|OAS3 -|Callbacks|✗|OAS3 -|LinkObjects|✗|OAS3 - -### Parameter Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Path|✓|OAS2,OAS3 -|Query|✓|OAS2,OAS3 -|Header|✓|OAS2,OAS3 -|Body|✓|OAS2 -|FormUnencoded|✓|OAS2 -|FormMultipart|✓|OAS2 -|Cookie|✗|OAS3 - -### Schema Support Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|Simple|✓|OAS2,OAS3 -|Composite|✓|OAS2,OAS3 -|Polymorphism|✓|OAS2,OAS3 -|Union|✗|OAS3 -|allOf|✓|OAS2,OAS3 -|anyOf|✓|OAS3 -|oneOf|✓|OAS3 -|not|✗|OAS3 - -### Security Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|BasicAuth|✓|OAS2,OAS3 -|ApiKey|✓|OAS2,OAS3 -|OpenIDConnect|✗|OAS3 -|BearerToken|✓|OAS3 -|OAuth2_Implicit|✓|OAS2,OAS3 -|OAuth2_Password|✗|OAS2,OAS3 -|OAuth2_ClientCredentials|✗|OAS2,OAS3 -|OAuth2_AuthorizationCode|✗|OAS2,OAS3 - -### Wire Format Feature -| Name | Supported | Defined By | -| ---- | --------- | ---------- | -|JSON|✓|OAS2,OAS3 -|XML|✓|OAS2,OAS3 -|PROTOBUF|✗|ToolingExtension -|Custom|✓|OAS2,OAS3 diff --git a/docs/generators/python.md b/docs/generators/python.md index b62d4af85bc..7b72cfde110 100644 --- a/docs/generators/python.md +++ b/docs/generators/python.md @@ -10,26 +10,27 @@ title: Documentation for the python Generator | generator stability | STABLE | | | generator type | CLIENT | | | generator language | Python | | -| generator language version | >=3.7 | | -| generator default templating engine | handlebars | | -| helpTxt | Generates a Python client library

Features in this generator:
- type hints on endpoints and model creation
- model parameter names use the spec defined keys and cases
- robust composition (oneOf/anyOf/allOf/not) where payload data is stored in one instance only
- endpoint parameter names use the spec defined keys and cases
- inline schemas are supported at any location including composition
- multiple content types supported in request body and response bodies
- run time type checking
- Sending/receiving decimals as strings supported with type:string format: number -> DecimalSchema
- Sending/receiving uuids as strings supported with type:string format: uuid -> UUIDSchema
- quicker load time for python modules (a single endpoint can be imported and used without loading others)
- all instances of schemas dynamically inherit from all matching schemas so one can use isinstance to check if validation passed
- composed schemas with type constraints supported (type:object + oneOf/anyOf/allOf)
- schemas are not coerced/cast. For example string + date are both stored as string, and there is a date accessor
- Exceptions: int/float is stored as Decimal, When receiving data from headers it will start as str and may need to be cast for example to int | | +| generator language version | 3.7+ | | +| generator default templating engine | mustache | | +| helpTxt | Generates a Python client library. | | ## CONFIG OPTIONS These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details. | Option | Description | Values | Default | | ------ | ----------- | ------ | ------- | +|dateFormat|date format for query parameters| |%Y-%m-%d| +|datetimeFormat|datetime format for query parameters| |%Y-%m-%dT%H:%M:%S%z| +|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true| |generateSourceCodeOnly|Specifies that only a library source code is to be generated.| |false| |hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true| -|library|library template (sub-template) to use: urllib3| |urllib3| -|nonCompliantUseDiscriminatorIfCompositionFails|When true, If the payload fails to validate against composed schemas (allOf/anyOf/oneOf/not) and a discriminator is present, then ignore the composition validation errors and attempt to use the discriminator to validate the payload.<br />Note: setting this to true makes the generated client not comply with json schema because it ignores composition validation errors. Please consider making your schemas more restrictive rather than setting this to true. You can do that by:<ul><li>defining the propertyName as an enum with only one value in the schemas that are in your discriminator map</li><li>setting additionalProperties: false in your schemas</li></ul>|
**true**
If composition fails and a discriminator exists, the composition errors will be ignored and validation will be attempted with the discriminator
**false**
Composition validation must succeed. Discriminator validation must succeed.
|false| +|library|library template (sub-template) to use: asyncio, tornado (deprecated), urllib3| |urllib3| +|mapNumberTo|Map number to Union[StrictFloat, StrictInt], StrictStr or float.| |Union[StrictFloat, StrictInt]| |packageName|python package name (convention: snake_case).| |openapi_client| |packageUrl|python package URL.| |null| |packageVersion|python package version.| |1.0.0| |projectName|python project name in setup.py (e.g. petstore-api).| |null| |recursionLimit|Set the recursion limit. If not set, use the system default value.| |null| -|useInlineModelResolver|use the inline model resolver, if true inline complex models will be extracted into components and $refs to them will be used| |false| -|useNose|use the nose test framework| |false| ## IMPORT MAPPING @@ -41,7 +42,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Type/Alias | Instantiated By | | ---------- | --------------- | -|map|dict| ## LANGUAGE PRIMITIVES @@ -50,12 +50,12 @@ These options may be applied as additional-properties (cli) or configOptions (pl
  • Dict
  • List
  • bool
  • +
  • bytearray
  • bytes
  • date
  • datetime
  • +
  • decimal.Decimal
  • dict
  • -
  • file
  • -
  • file_type
  • float
  • int
  • list
  • @@ -67,61 +67,46 @@ These options may be applied as additional-properties (cli) or configOptions (pl ## RESERVED WORDS