
    &`ij                     V    d dl mZmZ ddlmZ  G d d          Z G d d          ZdS )	    )ListType   )Planc                       e Zd ZdZdedefdZedeed                   fd            Z	edeed                   fd            Z
dS )Rulez%Abstract class for optimization rule.planreturnc                     t           )z2Apply the optimization rule to the execution plan.NotImplementedError)selfr	   s     /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/logical/interfaces/optimizer.pyapplyz
Rule.apply	   s    !!    c                     g S )z4List of rules that must be applied before this rule. clss    r   dependencieszRule.dependencies   	     	r   c                     g S )z3List of rules that must be applied after this rule.r   r   s    r   
dependentszRule.dependents   r   r   N)__name__
__module____qualname____doc__r   r   classmethodr   r   r   r   r   r   r   r   r      s        //"$ "4 " " " " T$v,/    [ 4V-    [  r   r   c                   J    e Zd ZdZedee         fd            ZdedefdZ	dS )	OptimizerzuAbstract class for optimizers.

    An optimizers transforms a DAG of operators with a list of predefined rules.
    r
   c                     t           )z,List of predefined rules for this optimizer.r   )r   s    r   ruleszOptimizer.rules   s
     "!r   r	   c                     |}	 | j         D ]}|                    |          }|j        j        |j        j        k    rn|}=|S )z(Optimize operators with a list of rules.)r"   r   dagdag_str)r   r	   previous_planrules       r   optimizezOptimizer.optimize#   s^     	!
 ( (zz$'' x=#4#<<< M	! r   N)
r   r   r   r   propertyr   r   r"   r   r(   r   r   r   r    r       sk         
 "tDz " " " X"T d      r   r    N)typingr   r   r	   r   r   r    r   r   r   <module>r+      s                        $         r   