Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion generate/templates/async_function.py.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
{% endif %}

if not response.is_success:
from ..response_helpers import raise_for_status
from kittycad.response_helpers import raise_for_status
raise_for_status(response)

{% if response_type and response_type != "" %}
Expand Down
6 changes: 3 additions & 3 deletions generate/templates/shared_macros.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,9 @@

Args:
response_type: Expected response type for deserialization
import_path: Import path for raise_for_status (default: ..response_helpers)
import_path: Import path for raise_for_status (default: kittycad.response_helpers)
#}
{% macro parse_response(response_type, import_path="..response_helpers") -%}
{% macro parse_response(response_type, import_path="kittycad.response_helpers") -%}
if not response.is_success:
from {{ import_path }} import raise_for_status
raise_for_status(response)
Expand Down Expand Up @@ -208,4 +208,4 @@
{% else %}
return ws_connect(url, additional_headers=headers)
{% endif %}
{%- endmacro %}
{%- endmacro %}
2 changes: 1 addition & 1 deletion generate/templates/sync_function.py.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
{% endif %}

if not response.is_success:
from ..response_helpers import raise_for_status
from kittycad.response_helpers import raise_for_status
raise_for_status(response)

{% if response_type and response_type != "" %}
Expand Down
14 changes: 14 additions & 0 deletions generate/tests/test_generator_patterns.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,20 @@
from kittycad.pagination import AsyncPageIterator, SyncPageIterator


class TestResponseHelperImports:
"""Ensure generated clients import response helpers from valid module paths."""

def test_client_uses_package_scoped_response_helper_imports(self):
import kittycad

client_file = Path(kittycad.__file__)
content = client_file.read_text()

# The generator should never emit parent-relative imports in the package root.
assert "..response_helpers" not in content
assert "from kittycad.response_helpers import raise_for_status" in content


class TestMultipartEndpoints:
"""Test multipart endpoints produce upload_* with file: SyncUpload, correct multipart code."""

Expand Down
Loading