o
    i%                     @   s^   d dl Z d dlmZ d dlmZmZmZ dZG dd dZdd Z	d	d
 Z
dd Zdd ZdS )    N)EinopsError)AnonymousAxisParsedExpression	_ellipsiszAlex Rogozhnikovc                   @   s"   e Zd ZdefddZdd ZdS )AnonymousAxisPlaceholdervaluec                 C   s   || _ t| j tsJ d S N)r   
isinstanceint)selfr    r   V/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/einops/tests/test_parsing.py__init__
   s   z!AnonymousAxisPlaceholder.__init__c                 C   s   t |to
| j|jkS r   )r	   r   r   )r   otherr   r   r   __eq__   s   zAnonymousAxisPlaceholder.__eq__N)__name__
__module____qualname__r
   r   r   r   r   r   r   r   	   s    r   c                  C   st   t dt d} }| |ksJ tdtd}}| |kr ||ks"J | |kr*||ks,J | d|g|d|gks8J d S )N2      )r   r   )abcdr   r   r   test_anonymous_axes   s   r   c                  C   sD   dD ]	} t | sJ qdddddddtfD ]	} t | rJ qd S )	N)r   r   hdxh1zzi9123somelongnameAlex	camelCaseu_n_d_e_r_scoreunreasonablyLongAxisName 2b12_startWithUnderscoreendWithUnderscore__z...)r   check_axis_namer   )namer   r   r   test_elementary_axis_name   s
   r.   c                   C   sH  t d tt t d W d    n1 sw   Y  tt t d W d    n1 s1w   Y  tt t d W d    n1 sJw   Y  t d tt t d W d    n1 sgw   Y  tt t d W d    n1 sw   Y  tt t d W d    n1 sw   Y  tt t d	 W d    n1 sw   Y  t d
 tt t d W d    n1 sw   Y  tt t d W d    n1 sw   Y  tt t d W d    n	1 sw   Y  tt t d W d    d S 1 sw   Y  d S )Nz... a b c dz... a b c d ...z... a b c (d ...)z(... a) b c (d ...)z(a) b c (d ...)z(a)) b c (d ...)z(a b c (d ...)z(a) (()) b c (d ...)z(a) ((b c) (d ...))u&   camelCase under_scored cApiTaLs ß ...1a_prez...prezpre...)r   pytestraisesr   r   r   r   r   test_invalid_expressions0   sH   










$r3   c                  C   s  t d} | jh dksJ | jdgdgdgdggksJ | jr!J | jr&J t d} | jt ks2J | jg g g g gks=J | jrBJ | jrGJ t d} | jt ksSJ | jg g g g gks^J | jrcJ | jrhJ t}t d	} t| jd
krdd | jD h dksJ | j|dg|d
|dggksJ | jsJ | jrJ t d} t| jdkrdd | jD ddhksJ | j|dgg |dgg gksJ t d} t| jdksJ | jdt	ddh
 dksJ | jdgt	dg|dgd|dggksJ | jsJ | jsJ | jrJ t d} t| jdksJ | jdt	ddh
 dks,J | jdt	d|dgdg|dggksAJ | jsGJ | jsMJ | jsSJ d S )Nza1  b1   c1    d1>   a1b1c1d1r4   r5   r6   r7   z() () () ()z1 1 1 ()z5 (3 4)r   c                 S      h | ]}|j qS r   r   .0ir   r   r   	<setcomp>g       z(test_parse_expression.<locals>.<setcomp>>   r         r@   r?   z5 1 (1 4) 1r   c                 S   r8   r   r9   r:   r   r   r   r=   m   r>   zname1 ... a1 12 (name2 14)   name1name2      z(name1 ... a1 12) name2 14)r   identifierscompositionhas_non_unitary_anonymous_axeshas_ellipsissetr   len
differencer   __len__has_ellipsis_parenthesized)parsedaapr   r   r   test_parse_expressionQ   sL   





*$

*" *"*rQ   )r1   einopsr   einops.parsingr   r   r   
__author__r   r   r.   r3   rQ   r   r   r   r   <module>   s    		!