@@ -405,6 +405,7 @@ def __call__(self, *args: Any, **kwargs: Any) -> Any:
405405class _TargetConnectorContext :
406406 target_name : str
407407 spec : Any
408+ prepared_spec : Any
408409 key_decoder : Callable [[Any ], Any ]
409410 value_decoder : Callable [[Any ], Any ]
410411
@@ -515,9 +516,17 @@ def create_export_context(
515516 ["(value)" ], value_fields_schema , analyze_type_info (value_annotation )
516517 )
517518
519+ loaded_spec = _load_spec_from_engine (self ._spec_cls , spec )
520+ prepare_method = getattr (self ._connector_cls , "prepare" , None )
521+ if prepare_method is None :
522+ prepared_spec = loaded_spec
523+ else :
524+ prepared_spec = prepare_method (loaded_spec )
525+
518526 return _TargetConnectorContext (
519527 target_name = name ,
520- spec = _load_spec_from_engine (self ._spec_cls , spec ),
528+ spec = loaded_spec ,
529+ prepared_spec = prepared_spec ,
521530 key_decoder = key_decoder ,
522531 value_decoder = value_decoder ,
523532 )
@@ -557,7 +566,7 @@ def _decode_mutation(
557566 context : _TargetConnectorContext , mutation : list [tuple [Any , Any | None ]]
558567 ) -> tuple [Any , dict [Any , Any | None ]]:
559568 return (
560- context .spec ,
569+ context .prepared_spec ,
561570 {
562571 context .key_decoder (key ): (
563572 context .value_decoder (value ) if value is not None else None
0 commit comments