Skip to content

Commit 38f6e44

Browse files
committed
fix(xdr-generator): fix CIRCLE_IMPORT_UNION lazy import tracking in generator
1 parent 129de43 commit 38f6e44

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Release History
1010
- raise on unknown union discriminants in `unpack()`.
1111
- check for trailing data in `from_xdr_bytes()`.
1212
- add length validation for opaque/string in typedef and struct constructors.
13+
- fix `CIRCLE_IMPORT_UNION` lazy import tracking.
1314

1415
### Version 13.2.1
1516

xdr-generator/generator/generator.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,12 +157,12 @@ def __repr__(self):
157157
out.close
158158
end
159159

160-
def render_import(out, member, container_name)
160+
def render_import(out, member, container_name, track: true)
161161
member_type = type_string(member.type)
162162
return if is_base_type(member.type) || container_name == member_type
163163
return if @imported_types.include?(member_type)
164164

165-
@imported_types.add(member_type)
165+
@imported_types.add(member_type) if track
166166
out.puts "from .#{python_module_name(member_type)} import #{member_type}"
167167
end
168168

@@ -175,7 +175,9 @@ def render_union_arm_imports(out, union, union_name, render_import_in_func)
175175
out.puts "if TYPE_CHECKING:"
176176
out.indent(2) do
177177
non_void_arms(union).each do |arm|
178-
render_import(out, arm.declaration, union_name)
178+
# Don't track these imports so they can be re-emitted as runtime
179+
# imports inside the unpack method body.
180+
render_import(out, arm.declaration, union_name, track: false)
179181
end
180182
end
181183
return

0 commit comments

Comments
 (0)