ashb commented on code in PR #45562:
URL: https://github.com/apache/airflow/pull/45562#discussion_r1925760803


##########
task_sdk/src/airflow/sdk/definitions/asset/__init__.py:
##########
@@ -257,6 +258,17 @@ def iter_dag_dependencies(self, *, source: str, target: 
str) -> Iterator[DagDepe
         raise NotImplementedError
 
 
+@attrs.define(frozen=True)
+class AssetWatcher:
+    """A representation of an asset watcher. The name uniquely identity the 
watch."""
+
+    name: str
+    # This attribute serves double purpose. For a "normal" asset instance
+    # loaded from DAG, this holds the trigger used to monitor an external 
resource.
+    # For an asset recreated from a serialized DAG, however, this holds the 
serialized data of the trigger.

Review Comment:
   > Do you want to use it only by users? I am trying to understand the path 
forward :)
   
   That is my end goal yes, and Asset would need updating too. Maybe it's best 
all done at once. For instance on a SchedulerDag object or a 
SchedulerBaseOperator (not the final names) the interface will be greatly 
reduced, and contain only the minimal needed to set relationships between 
tasks, but a lot of the "richness" of API and compat would not be needed in 
that class.
   
   But it's probably more confusing to have one class be like that but not 
others.
   
   That said, one thing you _might_ be able to do here is have a 
`SerializedAssetWatcher` class which is a subclass of this one with this field 
as a different type? This pattern is what we have already for 
SerializedBaseOperator -- i.e. derserialize code should create instances of 
`SerializedAssetWatcher` not `AssetWatcher`.
   
   If that works with mypy (it might complain about the type of the field not 
matching the parent) I think this approach is a small change here but makes my 
life much easier on this bigger refactor when I get to it.
   
   Am I making any sense?



-- 
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.

To unsubscribe, e-mail: commits-unsubscr...@airflow.apache.org

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

Reply via email to