Ë
    T]jäI  ã                   óà   — d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lZ G d„ dej0                  «      Z G d„ d«      Z G d„ de«      Zy
)é    )ÚBytesIO)Úpath)ÚTestCase)ÚfilesÚutilsÚsignalsÚ
exceptionsÚmodelsÚengine)Úsettings)ÚThumbnailOptions)r   )ÚImage)Ú
LogCaptureNc                   óv  ‡ — e Zd Zˆ fd„Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Z ej                   dej$                  vd«      d„ «       Z ej                   dej$                  vd«       ej                   edu d«      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"ˆ xZ#S ) Ú	FilesTestc                 óò  •— t         ‰| �  «        t        j                  «       | _        t        j
                  «       | _        | j                  | j                  d«      }t        j                  | j                  |«      | _
        | j                  | j                  _        | j                  | j                  d«      }t        j                  | j                  |«      | _        | j                  | j                  _        t        j                  | j                  |«      | _        | j                  | j                  _        | j                  | j                  ddd¬«      }t        j                  | j                  |«      | _        | j                  | j                  _        | j                  | j                  ddd¬«      }t        j                  | j                  |«      | _        | j                  | j                  _        y )Nztest.jpgztransparent.pngÚRGBAÚPNG)Ú
image_modeÚimage_formatztransparent-greyscale.pngÚLA)ÚsuperÚsetUpÚtestÚTemporaryStorageÚstorageÚFakeRemoteStorageÚremote_storageÚcreate_imager   Úget_thumbnailerÚthumbnailerÚthumbnail_storageÚremote_thumbnailerÚext_thumbnailerÚtransparent_thumbnailerÚ!transparent_greyscale_thumbnailer)ÚselfÚfilenameÚ	__class__s     €úW/var/www/zogu/zoguvenv/lib/python3.12/site-packages/easy_thumbnails/tests/test_files.pyr   zFilesTest.setUp   s‘  ø€ Ü‰‰ŒÜ×,Ñ,Ó.ˆŒÜ"×4Ñ4Ó6ˆÔð ×$Ñ$ T§\¡\°:Ó>ˆÜ ×0Ñ0°·±¸xÓHˆÔØ-1¯\©\ˆ×ÑÔ*à×$Ñ$ T×%8Ñ%8¸*ÓEˆÜ"'×"7Ñ"7Ø×Ñ ó#+ˆÔà48×4GÑ4Gˆ×ÑÔ1ô  %×4Ñ4°T·\±\À8ÓLˆÔØ15·±ˆ×ÑÔ.ð ×$Ñ$Ø�L‰LÐ+¸Øð %ó  ˆô (-×'<Ñ'<Ø�L‰L˜(ó($ˆÔ$à9=¿¹ˆ×$Ñ$Ô6à×$Ñ$Ø�L‰LÐ5À$Øð %ó  ˆô 27×1FÑ1FØ�L‰L˜(ó2$ˆÔ.àCGÇ<Á<ˆ×.Ñ.Õ@ó    c                 óŠ   •— | j                   j                  «        | j                  j                  «        t        ‰| �  «        y ©N)r   Údelete_temporary_storager   r   ÚtearDown)r'   r)   s    €r*   r/   zFilesTest.tearDown2   s0   ø€ Ø�‰×-Ñ-Ô/Ø×Ñ×4Ñ4Ô6Ü‰ÑÕr+   c           	      ó>  — | j                   j                  ddi«      }| j                  j                  ddi«      }| j                  |j	                  «       d|j
                  z  «       | j                  |j	                  d¬«      d|j
                  z  «       | j                  |j	                  d¬«      d	|j
                  z  «       | j                  |j	                  «       d|j
                  z  «       | j                  j                  ddi«      }| j                  |j	                  «       d	|j
                  z  «       | j                  |j	                  d
¬«      d|j
                  z  «       | j                   |j                  di dddœ¤Žd|j
                  z  «       y )NÚsize©éd   r3   ú/<img alt="" height="75" src="%s" width="100" />zA & B)Úaltz8<img alt="A &amp; B" height="75" src="%s" width="100" />F)Úuse_sizez<img alt="" src="%s" />TzA&BÚfish)ÚrelÚclasszJ<img alt="" class="fish" height="75" rel="A&amp;B" src="%s" width="100" />© )r!   Úget_thumbnailr#   ÚassertEqualÚtagÚurl)r'   ÚlocalÚremotes      r*   Útest_tagzFilesTest.test_tag7   sƒ  € Ø× Ñ ×.Ñ.°¸
