Ë
    /�Dj‹M  ã                   óª  — d gZ ddlZ	 ddlmZ ddlZddlm	Z	 ddl
mZ ddlmZmZmZmZmZ ddlmZmZmZ ddlmZ  G d	„ d e«      Zd
„ Zd„ Z eddd«       eddd«       eddd«       eddd«       eddd«       eddd«       eddd«       eddd«      gZddgZd„ Zd„ Zd„ Z d„ Z! G d„ de«      Z"d„ Z#d „ Z$d!„ Z%g d"¢Z&d#„ Z'y# e$ r	 ddlmZ Y ŒÂw xY w)$ÚLinearConstrainté    N)ÚMapping)Ú
PatsyError)ÚOrigin)Úatleast_2d_column_defaultÚrepr_pretty_delegateÚrepr_pretty_implÚno_picklingÚassert_no_pickling)ÚTokenÚOperatorÚinfix_parse)Ú_parsing_error_testc                   ó6   — e Zd ZdZdd„ZeZd„ ZeZ	e
d„ «       Zy)r   ap  A linear constraint in matrix form.

    This object represents a linear constraint of the form `Ax = b`.

    Usually you won't be constructing these by hand, but instead get them as
    the return value from :meth:`DesignInfo.linear_constraint`.

    .. attribute:: coefs

       A 2-dimensional ndarray with float dtype, representing `A`.

    .. attribute:: constants

       A 2-dimensional single-column ndarray with float dtype, representing
       `b`.

    .. attribute:: variable_names

       A list of strings giving the names of the variables being
       constrained. (Used only for consistency checking.)
    Nc                 ó$  — t        |«      | _        t        j                  t        j                  |t
        ¬«      «      | _        |€2t        j                  | j                  j                  d   t
        ¬«      }t        j                  |t
        ¬«      }t        |«      | _
        | j                  j                  dk7  s| j                  j                  d   dk7  rt        d«      ‚| j                  j                  dk7  s%| j                  j                  d   t        |«      k7  rt        d«      ‚| j                  j                  d   dk(  rt        d«      ‚| j                  j                  d   | j                  j                  d   k7  rt        d«      ‚y )	N©Údtyper   é   é   z1constants is not (convertible to) a column matrixzwrong shape for coefsz/must have at least one row in constraint matrixz*shape mismatch between coefs and constants)ÚlistÚvariable_namesÚnpÚ
atleast_2dÚasarrayÚfloatÚcoefsÚzerosÚshaper   Ú	constantsÚndimÚ
ValueErrorÚlen)Úselfr   r   r   s       úTC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\patsy/constraint.pyÚ__init__zLinearConstraint.__init__5   s0  € Ü" >Ó2ˆÔÜ—]‘]¤2§:¡:¨e¼5Ô#AÓBˆŒ
ØÐÜŸ™ §¡×!1Ñ!1°!Ñ!4¼EÔBˆIÜ—J‘J˜y´Ô6ˆ	Ü2°9Ó=ˆŒØ�>‰>×Ñ !Ò# t§~¡~×';Ñ';¸AÑ'>À!Ò'CÜÐPÓQÐQØ�:‰:�?‰?˜aÒ 4§:¡:×#3Ñ#3°AÑ#6¼#¸nÓ:MÒ#MÜÐ4Ó5Ð5Ø�:‰:×Ñ˜AÑ !Ò#ÜÐNÓOÐOØ�:‰:×Ñ˜AÑ $§.¡.×"6Ñ"6°qÑ"9Ò9ÜÐIÓJÐJð :ó    c                 óf   — |rJ ‚t        || | j                  | j                  | j                  g«      S ©N)r	   r   r   r   )r#   ÚpÚcycles      r$   Ú_repr_pretty_zLinearConstraint._repr_pretty_G   s1   € ÙÑÜØˆt�d×)Ñ)¨4¯:©:°t·~±~ÐFó
ð 	
r&   c                 óX  — |st        d«      ‚|d   j                  }|D ]  }|j                  |k7  sŒt        d«      ‚ t        j                  |D �cg c]  }|j                  ‘Œ c}«      }t        j                  |D �cg c]  }|j
                  ‘Œ c}«      } | |||«      S c c}w c c}w )a  Create a new LinearConstraint by ANDing together several existing
        LinearConstraints.

        :arg constraints: An iterable of LinearConstraint objects. Their
          :attr:`variable_names` attributes must all match.
        :returns: A new LinearConstraint object.
        zno constraints specifiedr   zvariable names don't match)r!   r   r   Úvstackr   r   )ÚclsÚconstraintsr   Ú
