o
    i"                     @   s  U d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZmZ ddlmZ ddlmZmZmZmZmZmZ G d	d
 d
eZG dd deZG dd deZd/ddZG dd deZG dd deZedddefddZedddefddZedddefddZ edefd d!ZeG d"d# d#Z!ede"fd$d%Z#ede"fd&d'Z$eG d(d) d)Z%G d*d+ d+Z&e
rd d,l	m'Z'm(Z( ed-Z)ed.Z*e'e)e*f Z&e(e+d+< dS dS )0    N)Callable)MappingSequence)partial)TYPE_CHECKINGAny
CollectionTypeVar   Code)IntersectionOrder	clsstringnormalize_typesubclasscheck	typeorderc                       s   e Zd ZdZdZdZdZ fddZdd Zdd Z	d	d
 Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Ze ZZ  ZS )DependentTypeTFc                    s   t  | | jdi }|S )N )super__new____name__)clsargskwargsvalue	__class__r   Q/home/ubuntu/.local/lib/python3.10/site-packages/spaces/_vendor/ovld/dependent.pyr      s   zDependentType.__new__c                 C   s
   || _ d S Nbound)selfr!   r   r   r   __init__#      
zDependentType.__init__c                 C   s   t |ts|fn|}| | S r   )
isinstancetuple)r   itemitemsr   r   r   __class_getitem__&   s   zDependentType.__class_getitem__c                 C   s   t | |S r   typer"   	new_boundr   r   r   
with_bound*      zDependentType.with_boundc                 C   s   t  r   )NotImplementedErrorr"   r   r   r   r   check-      zDependentType.checkc                 C   s   t d| dS )Nz$this.check($arg))thisr   r"   r   r   r   codegen0   r/   zDependentType.codegenc                 C   sl   t |tr$t| j|j}|tju r"| |k rtjS || k rtjS tjS |S t	|| js0t	| j|r3tjS tjS r   )
r%   r   r   r!   r   SAMELESSMORENONEr   )r"   otherorderr   r   r   __type_order__3   s   

zDependentType.__type_order__c                 C   s"   t |trdS t|| jrdS dS )NFT)r%   r   r   r!   r"   r;   r   r   r   __is_supertype__F   s
   
zDependentType.__is_supertype__c                 C   s   t || jo
| |S r   )r%   r!   r2   r>   r   r   r   __instancecheck__N   s   zDependentType.__instancecheck__c                 C   s   dS NFr   r>   r   r   r   __lt__Q      zDependentType.__lt__c                 C   s   t | |f S r   r   r>   r   r   r   __and__T   r/   zDependentType.__and__c                 C   s   t || f S r   rD   r>   r   r   r   __rand__W   r/   zDependentType.__rand__)r   
__module____qualname____dependent__exclusive_typekeyable_typebound_is_namer   r#   r)   r.   r2   r6   r=   r?   r@   rB   rE   rF   r   __repr____str____classcell__r   r   r   r   r      s$    r   c                       sb   e Zd Zdd fdd
Zdd Zedd Zd	d
 Zdd Zdd Z	dd Z
dd ZeZ  ZS )ParametrizedDependentTypeNr    c                   s<   t  |d u r| j| n| | | _| _d | _|   d S r   )r   r#   default_bound__args__
parameters
__origin____post_init__)r"   r!   rS   r   r   r   r#   ^   s   z"ParametrizedDependentType.__init__c                 C      d S r   r   r5   r   r   r   rU   d   rC   z'ParametrizedDependentType.__post_init__c                 C   s
   | j d S Nr   rS   r5   r   r   r   	parameterg      
z#ParametrizedDependentType.parameterc                 G   rV   r   r   r"   rS   r   r   r   rQ   k   rC   z'ParametrizedDependentType.default_boundc                 C   s   t | | jd|iS )Nr!   )r+   rS   r,   r   r   r   r.   n      z$ParametrizedDependentType.with_boundc                 C   s(   t | t |u o| j|jko| j|jkS r   )r+   rS   r!   r>   r   r   r   __eq__q   s
   

z ParametrizedDependentType.__eq__c                 C   s   t | jt | jA S r   )hashrS   r!   r5   r   r   r   __hash__x   r\   z"ParametrizedDependentType.__hash__c                 C   sf   | j r	| j}d}n| }| j| j| j krdt| j }nd}dtt| j}|j d| d| S )N z < z, [])	rL   r!   rQ   rS   r   joinmaprR   r   )r"   originr!   r   r   r   r   rN   {   s   z!ParametrizedDependentType.__str__)r   rG   rH   r#   rU   propertyrY   rQ   r.   r]   r_   rN   rM   rO   r   r   r   r   rP   ]   s    
rP   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )FuncDependentTypec                 G   s   | j S r   )_default_bound)r"   _r   r   r   rQ      r3   zFuncDependentType.default_boundc                 C   sZ   t | jt |jkrdS tdd t| j|jD }tdd t| j|jD }|o,| S )NFc                 s   s$    | ]\}}|t u o|t uV  qd S r   r   .0p1p2r   r   r   	<genexpr>       
z+FuncDependentType.__lt__.<locals>.<genexpr>c                 s   s$    | ]\}}|t u o|t uV  qd S r   rj   rk   r   r   r   ro      rp   )lenrS   sumzip)r"   r;   p1gp2gr   r   r   rB      s   
zFuncDependentType.__lt__c                 C   s   t | j|g| jR  S r   )r+   funcrS   r1   r   r   r   r2         zFuncDependentType.checkN)r   rG   rH   rQ   rB   r2   r   r   r   r   rg      s    rg   Fc                 C   s   | d u r
t t|dS t| tr9t| jj}tt	t| jj
 d j| j}t| jtf||dt| }|S t| j}tt	t| j
 d j| }t| jtf| ||d}t|dkrd| }|S )NrL   r
   )rL   rh   r   )rv   rL   rh   )r   dependent_checkr%   r+   inspect	signaturer2   rS   r   listvalues
