a
    $ñ»j°"  ã                   @  sj  d dl mZ d dlZd dlmZ ddlmZmZ ddlm	Z	 G dd„ de
ƒZG d	d
„ d
eƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZeG dd„ dƒƒZddœdd„Zddœdd„ZedƒeG dd„ dƒƒƒZed ƒeG d!d"„ d"ƒƒƒZed#ƒeG d$d%„ d%ƒƒƒZed&ƒeG d'd(„ d(ƒƒƒZed)ƒeG d*d+„ d+ƒƒƒZdS ),é    )ÚannotationsN)Ú	dataclassé   )Úevent_classÚT_JSON_DICT)Údomc                      sB   e Zd ZdZddœdd„Zedd dœdd„ƒZ‡ fd	d
„Z‡  ZS )ÚPlayerIdz?Players will get an ID that is unique within the agent context.Ústr©Úreturnc                 C  s   | S ©N© ©Úselfr   r   ú1E:\soccer\ml_env\Lib\site-packages\mycdp/media.pyÚto_json   s    zPlayerId.to_json©Újsonr   c                 C  s   | |ƒS r   r   ©Úclsr   r   r   r   Ú	from_json   s    zPlayerId.from_jsonc                   s   d  tƒ  ¡ ¡S )NzPlayerId({})©ÚformatÚsuperÚ__repr__r   ©Ú	__class__r   r   r      s    zPlayerId.__repr__)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr   r   Ú__classcell__r   r   r   r   r      s
   r   c                      s>   e Zd Zddœdd„Zedd dœdd„ƒZ‡ fdd	„Z‡  ZS )
Ú	TimestampÚfloatr
   c                 C  s   | S r   r   r   r   r   r   r      s    zTimestamp.to_jsonr   c                 C  s   | |ƒS r   r   r   r   r   r   r   !   s    zTimestamp.from_jsonc                   s   d  tƒ  ¡ ¡S )NzTimestamp({})r   r   r   r   r   r   %   s    zTimestamp.__repr__)r   r   r   r   r!   r   r   r"   r   r   r   r   r#      s   r#   c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚPlayerMessagezU
    Have one type per entry in MediaLogRecord::Type
    Corresponds to kMessage
    r	   ÚlevelÚmessager   r
   c                 C  s   t ƒ }| j|d< | j|d< |S )Nr&   r'   )Údictr&   r'   ©r   r   r   r   r   r   ;   s    

zPlayerMessage.to_jsonr   c                 C  s   | t |d ƒt |d ƒd�S )Nr&   r'   )r&   r'   ©r	   r   r   r   r   r   A   s    

þzPlayerMessage.from_jsonN©r   r   r   r    Ú__annotations__r   r!   r   r   r   r   r   r%   )   s   
r%   c                   @  sD   e Zd ZU dZded< ded< ddœdd„Zedd d	œd
d„ƒZdS )ÚPlayerPropertyz#Corresponds to kMediaPropertyChanger	   ÚnameÚvaluer   r
   c                 C  s   t ƒ }| j|d< | j|d< |S )Nr.   r/   )r(   r.   r/   r)   r   r   r   r   O   s    

zPlayerProperty.to_jsonr   c                 C  s   | t |d ƒt |d ƒd�S )Nr.   r/   )r.   r/   r*   r   r   r   r   r   U   s    

þzPlayerProperty.from_jsonNr+   r   r   r   r   r-   I   s   
r-   c                   @  sD   e Zd ZU dZded< ded< ddœdd	„Zedd d
œdd„ƒZdS )ÚPlayerEventz#Corresponds to kMediaEventTriggeredr#   Ú	timestampr	   r/   r   r
   c                 C  s"   t ƒ }| j ¡ |d< | j|d< |S )Nr1   r/   )r(   r1   r   r/   r)   r   r   r   r   c   s    
zPlayerEvent.to_jsonr   c                 C  s   | t  |d ¡t|d ƒd�S )Nr1   r/   )r1   r/   )r#   r   r	   r   r   r   r   r   i   s    
þzPlayerEvent.from_jsonNr+   r   r   r   r   r0   ]   s   
r0   c                   @  sD   e Zd ZU dZded< ded< ddœdd	„Zedd d
œdd„ƒZdS )ÚPlayerErrorSourceLocationz�
    Represents logged source line numbers reported in an error.
    NOTE: file and line are from chromium c++ implementation code, not js.
    r	   ÚfileÚintÚliner   r
   c                 C  s   t ƒ }| j|d< | j|d< |S )Nr3   r5   )r(   r3   r5   r)   r   r   r   r   z   s    

z!PlayerErrorSourceLocation.to_jsonr   c                 C  s   | t |d ƒt|d ƒd�S )Nr3   r5   )r3   r5   )r	   r4   r   r   r   r   r   €   s    

þz#PlayerErrorSourceLocation.from_jsonNr+   r   r   r   r   r2   q   s   
r2   c                   @  s\   e Zd ZU dZded< ded< ded< ded	< d
ed< ddœdd„Zedd dœdd„ƒZdS )ÚPlayerErrorzCorresponds to kMediaErrorr	   Ú
error_typer4   Úcodez&typing.List[PlayerErrorSourceLocation]Ústackútyping.List[PlayerError]Úcauser(   Údatar   r
   c                 C  sP   t ƒ }| j|d< | j|d< dd„ | jD ƒ|d< dd„ | jD ƒ|d< | j|d< |S )	NÚ	errorTyper8   c                 S  s   g | ]}|  ¡ ‘qS r   ©r   ©Ú.0Úir   r   r   Ú
