Skip to content

OneOf with list isn't producing Python valid syntax #639

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jsciame opened this issue Jun 24, 2022 · 1 comment
Closed

OneOf with list isn't producing Python valid syntax #639

jsciame opened this issue Jun 24, 2022 · 1 comment
Labels
🐞bug Something isn't working

Comments

@jsciame
Copy link

jsciame commented Jun 24, 2022

Describe the bug
I have an open api schema that I'm attempting to generate a client for. The open api schema has a oneOf block where it has a mix of type is a string or a list of strings. When I create a client with the oneOf, I get invalid syntax Python.

"message": { "oneOf": [ { "type": "string" }, { "type": "array", "items": { "type": "string" } } ]

`def to_dict(self) -> Dict[str, Any]:
status_code = self.status_code
error = self.error

    elif isinstance(self.message, list):
        message = self.message

    else:
        message = self.message

    path = self.path
    timestamp = self.timestamp

    field_dict: Dict[str, Any] = {}
    field_dict.update(self.additional_properties)
    field_dict.update({
        "statusCode": status_code,
        "error": error,
        "message": message,
        "path": path,
        "timestamp": timestamp,
    })

    return field_dict`

To Reproduce
Steps to reproduce the behavior:
openapi-python-client generate --path openapi/openapi.json
Updating gcs_delivery_api_client
Error(s) encountered while generating, client was not created

black failed
reformatted gcs_delivery_api_client/init.py
reformatted gcs_delivery_api_client/api/init.py
reformatted gcs_delivery_api_client/models/deliverable_details_dto_residence.py
reformatted gcs_delivery_api_client/api/ping/ping.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_additional_audio_code.py
reformatted gcs_delivery_api_client/models/deliverable_dto_latest_delivery_status.py
reformatted gcs_delivery_api_client/client.py
reformatted gcs_delivery_api_client/api/health/health_controller_check.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_captions_timecode_type.py
reformatted gcs_delivery_api_client/api/status/status_controller_get_status.py
reformatted gcs_delivery_api_client/models/deliverable_details_dto.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_captions_video_format.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_details_dto_residence.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_audio_track_code.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_additional_audio_language.py
reformatted gcs_delivery_api_client/models/aws_s3_upload_delivery_method_details_dto.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto_cut_type.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto_credit_status.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto_uhd.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto_material_type.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto_timecode_type.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_audio_track_language.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_additional_audio.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto_video_format.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_captions_language.py
error: cannot format gcs_delivery_api_client/models/error_response_bad_request.py: Cannot parse: 32:8: elif isinstance(self.message, list):
reformatted gcs_delivery_api_client/models/deliverable_metadata_audio_track.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_details_dto.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto_language.py
reformatted gcs_delivery_api_client/api/projects/get_projects.py
reformatted gcs_delivery_api_client/models/delivery_replacement_dto.py
reformatted gcs_delivery_api_client/models/error_response_forbidden_message.py
reformatted gcs_delivery_api_client/models/deliverable_dto.py
reformatted gcs_delivery_api_client/models/error_response_internal_server_error_message.py
reformatted gcs_delivery_api_client/api/deliveries/initiate_deliveries.py
reformatted gcs_delivery_api_client/models/error_response_not_found_message.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_captions.py
reformatted gcs_delivery_api_client/models/delivery_initiation_request_dto.py
reformatted gcs_delivery_api_client/models/error_response_service_unavailable.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_dto.py
reformatted gcs_delivery_api_client/models/error_response_forbidden.py
reformatted gcs_delivery_api_client/models/delivery_initiation_request_entry_dto.py
reformatted gcs_delivery_api_client/models/error_response_internal_server_error.py
reformatted gcs_delivery_api_client/models/deliverable_metadata_segment.py
reformatted gcs_delivery_api_client/models/error_response_not_found.py
reformatted gcs_delivery_api_client/api/deliverables/get_deliverables_by_project.py
reformatted gcs_delivery_api_client/models/get_deliverables_by_project_statuses_item.py
reformatted gcs_delivery_api_client/models/error_response_service_unavailable_message.py
reformatted gcs_delivery_api_client/models/error_response_unauthorized_message.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_200_info.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_200_details_additional_property.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_200_details.py
reformatted gcs_delivery_api_client/models/get_deliverables_response_dto.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_200_info_additional_property.py
reformatted gcs_delivery_api_client/models/get_projects_response_dto.py
reformatted gcs_delivery_api_client/models/initiate_delivery_for_aws_s3_upload_response_dto_status.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_200_error_additional_property.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_503_details.py
reformatted gcs_delivery_api_client/models/initiate_delivery_for_signiant_flight_cli_response_dto_status.py
reformatted gcs_delivery_api_client/models/initiated_delivery_result_dto_status.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_200_error.py
reformatted gcs_delivery_api_client/models/error_response_unauthorized.py
reformatted gcs_delivery_api_client/models/replacement_category_name.py
reformatted gcs_delivery_api_client/models/requested_delivery_method_dto_method.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_503_details_additional_property.py
reformatted gcs_delivery_api_client/models/status_check_result_status.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_503_error.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_503_info.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_503_error_additional_property.py
reformatted gcs_delivery_api_client/types.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_503_info_additional_property.py
reformatted gcs_delivery_api_client/models/project_dto.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_200.py
reformatted gcs_delivery_api_client/models/status_check_result.py
reformatted gcs_delivery_api_client/models/timecode_slot.py
reformatted gcs_delivery_api_client/models/health_controller_check_response_503.py
reformatted gcs_delivery_api_client/models/signiant_flight_delivery_method_details_dto.py
reformatted gcs_delivery_api_client/models/requested_delivery_method_dto.py
reformatted gcs_delivery_api_client/models/initiate_delivery_for_aws_s3_upload_response_dto.py
reformatted gcs_delivery_api_client/models/initiate_delivery_for_signiant_flight_cli_response_dto.py
reformatted gcs_delivery_api_client/models/initiated_delivery_result_dto.py

Oh no! 💥 💔 💥
80 files reformatted, 7 files left unchanged, 1 file failed to reformat.

Expected behavior
Generate a proper open api python code. you can see the existing code as an elif instead of an if elif or an if else.

Desktop (please complete the following information):

  • OS: macOS 10.15.7
  • Python Version: 3.9.1
  • openapi-python-client version 0.11.1
@jsciame jsciame added the 🐞bug Something isn't working label Jun 24, 2022
@dbanty
Copy link
Collaborator

dbanty commented Jul 2, 2022

I believe this is a duplicate of #603 but please re-open if I'm wrong.

@dbanty dbanty closed this as completed Jul 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants