diff --git a/openapi_python_client/parser/properties/__init__.py b/openapi_python_client/parser/properties/__init__.py index f434bca61..a609cad82 100644 --- a/openapi_python_client/parser/properties/__init__.py +++ b/openapi_python_client/parser/properties/__init__.py @@ -303,7 +303,7 @@ def _string_based_property( ) -> Union[StringProperty, DateProperty, DateTimeProperty, FileProperty]: """Construct a Property from the type "string" """ string_format = data.schema_format - python_name = utils.PythonIdentifier(value=name, prefix=config.field_prefix) + python_name = utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False) if string_format == "date-time": return DateTimeProperty( name=name, @@ -395,7 +395,7 @@ def build_enum_property( required=required, nullable=False, default="None", - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=None, example=None, ), @@ -423,7 +423,7 @@ def build_enum_property( values=values, value_type=value_type, default=None, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=data.description, example=data.example, ) @@ -503,7 +503,7 @@ def build_union_property( default=default, inner_properties=sub_properties, nullable=data.nullable, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=data.description, example=data.example, ), @@ -559,7 +559,7 @@ def build_list_property( default=None, inner_property=inner_prop, nullable=data.nullable, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=data.description, example=data.example, ), @@ -587,7 +587,7 @@ def _property_from_ref( existing, required=required, name=name, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), ) if parent: prop = evolve(prop, nullable=parent.nullable) @@ -648,7 +648,7 @@ def _property_from_data( # noqa: PLR0911 default=convert("float", data.default), required=required, nullable=data.nullable, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=data.description, example=data.example, ), @@ -661,7 +661,7 @@ def _property_from_data( # noqa: PLR0911 default=convert("int", data.default), required=required, nullable=data.nullable, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=data.description, example=data.example, ), @@ -674,7 +674,7 @@ def _property_from_data( # noqa: PLR0911 required=required, default=convert("bool", data.default), nullable=data.nullable, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=data.description, example=data.example, ), @@ -708,7 +708,7 @@ def _property_from_data( # noqa: PLR0911 required=required, nullable=False, default=None, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), description=data.description, example=data.example, ), diff --git a/openapi_python_client/parser/properties/model_property.py b/openapi_python_client/parser/properties/model_property.py index 28fb00b29..23e4d88e6 100644 --- a/openapi_python_client/parser/properties/model_property.py +++ b/openapi_python_client/parser/properties/model_property.py @@ -433,7 +433,7 @@ def build_model_property( nullable=data.nullable, required=required, name=name, - python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix), + python_name=utils.PythonIdentifier(value=name, prefix=config.field_prefix, use_snake_case=False), example=data.example, ) if class_info.name in schemas.classes_by_name: diff --git a/openapi_python_client/parser/properties/property.py b/openapi_python_client/parser/properties/property.py index d00826b73..e7138ad09 100644 --- a/openapi_python_client/parser/properties/property.py +++ b/openapi_python_client/parser/properties/property.py @@ -63,7 +63,7 @@ def set_python_name(self, new_name: str, config: Config) -> None: `new_name` will be validated before it is set, so `python_name` is not guaranteed to equal `new_name` after calling this. """ - object.__setattr__(self, "python_name", PythonIdentifier(value=new_name, prefix=config.field_prefix)) + object.__setattr__(self, "python_name", PythonIdentifier(value=new_name, prefix=config.field_prefix, use_snake_case=False)) def get_base_type_string(self, *, quoted: bool = False) -> str: """Get the string describing the Python type of this property. Base types no require quoting.""" diff --git a/openapi_python_client/utils.py b/openapi_python_client/utils.py index ea19622c4..7ea98dab2 100644 --- a/openapi_python_client/utils.py +++ b/openapi_python_client/utils.py @@ -12,8 +12,10 @@ class PythonIdentifier(str): """A snake_case string which has been validated / transformed into a valid identifier for Python""" - def __new__(cls, value: str, prefix: str) -> PythonIdentifier: - new_value = fix_reserved_words(snake_case(sanitize(value))) + def __new__(cls, value: str, prefix: str, use_snake_case=True) -> PythonIdentifier: + new_value = fix_reserved_words(sanitize(value)) + if use_snake_case: + new_value = snake_case(new_value) if not new_value.isidentifier() or value.startswith("_"): new_value = f"{prefix}{new_value}"