constraintÚcr   r   s          r$   ÚcombinezLinearConstraint.combineO   sž   € ñ ÜÐ7Ó8Ð8Ø$ Q™×6Ñ6ˆØ%ò 	?ˆJØ×(Ñ(¨NÓ:Ü Ð!=Ó>Ð>ð	?ô —	‘	¨KÖ8 q˜1Ÿ7›7Ò8Ó9ˆÜ—I‘I°KÖ@¨q˜qŸ{›{Ò@ÓAˆ	Ù�> 5¨)Ó4Ð4ùò 9ùÚ@s   ÁB"Á>B'r(   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r   Ú__repr__r+   r
   Ú__getstate__Úclassmethodr2   © r&   r$   r   r      s2   „ ñó,Kð  $€Hò
ð €Làñ5ó ñ5r&   c                  ó„  — 	 ddl m}  t	        ddgddg«      }|j
                  ddgk(  sJ ‚ | |j                  ddgg«        | |j                  dgg«       t	        ddgddgddggdd	g«      } | |j                  ddgddgg«        | |j                  dgd	gg«       |j                  j                  t        j                  t        «      k(  sJ ‚|j                  j                  t        j                  t        «      k(  sJ ‚t	        d
gdgg«      } | |j                  dgg«       dd l}|j                  t        t        d
gddgg«       |j                  t        t        d
gdggg«       |j                  t        t        d
gddggddg«       |j                  t        t        d
dgddggddg«       |j                  t        t        d
gdggg g«       |j                  t        t        d
dgg «       |j                  t        t        d
dgt        j                  d«      «       t        |«       y # t        $ r
 ddlm}  Y �Œ6w xY w)Nr   ©Úassert_equalÚfooÚbarr   r   é   é
   é   Úaé   Úb©r   r   )Únumpy.testingr=   ÚImportErrorÚnumpy.testing.utilsr   r   r   r   r   r   r   ÚpytestÚraisesr!   r   r   )r=   ÚlcrJ   s      r$   Útest_LinearConstraintrM   c   sý  € ð5Ý.ô 
˜5 %˜.¨1¨a¨&Ó	1€BØ×Ñ ¨ Ò.Ñ.Ù�—‘˜Q ˜F˜8Ô$Ù�—‘  ˜uÔ%ä	˜5 %˜.¨A¨q¨6°A°q°6Ð*:¸RÀ¸HÓ	E€BÙ�—‘˜Q ˜F Q¨ FÐ+Ô,Ù�—‘   r d˜|Ô,à�8‰8�>‰>œRŸX™X¤e›_Ò,Ñ,Ø�<‰<×Ñ¤§¡¬%£Ò0Ñ0ô 
˜3˜% 1 # Ó	'€BÙ�—‘˜Q˜C˜5Ô!ãà
‡M�M”*Ô.°°¸¸A¸°xÔ@Ø
‡M�M”*Ô.°°¸!¸¸°wÔ?Ø
‡M�M”*Ô.°°¸¸A¸°xÀ!ÀQÀÔHØ
‡M�M”*Ô.°°c°
¸aÀ¸V¸HÀqÈ!ÀfÔMØ
‡M�M”*Ô.°°¸¸°u¸r¸dÔCØ
‡M�M”*Ô.°°c°
¸BÔ?Ø
‡M�M”*Ô.°°c°
¼B¿H¹HÀVÓ<LÔMä�rÕøô? ò 5ß4Ð4ð5ús   ‚H, È,H?È>H?c            	      óü  — t         j                  t        ddgddg«      t        ddgddgdg«      g«      } | j                  ddgk(  sJ ‚	 ddlm}  || j                  ddgddgg«        || j                  dgdgg«       dd l	}|j                  t        t         j                  g «       |j                  t        t         j                  t        dgdg«      t        dgdg«      g«       y # t
        $ r	 ddlm} Y Œªw xY w)NrC   rE   r   r   r<   )r   r2   r   rG   r=   rH   rI   r   r   rJ   rK   r!   )Úcombr=   rJ   s      r$   Útest_LinearConstraint_combinerP   ˆ   sö   € Ü×#Ñ#ä˜c 3˜Z¨!¨Q¨Ó0Ü˜c 3˜Z¨!¨Q¨°!°Ó5ð	
