o
    1 i4                     @   s  d dl Z d dl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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m Z  d dl!m"Z" d dl#m$Z$ erzd dl%m&Z& d dl'm(Z( e )e*Z+d+ddZ,d+ddZ-e$de dddefddZ.e$de dddefddZ/e$d,d"d#Z0e$d d!d$ee1ee f defd%d&Z2e$de fd'd(Z3e$d)d* Z4dS )-    N)TYPE_CHECKINGAnyTuple)ClipActionsConnector)ImmutableActionsConnector)ConvertToNumpyConnector)NormalizeActionsConnector)ActionConnectorPipeline)ClipRewardAgentConnector)0ConcurrentMeanStdObservationFilterAgentConnector&MeanStdObservationFilterAgentConnector)ObsPreprocessorConnector)AgentConnectorPipeline)StateBufferConnector)SyncedFilterAgentConnector)ViewRequirementAgentConnector)	ConnectorConnectorContext)get_connector)OldAPIStack)AlgorithmConfig)Policyconfigr   c                 C   s0   | j rdS | jr| jdkrdS | jd u rdS dS )NFZdeepmindT)Z_disable_preprocessor_apiis_atariZpreprocessor_prefr    r   e/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/ray/rllib/connectors/util.py__preprocessing_enabled   s   
r   c                 C   s   | j p| jS )N)clip_rewardsr   r   r   r   r   __clip_rewards)   s   r   ctxreturnc                 C   s   g }t |}|du r|t| dd nt|tu r%|t| t|d t|r0|t|  t| }|r;|| |	t
| t| g t| |S )NT)sign)limit)r   appendr
   typefloatabsr   r   get_synced_filter_connectorextendr   r   r   )r    r   
connectorsr   Zfilter_connectorr   r   r    get_agent_connectors_from_config/   s&   

r+   c                 C   sV   t | g}|ddr|t|  |ddr|t|  |t|  t| |S )zDefault list of action connectors to use for a new policy.

    Args:
        ctx: context used to create connectors.
        config: The AlgorithmConfig object.
    Znormalize_actionsFZclip_actions)r   getr$   r   r   r   r	   )r    r   r*   r   r   r   !get_action_connectors_from_configQ   s   

r-   policyr   c                 C   st   t | }| jdu r| jdu sJ dt||| _t||| _td t| jjdd t| jjdd dS )zUtil to create agent and action connectors for a Policy.

    Args:
        policy: Policy instance.
        config: Algorithm config dict.
    NzCCan not create connectors for a policy that already has connectors.zUsing connectors:   )indentation)	r   from_policyagent_connectorsZaction_connectorsr+   r-   loggerinfo__str__)r.   r   r    r   r   r   create_connectors_for_policye   s   

r6   connector_configc                 C   s   t | }|\}}t|||S )zUtil to create connector for a Policy based on serialized config.

    Args:
        policy: Policy instance.
        connector_config: Serialized connector config.
    )r   r1   r   )r.   r7   r    nameparamsr   r   r   restore_connectors_for_policy{   s   

r:   c                 C   sP   | j d}|dkrt| d dS |dkrt| d dS |dkr d S tdt| )NZobservation_filterZMeanStdFilter)ZclipZConcurrentMeanStdFilterZNoFilterzUnknown observation_filter: )r   r,   r   r   	Exceptionstr)r    Zfilter_specifierr   r   r   r(      s   r(   c                 C   sN   | j | }|js
d S |jt }|sd S t|dksJ d|d j| j|< d S )N   zcConnectorPipeline has multiple connectors of type SyncedFilterAgentConnector but can only have one.r   )Z
policy_mapr2   r   lenfilterfilters)Zrollout_workerZ	policy_idr.   Zfilter_connectorsr   r   r   maybe_get_filters_for_syncing   s   

rA   )r   r   )r.   r   r   r   )5loggingtypingr   r   r   Z ray.rllib.connectors.action.clipr   Z%ray.rllib.connectors.action.immutabler   Z#ray.rllib.connectors.action.lambdasr   Z%ray.rllib.connectors.action.normalizer   Z$ray.rllib.connectors.action.pipeliner	   Z&ray.rllib.connectors.agent.clip_rewardr
   Z*ray.rllib.connectors.agent.mean_std_filterr   r   Z&ray.rllib.connectors.agent.obs_preprocr   Z#ray.rllib.connectors.agent.pipeliner   Z'ray.rllib.connectors.agent.state_bufferr   Z(ray.rllib.connectors.agent.synced_filterr   Z+ray.rllib.connectors.agent.view_requirementr   Zray.rllib.connectors.connectorr   r   Zray.rllib.connectors.registryr   Zray.rllib.utils.annotationsr   Z%ray.rllib.algorithms.algorithm_configr   Zray.rllib.policy.policyr   	getLogger__name__r3   r   r   r+   r-   r6   r<   r:   r(   rA   r   r   r   r   <module>   sj    


!