Ð/CÓDˆØ×(Ñ(×6Ñ6¸À
Ð7KÓLˆà×ÑØ�I‰I‹Kð Ø—9‘9ñô	ð 	×ÑØ�I‰I˜'ˆIÓ"ð %&Ø(-¯	©	ñ%2ô	3ð
 	×ÑØ�J‰J ˆJÓ&Ð(AÀFÇJÁJÑ(Nô	Pð
 	×ÑØ�J‰J‹LØ=ÀÇ
Á
ÑJô	Lð ×(Ñ(×6Ñ6¸À
Ð7KÓLˆØ×ÑØ�J‰J‹LÐ3°f·j±jÑ@ô	Bð 	×ÑØ�J‰J ˆJÓ%Ø=ÀÇ
Á
ÑJô	Lð
 	×ÑØˆE�I‰IÑ8 °Ñ7Ñ8ð&Ø(-¯	©	ñ2õ	3r+   c                 óè   — dt         _        | j                  j                  ddi«       | j                  j                  ddi«      }| j	                  |j                  «       d|j                  z  «       y )NTr1   r2   r4   )r   ÚTHUMBNAIL_CACHE_DIMENSIONSr#   r;   r<   r=   r>   )r'   r@   s     r*   Útest_tag_cached_dimensionsz$FilesTest.test_tag_cached_dimensions\   sd   € Ø.2ŒÔ+Ø×Ñ×-Ñ-¨v°zÐ.BÔCð ×(Ñ(×6Ñ6¸À
Ð7KÓLˆØ×ÑØ�J‰J‹LØ=ÀÇ
Á
ÑJõ	Lr+   c                 óB  — | j                   j                  ddi«      }|j                  d«       t        j                  |«      5 }| j                  t        j                  |«      d|j                  z  «       d d d «       | j                  j                  ddi«      }|j                  d«       t        j                  |«      5 }| j                  t        j                  |«      d|j                  z  «       d d d «       | j                  j                  ddi«      }|j                  d«       t        j                  |«      5 }| j                  t        j                  |«      d|j                  z  «       d d d «       y # 1 sw Y   �ŒxY w# 1 sw Y   Œ•xY w# 1 sw Y   y xY w)Nr1   r2   r   z%s shouldn't be transparent.z%s should be transparent.)r!   r;   Úseekr   ÚopenÚassertFalser   Úis_transparentÚnamer%   Ú
assertTruer&   )r'   Ú
thumb_fileÚthumbs      r*   Útest_transparent_thumbnailingz'FilesTest.test_transparent_thumbnailingf   sk  € Ø×%Ñ%×3Ñ3Ø�ZÐ ó"ˆ
à�‰˜ÔÜ�Z‰Z˜
Ó#ð 	B uØ×ÑÜ×$Ñ$ UÓ+Ø.°·±Ñ@ôB÷	Bð
 ×1Ñ1×?Ñ?Ø�ZÐ ó"ˆ
à�‰˜ÔÜ�Z‰Z˜
Ó#ð 	? uØ�O‰OÜ×$Ñ$ UÓ+Ø+¨j¯o©oÑ=ô?÷	?ð
 ×;Ñ;×IÑIØ�ZÐ ó"ˆ
à�‰˜ÔÜ�Z‰Z˜
Ó#ð 	? uØ�O‰OÜ×$Ñ$ UÓ+Ø+¨j¯o©oÑ=ô?÷	?ð 	?÷!	Bñ 	Bú÷	?ð 	?ú÷	?ð 	?ús$   Á3E<Ã3F	Å 3FÅ<FÆ	FÆFc                 ó.  — ddi}| j                   j                  |«      }| j                   j                  |j                  ¬«      }|j	                  «        |j
                  j	                  |j                  «       | j                   j                  |«       y ©Nr1   r2   )Úthumbnail_name)r!   r;   Úget_thumbnail_cacherJ   Údeleter   ©r'   ÚoptsrM   Úthumb_caches       r*   Útest_missing_thumbzFilesTest.test_missing_thumb   sz   € Ø˜
