o
    b                     @   s  d Z ddlmZ ddlmZ ddlmZ dZG dd de	Z
G dd de	Zd	d
 Zdd ZG dd deZG dd deeZG dd de	Zddg\ZZd\ZZeddg\ZZddd\ZZd\ZZe
 \ZZe \ZZdd edD \ZZe \ZZe \ZZe\ZZG dd de	Ze \ZZe\ZZd\ZZd\ZZe\ZZe \ZZe\ZZG dd de	ZG dd  d e	ZG d!d" d"eZddlZd#d$ Zd'd%d&ZdS )(z.Check unpacking non-sequences in assignments.     )rename)with_metaclass)nonseqc                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	Seqz
 sequence c                 C   s   t d| _d S N   )rangeitemsself r   l/var/www/secure340b-portal/env/lib/python3.10/site-packages/pylint/test/functional/unpacking_non_sequence.py__init__   s   zSeq.__init__c                 C   s
   | j | S N)r	   )r   itemr   r   r   __getitem__      
zSeq.__getitem__c                 C   s
   t | jS r   )lenr	   r
   r   r   r   __len__   r   zSeq.__len__N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r      s
    r   c                   @      e Zd ZdZdd ZdS )Iterz
 Iterator c                 c   s    t dD ]}|V  qd S r   )r   )r   numberr   r   r   __iter__   s   zIter.__iter__Nr   r   r   r   r   r   r   r   r   r          r   c                   C   s
   	 ddgS ) returns should be unpackable T   r   r   r   r   r   r   good_unpacking   s   r!   c                   C   s   t  S )r   )r!   r   r   r   r   good_unpacking2%   s   r"   c                   @   r   )MetaIterz2metaclass that makes classes that use it iterablesc                 C   s   t dS )Nr    r   )iter)clsr   r   r   r   +   s   zMetaIter.__iter__Nr   r   r   r   r   r#   )   r   r#   c                   @      e Zd ZdZdS )	IterClassz'class that is iterable (and unpackable)Nr   r   r   r   r   r   r   r   r(   .       r(   c                   @   s$   e Zd ZdZdZdd Zdd ZdS )
AbstrClasszabstract classNc                 C   s   t )zabstract method)NotImplementedErrorr
   r   r   r   
setup_pair5   s   zAbstrClass.setup_pairc                 C   s   |    | j\}}dS )z:error should not be emitted because setup_pair is abstractN)r-   pair)r   xyr   r   r   r   9   s   zAbstrClass.__init__)r   r   r   r   r.   r-   r   r   r   r   r   r+   1   s
    r+   r    r   r$      xyc                 c   s    | ]}|V  qd S r   r   ).0r   r   r   r   	<genexpr>E   s    r4   c                   @   r'   )NonSeqz does nothing Nr)   r   r   r   r   r5   K   r*   r5   Nc                   @   r   )ClassUnpackingz) Check unpacking as instance attributes. c                 C   sv   d\| _ | _ddd\| _ | _d\| _ | _d\| _ }t \}| _ t \| _ | _t \| _ | _t\| _ | _t\| _ }dS )z( test unpacking in instance attributes. r$   r   r1   r2   N)abr!   r   r5   
ValueErrornonseq_func)r   cr   r   r   testY   s   
zClassUnpacking.testN)r   r   r   r   r<   r   r   r   r   r6   V   s    r6   c                   @   s   e Zd ZdZedd ZdS )TestBasez,base class with `test` method implementationc                 C   s   | S )zdefault implementationr   datar   r   r   r<   i      zTestBase.testN)r   r   r   r   staticmethodr<   r   r   r   r   r=   g   s    r=   c                   @   s$   e Zd ZdZdd Zedd ZdS )Testz(child class that overrides `test` methodc                 C   s   |  d \| _| _| _d S r   )r<   Zaaabbbcccr
   r   r   r   r   p   s   zTest.__init__c                 C   s   dS )zoverridden implementation)r    r   r1   r   r>   r   r   r   r<   t   r@   z	Test.testN)r   r   r   r   r   rA   r<   r   r   r   r   rB   n   s
    rB   c                  C   s$   t  \} }}}}}| |||||fS r   )platformuname)systemnodereleaseversionmachine	processorr   r   r   flow_control_false_positive}   s   rM   c                 C   s   | d ur| \}}||fS d S r   r   )varZvar0Zvar1r   r   r   flow_control_unpacking   s   rO   r   )r   osr   r:   sixr   Zfunctional.unpackingr   Z__revision__objectr   r   r!   r"   typer#   r(   r+   r7   r8   setr   r5   r9   r6   r=   rB   rE   rM   rO   r   r   r   r   <module>   sJ    





