Cattrs is currently only used in two places: Serialization for operator extra links, and for Lineage.

However cattrs is not a well maintained project and doesn't support many features that attrs itself does; in short, it's not worth the brain cycles to keep cattrs.
super().__init__(*args, **kwargs)
        
        
        self._task_type = "BaseOperator"
        
        self.ui_color = BaseOperator.ui_color
        self.ui_fgcolor = BaseOperator.ui_fgcolor
        self.template_ext = BaseOperator.template_ext
        self.template_fields = BaseOperator.template_fields
        self.operator_extra_links = BaseOperator.operator_extra_links
    @property
    def task_type(self) -> str:
        
        
        return self._task_type
    @task_type.setter
    def task_type(self, task_type: str):
        self._task_type = task_type
    @property
    def operator_name(self) -> str:
        
        
        return self._operator_name
    @operator_name.setter
    def operator_name(self, operator_name: str):