Ð#ˆØ× Ñ ×.Ñ.¨tÓ4ˆØ×&Ñ&×:Ñ:Ø Ÿ:™:ð ;ó 'ˆà×ÑÔØ�‰×Ñ˜UŸZ™ZÔ(Ø×Ñ×&Ñ& tÕ,r+   c                 óv  — ddi}| j                   j                  |«      }|j                  j                  |j                  «       | j                   j                  |«      }| j                  |j                  |j                  «       | j                  |j                  j                  |j                  «      «       y ©Nr1   r2   )r!   r;   r   rS   rJ   r<   rK   Úexists)r'   rU   rM   Ú	new_thumbs       r*   Útest_missing_thumb_from_storagez)FilesTest.test_missing_thumb_from_storageˆ   s…   € Ø˜
Ð#ˆØ× Ñ ×.Ñ.¨tÓ4ˆØ�‰×Ñ˜UŸZ™ZÔ(Ø×$Ñ$×2Ñ2°4Ó8ˆ	Ø×Ñ˜Ÿ™ Y§^¡^Ô4Ø�‰˜Ÿ™×,Ñ,¨Y¯^©^Ó<Õ=r+   c                 ó.  — ddi}| j                   j                  |«      }| j                   j                  |j                  ¬«      }|j	                  «        |j
                  j	                  |j                  «       | j                   j                  |«       y rP   )r#   r;   rR   rJ   rS   r   rT   s       r*   Útest_missing_remote_thumbz#FilesTest.test_missing_remote_thumb�   s{   € Ø˜
Ð#ˆØ×'Ñ'×5Ñ5°dÓ;ˆØ×-Ñ-×AÑAØ Ÿ:™:ð Bó 'ˆà×ÑÔØ�‰×Ñ˜UŸZ™ZÔ(Ø×Ñ×-Ñ-¨dÕ3r+   c                 óÔ   — ddi}| j                   j                  | j                  j                  «       | j	                  t
        j                  | j                  j                  |«       y rY   )r   rS   r!   rJ   ÚassertRaisesr	   ÚInvalidImageFormatErrorr;   ©r'   rU   s     r*   Útest_missing_sourcezFilesTest.test_missing_source™   sR   € Ø˜
Ð#ˆØ�‰×Ñ˜D×,Ñ,×1Ñ1Ô2Ø×ÑÜ×.Ñ.Ø×Ñ×*Ñ*¨Dõ	2r+   c                 ó  — d| j                   _        | j                   j                  ddi«      }| j                  t	        j
                  |j                  «      d   d«       d| j                   _        | j                   j                  ddi«      }| j                  t	        j
                  |j                  «      d   d«       d| j                   _        | j                   j                  ddi«      }| j                  t	        j
                  |j                  «      d   d«       d	| j                   _        | j                   j                  ddi«      }| j                  t	        j
                  |j                  «      d   d«       y )
NÚpngr1   r2   é   z.png)ÚfooTz.jpg)rg   Újpg)r$   Úthumbnail_extensionr;   r<   r   ÚsplitextrJ   Úthumbnail_preserve_extensions)r'   rM   s     r*   Útest_extensionszFilesTest.test_extensions    s.  € Ø38ˆ×ÑÔ0Ø×$Ñ$×2Ñ2°F¸JÐ3GÓHˆØ×ÑœŸ™ u§z¡zÓ2°1Ñ5°vÔ>à=Eˆ×ÑÔ:Ø×$Ñ$×2Ñ2°F¸JÐ3GÓHˆØ×ÑœŸ™ u§z¡zÓ2°1Ñ5°vÔ>à=Aˆ×ÑÔ:Ø×$Ñ$×2Ñ2°F¸JÐ3GÓHˆØ×ÑœŸ™ u§z¡zÓ2°1Ñ5°vÔ>à=Kˆ×ÑÔ:Ø×$Ñ$×2Ñ2°F¸JÐ3GÓHˆØ×ÑœŸ™ u§z¡zÓ2°1Ñ5°vÕ>r+   c                 ór  — ddddœ}| j                   j                  ddi«      }t        j                  |j                  «      5 }| j                  d|j                  «       |j                  d   d	d
 |j                  d	   d	d
 z   |j                  d   d	d
 z   }| j                  ||d   «       d d d «       | j                   j                  dd	dœ«      }t        j                  |j                  «      5 }| j                  d|j                  «       |j                  d   d	d
 |j                  d	   d	d
 z   |j                  d   d	d
 z   }| j                  ||d	   «       d d d «       | j                   j                  dddœ«      }t        j                  |j                  «      5 }| j                  d|j                  «       |j                  d   d	d
 |j                  d	   d	d
 z   |j                  d   d	d
 z   }| j                  ||d   «       d d d «       y # 1 sw Y   �ŒixY w# 1 sw Y   ŒÆxY w# 1 sw Y   y xY w)N)rf   rf   rf   rf   rf   rf   ©é   rf   rf   rf   rf   rf   )ro   ro   rf   rf   rf   rf   )r   rf   ro   r1   r2   Ússr   rf   é   ro   )r1   ÚsubsamplingÚss1Úss0)
