# Documentation for the python Generator

## #METADATA

Property | Value | Notes
--- | --- | ---
generator name | python | 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 | 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 |

## #CONFIG OPTIONS

These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to configuration docs for more details.

Option | Description | Values | Default
--- | --- | --- | ---
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
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

Type/Alias | Imports
--- | ---

## #INSTANTIATION TYPES

Type/Alias | Instantiated By
--- | ---
map | dict

## #LANGUAGE PRIMITIVES

- bool
- bytes
- date
- datetime
- dict
- file
- file_type
- float
- int
- list
- none_type
- object
- str

## #RESERVED WORDS

- all_params
- and
- as
- assert
- async
- auth_settings
- await
- body_params
- bool
- break
- class
- continue
- def
- del
- dict
- elif
- else
- except
- exec
- false
- file_type
- finally
- float
- for
- form_params
- from
- frozendict
- global
- header_params
- if
- import
- in
- int
- is
- lambda
- list
- local_var_files
- none
- none_type
- nonlocal
- not
- or
- pass
- path_params
- print
- property
- query_params
- raise
- resource_path
- return
- self
- str
- true
- try
- tuple
- while
- with
- yield

## #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

Edit this page
Last updated on 2022-11-1 by William Cheng

- METADATA
- CONFIG OPTIONS
- IMPORT MAPPING
- INSTANTIATION TYPES
- LANGUAGE PRIMITIVES
- RESERVED WORDS
- FEATURE SET
  - Client Modification Feature
  - Data Type Feature
  - Documentation Feature
  - Global Feature
  - Parameter Feature
  - Schema Support Feature
  - Security Feature
  - Wire Format Feature