ó€Dð ×Ñ 3¨ *Ò,Ñ,ð5Ý.ñ �—‘˜q !˜f q¨! fÐ-Ô.Ù�—‘ 1 #¨ s Ô,ãà
‡M�M”*Ô.×6Ñ6¸Ô;Ø
‡M�MÜÜ× Ñ Ü	˜3˜% ! Ó	%Ô'7¸¸À¸sÓ'CÐDõøô ò 5ß4ð5ús   Á
C) Ã)C;Ã:C;ú,r   iœÿÿÿú=ú+r   éd   ú-Ú*éÈ   ú/ÚNUMBERÚVARIABLEc                 ó   ‡ ‡— ˆˆ fd„}|S )Nc                 óv   •— ‰dk(  r|}n‰}t        |t        ‰g| j                  j                  «       ¢­Ž |«      S )NÚ__OP__)r   r   ÚmatchÚspan)ÚscannerÚtoken_stringÚactual_typeÚstringÚtypes      €€r$   Ú
make_tokenz _token_maker.<locals>.make_token°   s;   ø€ Ø�8ÒØ&‰KàˆKÜ�[¤&¨Ð"G°'·-±-×2DÑ2DÓ2FÒ"GÈÓVÐVr&   r:   )rd   rc   re   s   `` r$   Ú_token_makerrf   ¯   s   ù€ õWð Ðr&   c           	      ó®  — d}d}dj                  t        D �cg c]!  }t        j                  |j                  «      ‘Œ# c}«      }d}d}t        |t        d¬«      }dj                  |D �cg c]  }t        j                  |«      ‘Œ c}«      }	|t        t        j                  | «      f|t        t        j                  | «      f|t        d| «      f|	t        d	| «      f|t        d
| «      f|d fg}
t        j                  |
«      }|j                  | «      \  }}|r1t        | «      t        |«      z
  }t        dt        | ||dz   «      «      ‚|S c c}w c c}w )Nz\(z\)ú|z&[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?z\s+T)ÚkeyÚreverser]   rZ   rY   z unrecognized token in constraintr   )ÚjoinÚ_opsÚreÚescapeÚ
token_typeÚsortedr"   rf   r   ÚLPARENÚRPARENÚScannerÚscanr   r   )rc   r   Ú	lparen_reÚ	rparen_reÚopÚop_reÚnum_reÚwhitespace_reÚnÚvariable_reÚlexiconr`   ÚtokensÚleftoverÚoffsets                  r$   Ú_tokenize_constraintr�   º   s;  € Ø€IØ€IØ�H‰H¼Ö>°2”b—i‘i §¡Õ.Ò>Ó?€EØ6€FØ€Mô ˜N´¸TÔB€NØ—(‘(°.ÖA¨QœBŸI™I a�LÒAÓB€Kð 
”L¤§¡¨vÓ6Ð7Ø	”L¤§¡¨vÓ6Ð7Ø	”˜X vÓ.Ð/Ø	”l :¨vÓ6Ð7Ø	”˜h¨Ó/Ð0Ø	˜Ðð€Gô �j‰j˜Ó!€GØ—|‘| FÓ+Ñ€FˆHÙÜ�V“œs 8›}Ñ,ˆÜØ.´°v¸vÀvÐPQÁzÓ0Ró
ð 	
ð €Mùò3 ?ùò Bs   ˜&EÁ*Ec            
      ó.  — d} t        | g d¢«      }ddt        j                  dddfdd	d
