Ë
    Ã?Æi«I  ã                   óø   — d Z ddlZddlZddlmZ ddlZddlZddlmZmZ dd„Z	 G d„ dej                  «      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„ Zedk(  r ej6                  «        yy)zTransform unit testsé    N)Údedent)ÚAffineÚEPSILONc                 ó¬   — t        | «      t        |«      k(  sJ | ›d|›�«       ‚t        | |«      D ]"  \  }}t        ||z
  «      |k  rŒJ | ›d|›�«       ‚ y )Nz != )ÚlenÚzipÚabs)Út1Út2ÚerrorÚm1Úm2s        úb/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/affine/tests/test_transform.pyÚseq_almost_equalr   )   sg   € Üˆr‹7”c˜"“gÒÐ2 "  t¨B¨6Ð2Ó2ÐÜ�b˜"“+ò :‰ˆˆBÜ�2˜‘7‹|˜uÓ$Ð9¨¨¨d°2°&Ð&9Ó9Ð$ñ:ó    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„ 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„ 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)„ Z+d*„ Z,d+„ Z-d,„ Z.d-„ Z/d.„ Z0y/)0ÚPyAffineTestCasec                 ót   — t        j                  t        «      5  t        «        d d d «       y # 1 sw Y   y xY w©N©ÚpytestÚraisesÚ	TypeErrorr   ©Úselfs    r   Útest_zero_argszPyAffineTestCase.test_zero_args0   s(   € Ü�]‰]œ9Ó%ñ 	ÜŒH÷	÷ 	ñ 	ús   š.®7c                 óv   — t        j                  t        «      5  t        d «       d d d «       y # 1 sw Y   y xY wr   r   r   s    r   Útest_wrong_arg_typez$PyAffineTestCase.test_wrong_arg_type4   s*   € Ü�]‰]œ9Ó%ñ 	Ü�4ŒL÷	÷ 	ñ 	ús   š/¯8c                 óx   — t        j                  t        «      5  t        dd«       d d d «       y # 1 sw Y   y xY w)Né   é   r   r   s    r   Útest_args_too_fewz"PyAffineTestCase.test_args_too_few8   s,   € Ü�]‰]œ9Ó%ñ 	Ü�1�aŒL÷	÷ 	ñ 	ús   š0°9c                 ó‚   — t        j                  t        «      5  t        t	        d«      Ž  d d d «       y # 1 sw Y   y xY w)Né
   )r   r   r   r   Úranger   s    r   Útest_args_too_manyz#PyAffineTestCase.test_args_too_many<   s/   € Ü�]‰]œ9Ó%ñ 	Ü”E˜"“IÑ÷	÷ 	ñ 	ús   š5µ>c           	      ó€   — t        j                  t        «      5  t        dddd d d«       d d d «       y # 1 sw Y   y xY w)Nr   r!   é   Ú r   r   s    r   Útest_args_members_wrong_typez-PyAffineTestCase.test_args_members_wrong_type@   s5   € Ü�]‰]œ9Ó%ñ 	,Ü�1�a˜˜D $¨Ô+÷	,÷ 	,ñ 	,ús   š4´=c                 óD   — t        dddddd«      }t        |«      dk(  sJ ‚y )Nr    r!   r(   é   é   é   é	   )r   r   ©r   Úts     r   Útest_lenzPyAffineTestCase.test_lenD   s&   € Ü�1�a˜˜A˜q !Ó$ˆÜ�1‹v˜Š{Ð‰{r   c                 ó8   — t        dddddd«      }|dd  dk(  sJ ‚y )	Nr    r!   r(   r,   r-   r.   éýÿÿÿ)r   r   r    ©r   r0   s     r   Útest_slice_last_rowz$PyAffineTestCase.test_slice_last_rowH   s*   € Ü�1�a˜˜A˜q !Ó$ˆØ��ˆv˜Ò"Ð"Ñ"r   c                 ór   — t        dddddd«      }|D ]"  }t        |t        «      rŒJ t        |«      «       ‚ y ©Nr    r!   r(   r,   r-   r.   )r   Ú
