o
    8ήc8                     @   sZ  d dl Z d dlmZ ddlmZmZmZmZmZm	Z	m
Z
mZ d dlmZ e ZejZejZejZeeG dd deZeG dd	 d	eZG d
d deZG dd deZe je je je je je jfD ]Z ee G dd deZ!qde j"e j#e j$e j%e j&fD ]Z ee G dd deZ'qe j(e j)e j*e j+e j,e j-fD ]Z ee G dd deZ.qdS )    N)types   )ConcreteTemplateAbstractTemplateAttributeTemplateCallableTemplateRegistry	signaturebound_functionmake_callable_template)collectionsc                   @      e Zd Zdd ZdS )
SetBuiltinc                 C   sZ   |rJ |r%|\}t |tjr!|jj}t |tjr#tt||S d S d S tttjS N)	
isinstancer   IterableTypeiterator_type
yield_typeHashabler	   Set	undefined)selfargskwsiterabledtype r   @/tmp/pip-target-vg8gfxp4/lib/python/numba/core/typing/setdecl.pygeneric   s   zSetBuiltin.genericN__name__
__module____qualname__r   r   r   r   r   r      s    r   c                   @   s:  e Zd ZejZeddd Zeddd Zeddd	 Z	ed
dd Z
eddd Zeddd Zeddd Zdd Zeddd Zeddd Zeddd  Zd!d" Zed#d$d% Zed&d'd( Zed)d*d+ Zed,d-d. Zd/d0 Zed1d2d3 Zed4d5d6 Zed7d8d9 Zd:S );SetAttributezset.addc                 C   sN   |\}|rJ | j |j|}|d ur%ttj|}|j|j|dd}|S d S N)r   )recvr)contextunify_pairsr   r	   r   nonereplacecopy)r   setr   r   itemunifiedsigr   r   r   resolve_add&   s   zSetAttribute.resolve_addz	set.clearc                 C   s   |rJ |st tjS d S r   )r	   r   r(   r   r+   r   r   r   r   r   resolve_clear0      
zSetAttribute.resolve_clearzset.copyc                 C   s   |rJ |s
t |S d S r   )r	   r0   r   r   r   resolve_copy6   s   zSetAttribute.resolve_copyzset.discardc                 C      |\}|rJ t tj|jS r   r	   r   r(   r   r   r+   r   r   r,   r   r   r   resolve_discard<      zSetAttribute.resolve_discardzset.popc                 C   s   |rJ |st |jS d S r   )r	   r   r0   r   r   r   resolve_popB   r2   zSetAttribute.resolve_popz
set.removec                 C   r4   r   r5   r6   r   r   r   resolve_removeH   r8   zSetAttribute.resolve_removez
set.updatec                 C   sf   |\}|rJ t |tjsd S |jj}| j|j|}|d ur1ttj	|}|j
|j|dd}|S d S r$   )r   r   r   r   r   r&   r'   r   r	   r(   r)   r*   )r   r+   r   r   r   r   r-   r.   r   r   r   resolve_updateN   s   zSetAttribute.resolve_updatec                 C   s:   |rJ |\}t |tjr|j|jkrttj|S d S d S r   )r   r   r   r   r	   r(   r   r+   r   r   r   r   r   r   _resolve_xxx_update\   s
   z SetAttribute._resolve_xxx_updatezset.difference_updatec                 C      |  |||S r   r=   r0   r   r   r   resolve_difference_updated      z&SetAttribute.resolve_difference_updatezset.intersection_updatec                 C   r>   r   r?   r0   r   r   r   resolve_intersection_updateh   rA   z(SetAttribute.resolve_intersection_updatezset.symmetric_difference_updatec                 C   r>   r   r?   r0   r   r   r   #resolve_symmetric_difference_updatel   rA   z0SetAttribute.resolve_symmetric_difference_updatec                 C   s8   |rJ |\}t |tjr|j|jkrt||S d S d S r   )r   r   r   r   r	   r<   r   r   r   _resolve_operatorp   s
   
zSetAttribute._resolve_operatorzset.differencec                 C   r>   r   rD   r0   r   r   r   resolve_differencex   rA   zSetAttribute.resolve_differencezset.intersectionc                 C   r>   r   rE   r0   r   r   r   resolve_intersection|   rA   z!SetAttribute.resolve_intersectionzset.symmetric_differencec                 C   r>   r   rE   r0   r   r   r   resolve_symmetric_difference   rA   z)SetAttribute.resolve_symmetric_differencez	set.unionc                 C   r>   r   rE   r0   r   r   r   resolve_union   rA   zSetAttribute.resolve_unionc                 C   s&   |rJ |\}||krt tj|S d S r   )r	   r   boolean)r   r+   r   r   argr   r   r   _resolve_comparator   s
   z SetAttribute._resolve_comparatorzset.isdisjointc                 C   r>   r   rL   r0   r   r   r   resolve_isdisjoint   rA   zSetAttribute.resolve_isdisjointzset.issubsetc                 C   r>   r   rM   r0   r   r   r   resolve_issubset   rA   zSetAttribute.resolve_issubsetzset.issupersetc                 C   r>   r   rM   r0   r   r   r   resolve_issuperset   rA   zSetAttribute.resolve_issupersetN)r    r!   r"   r   r   keyr
   r/   r1   r3   r7   r9   r:   r;   r=   r@   rB   rC   rD   rF   rG   rH   rI   rL   rN   rO   rP   r   r   r   r   r#   "   sN    
	














r#   c                   @   r   )SetOperatorc                 C   sX   t |dkrd S |\}}t|tjr&t|tjr(|j|jkr*t|g|R  S d S d S d S N   )lenr   r   r   r   r	   r   r   r   abr   r   r   r      s   
zSetOperator.genericNr   r   r   r   r   rR          rR   c                   @   r   )SetComparisonc                 C   sV   t |dkrd S |\}}t|tjr%t|tjr'||kr)ttjg|R  S d S d S d S rS   )rU   r   r   r   r	   rJ   rV   r   r   r   r      s    zSetComparison.genericNr   r   r   r   r   rZ      rY   rZ   c                   @      e Zd ZeZdS )ConcreteSetOperatorNr    r!   r"   op_keyrQ   r   r   r   r   r\          r\   c                   @   r[   )ConcreteInplaceSetOperatorNr]   r   r   r   r   r`      r_   r`   c                   @   r[   )ConcreteSetComparisonNr]   r   r   r   r   ra      r_   ra   )/operator
numba.corer   	templatesr   r   r   r   r   r	   r
   r   numba.core.typingr   registryregisterinferregister_globalinfer_globalregister_attrinfer_getattrr+   r   r#   rR   rZ   addsuband_or_xorinvertr^   r\   iaddisubiandiorixorr`   eqneltlegegtra   r   r   r   r   <module>   s0    (x 
 