t        j                  dddfddg	}t	        ||«      D ]a  \  }}t        |t        «      sJ ‚|j                  |d   k(  sJ ‚|j                  t        | |d   |d   «      k(  sJ ‚|j                  |d   k(  rŒaJ ‚ dd l
}|j                  t        t         ddg«       t        ddg«       ddgddgfD ]?  }t        d|«      }t        |«      dk(  sJ ‚|D �cg c]  }|j                  ‘Œ c}g d¢k(  rŒ?J ‚ t        ddg«      }t        |«      dk(  sJ ‚|D �cg c]  }|j                  ‘Œ c}g d¢k(  sJ ‚|D �cg c]  }|j                  ‘Œ c}g d¢k(  sJ ‚y c c}w c c}w c c}w )Nz2 * (a + b) = q)rC   rE   Úq)rY   r   r   Ú2)rV   r   r@   rV   rD   é   ú()rZ   r…   é   rC   )rS   é   é   rS   )rZ   é	   rA   rE   rA   é   ú))rR   é   é   rR   )rZ   é   é   rƒ   r   r   r   r@   z1 + @brE   z@brC   Úaaza aa a)rC   r‘   rC   z2 * a[1,1],úa[1,1])rY   rV   rZ   rQ   )r„   rV   r’   rQ   )r�   r   rq   rr   ÚzipÚ
isinstancerd   Úoriginr   ÚextrarJ   rK   r   r"   )Úcoder~   Ú	expectedsÚgotÚexpectedrJ   ÚnamesÚts           r$   Útest__tokenize_constraintr�   Ù   s�  € Ø€DÜ! $ªÓ8€FàØÜ	�‰�q˜!˜SÐ!ØØØ Ü	�‰�r˜2˜sÐ#ØØ!ð
€Iô ˜V YÓ/ò (‰ˆˆXÜ˜#œuÔ%Ñ%Ø�x‰x˜8 A™;Ò&Ñ&Ø�z‰zœV D¨(°1©+°xÀ±{ÓCÒCÑCØ�y‰y˜H Q™KÓ'Ñ'ð	(ó à
‡M�M”*Ô2°H¸s¸eÔDä˜ D 6Ô*ð ˜�+  c˜{Ð+ò =ˆÜ% h°Ó6ˆÜ�6‹{˜aÒÑØ!'Ö(˜A�—“Ò(Ò,<Ó<Ñ<ð=ô " -°(°Ó<€FÜˆv‹;˜!ÒÑØ"Ö#�qˆA�F‹FÒ#Ò'GÒGÑGØ#Ö$˜ˆA�G‹GÒ$Ò(AÒAÑAÐAùò )ùò
 $ùÚ$s   Ä	FÅ	FÅ*Fc                 ó@   — t        t        | |«      t        t        «      S r(   )r   r�   rl   Ú_atomic)rc   r   s     r$   Úparse_constraintr      s   € ÜÔ+¨F°NÓCÄTÌ7ÓSÐSr&   c                   ó\   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zdd„Zy)Ú_EvalConstraintc                 ó  — || _         t        |«      | _        | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  | j                  dœ
| _        y )N)
)rZ   r   )rY   r   )rS   r   )rU   r   )rS   r   )rU   r   )rV   r   )rX   r   )rR   r   )rQ   r   )Ú_variable_namesr"   Ú_NÚ_eval_variableÚ_eval_numberÚ_eval_unary_plusÚ_eval_unary_minusÚ_eval_binary_plusÚ_eval_binary_minusÚ_eval_binary_multiplyÚ_eval_binary_divÚ_eval_binary_eqÚ_eval_binary_commaÚ	_dispatch)r#   r   s     r$   r%   z_EvalConstraint.__init__  s{   € Ø-ˆÔÜ�nÓ%ˆŒð "×0Ñ0Ø×,Ñ,Ø×+Ñ+Ø×,Ñ,Ø×,Ñ,Ø×-Ñ-Ø×0Ñ0Ø×+Ñ+Ø×*Ñ*Ø×-Ñ-ñ
ˆ�r&   c                 óL   — t        j                  |d | j                   dk(  «      S ©Nr   )r   Úallr¥   )r#   r   s     r$   Úis_constantz_EvalConstraint.is_constant  s!   € Ü�v‰v�e˜I˜dŸg™gÐ&¨!Ñ+Ó,Ð,r&   c                 óÀ   — |j                   j                  }t        j                  | j                  dz   ft
        ¬«      }d|| j                  j                  |«      <   |S )Nr   r   )Útokenr–   r   r   r¥   r   r¤   Úindex)r#   ÚtreeÚvarr   s       r$   r¦   z_EvalConstraint._eval_variable!  sK   € Ø�j‰j×ÑˆÜ—‘˜$Ÿ'™' A™+˜¬uÔ5ˆØ12ˆˆd×"Ñ"×(Ñ(¨Ó-Ñ.Øˆr&   c                 óœ   — t        j                  | j                  dz   ft        ¬«      }t        |j                  j
                  «      |d<   |S )Nr   r   éÿÿÿÿ)r   r   r¥   r   r¶   r–   )r#   r¸   r   s      r$   r§   z_EvalConstraint._eval_number'  s9   € Ü—‘˜$Ÿ'™' A™+˜¬uÔ5ˆÜ˜$Ÿ*™*×*Ñ*Ó+ˆˆb‰	Øˆr&   c                 ó>   — | j                  |j                  d   «      S r²   ©ÚevalÚargs©r#   r¸   s     r$   r¨   z _EvalConstraint._eval_unary_plus,  s   € Ø�y‰y˜Ÿ™ 1™Ó&Ð&r&   c                 óD   — d| j                  |j                  d   «      z  S )Nr»   r   r½   rÀ   s     r$   r©   z!_EvalConstraint._eval_unary_minus/  s   € Ø�D—I‘I˜dŸi™i¨™lÓ+Ñ+Ð+r&   c                 ó|   — | j                  |j                  d   «      | j                  |j                  d   «      z   S ©Nr   r   r½   rÀ   s     r$   rª   z!_EvalConstraint._eval_binary_plus2  ó/   € Ø�y‰y˜Ÿ™ 1™Ó&¨¯©°4·9±9¸Q±<Ó)@Ñ@Ð@r&   c                 ó|   — | j                  |j                  d   «      | j                  |j                  d   «      z
  S rÃ   r½   rÀ   s     r$   r«   z"_EvalConstraint._eval_binary_minus5  rÄ   r&   c                 óÞ   — | j                  |j                  d   «      }| j                  |j                  d   «      }| j                  |«      st        d|j                  d   «      ‚||d   z  S )Nr   r   z1Can't divide by a variable in a linear constraintr»   ©r¾   r¿   r´   r   ©r#   r¸   ÚleftÚrights       r$   r­   z _EvalConstraint._eval_binary_div8  sg   € Ø�y‰y˜Ÿ™ 1™Ó&ˆØ—	‘	˜$Ÿ)™) A™,Ó'ˆØ×Ñ Ô&ÜØCÀTÇYÁYÈqÁ\óð ð �e˜B‘iÑÐr&   c                 óö   — | j                  |j                  d   «      }| j                  |j                  d   «      }| j                  |«      r|d   |z  S | j                  |«      r||d   z  S t        d|«      ‚)Nr   r   r»   z=Can't multiply one variable by another in a linear constraintrÇ   rÈ   s       r$   r¬   z%_EvalConstraint._eval_binary_multiplyA  s{   € Ø�y‰y˜Ÿ™ 1™Ó&ˆØ—	‘	˜$Ÿ)™) A™,Ó'ˆØ×Ñ˜DÔ!Ø˜‘8˜eÑ#Ð#Ø×Ñ˜eÔ$Ø˜% ™)Ñ#Ð#äØOÐQUóð r&   c                 óL  — t        |j                  «      }g }t        |«      D ]L  \  }}|j                  dk(  sŒ|j	                  | j                  |d¬«      «       |j                  d|z
     ||<   ŒN | j                  |d   «      }| j                  |d   «      }|d | j                   |d | j                   z
  }t        j                  |dk(  «      rt        d|«      ‚|d    |d   z   }	t        | j                  ||	«      }