isinstanceÚfloatÚrepr)r   r1   Úms      r   Útest_members_are_floatsz(PyAffineTestCase.test_members_are_floatsL   s>   € Ü�1�a˜˜A˜q !Ó$ˆØò 	1ˆAÜ˜a¤Õ'Ð0¬¨a«Ó0Ð'ñ	1r   c                 óì   — t        dddddd«      }|d   dk(  sJ ‚|d   dk(  sJ ‚|d   dk(  sJ ‚|d   dk(  sJ ‚|d   dk(  sJ ‚|d   dk(  sJ ‚|d   dk(  sJ ‚|d   dk(  sJ ‚|d	   dk(  sJ ‚|d
   dk(  sJ ‚y )Nr    r!   r(   r,   r-   r.   r   é   é   éÿÿÿÿr5   r0   s     r   Útest_getitemzPyAffineTestCase.test_getitemQ   s¶   € Ü�1�a˜˜A˜q !Ó$ˆØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰t�qŠyÐˆyØ�‰u˜ŠzÐ‰zr   c                 óŠ   — t        dddddd«      }t        j                  t        «      5  |d    d d d «       y # 1 sw Y   y xY w)Nr    r!   r(   r,   r-   r.   Úfoobar)r   r   r   r   r0   s     r   Útest_getitem_wrong_typez(PyAffineTestCase.test_getitem_wrong_type^   s>   € Ü�1�a˜˜A˜q !Ó$ˆÜ�]‰]œ9Ó%ñ 	ØˆhŠK÷	÷ 	ñ 	ús	   ª9¹Ac                 óV   — t        dddddd«      }t        |«      t        d«      k(  sJ ‚y )Nç-²�ï§Æñ?ç-²�ï§Æ@gD‹lçû©
@g-²�ï§ÆÀg¸…ëQ8ÀgD‹lçû©@z_            | 1.11, 2.22, 3.33|
            |-4.44,-5.55, 6.67|
            | 0.00, 0.00, 1.00|)r   Ústrr   r0   s     r   Útest_strzPyAffineTestCase.test_strc   s8   € Ü�5˜% ¨°¸Ó>ˆÜ�1‹vœð#ó
ò 
ð 	
ñ 
r   c                 óV   — t        dddddd«      }t        |«      t        d«      k(  sJ ‚y )NrG   rH   gÙÎ÷Sã¥@g-²�ï§Æ@g      @g      @zL            Affine(1.111, 2.222, 3.456,
                   4.444, 5.5, 6.25))r   r;   r   r0   s     r   Ú	test_reprzPyAffineTestCase.test_reprl   s8   € Ü�5˜% ¨¨s°DÓ9ˆÜ�A‹wœ&ð(ó
ò 
ð 	
ñ 
r   c                 óŒ   — t        j                  «       }t        |t         «      sJ ‚t        |«      dk(  sJ ‚|j                  sJ ‚y )N©	r    r   r   r   r    r   r   r   r    )r   Úidentityr9   ÚtupleÚis_identity)r   Úidents     r   Útest_identity_constructorz*PyAffineTestCase.test_identity_constructort   s@   € Ü—‘Ó!ˆÜ˜%¤Ô(Ð(Ð(Ü�U‹|Ð:Ò:Ð:Ð:Ø× Ò Ð Ñ r   c                 ó’   — t        j                  «       }t        |t         «      sJ ‚t        |«      dk(  sJ ‚||z  j                  sJ ‚y )N)	r   r    r   r    r   r   r   r   r    )r   Úpermutationr9   rP   rQ   )r   Úperms     r   Útest_permutation_constructorz-PyAffineTestCase.test_permutation_constructorz   sF   € Ü×!Ñ!Ó#ˆÜ˜$¤Ô'Ð'Ð'Ü�T‹{Ð9Ò9Ð9Ð9Ø�t‘×(Ò(Ð(Ñ(r   c                 ót   — t        j                  dd«      }t        |t         «      sJ ‚t        |«      dk(  sJ ‚y )Nr!   éûÿÿÿ)	r    r   r!   r   r    rY   r   r   r    )r   Útranslationr9   rP   )r   Útranss     r   Útest_translation_constructorz-PyAffineTestCase.test_translation_constructor€   s7   € Ü×"Ñ" 1 bÓ)ˆÜ˜%¤Ô(Ð(Ð(Ü�U‹|Ð;Ò;Ð;Ñ;r   c                 ó:  — t        j                  d«      }t        |t         «      sJ ‚t        |«      dk(  sJ ‚t        j                  dd«      }t        |«      dk(  sJ ‚t        t        j                  d«      «      t        t        j                  «       «      k(  sJ ‚y )Nr-   )	r-   r   r   r   r-   r   r   r   r    rA   r!   )	rA   r   r   r   r!   r   r   r   r    r    )r   Úscaler9   rP   rO   )r   r^   s     r   Útest_scale_constructorz'PyAffineTestCase.test_scale_constructor…   s|   € Ü—‘˜Q“ˆÜ˜%¤Ô(Ð(Ð(Ü�U‹|Ð:Ò:Ð:Ð:Ü—‘˜R Ó#ˆÜ�U‹|Ð;Ò;Ð;Ð;Ü”V—\‘\ !“_Ó%¬¬v¯©Ó/@Ó)AÒAÐAÑAr   c                 ó<  — t        j                  d«      }t        |t         «      sJ ‚t        j                  t        j
                  d«      «      }t        t        |«      d|dddddddf	«       t        j                  dd«      }t        j                  t        j
                  d«      «      }t        j                  t        j
                  d«      «      }t        t        |«      d|d|dddddf	«       t        j                  d¬«      }t        t        |«      d«       y )	Né   r    r   iñÿÿÿé<   é-   )Úy_angle)	r    r   r   r    r    r   r   r   r    )r   Úshearr9   ÚmathÚtanÚradiansr   rP   )r   re   ÚmxÚmys       r   Útest_shear_constructorz'PyAffineTestCase.test_shear_constructor�   sÔ   € Ü—‘˜RÓ ˆÜ˜%¤Ô(Ð(Ð(Ü�X‰X”d—l‘l 2Ó&Ó'ˆÜœ˜u›¨¨2¨q°!°Q¸¸1¸aÀÐ'CÔDÜ—‘˜S "Ó%ˆÜ�X‰X”d—l‘l 3Ó'Ó(ˆÜ�X‰X”d—l‘l 2Ó&Ó'ˆÜœ˜u›¨¨2¨q°"°a¸¸A¸qÀ!Ð'DÔEÜ—‘ RÔ(ˆÜœ˜u›Ð'BÕCr   c                 óf  — t        j                  d«      }t        |t         «      sJ ‚t        j                  d«      }t        j
                  |«      t        j                  |«      }}t        |«      || d||ddddf	k(  sJ ‚t        j                  d«      }t        j                  d«      }t        j
                  |«      t        j                  |«      }}t        t        |«      || d||ddddf	«       t        t        j                  d«      «      t        t        j                  «       «      k(  sJ ‚y )Nrb   r   r    iQ  )