<listcomp>›   ó    z'PlayerError.to_json.<locals>.<listcomp>r9   c                 S  s   g | ]}|  ¡ ‘qS r   r>   r?   r   r   r   rB   œ   rC   r;   r<   )r(   r7   r8   r9   r;   r<   r)   r   r   r   r   —   s    


zPlayerError.to_jsonr   c                 C  sF   | t |d ƒt|d ƒdd„ |d D ƒdd„ |d D ƒt|d ƒd	�S )
Nr=   r8   c                 S  s   g | ]}t  |¡‘qS r   )r2   r   r?   r   r   r   rB   ¥   s   z)PlayerError.from_json.<locals>.<listcomp>r9   c                 S  s   g | ]}t  |¡‘qS r   ©r6   r   r?   r   r   r   rB   ¨   rC   r;   r<   )r7   r8   r9   r;   r<   )r	   r4   r(   r   r   r   r   r       s    

ÿ
ùzPlayerError.from_jsonNr+   r   r   r   r   r6   ˆ   s   
	r6   c                   @  sD   e Zd ZU ded< dZded< ddœdd	„Zedd d
œdd„ƒZdS )ÚPlayerr   Ú	player_idNz"typing.Optional[dom.BackendNodeId]Údom_node_idr   r
   c                 C  s0   t ƒ }| j ¡ |d< | jd ur,| j ¡ |d< |S )NÚplayerIdÚ	domNodeId)r(   rF   r   rG   r)   r   r   r   r   ²   s
    
zPlayer.to_jsonr   c                 C  s8   | t  |d ¡| dd ¡d ur.tj |d ¡nd fd�S )NrH   rI   )rF   rG   )r   r   Úgetr   ZBackendNodeIdr   r   r   r   r   ¹   s    ÿýþzPlayer.from_json)r   r   r   r,   rG   r   r!   r   r   r   r   r   rE   ­   s
   
rE   z0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]r
   c                  c  s   ddi} | V }dS )zEnables the Media domainÚmethodzMedia.enableNr   ©Zcmd_dictr   r   r   r   ÚenableÅ   s    ÿrM   c                  c  s   ddi} | V }dS )zDisables the Media domain.rK   zMedia.disableNr   rL   r   r   r   ÚdisableÍ   s    ÿrN   zMedia.playerPropertiesChangedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚPlayerPropertiesChangedz’
    This can be called multiple times, and can be used to set / override /
    remove player properties. A null propValue indicates removal.
    r   rF   ztyping.List[PlayerProperty]Ú
propertiesr   r   c                 C  s$   | t  |d ¡dd„ |d D ƒd�S )NrH   c                 S  s   g | ]}t  |¡‘qS r   )r-   r   r?   r   r   r   rB   ã   s   z5PlayerPropertiesChanged.from_json.<locals>.<listcomp>rP   )rF   rP   ©r   r   r   r   r   r   r   ß   s    ÿþz!PlayerPropertiesChanged.from_jsonN©r   r   r   r    r,   r!   r   r   r   r   r   rO   Õ   s
   
rO   zMedia.playerEventsAddedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚPlayerEventsAddedzž
    Send events as a list, allowing them to be batched on the browser for less
    congestion. If batched, events must ALWAYS be in chronological order.
    r   rF   ztyping.List[PlayerEvent]Úeventsr   r   c                 C  s$   | t  |d ¡dd„ |d D ƒd�S )NrH   c                 S  s   g | ]}t  |¡‘qS r   )r0   r   r?   r   r   r   rB   ÷   rC   z/PlayerEventsAdded.from_json.<locals>.<listcomp>rT   )rF   rT   rQ   r   r   r   r   r   ó   s    þzPlayerEventsAdded.from_jsonNrR   r   r   r   r   rS   é   s
   
rS   zMedia.playerMessagesLoggedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚPlayerMessagesLoggedz6Send a list of any messages that need to be delivered.r   rF   ztyping.List[PlayerMessage]Úmessagesr   r   c                 C  s$   | t  |d ¡dd„ |d D ƒd�S )NrH   c                 S  s   g | ]}t  |¡‘qS r   )r%   r   r?   r   r   r   rB     rC   z2PlayerMessagesLogged.from_json.<locals>.<listcomp>rV   )rF   rV   rQ   r   r   r   r   r     s    þzPlayerMessagesLogged.from_jsonNrR   r   r   r   r   rU   û   s
   
rU   zMedia.playerErrorsRaisedc                   @  s6   e Zd ZU dZded< ded< edd dœdd	„ƒZd
S )ÚPlayerErrorsRaisedz4Send a list of any errors that need to be delivered.r   rF   r:   Úerrorsr   r   c                 C  s$   | t  |d ¡dd„ |d D ƒd�S )NrH   c                 S  s   g | ]}t  |¡‘qS r   rD   r?   r   r   r   rB     rC   z0PlayerErrorsRaised.from_json.<locals>.<listcomp>rX   )rF   rX   rQ   r   r   r   r   r     s    þzPlayerErrorsRaised.from_jsonNrR   r   r   r   r   rW   
  s
   
rW   zMedia.playerCreatedc                   @  s.   e Zd ZU dZded< edd dœdd„ƒZdS )	ÚPlayerCreatedzÂ
    Called whenever a player is created, or when a new agent joins and receives
    a list of active players. If an agent is restored, it will receive one
    event for each active player.
    rE   Úplayerr   r   c                 C  s   | t  |d ¡d�S )NrZ   )rZ   )rE   r   r   r   r   r   r   #  s    ÿzPlayerCreated.from_jsonNrR   r   r   r   r   rY     s   
rY   )Ú
__future__r   ÚtypingÚdataclassesr   Úutilr   r   Ú r   r	   r   r$   r#   r%   r-   r0   r2   r6   rE   rM   rN   rO   rS   rU   rW   rY   r   r   r   r   Ú<module>   sF   $