|j	                  |
«       t        j                  |«      S )NrR   T©r0   r   r   z!no variables appear in constraintr»   )r   r¿   Ú	enumeraterd   Úappendr¾   r¥   r   r³   r   r   r¤   r2   )r#   r¸   r¿   r/   ÚiÚargrÉ   rÊ   r   Úconstantr0   s              r$   r®   z_EvalConstraint._eval_binary_eqM  s  € ä�D—I‘I‹ˆØˆÜ “oò 	*‰FˆAˆsØ�x‰x˜3‹Ø×"Ñ" 4§9¡9¨S¸T 9Ó#BÔCð Ÿ(™( 1 q¡5™/��Q’ð	*ð �y‰y˜˜a™Ó!ˆØ—	‘	˜$˜q™'Ó"ˆØ�Y�t—w‘w� %¨	¨$¯'©'Ð"2Ñ2ˆÜ�6‰6�%˜1‘*ÔÜÐ@À$ÓGÐGØ˜‘H�9˜u R™yÑ(ˆÜ% d×&:Ñ&:¸EÀ8ÓLˆ
Ø×Ñ˜:Ô&Ü×'Ñ'¨Ó4Ð4r&   c                 ó°   — | j                  |j                  d   d¬«      }| j                  |j                  d   d¬«      }t        j                  ||g«      S )Nr   TrÍ   r   )r¾   r¿   r   r2   rÈ   s       r$   r¯   z"_EvalConstraint._eval_binary_commaa  sK   € Ø�y‰y˜Ÿ™ 1™°$ˆyÓ7ˆØ—	‘	˜$Ÿ)™) A™,°4�	Ó8ˆÜ×'Ñ'¨¨u¨Ó6Ð6r&   c                 óà  — |j                   t        |j                  «      f}|| j                  v sJ ‚ | j                  |   |«      }|r‰t	        |t
        «      r|S |j                  | j                  dz   k(  sJ ‚t        j                  |d | j                   dk(  «      rt        d|«      ‚t        | j                  |d | j                   |d    «      S t	        |t
        «      rt        d|«      ‚|S )Nr   r   z#term is constant, with no variablesr»   zunexpected constraint object)rd   r"   r¿   r°   r”   r   Úsizer¥   r   r³   r   r¤   )r#   r¸   r0   ri   Úvals        r$   r¾   z_EvalConstraint.evalf  sÕ   € Ø�y‰yœ#˜dŸi™i›.Ð)ˆØ�d—n‘nÑ$Ñ$Ø!ˆd�n‰n˜SÑ! $Ó'ˆÙä˜#Ô/Ô0Ø�
à—x‘x 4§7¡7¨Q¡;Ò.Ñ.Ü—6‘6˜#˜i §¡˜.¨AÑ-Ô.Ü$Ð%JÈDÓQÐQÜ'¨×(<Ñ(<¸cÀ)ÀDÇGÁG¸nÈsÐSUÉwÈhÓWÐWô ˜#Ô/Ô0Ü Ð!?ÀÓFÐFØˆJr&   N)F)r3   r4   r5   r%   r´   r¦   r§   r¨   r©   rª   r«   r­   r¬   r®   r¯   r¾   r:   r&   r$   r¢   r¢     sE   „ ò
ò0-òòò
'ò,òAòAò ò
ò5ò(7ô
r&   r¢   c                 óœ  — t        | t        «      r-| j                  |k7  rt        d| j                  ›d|›d�«      ‚| S t        | t        «      rñt        j                  t        | «      t        |«      ft        ¬«      }t        j                  t        | «      «      }t        «       }t        | j                  «       «      D ]q  \  }\  }}||v r|j                  |«      }n!t        |t        «      r|}nt        d|›�«      ‚||v rt        d||   ›�«      ‚|j                  |«       d|||f<   |||<   Œs t        |||«      S t        | t        «      r| g} t        | t         «      rŠ| rˆt        | d   t        «      rug }	| D ]Y  }
t        |
t        «      st        d	|
›�«      ‚t#        |
|«      }t%        |«      }|	j'                  |j)                  |d
¬«      «       Œ[ t        j+                  |	«      S t        | t,        «      r+t        | «      dk7  rt        d«      ‚| \  }}t        |||«      S t        j.                  | t        ¬«      }t        ||«      S )zaThis is the internal interface implementing
    DesignInfo.linear_constraint, see there for docs.z/LinearConstraint has wrong variable_names (got z, expected rŒ   r   z!unrecognized variable name/index zduplicated constraint on r   r   zexpected a string, not TrÍ   r   z#constraint tuple must have length 2)r”   r   r   r!   r   r   r   r"   r   ÚsetrÎ   Úitemsr·   ÚintÚaddÚstrr   r    r¢   rÏ   r¾   r2   Útupler   )Úconstraint_liker   r   r   ÚusedrÐ   ÚnameÚvalueÚidxr/   r—   r¸   Ú	evaluatorÚcoefs                 r$   Úlinear_constraintrå   z  s.  € ô �/Ô#3Ô4Ø×)Ñ)¨^Ò;Ýð #×1Ó1²>ðCóð ð
 Ðä�/¤7Ô+ô —‘œ#˜oÓ.´°NÓ0CÐDÌEÔRˆÜ—H‘HœS Ó1Ó2ˆ	Ü‹uˆÜ )¨/×*?Ñ*?Ó*AÓ Bò 	!ÑˆA‰}��eØ�~Ñ%Ø$×*Ñ*¨4Ó0‘Ü˜D¤#Ô&Ø‘å É$Ð!PÓQÐQØ�d‰{Ý À.ÐQTÒBUÐ!WÓXÐXØ�H‰H�SŒMØˆE�!�S�&‰MØ ˆI�aŠLð	!ô   °°yÓAÐAä�/¤3Ô'Ø*Ð+ˆô 	�?¤DÔ)ÙÜ� qÑ)¬3Ô/àˆØ#ò 	FˆDÜ˜d¤CÔ(Ý ÁÐ!FÓGÐGÜ# D¨.Ó9ˆDÜ'¨Ó7ˆIØ×Ñ˜yŸ~™~¨d¸t˜~ÓDÕEð	Fô  ×'Ñ'¨Ó4Ð4ä�/¤5Ô)ÜˆÓ 1Ò$ÜÐBÓCÐCØ)‰ˆˆiÜ °°iÓ@Ð@ô �J‰J�¬eÔ4€EÜ˜N¨EÓ2Ð2r&   c                 ó  — 	 ddl m} t	        | |«      }t        d|«       t        |||«      }t        d|«        ||j                  |j                  «        ||j                  |j                  «        ||j                  |j                  «        ||j                  j                  t        j                  t        «      «        ||j                  j                  t        j                  t        «      «       y # t        $ r
 ddlm} Y �Œw xY w)Nr   r<   r™   rš   )rG   r=   rH   rI   rå   Úprintr   r   r   r   r   r   r   )ÚinputÚvarnamesr   r   r=   r™   rš   s          r$   Ú_check_linconrê   ¸  sÃ   € ð5Ý.ô ˜E 8Ó