annotationr   rg   varsrq   )fnrL   paramsr!   tr   r   r   ry      sB   
	ry   c                   @   s<   e Zd ZdZdd Zdd Zedd Zdd	 Zd
d Z	dS )EqualsTc                 G   s   t |d S rW   r*   r[   r   r   r   rQ      r/   zEquals.default_boundc                 C   s
   || j v S r   rX   r1   r   r   r   r2      r$   zEquals.checkc                 C   s   t dS )Nz$argr   )r   r   r   r   keygen   s   zEquals.keygenc                 C   s   | j gS r   )rY   r5   r   r   r   get_keys   s   zEquals.get_keysc                 C   s*   t | jdkrtd| jdS td| jdS )Nr
   z($arg == $p))pz($arg in $ps))ps)rq   rS   r   rY   r5   r   r   r   r6      s   zEquals.codegenN)
r   rG   rH   rK   rQ   r2   classmethodr   r   r6   r   r   r   r   r      s    
r   c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )ProductTypeTc                 G   s   t S r   )r&   )r"   subtypesr   r   r   rQ      rC   zProductType.default_boundc                 C   s6   t |tot|t| jkotdd t|| jD S )Nc                 s       | ]
\}}t ||V  qd S r   r%   )rl   xr   r   r   r   ro          z$ProductType.check.<locals>.<genexpr>)r%   r&   rq   rS   allrs   r1   r   r   r   r2      s
   
zProductType.checkc                 C   s^   dg}dt | ji}t| jD ]\}}|d| d| d ||d| < qtd||S )Nzlen($arg) == $nnzisinstance($arg[z], $p)r   z and )rq   rS   	enumerateappendr   rc   )r"   checksr   ir   r   r   r   r6      s   zProductType.codegenc                 C   sF   t |tr!t|jt| jkrtdd t| j|jD S tjS tS )Nc                 s   r   r   )r   )rl   abr   r   r   ro      s    
z-ProductType.__type_order__.<locals>.<genexpr>)	r%   r   rq   rS   r   mergers   r:   NotImplementedr>   r   r   r   r=      s   

zProductType.__type_order__N)r   rG   rH   rL   rQ   r2   r6   r=   r   r   r   r   r      s    r   Trx   r   c                 C   s   |  p	t | d |S rW   r   )r   typr   r   r   SequenceFastCheck   s   r   c                 C   s   | D ]}t ||  S dS NTr   )r   r   r   r   r   r   CollectionFastCheck  s   r   c                 C   s*   | sdS | D ]} t ||ot | | |S r   r   )r   ktvtkr   r   r   MappingFastCheck  s
   r   r   c                 C   sd   ddl m} || }|jt|  ko|jkn  o1|j o1tdd t||j	D o1t
|j|S )Nr
   )	Signaturec                 s   r   r   )r   )rl   t1t2r   r   r   ro     r   zCallable.<locals>.<genexpr>)corer   extractmax_posrq   req_pos	req_namesr   rs   typesr   return_type)r   argtrettr   sigr   r   r   r     s   
 
r   c                   @   s"   e Zd ZdefddZdd ZdS )HasKeyr   c                    s   t  fdd| jD S )Nc                 3   s    | ]}| v V  qd S r   r   rl   r   r   r   r   ro   $  s    zHasKey.check.<locals>.<genexpr>)r   rS   r1   r   r   r   r2   #  rw   zHasKey.checkc                 C   s   t ddd | jD dS )Nz($[ and ]checks)c                 S   s   g | ]}t d |dqS )z($k in $arg))r   r   r   r   r   r   
<listcomp>(  s    z"HasKey.codegen.<locals>.<listcomp>)r   )r   rS   r5   r   r   r   r6   &  s   zHasKey.codegenN)r   rG   rH   r   r2   r6   r   r   r   r   r   !  s    r   c                 C   
   |  |S r   )
startswith)r   prefixr   r   r   
StartsWith,  rZ   r   c                 C   r   r   )endswith)r   suffixr   r   r   EndsWith1  rZ   r   c                   @   s*   e Zd Zdd ZdefddZdd ZdS )	Regexpc                 C   s   t | j| _d S r   )recompilerY   rxr5   r   r   r   rU   8  s   zRegexp.__post_init__r   c                 C   s   t | j|S r   )boolr   searchr1   r   r   r   r2   ;  s   zRegexp.checkc                 C   s   t d| jdS )Nzbool($rx.search($arg)))r   )r   r   r5   r   r   r   r6   >  s   zRegexp.codegenN)r   rG   rH   rU   strr2   r6   r   r   r   r   r   6  s    r   c                   @   s   e Zd Zdd ZdS )	Dependentc                 C   s$   |\}}t |tst|}||S r   )r%   r   ry   r.   )r   r'   r!   dtr   r   r   r)   C  s   

zDependent.__class_getitem__N)r   rG   rH   r)   r   r   r   r   r   B  s    r   )	Annotated	TypeAliasTArA   ),rz   r   collections.abcr   	_Callabler   r   	functoolsr   typingr   r   r   r	   r6   r   r   r   r   r   r   r   r   r+   r   rP   rg   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __annotations__r   r   r   r   <module>   sJ   
  
E.
(!
