kennknowles commented on a change in pull request #12067:
URL: https://github.com/apache/beam/pull/12067#discussion_r448646153



##########
File path: sdks/python/apache_beam/pipeline.py
##########
@@ -221,6 +221,14 @@ def __init__(self, runner=None, options=None, argv=None):
     # then the transform will have to be cloned with a new label.
     self.applied_labels = set()  # type: Set[str]
 
+    # Create a context for assigning IDs to components. Ensures that any
+    # components that receive an ID during pipeline construction (for example 
in
+    # ExternalTransform), will receive the same component ID when generating 
the
+    # full pipeline proto.
+    from apache_beam.runners import pipeline_context

Review comment:
       There's not actually a circular dependency of classes. You could move 
this class in here and that would be fine.

##########
File path: sdks/python/apache_beam/runners/pipeline_context.py
##########
@@ -49,6 +50,32 @@
   from apache_beam.coders.coder_impl import IterableStateWriter
 
 
+class ComponentIdContext(object):

Review comment:
       There's a lot of overlap between the purpose of this and the purpose of 
the `PipelineContext` but I can see how they are different. I see that the 
pipeline only takes the context at `to_runner_api` time, and the context has 
tweaks like `use_fake_coders` and `default_environment`. So when using xlang 
expansion you can keep just the ids and throw away the contents that will be 
generated according to these tweaks later.

##########
File path: sdks/python/apache_beam/transforms/external.py
##########
@@ -286,7 +286,8 @@ def expand(self, pvalueish):
     pipeline = (
         next(iter(self._inputs.values())).pipeline
         if self._inputs else pvalueish.pipeline)
-    context = pipeline_context.PipelineContext()
+    context = pipeline_context.PipelineContext(
+        component_id_context=pipeline._component_id_context)

Review comment:
       Based on this use, maybe `_component_id_context` isn't private at all? 
And maybe it is a `component_id_map` or some such. It isn't "context" in the 
sense that it isn't "the stuff surrounding the thing you are interested in".




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to