@@ -121,7 +121,7 @@ class Operator:
121121
122122 """
123123
124- def __init__ (self , name , config = None , server = None ):
124+ def __init__ (self , name = None , config = None , server = None , operator = 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,29 @@ 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
139+ # step 3 : init environment
140140 self ._api .init_operator_environment (self ) # creates stub when gRPC
141141
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 )
142+ # step 4: if object exists, take the instance, else create it
143+ if operator is not None :
144+ if isinstance (operator , Operator ):
145+ core_api = self ._server .get_api_for_type (
146+ capi = data_processing_capi .DataProcessingCAPI ,
147+ grpcapi = data_processing_grpcapi .DataProcessingGRPCAPI ,
148+ )
149+ core_api .init_data_processing_environment (self )
150+ self ._internal_obj = core_api .data_processing_duplicate_object_reference (operator )
151+ self .name = operator .name
152+ else :
153+ self ._internal_obj = operator
154+ self .name = self ._api .operator_name (self )
145155 else :
146- self ._internal_obj = self ._api .operator_new (self .name )
156+ if self ._server .has_client ():
157+ self ._internal_obj = self ._api .operator_new_on_client (
158+ self .name , self ._server .client
159+ )
160+ else :
161+ self ._internal_obj = self ._api .operator_new (self .name )
147162
148163 if self ._internal_obj is None :
149164 raise KeyError (
0 commit comments