
    g)                     r    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y)    )no_picklingc                   2    e Zd ZdZd Zd Zd Zd Zd Ze	Z
y)_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                      || _         || _        y Nincludes_interceptfactor)selfr	   r
   s      M/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/patsy/redundancy.py__init__z_ExpandedFactor.__init__6   s    "4    c                 N    t        t        | j                  | j                  f      S r   )hashr   r	   r
   r   s    r   __hash__z_ExpandedFactor.__hash__:   s    _d&=&=t{{KLLr   c                     t        |t              xr4 |j                  | j                  k(  xr |j                  | j                  k(  S r   )
isinstancer   r	   r
   r   others     r   __eq__z_ExpandedFactor.__eq__=   s?    uo. ,((D,C,CC,+	
r   c                     | |k(   S r    r   s     r   __ne__z_ExpandedFactor.__ne__D       5=  r   c                 D    | j                   rd}nd}| j                  |S )N+-r   )r   suffixs     r   __repr__z_ExpandedFactor.__repr__G   s$    ""FFf--r   N)__name__
__module____qualname____doc__r   r   r   r   r    r   __getstate__r   r   r   r   r   0   s(    /
M
!. Lr   r   c                   >    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
eZy	)
_SubtermzAlso immutable.c                 $    t        |      | _        y r   )	frozensetefactors)r   r*   s     r   r   z_Subterm.__init__T   s    !(+r   c                     t        | j                        t        |j                        z
  dk(  xr% | j                  j                  |j                        S )N   )lenr*   
issupersetr   s     r   
can_absorbz_Subterm.can_absorbW   sI    4==!CNN%
 
 <==++ENN;	<r   c                 .   | j                   j                  |j                         }t        |      dk(  sJ t        |      d   }|j                  rJ t        |j                         }|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]   sv    }}''74yA~~t*Q-----%..)gnn=>$$r   c                 8    t        t        | j                  f      S r   )r   r'   r*   r   s    r   r   z_Subterm.__hash__f   s    Xt}}-..r   c                 X    t        |t              xr | 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                  dt        | j                        dS )N())	__class__r!   r2   r*   r   s    r   r    z_Subterm.__repr__o   s     >>22D4GHHr   N)r!   r"   r#   r$   r   r/   r8   r   r   r   r    r   r%   r   r   r   r'   r'   Q   s1    ,<%/N!I Lr   r'   c           
          g }| D ]R  }g }|D ]/  }|d   dv sJ |j                  t        |d   dk(  |d d              1 |j                  t        |             T |S )N)r   r   r   )appendr   r'   )short_subtermssubtermssubtermfactorsfactor_names        r   _expand_test_abbrevsrH   x   s|    H! +" 	VKr?j000NN?;r?c+A;sPRCSTU	V 	)*+ Or   c                  z   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 ]  }| j                  |      sJ  | j                  |      sJ | j                  |      |k(  sJ y )	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!56q9E!2$'*F$/2D
x
(
+C$)!,D 4,03EfdD%/ (??3'''(??3;;su$$$r   c           	   #     K   d }t        t        |             }t         ||            }|j                          |j                  t               |D ]"  }t	        |D cg c]  \  }}|	 c}}       $ y c c}}w w)Nc              3   b   K   | sd y | d   }t        | dd        D ]  }| |f|z     y w)Nr   r   r,   )_subsets_sorted)seqobjsubsets      r   helperz_subsets_sorted.<locals>.helper   sB     Ha&C)#ab'2 &fvo%&s   -/)key)r2   	enumeratesortr-   tuple)tuplr^   expandedexpanded_subsetsr]   idxr\   s          r   rZ   rZ      sv     & IdO$HF8,- c"" 462Zc3S23342s   AA? A9,A?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 y )Nr,      )r   r,   ri   rh   r,   ri      )r   rj   rk   )rm   rh   )r,   rm   )ri   rm   rl          )r2   rZ   r-   ranger   r   r   test__subsets_sortedrq      s_    '(,DDDD	*+ 	0 	 	 	 tOE!H-./4777r   c                     t        |       D ]_  \  }}t        | |dz   d        D ]F  \  }}|j                  |      s|j                  |      }|| |dz   |z   <   | j                  |         y a y)Nr,   TF)r`   r/   r8   pop)rD   short_ishort_subtermlong_ilong_subtermnew_subterms         r   _simplify_one_subtermry      s     #,H"5 $-hw{}.E$F 	 FL&&}5*11-@1<1v-.W%	 r   c                 6    t        |       r	 t        |       ry y r   )ry   )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       y )Nc                 p    t        |       } t        |      }t        d| d|       t        |        | |k(  sJ y )Nztesting if:z->)rH   printr{   )givenexpecteds     r   tz"test__simplify_subterms.<locals>.t   s:    $U+'1mUD(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      sT    ! wi'r7mgY*\N;!G\#:;&,(?@r   c           
         | j                   D cg c]	  }||vs| }}g }t        |      D ];  }t        |D cg c]  }t        d|       c}      }||vs+|j	                  |       = |j                  |       t        |       g }|D ]?  }i }	|j                  D ]  }
|
j                  |	|
j                  <    |j	                  |	       A |S c c}w c c}w )NF)
rF   rZ   r'   r   rB   updater{   r*   r	   r
   )termnumeric_factorsused_subtermsfcategorical_factorsrD   r]   rE   factor_codingsfactor_codingrd   s              r   pick_contrasts_for_termr      s    &*llOa6N1OO H!"56 %vF!OE15FG-'OOG$% "x N -(( 	IH-5-H-HM(//*	Im,	-
 # P Gs   	CCC
c                     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 y )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     s   5D%d2ht<Grd??%dC:&6SE
DIGU|n$$$%dC:&6tDGT.////IM%dC:&6tDGU|5t%<==== &dC:&6}MGU|4e%<====r   N)
patsy.utilr   objectr   r'   rH   rW   rZ   rq   ry   r{   r   r   r   r   r   r   <module>r      sT   V #
f B!v !N%$408

AF*>r   