def _make_reference_for_native(kernel, d): # Ugly delayed import here because I can't solve the cyclic # package dependency right now :(. from jsii._runtime import python_jsii_mapping if isinstance(d, dict): return {k: _make_reference_for_native(kernel, v) for k, v in d.items()} elif isinstance(d, list): return [_make_reference_for_native(kernel, i) for i in d] mapping = python_jsii_mapping(d) if mapping: struct_data = { jsii_name: getattr(d, python_name) for python_name, jsii_name in mapping.items() } return _make_reference_for_native(kernel, struct_data) elif hasattr(d, "__jsii_type__"): return d elif isinstance(d, (int, type(None), str, float, bool, datetime.datetime)): return d else: d.__jsii__type__ = "Object" kernel.create(Object, d) _reference_map.register_reference(d) return d
def _make_reference_for_native(kernel, d): # Ugly delayed import here because I can't solve the cyclic # package dependency right now :(. from jsii._runtime import python_jsii_mapping if isinstance(d, dict): return {k: _make_reference_for_native(kernel, v) for k, v in d.items()} elif isinstance(d, list): return [_make_reference_for_native(kernel, i) for i in d] mapping = python_jsii_mapping(d) if mapping: struct_data = { jsii_name: getattr(d, python_name) for python_name, jsii_name in mapping.items() } return _make_reference_for_native(kernel, struct_data) elif hasattr(d, "__jsii_type__"): return d elif isinstance(d, (int, type(None), str, float, bool, datetime.datetime)): return d elif isinstance( d, (FunctionType, MethodType, BuiltinFunctionType, LambdaType)): # Whether a given object is a function-like object. # We won't use iscallable() since objects may implement __call__() # but we still want to serialize them as normal. raise JSIIError( "Cannot pass function as argument here (did you mean to call this function?): %r" % d) else: d.__jsii__type__ = "Object" kernel.create(Object, d) _reference_map.register_reference(d) return d
def _make_reference_for_native(kernel, d): if isinstance(d, dict): return {"$jsii.map": {k: _make_reference_for_native(kernel, v) for k, v in d.items()}} elif isinstance(d, list): return [_make_reference_for_native(kernel, i) for i in d] if getattr(d, "__jsii_type__", None) is not None: # Ugly delayed import here because I can't solve the cyclic # package dependency right now :(. from jsii._runtime import python_jsii_mapping typeFqn = getattr(d, "__jsii_type__") mapping = python_jsii_mapping(d) if mapping: # This means we are handling a data_type (aka Struct) return { "$jsii.struct": { "fqn": typeFqn, "data": { jsii_name: _make_reference_for_native(kernel, getattr(d, python_name)) for python_name, jsii_name in mapping.items() } } } return d elif isinstance(d, (int, type(None), str, float, bool, datetime.datetime)): return d elif isinstance(d, (FunctionType, MethodType, BuiltinFunctionType, LambdaType)): # Whether a given object is a function-like object. # We won't use iscallable() since objects may implement __call__() # but we still want to serialize them as normal. raise JSIIError("Cannot pass function as argument here (did you mean to call this function?): %r" % d) else: kernel.create(d.__class__, d) _reference_map.register_reference(d) return d