r   Úrotationr9   rf   rh   ÚsinÚcosrP   r   rO   ©r   ÚrotÚrÚsÚcs        r   Útest_rotation_constructorz*PyAffineTestCase.test_rotation_constructor™   sî   € Ü�o‰o˜bÓ!ˆÜ˜#œvÔ&Ð&Ð&Ü�L‰L˜ÓˆÜ�x‰x˜‹{œDŸH™H Q›Kˆ1ˆÜ�S‹z˜a !  Q¨¨1¨a°°A°qÐ9Ò9Ð9Ð9Ü�o‰o˜cÓ"ˆÜ�L‰L˜ÓˆÜ�x‰x˜‹{œDŸH™H Q›Kˆ1ˆÜœ˜s› a¨!¨¨Q°°1°a¸¸A¸qÐ%AÔBÜ”V—_‘_ QÓ'Ó(¬E´&·/±/Ó2CÓ,DÒDÐDÑDr   c                 óz  — t        t        j                  d«      «      dk(  sJ ‚t        t        j                  d«      «      dk(  sJ ‚t        t        j                  d«      «      dk(  sJ ‚t        t        j                  d«      «      dk(  sJ ‚t        t        j                  d«      «      d	k(  sJ ‚t        t        j                  d
«      «      d	k(  sJ ‚t        t        j                  d«      «      dk(  sJ ‚t        t        j                  d«      «      dk(  sJ ‚t        t        j                  d«      «      d	k(  sJ ‚y )Nr   rN   éZ   )	r   rA   r   r    r   r   r   r   r    é´   )	rA   r   r   r   rA   r   r   r   r    iLÿÿÿi  )	r   r    r   rA   r   r   r   r   r    i¦ÿÿÿih  iÂ  i>þÿÿ)rP   r   rm   r   s    r   Ú#test_rotation_constructor_quadrantsz4PyAffineTestCase.test_rotation_constructor_quadrants¥   s  € Ü”V—_‘_ QÓ'Ó(Ð,GÒGÐGÐGÜ”V—_‘_ RÓ(Ó)Ð-IÒIÐIÐIÜ”V—_‘_ SÓ)Ó*Ð.KÒKÐKÐKÜ”V—_‘_ TÓ*Ó+Ð/LÒLÐLÐLÜ”V—_‘_ SÓ)Ó*Ð.JÒJÐJÐJÜ”V—_‘_ SÓ)Ó*Ð.JÒJÐJÐJÜ”V—_‘_ SÓ)Ó*Ð.IÒIÐIÐIÜ”V—_‘_ SÓ)Ó*Ð.JÒJÐJÐJÜ”V—_‘_ TÓ*Ó+Ð/KÒKÐKÑKr   c           
      ó  — t        t        j                  d«      «      t        t        j                  dd¬«      «      k(  sJ ‚t        j                  dd¬«      }t        j                  d«      }t        j
                  |«      t        j                  |«      }}t        |«      || dd|z  z
  d|z  z
  ||dd|z  z
  d|z  z   d	d	d
f	k(  sJ ‚t        t        j                  d	d«      «      t        t        j                  «       «      k(  sJ ‚y )Nrb   )r   r   )Úpivoté   )r!   éüÿÿÿr!   r,   r}   r   r    )r4   r!   )rP   r   rm   rf   rh   rn   ro   rO   rp   s        r   Ú$test_rotation_constructor_with_pivotz5PyAffineTestCase.test_rotation_constructor_with_pivot°   së   € Ü”V—_‘_ RÓ(Ó)¬U´6·?±?À2ÈVÔ3TÓ-UÒUÐUÐUÜ�o‰o˜b¨Ô0ˆÜ�L‰L˜ÓˆÜ�x‰x˜‹{œDŸH™H Q›Kˆ1ˆÜ�S‹zØØˆBØ��A‘‰I˜˜A™ÑØØØ��Q‘‰J˜˜Q™ÑØØØð

ò 

ð 
	
ð 

ô ”V—_‘_ Q¨Ó0Ó1´U¼6¿?¹?Ó;LÓ5MÒMÐMÑMr   c                 óŒ   — t        j                  t        «      5  t        j                  dd«       d d d «       y # 1 sw Y   y xY w)Nr    )r   r   r   r   rm   r   s    r   Ú(test_rotation_contructor_wrong_arg_typesz9PyAffineTestCase.test_rotation_contructor_wrong_arg_typesÂ   s1   € Ü�]‰]œ9Ó%ñ 	"Ü�O‰O˜A˜qÔ!÷	"÷ 	"ñ 	"ús	   š:ºAc                 ó–  — t        j                  «       j                  dk(  sJ ‚t        j                  d«      j                  dk(  sJ ‚t        j                  d«      j                  dk(  sJ ‚t        j                  dd«      j                  dk(  sJ ‚t        j                  dd«      j                  dk(  sJ ‚t        j                  dd«      j                  dk(  sJ ‚t        j                  d«      j                  t        j                  d«      k(  sJ ‚t        j                  dd	«      j                  t        j                  d«      k(  sJ ‚y )
Nr    r!   r,   r   r-   rA   éM   é    éÑÿÿÿ)r   rO   Údeterminantr^   rm   r   ÚapproxrZ   r   s    r   Útest_determinantz!PyAffineTestCase.test_determinantÆ   s  € Ü�‰Ó ×,Ñ,°Ò1Ð1Ð1Ü�|‰|˜A‹×*Ñ*¨aÒ/Ð/Ð/Ü�|‰|˜A‹×*Ñ*¨aÒ/Ð/Ð/Ü�|‰|˜A˜qÓ!×-Ñ-°Ò2Ð2Ð2Ü�|‰|˜B Ó"×.Ñ.°"Ò4Ð4Ð4Ü�|‰|˜B Ó"×.Ñ.°!Ò3Ð3Ð3Ü�‰˜rÓ"×.Ñ.´&·-±-ÀÓ2BÒBÐBÐBÜ×!Ñ! " cÓ*×6Ñ6¼&¿-¹-ÈÓ:JÒJÐJÑJr   c                 ó”  — t        j                  «       j                  sJ ‚t        j                  dd«      j                  sJ ‚t        j                  dd«      j                  sJ ‚t        j
                  d«      j                  sJ ‚t        j                  dd«      j                  rJ ‚t        j
                  d«      j                  rJ ‚y ©Nç      @çffffff@r,   rA   rw   éæÿÿÿ)r   rO   Úis_rectilinearr^   rZ   rm   re   r   s    r   Útest_is_rectilinearz$PyAffineTestCase.test_is_rectilinearÐ   s›   € Ü�‰Ó ×/Ò/Ð/Ð/Ü�|‰|˜C Ó%×4Ò4Ð4Ð4Ü×!Ñ! ! RÓ(×7Ò7Ð7Ð7Ü�‰˜rÓ"×1Ò1Ð1Ð1Ü—<‘<  2Ó&×5Ò5Ð5Ð5Ü—?‘? 3Ó'×6Ò6Ð6Ð6Ð6r   c                 ó”  — t        j                  «       j                  sJ ‚t        j                  dd«      j                  sJ ‚t        j                  dd«      j                  sJ ‚t        j
                  d«      j                  sJ ‚t        j
                  d«      j                  sJ ‚t        j                  dd«      j                  rJ ‚y r‰   )r   rO   Úis_conformalr^   rZ   rm   re   r   s    r   Útest_is_conformalz"PyAffineTestCase.test_is_conformalØ   s›   € Ü�‰Ó ×-Ò-Ð-Ð-Ü�|‰|˜C Ó%×2Ò2Ð2Ð2Ü×!Ñ! ! RÓ(×5Ò5Ð5Ð5Ü�‰˜rÓ"×/Ò/Ð/Ð/Ü�‰˜sÓ#×0Ò0Ð0Ð0Ü—<‘<  2Ó&×3Ò3Ð3Ð3Ð3r   c                 óØ  — t        j                  «       j                  sJ ‚t        j                  dd«      j                  sJ ‚t        j                  d«      j                  sJ ‚t        j                  d«      j                  sJ ‚t        j
                  dd«      j                  rJ ‚t        j
                  dd«      j                  rJ ‚t        j                  dd«      j                  rJ ‚y )	Nr,   rA   rw   rŒ   rŠ   r‹   ç      à?r!   )r   rO   Úis_orthonormalrZ   rm   r^   re   r   s    r   Útest_is_orthonormalz$PyAffineTestCase.test_is_orthonormalà   sµ   € Ü�‰Ó ×/Ò/Ð/Ð/Ü×!Ñ! ! RÓ(×7Ò7Ð7Ð7Ü�‰˜rÓ"×1Ò1Ð1Ð1Ü�‰˜sÓ#×2Ò2Ð2Ð2Ü—<‘<  SÓ)×8Ò8Ð8Ð8Ü—<‘<  QÓ'×6Ò6Ð6Ð6Ü—<‘<  2Ó&×5Ò5Ð5Ð5Ð5r   c                 óž  — t        j                  «       j                  rJ ‚t        j                  dd«      j                  rJ ‚t        j                  dd«      j                  rJ ‚t        j
                  d«      j                  rJ ‚t        j                  d«      j                  rJ ‚t        j                  d«      j                  sJ ‚t        j                  dd«      j                  sJ ‚t        j                  dd«      j                  sJ ‚t        j                  d«      j                  sJ ‚t        j                  d«      j                  sJ ‚y )	Nr!   rA   r   g     €6ÀgÍÌÌÌÌ,V@r“   iöÿÿÿi,  )r   rO   Úis_degeneraterZ   re   rm   r^   r   s    r   Útest_is_degeneratez#PyAffineTestCase.test_is_degenerateé   s÷   € Ü—?‘?Ó$×2Ò2Ð2Ð2Ü×%Ñ% a¨Ó,×:Ò:Ð:Ð:Ü—<‘<  5Ó)×7Ò7Ð7Ð7Ü—?‘? 4Ó(×6Ò6Ð6Ð6Ü—<‘< Ó$×2Ò2Ð2Ð2Ü�|‰|˜A‹×,Ò,Ð,Ð,Ü�|‰|˜C Ó#×1Ò1Ð1Ð1Ü�|‰|˜A˜sÓ#×1Ò1Ð1Ð1Ü�|‰|˜A‹×,Ò,Ð,Ð,Ü�|‰|˜A‹×,Ò,Ð,Ñ,r   c                 óÖ   — t        dddddd«      j                  \  }}}t        |t        «      sJ ‚t        |t        «      sJ ‚t        |t        «      sJ ‚|dk(  sJ ‚|dk(  sJ ‚|d	k(  sJ ‚y )
