[python-pydantic-v1] Fix bug in serialization for SecretStr by applying changes from #18023 (#20102)

* Apply changes of #18023

* Regenerate samples

---------

Co-authored-by: tweber2 <tim.weber@vector.com>
This commit is contained in:
Tim 2024-11-16 14:48:11 +01:00 committed by GitHub
parent 7087104741
commit 66908020e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 32 additions and 4 deletions

View File

@ -15,6 +15,7 @@ import re
import tempfile import tempfile
from urllib.parse import quote from urllib.parse import quote
from pydantic import SecretStr
{{#tornado}} {{#tornado}}
import tornado.gen import tornado.gen
{{/tornado}} {{/tornado}}
@ -285,6 +286,7 @@ class ApiClient:
"""Builds a JSON POST object. """Builds a JSON POST object.
If obj is None, return None. If obj is None, return None.
If obj is SecretStr, return obj.get_secret_value()
If obj is str, int, long, float, bool, return directly. If obj is str, int, long, float, bool, return directly.
If obj is datetime.datetime, datetime.date If obj is datetime.datetime, datetime.date
convert to string in iso8601 format. convert to string in iso8601 format.
@ -297,6 +299,8 @@ class ApiClient:
""" """
if obj is None: if obj is None:
return None return None
elif isinstance(obj, SecretStr):
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES): elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj return obj
elif isinstance(obj, list): elif isinstance(obj, list):
@ -316,7 +320,10 @@ class ApiClient:
# and attributes which value is not None. # and attributes which value is not None.
# Convert attribute name to json key in # Convert attribute name to json key in
# model definition for request. # model definition for request.
obj_dict = obj.to_dict() if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
obj_dict = obj.to_dict()
else:
obj_dict = obj.__dict__
return {key: self.sanitize_for_serialization(val) return {key: self.sanitize_for_serialization(val)
for key, val in obj_dict.items()} for key, val in obj_dict.items()}

View File

@ -24,6 +24,7 @@ import re
import tempfile import tempfile
from urllib.parse import quote from urllib.parse import quote
from pydantic import SecretStr
from openapi_client.configuration import Configuration from openapi_client.configuration import Configuration
from openapi_client.api_response import ApiResponse from openapi_client.api_response import ApiResponse
@ -261,6 +262,7 @@ class ApiClient:
"""Builds a JSON POST object. """Builds a JSON POST object.
If obj is None, return None. If obj is None, return None.
If obj is SecretStr, return obj.get_secret_value()
If obj is str, int, long, float, bool, return directly. If obj is str, int, long, float, bool, return directly.
If obj is datetime.datetime, datetime.date If obj is datetime.datetime, datetime.date
convert to string in iso8601 format. convert to string in iso8601 format.
@ -273,6 +275,8 @@ class ApiClient:
""" """
if obj is None: if obj is None:
return None return None
elif isinstance(obj, SecretStr):
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES): elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj return obj
elif isinstance(obj, list): elif isinstance(obj, list):
@ -292,7 +296,10 @@ class ApiClient:
# and attributes which value is not None. # and attributes which value is not None.
# Convert attribute name to json key in # Convert attribute name to json key in
# model definition for request. # model definition for request.
obj_dict = obj.to_dict() if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
obj_dict = obj.to_dict()
else:
obj_dict = obj.__dict__
return {key: self.sanitize_for_serialization(val) return {key: self.sanitize_for_serialization(val)
for key, val in obj_dict.items()} for key, val in obj_dict.items()}

View File

@ -22,6 +22,7 @@ import re
import tempfile import tempfile
from urllib.parse import quote from urllib.parse import quote
from pydantic import SecretStr
from petstore_api.configuration import Configuration from petstore_api.configuration import Configuration
from petstore_api.api_response import ApiResponse from petstore_api.api_response import ApiResponse
@ -241,6 +242,7 @@ class ApiClient:
"""Builds a JSON POST object. """Builds a JSON POST object.
If obj is None, return None. If obj is None, return None.
If obj is SecretStr, return obj.get_secret_value()
If obj is str, int, long, float, bool, return directly. If obj is str, int, long, float, bool, return directly.
If obj is datetime.datetime, datetime.date If obj is datetime.datetime, datetime.date
convert to string in iso8601 format. convert to string in iso8601 format.
@ -253,6 +255,8 @@ class ApiClient:
""" """
if obj is None: if obj is None:
return None return None
elif isinstance(obj, SecretStr):
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES): elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj return obj
elif isinstance(obj, list): elif isinstance(obj, list):
@ -272,7 +276,10 @@ class ApiClient:
# and attributes which value is not None. # and attributes which value is not None.
# Convert attribute name to json key in # Convert attribute name to json key in
# model definition for request. # model definition for request.
obj_dict = obj.to_dict() if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
obj_dict = obj.to_dict()
else:
obj_dict = obj.__dict__
return {key: self.sanitize_for_serialization(val) return {key: self.sanitize_for_serialization(val)
for key, val in obj_dict.items()} for key, val in obj_dict.items()}

View File

@ -23,6 +23,7 @@ import re
import tempfile import tempfile
from urllib.parse import quote from urllib.parse import quote
from pydantic import SecretStr
from petstore_api.configuration import Configuration from petstore_api.configuration import Configuration
from petstore_api.api_response import ApiResponse from petstore_api.api_response import ApiResponse
@ -260,6 +261,7 @@ class ApiClient:
"""Builds a JSON POST object. """Builds a JSON POST object.
If obj is None, return None. If obj is None, return None.
If obj is SecretStr, return obj.get_secret_value()
If obj is str, int, long, float, bool, return directly. If obj is str, int, long, float, bool, return directly.
If obj is datetime.datetime, datetime.date If obj is datetime.datetime, datetime.date
convert to string in iso8601 format. convert to string in iso8601 format.
@ -272,6 +274,8 @@ class ApiClient:
""" """
if obj is None: if obj is None:
return None return None
elif isinstance(obj, SecretStr):
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES): elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj return obj
elif isinstance(obj, list): elif isinstance(obj, list):
@ -291,7 +295,10 @@ class ApiClient:
# and attributes which value is not None. # and attributes which value is not None.
# Convert attribute name to json key in # Convert attribute name to json key in
# model definition for request. # model definition for request.
obj_dict = obj.to_dict() if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
obj_dict = obj.to_dict()
else:
obj_dict = obj.__dict__
return {key: self.sanitize_for_serialization(val) return {key: self.sanitize_for_serialization(val)
for key, val in obj_dict.items()} for key, val in obj_dict.items()}