r$   r;   r   rG   r   ÚassertNotInrJ   Úlayerr<   ÚassertIn)r'   Ú	samplingsrM   ÚimÚsamplings        r*   Útest_subsamplingzFilesTest.test_subsampling±   s  € à!Ø!Ø!ñ
ˆ	ð
 ×$Ñ$×2Ñ2°F¸JÐ3GÓHˆÜ�Z‰Z˜Ÿ
™
Ó#ð 	5 rØ×Ñ˜T 5§:¡:Ô.Ø—x‘x ‘{ 1 QÐ'¨"¯(©(°1©+°a¸Ð*:Ñ:¸R¿X¹XÀa¹[ÈÈ1Ð=MÑMˆHØ×Ñ˜X y°¡|Ô4÷	5ð
 ×$Ñ$×2Ñ2Ø°Ñ2ó4ˆä�Z‰Z˜Ÿ
™
Ó#ð 	5 rØ�M‰M˜% §¡Ô,Ø—x‘x ‘{ 1 QÐ'¨"¯(©(°1©+°a¸Ð*:Ñ:¸R¿X¹XÀa¹[ÈÈ1Ð=MÑMˆHØ×Ñ˜X y°¡|Ô4÷	5ð
 ×$Ñ$×2Ñ2Ø°Ñ2ó4ˆä�Z‰Z˜Ÿ
™
Ó#ð 	5 rØ�M‰M˜% §¡Ô,Ø—x‘x ‘{ 1 QÐ'¨"¯(©(°1©+°a¸Ð*:Ñ:¸R¿X¹XÀa¹[ÈÈ1Ð=MÑMˆHØ×Ñ˜X y°¡|Ô4÷	5ð 	5÷	5ñ 	5ú÷	5ð 	5ú÷	5ð 	5ús'   ÁA*HÃ2A*H!Æ!A*H-ÈHÈ!H*È-H6c                 óŒ  — ddit         _        | j                  j                  ddi«      }t	        j
                  |j                  «      5 }| j                  d|j                  «       |j                  d   dd |j                  d   dd z   |j                  d   dd z   }| j                  |d	«       d d d «       y # 1 sw Y   y xY w)
Nrr   rf   r1   r2   rs   r   rq   ro   rn   )r   ÚTHUMBNAIL_DEFAULT_OPTIONSr$   r;   r   rG   r   rw   rJ   rv   r<   )r'   rM   ry   rz   s       r*   Útest_default_subsamplingz"FilesTest.test_default_subsamplingË   s°   € Ø.;¸QÐ-?ŒÔ*Ø×$Ñ$×2Ñ2°F¸JÐ3GÓHˆÜ�Z‰Z˜Ÿ
™
Ó#ð 	; rØ�M‰M˜% §¡Ô,Ø—x‘x ‘{ 1 QÐ'¨"¯(©(°1©+°a¸Ð*:Ñ:¸R¿X¹XÀa¹[ÈÈ1Ð=MÑMˆHØ×Ñ˜XÐ'9Ô:÷	;÷ 	;ñ 	;ús   Á
A'B:Â:Cúeasy_thumbnails.optimizezoptimize app not installedc                 ón  — ddit         _        t        «       5 }d| j                  _        | j                  j                  ddi«       t        |j                  «       «      d   }| j                  |d   d«       | j                  |d   d	«       | j                  |d
   d«       ddd«       y# 1 sw Y   yxY w)ú8use a mock image optimizing post processor doing nothingre   z-easy_thumbnails/tests/mockoptim.py {filename}r1   ©é
   rƒ   éÿÿÿÿr   r   rf   ÚINFOro   z;^easy_thumbnails/tests/mockoptim.py [^ ]+ returned nothing$N©
