@@ -121,7 +121,7 @@ class Operator:
121121
122122 """
123123
124- def __init__ (self , name , config = None , server = None ):
124+ def __init__ (self , name = None , operator = None , config = None , server = None ):
125125 """Initialize the operator with its name by connecting to a stub."""
126126 self .name = name
127127 self ._internal_obj = None
@@ -136,14 +136,32 @@ def __init__(self, name, config=None, server=None):
136136 # step 2: get api
137137 self ._api_instance = None # see _api property
138138
139- # step3: init environment
140- self ._api .init_operator_environment (self ) # creates stub when gRPC
141139
142- # step4: if object exists: take instance, else create it (server)
143- if self ._server .has_client ():
144- self ._internal_obj = self ._api .operator_new_on_client (self .name , self ._server .client )
140+ # step2: if object exists, take the instance, else create it
141+ if operator is not None :
142+ if isinstance (operator , Operator ):
143+ self ._server = operator ._server
144+ self ._api = self ._server .get_api_for_type (
145+ capi = operator_capi .OperatorCAPI ,
146+ grpcapi = operator_grpcapi .OperatorGRPCAPI ,
147+ )
148+ # step3: init environment
149+ self ._api .init_operator_environment (self ) # creates stub when gRPC
150+ core_api = self ._server .get_api_for_type (
151+ capi = data_processing_capi .DataProcessingCAPI ,
152+ grpcapi = data_processing_grpcapi .DataProcessingGRPCAPI ,
153+ )
154+ core_api .init_data_processing_environment (self )
155+ self ._internal_obj = core_api .data_processing_duplicate_object_reference (operator )
156+ self .name = operator .name
157+ else :
158+ self ._internal_obj = operator
159+ self .name = self ._api .operator_name (self )
145160 else :
146- self ._internal_obj = self ._api .operator_new (self .name )
161+ if self ._server .has_client ():
162+ self ._internal_obj = self ._api .operator_new_on_client (self .name , self ._server .client )
163+ else :
164+ self ._internal_obj = self ._api .operator_new (self .name )
147165
148166 if self ._internal_obj is None :
149167 raise KeyError (
0 commit comments