
    J/Ph)                         d dl mZ  G d de          Z G d de          Zd Zd Zd Zd	 Zd
 Z	d Z
d Zd Zd ZdS )    )no_picklingc                   4    e Zd ZdZd Zd Zd Zd Zd Ze	Z
dS )_ExpandedFactorzA factor, with an additional annotation for whether it is coded
    full-rank (includes_intercept=True) or not.

    These objects are treated as immutable.c                 "    || _         || _        d S Nincludes_interceptfactor)selfr	   r
   s      P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/patsy/redundancy.py__init__z_ExpandedFactor.__init__6   s    "4    c                 D    t          t          | j        | j        f          S r   )hashr   r	   r
   r   s    r   __hash__z_ExpandedFactor.__hash__:   s    _d&=t{KLLLr   c                 l    t          |t                    o|j        | j        k    o|j        | j        k    S r   )
isinstancer   r	   r
   r   others     r   __eq__z_ExpandedFactor.__eq__=   s8    uo.. ,(D,CC,+	
r   c                     | |k     S r    r   s     r   __ne__z_ExpandedFactor.__ne__D       5=  r   c                 0    | j         rd}nd}| j        |S )N+-r   )r   suffixs     r   __repr__z_ExpandedFactor.__repr__G   s*    " 	FFFff--r   N)__name__
__module____qualname____doc__r   r   r   r   r    r   __getstate__r   r   r   r   r   0   sm        / /
  M M M
 
 
! ! !. . . LLLr   r   c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
eZd	S )
_SubtermzAlso immutable.c                 .    t          |          | _        d S r   )	frozensetefactors)r   r*   s     r   r   z_Subterm.__init__T   s    !(++r   c                     t          | j                  t          |j                  z
  dk    o| j                            |j                  S )N   )lenr*   
issupersetr   s     r   
can_absorbz_Subterm.can_absorbW   sL    4=!!CN%
 %
 
 <=++EN;;	<r   c                 <   | j                             |j                   }t          |          dk    sJ t          |          d         }|j        rJ t          |j                   }|                    t          d|j                             t          |          S )Nr,   r   T)
r*   
differencer-   listr	   setaddr   r
   r'   )r   r   diffefactornew_factorss        r   absorbz_Subterm.absorb]   s    }''774yyA~~~~t**Q-----%.))gn==>>>$$$r   c                 8    t          t          | j        f          S r   )r   r'   r*   r   s    r   r   z_Subterm.__hash__f   s    Xt}-...r   c                 L    t          |t                    o| j        | j        k    S r   )r   r'   r*   r   s     r   r   z_Subterm.__eq__i   s     %**Mt}/MMr   c                     | |k     S r   r   r   s     r   r   z_Subterm.__ne__l   r   r   c                 J    | j         j        dt          | j                  dS )N())	__class__r!   r2   r*   r   s    r   r    z_Subterm.__repr__o   s(    >222D4G4G4G4GHHr   N)r!   r"   r#   r$   r   r/   r8   r   r   r   r    r   r%   r   r   r   r'   r'   Q   s        , , ,< < <% % %/ / /N N N! ! !I I I LLLr   r'   c           
          g }| D ]l}g }|D ]C}|d         dv sJ |                     t          |d         dk    |d d                              D|                     t          |                     m|S )N)r   r   r   )appendr   r'   )short_subtermssubtermssubtermfactorsfactor_names        r   _expand_test_abbrevsrH   x   s    H! + +" 	V 	VKr?j0000NN?;r?c+A;sPRsCSTTUUUU))****Or   c                     t          ddgg          d         } t          g dg          d         }t          g g          d         }t          ddgg          d         }t          dgg          d         }t          dgg          d         }t          ddgg          d         }|||||fD ]}|                     |          rJ |                     |          sJ |                     |          |k    sJ d S )	Na-b-r   )rJ   rK   c-rL   zd-a+b+)rH   r/   r8   )s_abs_abcs_nulls_cds_as_aps_abpbads           r   test__SubtermrW      s   $//2D "4"4"4!566q9E!2$''*F$//2D