r   ÚTHUMBNAIL_OPTIMIZE_COMMANDr   r$   ri   r;   ÚtupleÚactualr<   ÚassertRegex©r'   Úlogcapr‰   s      r*   Útest_postprocessorzFilesTest.test_postprocessorÓ   s³   € ð ÐBð/DŒÔ+ä‹\ð 	O˜VØ7<ˆD× Ñ Ô4Ø× Ñ ×.Ñ.°¸Ð/AÔBÜ˜6Ÿ=™=›?Ó+¨BÑ/ˆFØ×Ñ˜V A™YÐ(BÔCØ×Ñ˜V A™Y¨Ô/Ø×ÑØ�q‘	ØMôO÷	O÷ 	Oñ 	Oúó   ˜B
B+Â+B4Nztestfixtures not installedc                 ón  — ddit         _        t        «       5 }d| j                  _        | j                  j                  ddi«       t        |j                  «       «      d   }| j                  |d   d«       | j                  |d   d	«       | j                  |d
   d«       ddd«       y# 1 sw Y   yxY w)r�   re   z2easy_thumbnails/tests/mockoptim_fail.py {filename}r1   r‚   r„   r   r   rf   ÚERRORro   z-^Command .+returned non-zero exit status 1.*$Nr†   r‹   s      r*   Útest_postprocessor_failz!FilesTest.test_postprocessor_failä   s³   € ð ÐGð/IŒÔ+ä‹\ð 	M˜VØ7<ˆD× Ñ Ô4Ø× Ñ ×.Ñ.°¸Ð/AÔBÜ˜6Ÿ=™=›?Ó+¨BÑ/ˆFØ×Ñ˜V A™YÐ(BÔCØ×Ñ˜V A™Y¨Ô0Ø×ÑØ�q‘	ÐKôM÷	M÷ 	Mñ 	MúrŽ   c                 ó¤   — dt         _        | j                  j                  ddi«       dt         _        | j                  j                  ddi«       y )NTr1   ©rƒ   é   F)r”   é(   )r   ÚUSE_TZr!   r;   ©r'   s    r*   Útest_USE_TZzFilesTest.test_USE_TZõ   sB   € ØŒŒØ×Ñ×&Ñ&¨°Ð'9Ô:àŒŒØ×Ñ×&Ñ&¨°Ð'9Õ:r+   c                 ó�   — ddddœ}| j                   j                  |«      }| j                  |j                  t	        |«      «       y )N©é2   r›   T)r1   ÚcropÚupscale)r!   r;   r<   Úthumbnail_optionsr   ©r'   rU   rM   s      r*   Útest_thumbnailfile_optionsz$FilesTest.test_thumbnailfile_optionsü   s@   € Ø ¨$¸4Ñ@ˆØ× Ñ ×.Ñ.¨tÓ4ˆØ×Ñ˜×0Ñ0Ô2BÀ4Ó2HÕIr+   c                 óh   — dddddœ}| j                  | j                  j                  |«      d«       y )Nrš   ÚsmartTr‚   )r1   rœ   r�   Útargetz6test.jpg.50x50_q85_crop-smart_target-10,10_upscale.jpg)r<   r!   Úget_thumbnail_namerb   s     r*   Útest_get_thumbnail_namez!FilesTest.test_get_thumbnail_name  s;   € à g¸$Øñ ˆð 	×ÑØ×Ñ×/Ñ/°Ó5ØDõ	Fr+   c                 ó¬   — ddit         _        ddi}| j                  j                  |«      }| j	                  |j
                  |j                  fd«       y )Nrœ   Tr1   rš   )r   r}   r!   r;   r<   ÚwidthÚheightrŸ   s      r*   Útest_default_options_settingz&FilesTest.test_default_options_setting	  sK   € Ø.4°d¨^ŒÔ*Ø˜Ð!ˆØ× Ñ ×.Ñ.¨tÓ4ˆØ×Ñ˜%Ÿ+™+ u§|¡|Ð4°hÕ?r+   c                 ó  — ddi}| j                   j                  |«      }| j                  |j                  |j                  fd«       | j                   j                  |«      }| j                  |j                  |j                  fd«       y )Nr1   rš   ©r›   é&   )r!   r;   r<   r§   r¨   rŸ   s      r*   Útest_dimensions_of_cached_imagez)FilesTest.test_dimensions_of_cached_image  st   € Ø˜Ð!ˆØ× Ñ ×.Ñ.¨tÓ4ˆØ×Ñ˜%Ÿ+™+ u§|¡|Ð4°hÔ?ð × Ñ ×.Ñ.¨tÓ4ˆØ×Ñ˜%Ÿ+™+ u§|¡|Ð4°hÕ?r+   c                 óz  — dt         _        ddi}| j                  j                  |«      }| j	                  |j
                  |j                  fd«       t        j                  j                  j                  «       d   }| j	                  |j
                  |j                  f|j
                  |j                  f«       y ©NTr1   rš   r«   r   )r   rC   r!   r;   r<   r§   r¨   r
   ÚThumbnailDimensionsÚobjectsÚall©r'   rU   rM   Ú