Nr!   r(   r,   r-   r.   r?   )r!   r-   )r(   r.   )r,   r?   )r   Úcolumn_vectorsr9   rP   )r   ÚaÚbrt   s       r   Útest_column_vectorsz$PyAffineTestCase.test_column_vectorsõ   sv   € Ü˜˜A˜q ! Q¨Ó*×9Ñ9‰ˆˆ1ˆaÜ˜!œUÔ#Ð#Ð#Ü˜!œUÔ#Ð#Ð#Ü˜!œUÔ#Ð#Ð#Ø�FŠ{Ðˆ{Ø�FŠ{Ðˆ{Ø�FŠ{Ð‰{r   c                 óÐ  — d}|dz  }t        d|d| d|z   |«      }|j                  t        j                  «       «      sJ ‚t        j                  «       j                  |«      sJ ‚|j                  |«      sJ ‚t        ddd| dd«      }|j                  t        j                  «       «      rJ ‚t        j                  «       j                  |«      rJ ‚|j                  |«      sJ ‚y )Nçñhãˆµøä>r“   ç      ð?r   ©r   Úalmost_equalsrO   ©r   r   ÚEr1   s       r   Útest_almost_equalsz#PyAffineTestCase.test_almost_equalsþ   sÌ   € ØˆØ�c‰MˆÜ�3˜˜1˜q˜b #¨¡'¨1Ó-ˆØ�‰œvŸ™Ó0Ô1Ð1Ð1Ü�‰Ó ×.Ñ.¨qÔ1Ð1Ð1Ø�‰˜qÔ!Ð!Ð!Ü�3˜˜1˜w˜h¨¨QÓ/ˆØ—?‘?¤6§?¡?Ó#4Ô5Ð5Ð5Ü—?‘?Ó$×2Ñ2°1Ô5Ð5Ð5Ø�‰˜qÔ!Ð!Ñ!r   c                 óè  — d}|dz  }t        d|d| d|z   |«      }|j                  t        j                  «       |¬«      sJ ‚t        j                  «       j                  ||¬«      sJ ‚|j                  ||¬«      sJ ‚t        ddd| dd«      }|j                  t        j                  «       |¬«      rJ ‚t        j                  «       j                  ||¬«      rJ ‚|j                  ||¬«      sJ ‚y )Nç»½×Ùß|Û=r“   r    r   )Ú	precisionr¡   r£   s       r   Útest_almost_equals_2z%PyAffineTestCase.test_almost_equals_2
  sæ   € ØˆØ�c‰MˆÜ�3˜˜1˜q˜b #¨¡'¨1Ó-ˆØ�‰œvŸ™Ó0¸GˆÔDÐDÐDÜ�‰Ó ×.Ñ.¨q¸GÐ.ÔDÐDÐDØ�‰˜q¨GˆÔ4Ð4Ð4Ü�3˜˜1˜w˜h¨¨QÓ/ˆØ—?‘?¤6§?¡?Ó#4À�?ÔHÐHÐHÜ—?‘?Ó$×2Ñ2°1ÀÐ2ÔHÐHÐHØ�‰˜q¨GˆÔ4Ð4Ñ4r   c                 óÔ   — t        dddddd«      }t        dddddd«      }t        dddddd«      }||k(  sJ ‚||k(  rJ ‚||k(  sJ ‚||k7  rJ ‚||k7  rJ ‚||k7  sJ ‚|dk(  rJ ‚|dk7  sJ ‚y r8   r5   )r   r
   r   Út3s       r   Útest_equalityzPyAffineTestCase.test_equality  sš   € Ü�A�q˜!˜Q  1Ó%ˆÜ�A�q˜!˜Q  1Ó%ˆÜ�A�q˜!˜Q  1Ó%ˆØ�RŠxˆˆxØ˜’8Ðˆ|Ø�RŠxˆˆxØ˜’8Ðˆ|Ø˜’8Ðˆ|Ø�RŠxˆˆxØ˜’7Ðˆ{Ø�QŠwˆ‰wr   c           
      ó¢   — t        j                  t        «      5  t        dddddd«      t        dddddd«      kD   d d d «       y # 1 sw Y   y xY wr8   r   r   s    r   Útest_gtzPyAffineTestCase.test_gt#  óM   € Ü�]‰]œ9Ó%ñ 	@Ü�1�a˜˜A˜q !Ó$¤v¨a°°A°q¸!¸QÓ'?Ò?÷	@÷ 	@ñ 	@úó   š"AÁAc           
      ó¢   — t        j                  t        «      5  t        dddddd«      t        dddddd«      k   d d d «       y # 1 sw Y   y xY wr8   r   r   s    r   Útest_ltzPyAffineTestCase.test_lt'  r¯   r°   c           
      ó¢   — t        j                  t        «      5  t        dddddd«      t        dddddd«      z    d d d «       y # 1 sw Y   y xY wr8   r   r   s    r   Útest_addzPyAffineTestCase.test_add+  r¯   r°   c           
      ó¢   — t        j                  t        «      5  t        dddddd«      t        dddddd«      z
   d d d «       y # 1 sw Y   y xY wr8   r   r   s    r   Útest_subzPyAffineTestCase.test_sub/  r¯   r°   c                 ó€   — t        dddddd«      }t        |t        j                  «       z  «      t        |«      k(  sJ ‚y r8   )r   rP   rO   r0   s     r   Útest_mul_by_identityz%PyAffineTestCase.test_mul_by_identity3  s9   € Ü�1�a˜˜A˜q !Ó$ˆÜ�QœŸ™Ó*Ñ*Ó+¬u°Q«xÒ7Ð7Ñ7r   c                 óT  — t        j                  d«      t        j                  d«      z  }t        |t         «      sJ ‚t        |t        j                  d«      «       t        j                  dd«      t        j                  d«      z  }t        |t        j                  dd«      «       y )Nr-   é   é"   r(   r!   r.   r$   )r   rm   r9   r   r^   r0   s     r   Útest_mul_transformz#PyAffineTestCase.test_mul_transform7  ss   € Ü�O‰O˜AÓ¤§¡°Ó!4Ñ4ˆÜ˜!œVÔ$Ð$Ð$Ü˜œFŸO™O¨BÓ/Ô0Ü�L‰L˜˜AÓ¤§¡¨a£Ñ0ˆÜ˜œFŸL™L¨¨BÓ/Õ0r   c                 ó  — g d¢}t        j                  d«      j                  |«      }|�J |«       ‚|g d¢k(  sJ ‚t        j                  d«      }g d¢}|D �cg c]  }||z  ‘Œ	 }}|j                  |«      }|�J ‚||k(  sJ ‚y c c}w )N))r,   r    )rA   r   )r(   r!   éþÿÿÿ))iøÿÿÿr¾   )r!   r   )iúÿÿÿr}   é!   )r   r^   Ú
itransformrm   )r   Úptsrr   ÚAÚptÚ
pts_expects         r   Útest_itransformz PyAffineTestCase.test_itransform>  s“   € Ú'ˆÜ�L‰L˜Ó×'Ñ'¨Ó,ˆØˆyÐ˜!ÓˆyØÒ2Ò2Ð2Ð2ä�O‰O˜BÓˆÚ'ˆØ'*Ö+ �a˜"“fÐ+ˆ
Ð+Ø�L‰L˜ÓˆØˆyÐˆyØ�jÒ Ð Ñ ùò ,s   ÁBc           	      ó†   — t        j                  t        «      5  t        dddddd«      d z   d d d «       y # 1 sw Y   y xY wr8   r   r   s    r   Útest_mul_wrong_typez$PyAffineTestCase.test_mul_wrong_typeK  s:   € Ü�]‰]œ9Ó%ñ 	,Ü�1�a˜˜A˜q !Ó$ tÒ+÷	,÷ 	,ñ 	,ús	   š7·A c           	      ó¤   —  G d„ d«      }t        j                  t        «      5  t        dddddd«       |«       z   d d d «       y # 1 sw Y   y xY w)	Nc                   ó"   — e Zd Zed„ «       Zd„ Zy)úGPyAffineTestCase.test_mul_sequence_wrong_member_types.<locals>.NotPtSeqc                 ó   — t        |«       y r   )Úlist)ÚclsÚpointss     r   Úfrom_pointszSPyAffineTestCase.test_mul_sequence_wrong_member_types.<locals>.NotPtSeq.from_pointsQ  s	   € ä�V•r   c              3   ó   K  — d–— y ­w©Nr   © r   s    r   Ú__iter__zPPyAffineTestCase.test_mul_sequence_wrong_member_types.<locals>.NotPtSeq.__iter__U  s   è ø€ Ø“ùs   ‚N)Ú__name__Ú
__module__Ú__qualname__ÚclassmethodrÏ   rÓ   rÒ   r   r   ÚNotPtSeqrÊ   P  s   „ Øñó ðór   rØ   r    r!   r(   r,   r-   r.   r   )r   rØ   s     r   Ú$test_mul_sequence_wrong_member_typesz5PyAffineTestCase.test_mul_sequence_wrong_member_typesO  sH   € ÷	ñ 	ô �]‰]œ9Ó%ñ 	2Ü�1�a˜˜A˜q !Ó$¡x£zÒ1÷	2÷ 	2ñ 	2ús   ¤AÁAc                 óÆ   — t        j                  dd«      }|t        j                  dd«      z  }t        |t         «      sJ ‚t        |t        j                  dd«      «       y )Nr(   r-   r¾   g      @r    g      !@)r   rZ   r9   r   r0   s     r   Útest_imul_transformz$PyAffineTestCase.test_imul_transform[  sR   € Ü×Ñ˜q !Ó$ˆØ	ŒV×Ñ  CÓ(Ñ(ˆÜ˜!œVÔ$Ð$Ð$Ü˜œF×.Ñ.¨q°#Ó6Õ7r   c                 óš  — t        t        j                  «        t        j                  «       «       t        t        j                  dd«       t        j                  dd«      «       t        t        j                  d«       t        j                  d«      «       t        ddddd	d
«      }t        | |z  t        j                  «       «       y )Nr!   r4   r¾   r(   gfffff¦@Àgfffff¦@@r    r,   r-   r.   )r   r   rO   rZ   rm   r0   s     r   Útest_inversezPyAffineTestCase.test_inversea  sŽ   € Üœ&Ÿ/™/Ó+Ð+¬V¯_©_Ó->Ô?Üœ&×,Ñ,¨Q°Ó3Ð3´V×5GÑ5GÈÈAÓ5NÔOÜœ&Ÿ/™/¨%Ó0Ð0´&·/±/À$Ó2GÔHÜ�1�a˜˜A˜q !Ó$ˆÜ˜!˜˜a™¤§¡Ó!2Õ3r   c                 ó¤   — t        j                  d«      }t        j                  t        j
                  «      5  |  d d d «       y # 1 sw Y   y xY wrÑ   )r   r^   r   r   ÚaffineÚTransformNotInvertibleErrorr0   s     r   Útest_cant_invert_degeneratez,PyAffineTestCase.test_cant_invert_degenerateh  s;   € Ü�L‰L˜‹OˆÜ�]‰]œ6×=Ñ=Ó>ñ 	Ø‰B÷	÷ 	ñ 	ús   ¹AÁAc                 óŽ   — t        j                  t        «      5  t        j                  g d¢«       ddd«       y# 1 sw Y   yxY w)z%wrong type, i.e don't use readlines())ú1.0ú0.0rä   rã   rä   rä   N)r   r   r   rß   Úloadswr   s    r   Útest_bad_type_worldz$PyAffineTestCase.test_bad_type_worldm  s4   € ä�]‰]œ9Ó%ñ 	FÜ�M‰MÒDÔE÷	F÷ 	Fñ 	Fús	   š;»Ac                 óŠ   — t        j                  t        «      5  t        j                  d«       ddd«       y# 1 sw Y   yxY w)zWrong number of parameters.z1.0
