From e46ba81b8c63ac1ad3091ea39bb5c77ad0e47773 Mon Sep 17 00:00:00 2001 From: Andres Sanchez Date: Wed, 27 Mar 2024 12:37:08 +0100 Subject: [PATCH] Fix issue found with pydantic dataclass arguments order --- .../security_scheme_oauth_client_credentials.py | 3 ++- .../security_scheme_oauth_password.py | 5 ++++- .../python/src/this_package/security_schemes.py | 4 ++-- .../security_schemes/security_scheme_petstore_auth.py | 3 ++- .../python/src/petstore_api/security_schemes.py | 4 ++-- .../components/security_schemes/security_scheme.hbs | 11 +++++++---- src/main/resources/python/security_schemes.hbs | 4 ++-- 7 files changed, 21 insertions(+), 13 deletions(-) diff --git a/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_client_credentials.py b/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_client_credentials.py index 128bf8ea9c7..58e376b65bc 100644 --- a/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_client_credentials.py +++ b/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_client_credentials.py @@ -27,8 +27,9 @@ class ClientCredentialsOauthFlow(security_schemes.ClientCredentialsOauthFlow): +@dataclasses.dataclass class OAuthFlows(security_schemes.OAuthFlows): - client_credentials: ClientCredentialsOauthFlow = ClientCredentialsOauthFlow() + client_credentials: ClientCredentialsOauthFlow @dataclasses.dataclass diff --git a/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_password.py b/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_password.py index e3ac5d6facb..3051817d55d 100644 --- a/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_password.py +++ b/samples/client/openapi_features/security/python/src/this_package/components/security_schemes/security_scheme_oauth_password.py @@ -12,6 +12,8 @@ @dataclasses.dataclass class PasswordOauthFlow(security_schemes.PasswordOauthFlow): + username: str + password: str token_url: parse.ParseResult = parse.ParseResult( scheme="https", netloc="petstore.swagger.io", @@ -26,8 +28,9 @@ class PasswordOauthFlow(security_schemes.PasswordOauthFlow): }) +@dataclasses.dataclass class OAuthFlows(security_schemes.OAuthFlows): - password : PasswordOauthFlow = PasswordOauthFlow() + password : PasswordOauthFlow @dataclasses.dataclass diff --git a/samples/client/openapi_features/security/python/src/this_package/security_schemes.py b/samples/client/openapi_features/security/python/src/this_package/security_schemes.py index 399806968ac..087c4668f36 100644 --- a/samples/client/openapi_features/security/python/src/this_package/security_schemes.py +++ b/samples/client/openapi_features/security/python/src/this_package/security_schemes.py @@ -237,10 +237,10 @@ def apply_auth( @dataclasses.dataclass class PasswordOauthFlow(OAuthFlowBase): - token_url: parse.ParseResult - scopes: typing.Dict[str, str] username: str password: str + token_url: parse.ParseResult + scopes: typing.Dict[str, str] refresh_url: typing.Optional[str] = None _scope_names_to_client: typing.Dict[typing.Tuple[str, ...], requests_client.OAuth2Session] = dataclasses.field(default_factory=dict) _scope_names_to_token: typing.Dict[typing.Tuple[str, ...], OauthToken] = dataclasses.field(default_factory=dict) diff --git a/samples/client/petstore/python/src/petstore_api/components/security_schemes/security_scheme_petstore_auth.py b/samples/client/petstore/python/src/petstore_api/components/security_schemes/security_scheme_petstore_auth.py index 259401c6412..053910215a3 100644 --- a/samples/client/petstore/python/src/petstore_api/components/security_schemes/security_scheme_petstore_auth.py +++ b/samples/client/petstore/python/src/petstore_api/components/security_schemes/security_scheme_petstore_auth.py @@ -26,8 +26,9 @@ class ImplicitOAuthFlow(security_schemes.ImplicitOAuthFlow): }) +@dataclasses.dataclass class OAuthFlows(security_schemes.OAuthFlows): - implicit : ImplicitOAuthFlow = ImplicitOAuthFlow() + implicit : ImplicitOAuthFlow @dataclasses.dataclass diff --git a/samples/client/petstore/python/src/petstore_api/security_schemes.py b/samples/client/petstore/python/src/petstore_api/security_schemes.py index d8427195190..6803d6f6273 100644 --- a/samples/client/petstore/python/src/petstore_api/security_schemes.py +++ b/samples/client/petstore/python/src/petstore_api/security_schemes.py @@ -260,10 +260,10 @@ def apply_auth( @dataclasses.dataclass class PasswordOauthFlow(OAuthFlowBase): - token_url: parse.ParseResult - scopes: typing.Dict[str, str] username: str password: str + token_url: parse.ParseResult + scopes: typing.Dict[str, str] refresh_url: typing.Optional[str] = None _scope_names_to_client: typing.Dict[typing.Tuple[str, ...], requests_client.OAuth2Session] = dataclasses.field(default_factory=dict) _scope_names_to_token: typing.Dict[typing.Tuple[str, ...], OauthToken] = dataclasses.field(default_factory=dict) diff --git a/src/main/resources/python/components/security_schemes/security_scheme.hbs b/src/main/resources/python/components/security_schemes/security_scheme.hbs index 51aad29aaf3..571b7713ffe 100644 --- a/src/main/resources/python/components/security_schemes/security_scheme.hbs +++ b/src/main/resources/python/components/security_schemes/security_scheme.hbs @@ -97,6 +97,8 @@ class ImplicitOAuthFlow(security_schemes.ImplicitOAuthFlow): @dataclasses.dataclass class PasswordOauthFlow(security_schemes.PasswordOauthFlow): + username: str + password: str token_url: parse.ParseResult = parse.ParseResult( {{#with tokenUrl}} scheme="{{getProtocol}}", @@ -178,19 +180,20 @@ class AuthorizationCodeOauthFlow(security_schemes.AuthorizationCodeOauthFlow): {{/with}} +@dataclasses.dataclass class OAuthFlows(security_schemes.OAuthFlows): {{#with flows}} {{#if password}} - password : PasswordOauthFlow = PasswordOauthFlow() + password : PasswordOauthFlow {{/if}} {{#if implicit}} - implicit : ImplicitOAuthFlow = ImplicitOAuthFlow() + implicit : ImplicitOAuthFlow {{/if}} {{#if clientCredentials}} - client_credentials: ClientCredentialsOauthFlow = ClientCredentialsOauthFlow() + client_credentials: ClientCredentialsOauthFlow {{/if}} {{#if authorizationCode}} - authorization_code: AuthorizationCodeOauthFlow = AuthorizationCodeOauthFlow() + authorization_code: AuthorizationCodeOauthFlow {{/if}} {{/with}} diff --git a/src/main/resources/python/security_schemes.hbs b/src/main/resources/python/security_schemes.hbs index 24edae880a2..c33151a27c7 100644 --- a/src/main/resources/python/security_schemes.hbs +++ b/src/main/resources/python/security_schemes.hbs @@ -280,10 +280,10 @@ class ImplicitOAuthFlow(OAuthFlowBase): @dataclasses.dataclass class PasswordOauthFlow(OAuthFlowBase): - token_url: parse.ParseResult - scopes: typing.Dict[str, str] username: str password: str + token_url: parse.ParseResult + scopes: typing.Dict[str, str] refresh_url: typing.Optional[str] = None _scope_names_to_client: typing.Dict[typing.Tuple[str, ...], requests_client.OAuth2Session] = dataclasses.field(default_factory=dict) _scope_names_to_token: typing.Dict[typing.Tuple[str, ...], OauthToken] = dataclasses.field(default_factory=dict)