,€CÜ	ˆ%�ÔÜ ¨%°Ó;€HÜ	ˆ*�hÔÙ�×#Ñ# X×%<Ñ%<Ô=Ù�—‘˜HŸN™NÔ+Ù�—‘ × 2Ñ 2Ô3Ù�—‘—‘¤"§(¡(¬5£/Ô2Ù�—‘×$Ñ$¤b§h¡h¬u£oÕ6øô ò 5ß4Ð4ð5ús   ‚C9 Ã9DÄDc            	      ó´  — dd l } ddlm} t        } |t	        ddgddg«      ddgddggdgg«       | j                  t        t        t	        ddgddg«      ddg«        |ddiddgddggdgg«        | |dd	g«      ddgddgddggdgdgg«        | |dd	g«      ddgddgddggdgdgg«        |ddiddgddggdgg«        | |d
dg«      ddgddgddggdgdgg«        | |ddg«      ddgddgddggdgdgg«       | j                  t        t        ddiddg«       | j                  t        t        dddœddg«        |t        j                  ddg«      ddgddggdgg«        |t        j                  ddgddgg«      ddgddgddggdgdgg«        |dddgddggdgg«        |dddgddggdgg«        |dddgddggdgg«        |dddgddggdgg«        |dddgddgddggdgdgg«        |dddgddgddggdgdgg«        |ddgddgddgddggdgdgg«       | j                  t        t        dddigddg«        |dddgddggdgg«        |dddgddggdgg«        |dddgddgddggdgdgg«        |dddgddgddgddggdgdgdgg«        |dddgddggdgg«        |d ddgddggdgg«        |d!ddgddggdgg«        |d"ddgddgddggdgdgg«        |d#ddgddgddggdgdgg«        |d$g d%¢g d&¢g d'¢g d(¢gdgdgdgg«        |d)dd*gddggdgg«        |d+d,gd-gfddgd+d,ggd-gg«        |d+d,gd,d.ggd-gd/ggfddgd+d,gd,d.ggd-gd/gg«       | j                  t        t        ddgdgdgfddg«       | j                  t        t        ddgfddg«        |d+d,gddgd+d,ggdgg«        |d+d,gd,d.ggddgd+d,gd,d.ggdgdgg«        |t        j                  d+d,g«      ddgd+d,ggdgg«        |t        j                  d+d,gd,d.gg«      ddgd+d,gd,d.ggdgdgg«       | j                  t        t        d ddg«       y )0Nr   )ÚOrderedDictrC   rE   r   r@   r   )rC   r   )rE   r@   rF   )r   r@   rƒ   )rC   r   rD   r…   za = 2za - 2z	a + 1 = 3z	a + b = 3za = 2, b = 3zb = 3, a = 2zb = 3z#2 * (a + b/3) + b + 2*3/4 = 1 + 2*3gªªªªªªú?g      @z+2 * -aéþÿÿÿza - b, a + b = 2r»   za = 1, a = 2, a = 3za * 2z-a = 1z(2 + a - a) * bz	a = 1 = bza = (1 = b)za = 1, a = b = c©rC   rE   r1   )r   r   r   )r   r»   r   )r   r   r»   z	a + 1 = 2za + 1rA   rB   é   é(   é#   )
rJ   Úpatsy.compatrì   rê   r   rK   r!   rå   r   Úarray)rJ   rì   rœ   s      r$   Útest_linear_constraintrô   È  s  € ÛÝ(ä€AáÔ˜˜S�z A q 6Ó*¨S°#¨J¸!¸Q¸¸ÀAÀ3À%ÔHØ
‡M�MÜÔ%Ô'7¸¸c¸
ÀQÈÀFÓ'KÈcÐSVÈZôñ €sˆA€h��c�
˜a ˜V˜H¨ s eÔ,Ù�k�8˜XÐ&Ó'¨#¨s¨°q¸!°f¸qÀ!¸fÐ5EÈÈÈaÈSÀzÔRÙ�k�8˜XÐ&Ó'¨#¨s¨°q¸!°f¸qÀ!¸fÐ5EÈÈÈaÈSÀzÔRá€qˆ!€fˆs�Cˆj˜A˜q˜6˜( a S EÔ*Ù�k�6˜6Ð"Ó# c¨3 Z°1°a°&¸1¸a¸&Ð1AÀQÀCÈ!ÈÀ:ÔNá�k�8˜VÐ$Ó%¨¨S z°Q¸°F¸QÀ¸FÐ3CÀqÀcÈAÈ3ÀZÔPà
‡M�M”*Ô/°#°q°¸CÀ¸:ÔFØ
‡M�M”*Ô/°q¸Q±À#ÀsÀÔLá„b‡h�h��1ˆvÓ˜˜c˜
 a¨ V H°¨s¨eÔ4Ù„b‡h�h��A�˜˜A˜ÐÓ  3¨ *°°1¨v¸¸1°vÐ.>À!ÀÀqÀcÀ
ÔKá€g��Sˆz˜Q ˜F˜8 q c UÔ+Ù€g��Sˆz˜Q ˜F˜8 q c UÔ+Ù€k�C˜�:  A ˜x¨1¨#¨Ô/Ù€k�C˜�:  A ˜x¨1¨#¨Ô/Ù€n�s˜C�j A q 6¨A¨q¨6Ð"2°a°S¸1¸#°JÔ?Ù€n�s˜C�j A q 6¨A¨q¨6Ð"2°a°S¸1¸#°JÔ?á€w�Ð˜3 ˜*¨¨1 v°°1¨vÐ&6¸!¸¸q¸c¸
ÔCà
‡M�M”*Ô/°#¸¸Q°x°À3ÈÀ*ÔMñ Ø-Ø	ˆcˆ
Ø
ˆ[Ð	ÐØ
ˆˆô	ñ €i�#�s�˜r 1˜g˜Y¨!¨¨Ô.ÙÐ˜3 ˜*¨¨2 w°°A°Ð&7¸1¸#À¸s¸ÔDÙÐ˜c 3˜Z¨1¨a¨&°1°a°&¸1¸a¸&Ð)AÀQÀCÈ!ÈÈqÈcÀ?ÔSÙ€g��Sˆz˜Q ˜F˜8 q c UÔ+Ù€h��c�
˜b !˜W˜I¨¨ uÔ-ÙÐ˜#˜s˜ q¨! f X°°¨uÔ5á€k�C˜�:  A ¨¨B¨Ð0°A°3¸¸°+Ô>Ù€m�c˜3�Z 1 b '¨A¨q¨6Ð!2°b°T¸A¸3°KÔ@ÙØÚÚ	’J¢
Ð+Ø
ˆˆqˆc�A�3ˆô	ñ €k�C˜�> Q¨ F 8¨q¨c¨UÔ3áˆˆB€x�"�Ð˜˜c˜
 b¨" X J°"°°Ô7ÙØˆrˆ(�R˜�HÐ	   r d˜|Ð,Ø	ˆcˆ
Ø
ˆbˆ�B˜�8ÐØ
ˆ�ˆtˆô	ð ‡M�M”*Ô/°1°a°&¸1¸#À¸sÐ1CÀcÈ3ÀZÔPØ
‡M�M”*Ô/°1°a°&°¸SÀ#¸JÔGá€rˆ2€h��c�
˜b "˜X˜J¨!¨¨Ô.ÙˆˆB€x�"�b�Ð˜S #˜J¨"¨b¨°B¸°8Ð(<À¸sÀQÀC¸jÔIÙ„b‡h�h��BˆxÓ˜3 ˜*¨¨B x j°A°3°%Ô8Ù„b‡h�h��R�˜2˜r˜(Ð#Ó$ s¨C j°B¸°8¸bÀ"¸XÐ2FÈ!ÈÈqÈcÈ
ÔSð ‡M�M”*Ô/°¸¸S°zÕBr&   )
z	a + <f>ooza = 1, <1 = 1>, b = 1za = 1, <b * 2 - b + (-2/2 * b)>za = 1, <1>, b = 2za = 1, <2 * b = b + b>, cza + <a * b> + cza + 2 / <b> + cza = 1, 2 * <(a = b)>, cza = 1, a + <(a = b)>, cza = 1, <(a, b)> + 2, cc                  ó*   — d„ } t        | t        «       y )Nc                 ó   — t        | g d¢«      S )Nrî   )rå   )Úbad_codes    r$   Údoitztest_eval_errors.<locals>.doit.  s   € Ü  ª?Ó;Ð;r&   )r   Ú_parse_eval_error_tests)rø   s    r$   Útest_eval_errorsrú   -  s   € ò<ô ˜Ô5Õ6r&   )(Ú__all__rm   Úcollections.abcr   rH   ÚcollectionsÚnumpyr   Úpatsyr   Úpatsy.originr   Ú
patsy.utilr   r   r	   r
   r   Úpatsy.infix_parserr   r   r   Úpatsy.parse_formular   Úobjectr   rM   rP   rl   rŸ   rf   r�   r�   r    r¢   rå   rê   rô   rù   rú   r:   r&   r$   ú<module>r     s$  ðð Ð
€ã 	ð$Ý'ó Ý Ý ÷õ ÷ <Ñ ;Ý 3ôB5�vô B5òJ"òJñ4 ˆS�!�TÓÙˆS�!�QÓÙˆS�!�SÓÙˆS�!�SÓÙˆS�!�SÓÙˆS�!�SÓÙˆS�!�SÓÙˆS�!�SÓð	€ð �ZÐ
 €òòò>%BòPTôr�fô ròj;3ò|7ò PCòfÐ ó$7øð ò $ß#ð$ús   ‰C ÃCÃC