Skip to content

Fix precedence related logic issue #87

@oxesoft

Description

@oxesoft

high

The current logic for generating method signatures does not ensure that required parameters precede optional ones. In Python, non-default arguments must come before default arguments. If body is optional (required=False) but a subsequent parameter (like a path parameter) is required, the generated code will raise a SyntaxError. This issue also exists in _generate_async_method and _generate_sync_method.

        # Generate method signature
        req_sig, opt_sig = [], []
        if body_info:
            if body_info["required"]:
                req_sig.append(f"body: {body_info['type']}")
            else:
                opt_sig.append(f"body: {body_info['type']} | None = None")
        for p in params:
            type_hint = f"{p['type']} | None" if not p["required"] else p["type"]
            if p["required"]:
                req_sig.append(f"{p['name']}: {type_hint}")
            else:
                opt_sig.append(f"{p['name']}: {type_hint} = None")
        sig_params_str = ", ".join(req_sig + opt_sig)

Originally posted by @gemini-code-assist[bot] in #86 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions