
    M/Phg                     P   d dl mZmZmZmZmZmZmZmZ d dl	Z
d dlZd dlZd dlmZmZ ee         ZdedefdZdededefd	Zd
eeef         deeee         f         fdZdeeef         deeee         f         defdZdededededeeef         f
dZdeeef         deeef         dedeeef         fdZdedededededeeef         fdZd Zd Zdedededededeeef         fdZdeeef         d edefd!Z	 d$dededed"eej                 deeef         f
d#Z dS )%    )AnyDictIterableOptionalSequenceSetTupleTypeN)VisionsBaseTypeVisionsTypesetvreturnc                 f    t          | t                    ot          | t          t          f           S N)
isinstancer   strbytes)r   s    R/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/visions/test/utils.pyis_iterr      s(    a""F:a#u+F+F'FF    s1s2c                     t          | |          D ]h\  }}t          |          r#t          |          rt          ||          s dS 7t          j        |          rt          j        |          s	||k    s dS idS )NFT)zipr   sequences_equalpdisna)r   r   v1v2s       r   r   r      s    b"++  B2;; 	72;; 	"2r** uu'"++ 	"'"++ 	rRxx554r   series_list
series_mapc                 x   d |                                 D             }t          |                                           }||k    sr||z
  }||z
  }t          |          dk    r!t	          t          |           d|           t          |          dk    r#t	          t          |           d|           dS dS )z$Check that all names are indeed usedc                     h | ]	}|D ]}|
S  r$   ).0namesnames      r   	<setcomp>z&all_series_included.<locals>.<setcomp>   s%    JJJ5EJJD$JJJJr   r   z series not included in tests z' series are included, not not provided N)valuessetkeyslen
ValueError)r    r!   
used_namesr&   unusednot_provideds         r   all_series_includedr1      s     KJJ$5$5$7$7JJJJ  ""##EJ#!E)v;;??FSS6SSTTT|q  |$$[[\[[    ! r   _test_suite_series_maptypesetc                    t          t          t          t          j        t          j        |j                                                          }|D ]\  }}||xx         ||         z  cc<   t          | |           g }|                                 D ]T\  }}|                                D ]:\  }	}
d| d|	 i}||
v }|                    t          j
        |||	|fi |           ;Ug d|dS )a  Parametrize contains tests

    Args:
        _test_suite: mapping from sequence identifiers to sequences
        _series_map: mapping from type to a set of sequence identifiers
        typeset: A VisionsTypeset

    Returns:
        the args for the generated tests
    id x )r'   seriescontains_typememberargnames	argvalues)listreversednxtopological_sort
line_graph
base_graphr1   itemsappendpytestparam)r2   r3   r4   reversed_topological_edge_sortparentchild
argsvaluesr'   itemtyper    argsr:   s                r   get_contains_casesrO   .   sE   " &*b)"-8J*K*KLLMMNN& &" 8 2 2F{511[111J!'')) N N
d!,!2!2!4!4 	N 	ND+$(T*<*<d*<*<#=D[(Ffl4tVLLtLLMMMM		N BAA  r   r'   r8   rM   r:   c           	      0    |||v k    |  d| d| d||v  fS )Nz in z; expected z, got r$   )r'   r8   rM   r:   s       r   containsrQ   U   s=    6T>"DDTDDfDDFdNDD r   inferred_series_type_mapc                    g }|                                  D ]n\  }}||vrt          | d          ||         }|j        D ]C}||k    }d| d| d| i}	||k    }
|                    t	          j        |||||
fi |	           Dod|dS )NzG has no defined inference type, please add one to the test case mappingr6   r7   
 expected z-name,series,inference_type,typeset,differencer;   )rD   r-   typesrE   rF   rG   )r2   rR   r4   rK   r'   r8   expected_type	test_typeexpectedrN   
differences              r   get_inference_casesrZ   \   s    
 J#))++  f///```   16  	 	I M1H$(T*U*Ui*U*U8*U*U#VD"m3JT69gzRRTRR   		 D  r   rV   rY   c                     ddl m} |                    |          \  }}} ||          }||k    |k    d|  d| d|  d| d| 
