
    &`i                        d dl mZmZ ddlmZ d dlmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ  eeeeeeg          Z eeeeeg          Z edefd            Z!edefd            Z" G d de          Z# G d de          Z$deee	ge	f                  fdZ%dedefdZ&dS )    )CallableList   )Ruleset)LogicalPlan	OptimizerPhysicalPlanPlanRule)CombineRepartitions)%ConfigureMapTaskMemoryUsingOutputSize)InheritBatchFormatRule)InheritTargetMaxBlockSizeRule)LimitPushdownRule)FuseOperators)PredicatePushdown)ProjectionPushdown)SetReadParallelismRule)DeveloperAPIreturnc                      t           S N)_LOGICAL_RULESET     y/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/ray/data/_internal/logical/optimizers.pyget_logical_rulesetr   /   s    r   c                      t           S r   )_PHYSICAL_RULESETr   r   r   get_physical_rulesetr    4   s    r   c                   :    e Zd ZdZedee         fd            ZdS )LogicalOptimizerz$The optimizer for logical operators.r   c                 2    d t                      D             S )Nc                 "    g | ]} |            S r   r   .0rule_clss     r   
<listcomp>z*LogicalOptimizer.rules.<locals>.<listcomp>>   s    AAAx

AAAr   )r   selfs    r   ruleszLogicalOptimizer.rules<   s    AA+>+@+@AAAAr   N__name__
__module____qualname____doc__propertyr   r   r+   r   r   r   r"   r"   9   sJ        ..BtDz B B B XB B Br   r"   c                   :    e Zd ZdZedee         fd            ZdS )PhysicalOptimizerz%The optimizer for physical operators.r   c                 2    d t                      D             S )Nc                 "    g | ]} |            S r   r   r%   s     r   r(   z+PhysicalOptimizer.rules.<locals>.<listcomp>F   s    BBBx

BBBr   )r    r)   s    r   r+   zPhysicalOptimizer.rulesD   s    BB+?+A+ABBBBr   Nr,   r   r   r   r3   r3   A   sJ        //CtDz C C C XC C Cr   r3   c                  v    ddl m}  t                      j         |             j        t                      j        gS )ad  Get the list of transformation functions to convert a logical plan
    to an optimized physical plan.

    This returns the 3 transformation steps:
    1. Logical optimization
    2. Planning (logical -> physical operators)
    3. Physical optimization

    Returns:
        A list of transformation functions, each taking a Plan and returning a Plan.
    r   create_planner)ray.data._internal.plannerr8   r"   optimizeplanr3   r7   s    r   get_plan_conversion_fnsr<   I   sH     :99999 	#$ r   logical_planc                     t                      \  }}} ||           }|j        | _         ||          } ||          S )a  Get the physical execution plan for the provided logical plan.

    This process has 3 steps:
    (1) logical optimization: optimize logical operators.
    (2) planning: convert logical to physical operators.
    (3) physical optimization: optimize physical operators.
    )r<   dag_dag)r=   optimize_logicalr;   optimize_physicaloptimized_logical_planphysical_plans         r   get_execution_planrE   ^   s^     1H0I0I-d- .-l;; /2L D/00M ]+++r   N)'typingr   r   rulesetr   %ray.data._internal.logical.interfacesr   r   r	   r
   r   5ray.data._internal.logical.rules.combine_repartitionsr   :ray.data._internal.logical.rules.configure_map_task_memoryr   5ray.data._internal.logical.rules.inherit_batch_formatr   >ray.data._internal.logical.rules.inherit_target_max_block_sizer   /ray.data._internal.logical.rules.limit_pushdownr   0ray.data._internal.logical.rules.operator_fusionr   3ray.data._internal.logical.rules.predicate_pushdownr   4ray.data._internal.logical.rules.projection_pushdownr   5ray.data._internal.logical.rules.set_read_parallelismr   ray.util.annotationsr   r   r   r   r    r"   r3   r<   rE   r   r   r   <module>rS      s   ! ! ! ! ! ! ! !                    V U U U U U      Y X X X X X      N M M M M M J J J J J J Q Q Q Q Q Q S S S S S S X X X X X X - - - - - -7   G%-	   W     g    B B B B By B B BC C C C C	 C C Chvt|&<!=    *,[ ,\ , , , , , ,r   