Skip to content

Commit 5bec8c8

Browse files
committed
Resolve lazy_object_proxy for PyVirtualEnvOperator
1 parent b96191f commit 5bec8c8

File tree

1 file changed

+13
-1
lines changed
  • providers/standard/src/airflow/providers/standard/operators

1 file changed

+13
-1
lines changed

providers/standard/src/airflow/providers/standard/operators/python.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,9 +495,21 @@ def get_python_source(self):
495495
return textwrap.dedent(inspect.getsource(self.python_callable))
496496

497497
def _write_args(self, file: Path):
498+
def resolve_proxies(obj):
499+
"""Recursively replaces lazy_object_proxy.Proxy instances with their resolved values."""
500+
if isinstance(obj, lazy_object_proxy.Proxy):
501+
return obj.__wrapped__ # force evaluation
502+
if isinstance(obj, dict):
503+
return {k: resolve_proxies(v) for k, v in obj.items()}
504+
if isinstance(obj, list):
505+
return [resolve_proxies(v) for v in obj]
506+
return obj
507+
498508
if self.op_args or self.op_kwargs:
499509
self.log.info("Use %r as serializer.", self.serializer)
500-
file.write_bytes(self.pickling_library.dumps({"args": self.op_args, "kwargs": self.op_kwargs}))
510+
file.write_bytes(
511+
self.pickling_library.dumps({"args": self.op_args, "kwargs": resolve_proxies(self.op_kwargs)})
512+
)
501513

502514
def _write_string_args(self, file: Path):
503515
file.write_text("\n".join(map(str, self.string_args)))

0 commit comments

Comments
 (0)