0.0
0.0
1.0
0.0
0.0
0.0N)r   r   Ú
ValueErrorrß   rå   r   s    r   Útest_bad_value_worldz%PyAffineTestCase.test_bad_value_worldr  s0   € ä�]‰]œ:Ó&ñ 	?Ü�M‰MÐ=Ô>÷	?÷ 	?ñ 	?úó	   š9¹Ac           	      ó�   — d}t        j                  |«      }|t        dddddd«      k(  sJ ‚t        j                  |«      |k(  sJ ‚y )Nz1.0
0.0
0.0
-1.0
100.5
199.5
r    ç        g      Y@g      ð¿g      i@)rß   rå   r   Údumpsw)r   rs   r›   s      r   Útest_simple_worldz"PyAffineTestCase.test_simple_worldw  sI   € Ø1ˆÜ�M‰M˜!ÓˆØ”F˜3  U¨C°°uÓ=Ò=Ð=Ð=Ü�}‰}˜QÓ 1Ò$Ð$Ñ$r   c           
      ó$  — t        d«      }t        j                  |«      }|j                  t	        dddddd«      «      sJ ‚t        j
                  |«      }t        |t        «      sJ ‚t        j                  |«      }|j                  |«      sJ ‚y )Nz¹                 39.9317755024
                 30.0907511581
                 30.0907511576
                -39.9317755019
            2658137.2266720217
            5990821.7039887439g`ïnkD÷C@güùÅw;>@gƒ’›GDAg`ïnkD÷CÀg±Ò÷§jÚVA)r   rß   rå   r¢   r   rí   r9   rI   )r   rs   Úa1Úa1outÚa2s        r   Útest_real_worldz PyAffineTestCase.test_real_world}  s•   € Üð"ó