fS )Nr   )get_type_from_pathzinference of rT   z to be z
 (typeset=z	). Path: )visions.typesets.typesetr\   infer)	r'   r8   rV   r4   rY   r\   _pathsinferred_types	            r   infersrb   v   s     <;;;;;--''KAua&&u--M 
-	'J6qqqqq*nqqX_qqjoqq r   c                    i }| D ])\  }}}	 |||         |<   # t           $ r
 ||i||<   Y &w xY wt                      }|j        D ]p}|j        D ]f}|j        |j        }
}	|j        rO|
|vs)|	||
         vst          ||
         |	                   dk    r"|                    t          |                     gqt          |          dk    rt          d|           d S )Nr   z)Not all inferential relations are tested )KeyErrorr*   rU   	relationsrelated_typerM   inferentialr,   addr   r-   )r!   r4   series_map_lookupmap_to_typemap_from_typerD   missing_relationsnoderelation	from_typeto_types              r   all_relations_testedrq      sL   -7 D D)]E	D<Ak*=99 	D 	D 	D.;U-Ck***	D  5 5 	5 	5H!)!6wI# 5000$5g$>>>(1)<==BB!%%c(mm444	5 !!K8IKK
 
 	
 "!s   ,,c                 f   t          ||           g }|                                 D ]x\  }}|D ]p\  }}}|D ]*}	|	|                                 vrt          |	 d          +||v r9d| d| d| i}
||v }|                    t          j        |||||fi |
           qyt          g d|          S )Nz8 specified in convert_map, but not in provided sequencesr6   : z -> )r'   source_typerelation_typer8   r:   r;   )rq   rD   r+   r-   rE   rF   rG   dict)r2   r3   r4   rK   r'   rL   rt   ru   r    namexrN   r:   s               r   get_convert_casesrx      s1   g...J!''))  
d7B 	 	3K$   0 0 2 222$ ZZZ   3
 }$$TEE]EEEE( ,!!L{M4XXSWXX  	  MMM   r   rt   ru   c           
          |j                             |d           }|dn|                    |i           }|s| | d| d| d|  d| 	fS t          |                    |i                     }|d| d| d| fS )NFz, zRelationship z for zE tested false (but shouldn't have). Transform result would have been )re   getis_relationr>   	transform)r'   rt   ru   r8   r:   rn   r{   transformed_seriess           r   convertr~      s     $((==H#+%%1E1Efb1Q1QK 
_DDhDD&DDDDDFDD
 	
 "("4"4VR"@"@AA EH E E6 E E0BE E
 	
r   _resultsc                     g }|                                  D ]O\  }}||v }|                    |d          }d| d| i}|                    t          j        |||fi |           Pt          g d|          S )N r6   rs   )r'   r8   rX   r;   )rD   rz   rE   rF   rG   rv   )r2   r   rK   r'   rL   changedvaluerN   s           r   get_cast_casesr      s    J!'')) C C
d("T2&& $&:&:&:&:;&,tT5AADAABBBB///   r   rX   c                     |                     |          }|Dt          ||          }d|  d| d| }|r&t          |          t          |          k    }d|  d}nt          ||          }d|  d| d| }||fS )NzSeries z cast expected z (no casting) got z7 memory addresses are not equal, while return value wasz got )cast_to_inferredr   r6   )r'   r8   r4   rX   resultr   ms          r   castr      s     %%f--FFF++MdMM6MMVMM 	X6

bjj(AW$WWWAFH--BdBB8BB&BBa4Kr   r   )!typingr   r   r   r   r   r   r	   r
   networkxr@   pandasr   rF   visionsr   r   Tboolr   r   r   r1   rO   rQ   rZ   rb   rq   rx   r~   r   Seriesr   r$   r   r   <module>r      s>   L L L L L L L L L L L L L L L L L L L L          3 3 3 3 3 3 3 3Gs Gt G G G G h 4    c8m$26q#c({2C   &$c8m$$aSk"$ $ $ $ $N3   4 E$PS)DT    c8m$"36l  
#s(^	   4
  	
  49   (
 
 
4  6



./
9A
KO

49
 
 
 
,S(] 3 t     $ %)	 
  ry!	
 49     r   