dimensionss       r*   Ú&test_cached_dimensions_of_cached_imagez0FilesTest.test_cached_dimensions_of_cached_image  sš   € Ø.2ŒÔ+Ø˜Ð!ˆØ× Ñ ×.Ñ.¨tÓ4ˆØ×Ñ˜%Ÿ+™+ u§|¡|Ð4°hÔ?ô ×/Ñ/×7Ñ7×;Ñ;Ó=¸aÑ@ˆ
Ø×ÑØ�[‰[˜%Ÿ,™,Ð'Ø×Ñ˜z×0Ñ0Ð1õ	3r+   c                 ó*  — dt         _        ddi}| j                  j                  |«      }|j                   | j                  j                  |«      }| j                  d«      5  | j                  |j                  d«       d d d «       y # 1 sw Y   y xY w)NTr1   rš   r   r›   )r   rC   r#   r;   r¨   ÚassertNumQueriesr<   r§   rŸ   s      r*   Ú%test_remote_cached_dimensions_queriesz/FilesTest.test_remote_cached_dimensions_queries$  s~   € Ø.2ŒÔ+Ø˜Ð!ˆØ×'Ñ'×5Ñ5°dÓ;ˆØ�Šà×'Ñ'×5Ñ5°dÓ;ˆØ×"Ñ" 1Ó%ñ 	.Ø×Ñ˜UŸ[™[¨"Ô-÷	.÷ 	.ñ 	.ús   Á#B	Â	Bc                 óô  — dt         _        ddi}| j                  j                  |«      }| j	                  |j
                  |j                  fd«       t        j                  j                  j                  «       j                  «        | j                  j                  |«      }| j	                  t        j                  j                  j                  «       d«       |j                   t        j                  j                  j                  «       }| j                  j                  |«      }| j	                  |j
                  |j                  f|j
                  |j                  f«       |j                  «        y r¯   )r   rC   r!   r;   r<   r§   r¨   r
   r°   r±   r²   rS   ÚcountÚgetÚcloser³   s       r*   Útest_add_dimension_cachez"FilesTest.test_add_dimension_cache.  s  € Ø.2ŒÔ+Ø˜Ð!ˆØ× Ñ ×.Ñ.¨tÓ4ˆØ×Ñ˜%Ÿ+™+ u§|¡|Ð4°hÔ?ä×"Ñ"×*Ñ*×.Ñ.Ó0×7Ñ7Ô9à× Ñ ×.Ñ.¨tÓ4ˆØ×Ñœ×3Ñ3×;Ñ;×AÑAÓCÀQÔGØ�ŠÜ×/Ñ/×7Ñ7×;Ñ;Ó=ˆ
à× Ñ ×.Ñ.¨tÓ4ˆØ×ÑØ�[‰[˜%Ÿ,™,Ð'Ø×Ñ˜z×0Ñ0Ð1ô	3ð
 	�‰�r+   c                 ó@  — d„ }t         j                  j                  |«       	 | j                  j	                  ddi«      }| j                  t        |d«      «       t         j                  j                  |«       y # t         j                  j                  |«       w xY w)Nc                 ó   — d| _         y )NT)Úsignal_received©ÚsenderÚkwargss     r*   Úsignal_handlerz?FilesTest.test_thumbnail_created_signal.<locals>.signal_handlerE  s
   € Ø%)ˆFÕ"r+   r1   r“   rÀ   )r   Úthumbnail_createdÚconnectr!   r;   rK   ÚhasattrÚ