x
(
(
+C$))!,D 4,003EfdD%/ ( (??3''''''??3;;su$$$$$$r   c              #     K   d }t          t          |                     }t           ||                    }|                                 |                    t                     |D ]}t	          d |D                       V  d S )Nc              3   v   K   | sdV  d S | d         }t          | dd                    D ]}|V  |f|z   V  d S )Nr   r   r,   )_subsets_sorted)seqobjsubsets      r   helperz_subsets_sorted.<locals>.helper   sk       	&HHHHHa&C)#abb'22 & &fvo%%%%& &r   )keyc                     g | ]\  }}|S r   r   ).0idxr\   s      r   
<listcomp>z#_subsets_sorted.<locals>.<listcomp>   s    222Zc3S222r   )r2   	enumeratesortr-   tuple)tuplr^   expandedexpanded_subsetsr]   s        r   rZ   rZ      s      & & & IdOO$$HFF8,,-- c"""" 4 42262223333334 4r   c            	         t          t          d                    g dk    sJ t          t          d                    g dk    sJ t          t          t          t          d                                        dk    sJ d S )Nr,      )r   r,   rl   rk   r,   rl      )r   rm   rn   )rp   rk   )r,   rp   )rl   rp   ro          )r2   rZ   r-   ranger   r   r   test__subsets_sortedrt      s    ''((,D,D,DDDDD	**++ 	0 	0 	0 	 	 	 	 tOE!HH--..//4777777r   c                    t          |           D ]s\  }}t          | |dz   d                    D ]S\  }}|                    |          r9|                    |          }|| |dz   |z   <   |                     |             dS TtdS )Nr,   TF)rd   r/   r8   pop)rD   short_ishort_subtermlong_ilong_subtermnew_subterms         r   _simplify_one_subtermr|      s     #,H"5"5  $-hw{}}.E$F$F 	 	 FL&&}55 *11-@@1<1v-.W%%%ttt		 5r   c                 H    t          |           r	 t          |           d S d S r   )r|   )rD   s    r   _simplify_subtermsr~      s;    

)
)   
)
)     r   c                      d }  | dgdg            | ddgdg            | g ddg            | g dddg            | g d	d
dg           d S )Nc                     t          |           } t          |          }t          d| d|           t          |            | |k    sJ d S )Nztesting if:z->)rH   printr~   )givenexpecteds     r   tz"test__simplify_subterms.<locals>.t   sU    $U++'11mUD(3335!!!      r   rJ   r   )rM   )r   r   rK   rJ   rK   )rM   rN   )r   r   r   r   )r   r   r   r   )rJ   rN   r   )r   s    r   test__simplify_subtermsr      s    ! ! ! Awi'Ar7mgYA***\N;;;A!!!G\#:;;;A&&&,(?@@@@@r   c                 p   fd| j         D             }g }t          |          D ]4}t          d |D                       }||vr|                    |           5|                    |           t          |           g }|D ]2}i }|j        D ]}	|	j        ||	j        <   |                    |           3|S )Nc                     g | ]}|v|	S r   r   )ra   fnumeric_factorss     r   rc   z+pick_contrasts_for_term.<locals>.<listcomp>   s#    OOOa6N6N16N6N6Nr   c                 .    g | ]}t          d |          S )F)r   )ra   r   s     r   rc   z+pick_contrasts_for_term.<locals>.<listcomp>   s"    FFF!OE155FFFr   )	rF   rZ   r'   rB   updater~   r*   r	   r
   )
termr   used_subtermscategorical_factorsrD   r]   rE   factor_codingsfactor_codingrh   s
    `        r   pick_contrasts_for_termr      s    OOOOdlOOO H!"566 % %FFvFFFGG-''OOG$$$"""x   N - -( 	I 	IH-5-HM(/**m,,,,r   c                  X   ddl m}  t                      }t           | g           t                      |          }|i gk    sJ t           | ddg          t          dg          |          }|ddigk    sJ t           | ddg          t                      |          }|dddgk    sJ t          |          }t           | d	d
g          t                      |          }|d
didddgk    sJ t           | d
d	g          t                      |          }|d	didddgk    sJ d S )Nr   )TermaxFbT)r   r   cd)r   r   )
patsy.descr   r3   r   )r   usedcodingsused_snapshots       r   test_pick_contrasts_for_termr     sc   55D%dd2hht<<Grd????%ddC:&6&6SE

DIIGU|n$$$$%ddC:&6&6tDDGT../////IIM%ddC:&6&6tDDGU|5t%<%<===== &ddC:&6&6}MMGU|4e%<%<=======r   N)
patsy.utilr   objectr   r'   rH   rW   rZ   rt   r|   r~   r   r   r   r   r   r   <module>r      s  V # " " " " "
    f   B! ! ! ! !v ! ! !N  % % %$4 4 408 8 8
 
 
  
A A AF  *> > > > >r   