ˆô �]‰]˜1ÓˆØ×ÑÜØ"Ø"Ø"Ø"Ø#Ø!óô	
ð 		
ð 	
ô —‘˜bÓ!ˆÜ˜%¤Ô%Ð%Ð%Ü�]‰]˜5Ó!ˆØ×Ñ Ô#Ð#Ñ#r   N)1rÔ   rÕ   rÖ   r   r   r"   r&   r*   r2   r6   r=   rB   rE   rJ   rL   rS   rW   r\   r_   rk   ru   ry   r~   r€   r‡   rŽ   r‘   r•   r˜   r�   r¥   r©   r¬   r®   r²   r´   r¶   r¸   r¼   rÅ   rÇ   rÙ   rÛ   rÝ   rá   ræ   ré   rî   ró   rÒ   r   r   r   r   /   só   „ òòòòò,òò#ò1ò
òò

ò
ò!ò)ò<ò
Bò
Dò
Eò	LòNò$"òKò7ò4ò6ò
-òò
"ò
5òò@ò@ò@ò@ò8ò1ò!ò,ò
2ò8ò4òò
Fò
?ò
%ó$r   r   c                  óš  — t        j                  dddddd«      } | j                  | j                  cxk(  rdk(  sJ ‚ J ‚| j                  dk(  sJ ‚| j
                  dk(  sJ ‚| j                  | j                  cxk(  rdk(  sJ ‚ J ‚| j                  dk(  sJ ‚| j                  dk(  sJ ‚t        | «      dk(  sJ ‚| j                  «       dk(  sJ ‚y )Nç    LýÁç     �z@rì   ç3333ÿAç     �zÀ)	rö   rì   rõ   rì   rø   r÷   r   r   r    )rõ   rö   rì   r÷   rì   rø   )r   Ú	from_gdalrt   Úxoffr›   rœ   ÚfÚyoffÚdÚerP   Úto_gdal©r1   s    r   Ú	test_gdalr  œ  sÆ   € Ü×Ñ˜ E¨3°¸#¸vÓF€AØ�3‰3�!—&‘&Ô%˜IÒ%Ð%Ñ%Ð%Ð%Ø�3‰3�%Š<Ðˆ<Ø�3‰3�#Š:Ðˆ:Ø�3‰3�!—&‘&Ô$˜HÒ$Ð$Ñ$Ð$Ð$Ø�3‰3�#Š:Ðˆ:Ø�3‰3�&Š=Ðˆ=Ü�‹8ÐNÒNÐNÐNØ�9‰9‹;ÐHÒHÐHÑHr   c                  óN   — t        dddddd«      } | j                  «       dk(  sJ ‚y )Nrö   rì   rõ   rø   r÷   )rö   rì   rì   iWþÿÿrõ   r÷   )r   Ú
to_shapelyr   s    r   Útest_shapelyr  ¨  s+   € Üˆu�c˜9 c¨6°8Ó<€AØ�<‰<‹>ÐIÒIÐIÑIr   c                  óN   — t        dddddd«      } 	 | dz  } y # t        $ r Y y w xY w)Nr    r!   r(   r,   r-   r.   ç       @)r   r   r   s    r   Útest_imul_numberr  ­  s6   € Üˆq�!�Q˜˜1˜aÓ €AðØ	ˆS‰‰øÜò Ùðús   ’ ˜	$£$c                  ó.   — t        dddddd«      } | dz   y ©Nr    r!   r(   r,   r-   r.   )r  r  r5   r   s    r   Útest_mul_tupler
  µ  s   € Üˆq�!�Q˜˜1˜aÓ €AØˆ
ƒNr   c            	      óŠ   — t        j                  t        «      5  t        dddddd«      } d| z   d d d «       y # 1 sw Y   y xY wr	  )r   ÚwarnsÚDeprecationWarningr   r   s    r   Útest_rmul_tupler  º  s?   € Ü	�‰Ô(Ó	)ñ Ü�1�a˜˜A˜q !Ó$ˆØ�QŠ÷÷ ñ úrê   c                  óØ   — t        j                  d«      } | j                  t        k(  sJ ‚d| _        | j                  dk(  sJ ‚t        j                  d«      j                  t        k(  sJ ‚y )Ng     €F@r§   rì   )r   rm   r¨   r   r   s    r   Útest_transform_precisionr  À  sX   € Ü�‰˜Ó€AØ�;‰;œ'Ò!Ð!Ð!Ø€A„KØ�;‰;˜%ÒÐÐÜ�?‰?˜3Ó×)Ñ)¬WÒ4Ð4Ñ4r   c                  ó®   — d} t        j                  dd«      }t        j                  d«      }||| z  z  }||z  | z  }t        |d«       t        ||«       y )N©é   r-   g      $Àg      Àg     €V@)rì   r  ©r   rZ   rm   r   )Úpointr[   Úrot90Úresult1Úresult2s        r   Útest_associativer  È  sW   € Ø€EÜ×Ñ˜u dÓ+€EÜ�O‰O˜DÓ!€EØ�u˜u‘}Ñ%€GØ�u‰} Ñ%€GÜ�W˜jÔ)Ü�W˜gÕ&r   c                  ó˜   — d} t        j                  dd«      }t        j                  d«      }||z  | z  }||z   |z  }t        | |«       y )Nr  r(   r,   g     €B@r  )r  r[   Úrot37Úpoint_primeÚroundtrip_points        r   Útest_roundtripr  Ò  sP   € Ø€EÜ×Ñ˜q !Ó$€EÜ�O‰O˜DÓ!€EØ˜5‘= EÑ)€KØ ™Ð&¨Ñ4€OÜ�U˜OÕ,r   c                  ób  — t        j                  «       j                  dk(  sJ ‚t        j                  d«      j                  dk(  sJ ‚t        j                  dd«      j                  t	        j
                  t        j                  d«      dz  «      k(  sJ ‚t        j                  dd«      j                  t	        j
                  t        j                  d«      dz  «      k(  sJ ‚t        j                  dd«      j                  dk(  sJ ‚t        j                  d«      j                  t	        j
                  d«      k(  sJ ‚t        j                  d	d
«      j                  t	        j
                  d«      k(  sJ ‚t        j                  dd«      j                  t	        j
                  d«      k(  sJ ‚y )Nrì   r!   r    r(   r-   r   r    r‚   rƒ   r„   rA   )
r   rO   Úeccentricityr^   r   r†   rf   Úsqrtrm   rZ   rÒ   r   r   Útest_eccentricityr"  Û  s:  € Ü�?‰?Ó×)Ñ)¨SÒ0Ð0Ð0Ü�<‰<˜‹?×'Ñ'¨3Ò.Ð.Ð.ä�<‰<˜˜1Ó×*Ñ*¬f¯m©m¼D¿I¹IÀa»LÈ1Ñ<LÓ.MÒMÐMÐMÜ�<‰<˜˜1Ó×*Ñ*¬f¯m©m¼D¿I¹IÀa»LÈ1Ñ<LÓ.MÒMÐMÐMÜ�<‰<˜˜1Ó×*Ñ*¨cÒ1Ð1Ð1Ü�?‰?˜2Ó×+Ñ+¬v¯}©}¸SÓ/AÒAÐAÐAÜ×Ñ˜b #Ó&×3Ñ3´v·}±}ÀSÓ7IÒIÐIÐIÜ�<‰<˜˜AÓ×+Ñ+¬v¯}©}¸SÓ/AÒAÐAÑAr   c                  óŠ  — t        j                  dd«      t        j                  d«      z  j                  t	        j
                  t        j                  d«      dz  «      k(  sJ ‚t        j                  d«      t        j                  dd«      z  j                  t	        j
                  t        j                  d«      dz  «      k(  sJ ‚t        j                  dd«      t        j                  d«      z  t        j                  dd«      z  j                  t	        j
                  t        j                  d«      dz  «      k(  sJ ‚y )Nr!   r(   r‚   r-   rƒ   r„   )	r   r^   rm   r   r   r†   rf   r!  rZ   rÒ   r   r   Útest_eccentricity_complexr$  ç  sú   € Ü�L‰L˜˜AÓ¤§¡°Ó!4Ñ4×BÑBÄfÇmÁmÜ�	‰	�!‹�qÑóGò ð ð ô �O‰O˜BÓ¤&§,¡,¨q°!Ó"4Ñ4×BÑBÄfÇmÁmÜ�	‰	�!‹�qÑóGò ð ð ô 	×Ñ˜2˜sÓ#¤f§o¡o°bÓ&9Ñ9¼F¿L¹LÈÈAÓ<NÑNß�l”f—m‘m¤D§I¡I¨a£L°1Ñ$4Ó5ò6ð 6ñ 6r   c                  ó(  — t        j                  «       j                  dk(  sJ ‚t        j                  d«      j                  dk(  sJ ‚t        j                  dd«      j                  dk(  sJ ‚t        j                  dd«      j                  t        j                  d«      k(  sJ ‚t        j                  d«      j                  t        j                  d«      k(  sJ ‚t        j                  d«      j                  t        j                  d«      k(  sJ ‚y )Nrì   r!   r    rƒ   r„   ra   ijÿÿÿ)r   rO   Úrotation_angler^   rZ   r   r†   rm   rÒ   r   r   Útest_rotation_angler'  ó  sÎ   € Ü�?‰?Ó×+Ñ+¨sÒ2Ð2Ð2Ü�<‰<˜‹?×)Ñ)¨SÒ0Ð0Ð0Ü�<‰<˜˜1Ó×,Ñ,°Ò3Ð3Ð3Ü×Ñ˜b #Ó&×5Ñ5¼¿¹ÀsÓ9KÒKÐKÐKÜ�?‰?˜2Ó×-Ñ-´·±¸rÓ1BÒBÐBÐBÜ�?‰?˜4Ó ×/Ñ/´6·=±=ÀÓ3FÒFÐFÑFr   c                  ó´   — t        j                  t        j                  «      5  t	        j
                  dd«      j                   d d d «       y # 1 sw Y   y xY w)NrA   r    )r   r   rß   ÚUndefinedRotationErrorr   r^   r&  rÒ   r   r   Útest_rotation_improperr*  ü  s=   € Ü	�‰”v×4Ñ4Ó	5ñ +Ü�‰�R˜Ó×*Ò*÷+÷ +ñ +ús   ¤!AÁAc                  óZ   —  G d„ d«      } t        j                  «        | «       z  dk(  sJ ‚y)z7Support fallback in case that other is a single object.c                   ó   — e Zd ZdZd„ Zy)ú+test_mul_fallback_unpack.<locals>.TextPointz8Not iterable, will trigger ValueError in Affine.__mul__.c                 ó   — |dz  S ©N©r    r!   rÒ   ©r   Úothers     r   Ú__rmul__z4test_mul_fallback_unpack.<locals>.TextPoint.__rmul__  ó   € Ø˜6‘>Ð!r   N)rÔ   rÕ   rÖ   Ú__doc__r3  rÒ   r   r   Ú	TextPointr-    s
   „ ÙFó	"r   r6  r0  N©r   rO   ©r6  s    r   Útest_mul_fallback_unpackr9    s*   € ÷"ñ "ô �?‰?Ó™y›{Ñ*¨fÒ4Ð4Ñ4r   c                  óZ   —  G d„ d«      } t        j                  «        | «       z  dk(  sJ ‚y)z:Support fallback in case that other is an unexpected type.c                   ó   — e Zd ZdZd„ Zd„ Zy)ú/test_mul_fallback_type_error.<locals>.TextPointz9Iterable, but values trigger TypeError in Affine.__mul__.c                  ó   — y)N)Ú1Ú2rÒ   r   s    r   rÓ   z8test_mul_fallback_type_error.<locals>.TextPoint.__iter__  s   € Ør   c                 ó   — |dz  S r/  rÒ   r1  s     r   r3  z8test_mul_fallback_type_error.<locals>.TextPoint.__rmul__  r4  r   N)rÔ   rÕ   rÖ   r5  rÓ   r3  rÒ   r   r   r6  r<    s   „ ÙGò	ó	"r   r6  r0  Nr7  r8  s    r   Útest_mul_fallback_type_errorrA    s*   € ÷"ñ "ô �?‰?Ó™y›{Ñ*¨fÒ4Ð4Ñ4r   Ú__main__)rŸ   )r5  rf   ÚunittestÚtextwrapr   r   rß   r   r   r   ÚTestCaser   r  r  r  r
  r  r  r  r  r"  r$  r'  r*  r9  rA  rÔ   ÚmainrÒ   r   r   ú<module>rG     sš   ðñ: ã Û Ý ã ã ß "ó:ôf$�x×(Ñ(ô f$òZ	IòJò
òò
ò5ò'ò-ò	Bò	6òGò+ò	5ò5ð ˆzÒØ€H‡M�M…Oð r   