disconnect)r'   rÄ   rM   s      r*   Útest_thumbnail_created_signalz'FilesTest.test_thumbnail_created_signalC  s{   € ò	*ô 	×!Ñ!×)Ñ)¨.Ô9ð	AØ×$Ñ$×2Ñ2°F¸HÐ3EÓFˆEØ�O‰OœG EÐ+<Ó=Ô>ä×%Ñ%×0Ñ0°Õ@øŒG×%Ñ%×0Ñ0°Õ@ús   ¤8A< Á<!Bc                 óö  — ddi}| j                   j                  |d¬«      }| j                  |d «       d| j                   _        | j                   j                  |«      }| j                  |d «       | j                   j                  |d¬«      }| j	                  |«       | j                   j                  |«      }| j	                  |«       | j                   j                  |d¬«      }| j	                  |«       y )Nr1   r‚   F©ÚgenerateT)r!   r;   r<   rÌ   rK   )r'   ÚoptionsrM   s      r*   Útest_passive_thumbnailerz"FilesTest.test_passive_thumbnailerO  så   € Ø˜8Ð$ˆð × Ñ ×.Ñ.¨wÀÐ.ÓGˆØ×Ñ˜ Ô%ð %*ˆ×ÑÔ!Ø× Ñ ×.Ñ.¨wÓ7ˆØ×Ñ˜ Ô%ð × Ñ ×.Ñ.¨wÀÐ.ÓFˆØ�‰˜Ôð × Ñ ×.Ñ.¨wÓ7ˆØ�‰˜Ôð × Ñ ×.Ñ.¨wÀÐ.ÓGˆØ�‰˜Õr+   c                 ó   — d„ }t         j                  j                  |«       	 | j                  j	                  ddi«       | j                  t        | j                  d«      «       | j                  j	                  ddid¬«       | j                  t        | j                  d«      «       ddi}| j                  j	                  |d¬«      }| j                  |d «       | j                  | j                  j                  t        |«      «       t         j                  j                  |«       y # t         j                  j                  |«       w xY w)Nc                 ó0   — |j                  d«      | _        y )NrÍ   )r»   Úmissed_signalrÁ   s     r*   rÄ   z>FilesTest.test_thumbnail_missed_signal.<locals>.signal_handlern  s   € Ø#)§:¡:¨iÓ#8ˆFÕ r+   r1   r2   rÑ   FrË   r“   )r   Úthumbnail_missedrÆ   r!   r;   rH   rÇ   r<   rÑ   r   rÅ   rÈ   )r'   rÄ   rÍ   rM   s       r*   Útest_thumbnail_missed_signalz&FilesTest.test_thumbnail_missed_signall  s  € ò	9ô 	× Ñ ×(Ñ(¨Ô8ð	Aà×Ñ×*Ñ*¨F°JÐ+?Ô@Ø×ÑœW T×%5Ñ%5°ÓGÔHà×Ñ×*Ñ*Ø˜Ð$¨uð +ô 6à×ÑœW T×%5Ñ%5°ÓGÔHà˜xÐ(ˆGØ×$Ñ$×2Ñ2°7ÀUÐ2ÓKˆEØ×Ñ˜U DÔ)Ø×ÑØ× Ñ ×.Ñ.Ô0@ÀÓ0IôKô ×%Ñ%×0Ñ0°Õ@øŒG×%Ñ%×0Ñ0°Õ@ús   ¤C(D, Ä,!Ec                 ód  — | j                   j                  dddœ«      }t        j                  |«      5 }| j	                  t        j                  |«      «       d d d «       | j                   j                  dddœ«      }t        j                  |«      5 }| j                  t        j                  |«      «       d d d «       | j                   j                  dddœ«      }t        j                  |«      5 }| j                  t        j                  |«      «       d d d «       | j                   j                  ddi«      }t        j                  |«      5 }| j                  t        j                  |«      «       d d d «       y # 1 sw Y   �Œ*xY w# 1 sw Y   ŒÖxY w# 1 sw Y   Œ‚xY w# 1 sw Y   y xY w)N)éc   rÕ   T)r1   rœ   )rf   r3   )r3   rf   r1   ©éÈ   r×   )r!   Úgenerate_thumbnailr   rG   rH   r   Úis_progressiverK   ©r'   rM   Úthumb_images      r*   Útest_progressive_encodingz#FilesTest.test_progressive_encodingƒ  sl  € Ø× Ñ ×3Ñ3Ø tÑ,ó.ˆä�Z‰Z˜Óð 	@ +Ø×ÑœU×1Ñ1°+Ó>Ô?÷	@ð × Ñ ×3Ñ3Ø tÑ,ó.ˆä�Z‰Z˜Óð 	? +Ø�O‰OœE×0Ñ0°Ó=Ô>÷	?à× Ñ ×3Ñ3Ø tÑ,ó.ˆä�Z‰Z˜Óð 	? +Ø�O‰OœE×0Ñ0°Ó=Ô>÷	?à× Ñ ×3Ñ3°V¸ZÐ4HÓIˆÜ�Z‰Z˜Óð 	? +Ø�O‰OœE×0Ñ0°Ó=Ô>÷	?ð 	?÷	@ñ 	@ú÷
	?ð 	?ú÷	?ð 	?ú÷	?ð 	?ús/   ´%FÂ%FÃ4%FÅ%F&ÆFÆFÆF#Æ&F/c                 óð   — dt         _        | j                  j                  ddi«      }t	        j
                  |«      5 }| j                  t        j                  |«      «       d d d «       y # 1 sw Y   y xY w)NFr1   rÖ   )	r   ÚTHUMBNAIL_PROGRESSIVEr!   rØ   r   rG   rH   r   rÙ   rÚ   s      r*   Útest_no_progressive_encodingz&FilesTest.test_no_progressive_encoding•  se   € Ø).ŒÔ&Ø× Ñ ×3Ñ3°V¸ZÐ4HÓIˆÜ�Z‰Z˜Óð 	@ +Ø×ÑœU×1Ñ1°+Ó>Ô?÷	@÷ 	@ñ 	@ús   ¾%A,Á,A5)$Ú__name__Ú
__module__Ú__qualname__r   r/   rA   rD   rN   rW   r\   r^   rc   rl   r{   r~   ÚunittestÚskipIfr   ÚINSTALLED_APPSr�   r   r‘   r˜   r    r¥   r©   r­   rµ   r¸   r½   rÉ   rÎ   rÓ   rÜ   rß   Ú__classcell__)r)   s   @r*   r   r      s  ø„ ô PôDò
#3òJLò?ò2-ò>ò4ò2ò?ò"5ò4;ð €X‡_�_Ø"¨(×*AÑ*AÐAØ$ó&ñOó&ðOð €X‡_�_Ø"¨(×*AÑ*AÐAØ$ó&ð €X‡_�_�Z 4Ð'Ð)EÓFñMó Gó&ðMò;òJò
Fò@ò@ò
3ò.òò*
Aòò:Aò.?ö$@r+   r   c                   ó   — e Zd Zdd„Zd„ Zy)ÚFakeSourceGeneratorc                 ó   — || _         y r-   ©Úfail)r'   rë   s     r*   Ú__init__zFakeSourceGenerator.__init__ž  s	   € Øˆ�	r+   c                 ó4   — | j                   rt        d«      ‚|S )NzFake source generator failed)rë   Ú
ValueError)r'   ÚsourcerÃ   s      r*   Ú__call__zFakeSourceGenerator.__call__¡  s   € Ø�9Š9ÜÐ;Ó<Ð<Øˆr+   N)F)rà   rá   râ   rì   rð   r:   r+   r*   rè   rè   œ  s   „ óór+   rè   c                   ó*   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zy)Ú
EngineTestc                 ó$   — t        d«      | _        y )Ns   file-contents)r   rï   r—   s    r*   r   zEngineTest.setUp©  s   € ÜÐ.Ó/ˆ�r+   c                 ó„   — t        d¬«      g}| j                  t        t        j                  | j
                  i |d¬«       y ©NTrê   F)Úfail_silently)rè   r`   rî   r   Úgenerate_source_imagerï   ©r'   Úsource_generatorss     r*   Útest_single_failzEngineTest.test_single_fail¬  s=   € Ü0°dÔ;Ð<ÐØ×ÑÜœ×4Ñ4Ø�K‰K˜Ð.¸eð 	õ 	Er+   c                 ó„   — t        d¬«      g}t        j                  | j                  i |«      }| j	                  |d «       y ©NTrê   ©rè   r   r÷   rï   r<   ©r'   rù   Úimages      r*   Útest_single_silent_failz"EngineTest.test_single_silent_fail²  s<   € Ü0°dÔ;Ð<ÐÜ×,Ñ,Ø�K‰K˜Ð.ó0ˆà×Ñ˜ Õ%r+   c                 ó®   — t        d¬«      t        d¬«      g}| j                  t        j                  t        j                  | j
                  i |d¬«       y rõ   )rè   r`   r   ÚNoSourceGeneratorr÷   rï   rø   s     r*   Útest_multiple_failzEngineTest.test_multiple_fail¸  sN   € ä TÔ*Ô,?ÀTÔ,JðLÐà×ÑÜ×$Ñ$¤f×&BÑ&BØ�K‰K˜Ð.¸eð 	õ 	Er+   c                 óš   — t        d¬«      t        d¬«      g}t        j                  | j                  i |«      }| j	                  |d «       y rü   rý   rþ   s      r*   Útest_multiple_silent_failz$EngineTest.test_multiple_silent_fail¿  sG   € ä TÔ*Ô,?ÀTÔ,JðLÐä×,Ñ,Ø�K‰K˜Ð.ó0ˆà×Ñ˜ Õ%r+   N)rà   rá   râ   r   rú   r   r  r  r:   r+   r*   rò   rò   §  s   „ ò0òEò&òEó&r+   rò   )Úior   Úosr   Údjango.testr   Úeasy_thumbnailsr   r   r   r	   r
   r   Úeasy_thumbnails.confr   Úeasy_thumbnails.optionsr   Úeasy_thumbnails.testsr   ÚPILr   Útestfixturesr   rã   ÚBaseTestr   rè   rò   r:   r+   r*   ú<module>r     sQ   ðÝ Ý å  ß M× MÝ )Ý 4Ý /Ý Ý #Û ôK@�—‘ô K@÷\ñ ô&�õ &r+   