§
    �ŸjyX  ã                   óX  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZ ddlmZ ddlmc mZ ddlmZ ddlmZ ddlmZmZ ddlmZ  ej        ¦   «         d	k    r ej        d
d¬¦  «         d„ Z G d„ d¦  «        Z G d„ de¦  «        Zd„ Z  G d„ de¦  «        Z!dS )z Tests for autoreload extension.
é    N)ÚStringIO)Ú	dataclass)ÚTestCase)ÚAutoreloadMagics)ÚEventManagerÚpre_run_cell)Úskipif_not_numpyÚPyPyz;Current autoreload implementation is extremely slow on PyPyT)Úallow_module_levelc                  ó   — d S ©N© )ÚaÚkws     úu/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/IPython/extensions/tests/test_autoreload.pyú<lambda>r   -   s   € ˜€ ó    c                   ó6   — e Zd Zd„ ZexZZd„ Zd„ Zd„ Z	dd„Z
dS )Ú	FakeShellc                 óæ   — i | _         | j         | _        i | _        t          | dt          h¦  «        | _        t          | ¬¦  «        | _        | j                             d| j        j        ¦  «         d S )Nr   )Úshell)	ÚnsÚuser_nsÚuser_ns_hiddenr   r   Úeventsr   Úauto_magicsÚregister©Úselfs    r   Ú__init__zFakeShell.__init__1   sg   € ØˆŒØ”wˆŒØ ˆÔÝ" 4¨.½,Ð)GÑHÔHˆŒÝ+°$Ð7Ñ7Ô7ˆÔØŒ×Ò˜^¨TÔ-=Ô-JÑKÔKÐKÐKÐKr   c                 ó–   — | j                              d¦  «         t          || j        ¦  «         | j                             ¦   «          d S )Nr   )r   ÚtriggerÚexecr   r   Úpost_execute_hook)r   Úcodes     r   Úrun_codezFakeShell.run_code;   sE   € ØŒ×Ò˜NÑ+Ô+Ð+ÝˆT�4”<Ñ Ô Ð ØÔ×*Ò*Ñ,Ô,Ð,Ð,Ð,r   c                 ó:   — | j                              |¦  «         d S r   )r   Úupdate)r   Úitemss     r   ÚpushzFakeShell.push@   s   € ØŒ�Š�uÑÔÐÐÐr   c                 ó:   — | j                              |¦  «         d S r   )r   Ú
autoreload)r   Ú	parameters     r   Úmagic_autoreloadzFakeShell.magic_autoreloadC   s   € ØÔ×#Ò# IÑ.Ô.Ð.Ð.Ð.r   Nc                 óp   — | j                              ||¬¦  «         | j                              ¦   «          d S )N©Ústream)r   Úaimportr$   )r   r-   r1   s      r   Úmagic_aimportzFakeShell.magic_aimportF   s9   € ØÔ× Ò  °6Ð Ñ:Ô:Ð:ØÔ×*Ò*Ñ,Ô,Ð,Ð,Ð,r   r   )Ú__name__Ú
__module__Ú__qualname__r    ÚnoopÚregister_magicsÚset_hookr&   r*   r.   r3   r   r   r   r   r   0   ss   € € € € € ðLð Lð Lð "&Ð%€O�hð-ð -ð -ð
ð ð ð/ð /ð /ð-ð -ð -ð -ð -ð -r   r   c                   ó<   — e Zd ZdZdZdZdZd„ Zd„ Zd„ Z	d„ Z
d„ ZdS )	ÚFixturez&Fixture for creating test module filesNÚ#abcdefghijklmopqrstuvwxyz0123456789c                 óâ   — t          j        ¦   «         | _        t          t          j        ¦  «        | _        t          j                             d| j        ¦  «         t          ¦   «         | _	        d S )Nr   )
ÚtempfileÚmkdtempÚtest_dirÚlistÚsysÚpathÚold_sys_pathÚinsertr   r   r   s    r   ÚsetUpzFixture.setUpR   sI   € Ý Ô(Ñ*Ô*ˆŒÝ ¥¤™NœNˆÔÝŒ�Š˜˜4œ=Ñ)Ô)Ð)Ý‘[”[ˆŒ
ˆ
ˆ
r   c                 ó„   — t          j        | j        ¦  «         | j        t          _        d | _        d | _        d | _        d S r   )ÚshutilÚrmtreer@   rD   rB   rC   r   r   s    r   ÚtearDownzFixture.tearDownX   s8   € ÝŒ�d”mÑ$Ô$Ð$ØÔ$�ŒàˆŒØ ˆÔØˆŒ
ˆ
ˆ
r   c                 óð   — dd                      t          j        | j        d¦  «        ¦  «        z   }|t          j        v rt          j        |= t          j                              | j        |dz   ¦  «        }||fS )NÚtmpmod_Ú é   z.py)	ÚjoinÚrandomÚsampleÚfilename_charsrB   ÚmodulesÚosrC   r@   )r   Úmodule_nameÚ	file_names      r   Ú
get_modulezFixture.get_module`   se   € Ø "§'¢'­&¬-¸Ô8KÈRÑ*PÔ*PÑ"QÔ"QÑQˆØ�#œ+Ð%Ð%Ý”˜KÐ(Ý”G—L’L ¤°¸eÑ0CÑDÔDˆ	Ø˜IÐ%Ð%r   c                 óÖ   — t          j        |¦  «        }t          j        d¦  «         t	          |dd¬¦  «        5 }|                     |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )a+  
        Write a file, and force a timestamp difference of at least one second

        Notes
        -----
        Python's .pyc files record the timestamp of their compilation
        with a time resolution of one second.

        Therefore, we need to force a timestamp difference between .py
        and .pyc, without having the .py file be timestamped in the
        future, and without changing the timestamp of the .pyc file
        (because that is stored in the file).  The only reliable way
        to achieve this seems to be to sleep.
        gÍÌÌÌÌÌð?Úwúutf-8©ÚencodingN)ÚtextwrapÚdedentÚtimeÚsleepÚopenÚwrite)r   ÚfilenameÚcontentÚfs       r   Ú
write_filezFixture.write_fileg   s­   € õ ”/ 'Ñ*Ô*ˆåŒ
�4ÑÔÐõ �(˜C¨'Ð2Ñ2Ô2ð 	°aØ�GŠG�GÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   »AÁA"Á%A"c                 óÞ   — t          j        |¦  «        }|                      ¦   «         \  }}t          |dd¬¦  «        5 }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   ||fS )NrY   rZ   r[   )r]   r^   rW   ra   rb   )r   r%   Úmod_nameÚmod_fnre   s        r   Ú
new_modulezFixture.new_module~   s¦   € ÝŒ˜tÑ$Ô$ˆØŸ?š?Ñ,Ô,Ñˆ�&Ý�&˜#¨Ð0Ñ0Ô0ð 	°AØ�GŠG�D‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	à˜ÐÐs   ¾A Á A$Á'A$)r4   r5   r6   Ú__doc__r@   rD   rR   rF   rJ   rW   rf   rj   r   r   r   r;   r;   K   st   € € € € € Ø0Ð0à€HØ€LØ:€Nð!ð !ð !ðð ð ð&ð &ð &ðð ð ð. ð  ð  ð  ð  r   r;   c                 ó´   — | j         j        }t          | dd¦  «        }t          j        |         }|                     d¦  «        D ]}t          ||¦  «        }Œ|S )z;
    Original issue comes from pickle; hence the name.
    r5   Nú.)Ú	__class__r4   ÚgetattrrB   rS   Úsplit)ÚobjÚnamerU   Úobj2Úsubpaths        r   Úpickle_get_current_classru   ‹   sZ   € ð Œ=Ô!€DÝ˜#˜|¨TÑ2Ô2€KÝŒ;�{Ô#€DØ—:’:˜c‘?”?ð &ð &ˆÝ�t˜WÑ%Ô%ˆˆØ€Kr   c                   ób   — e Zd Zd„ Zd„ Zd„ Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d„ Zdd
„Zd„ Zd„ ZdS )ÚTestAutoreloadc                 óª  — |                       t          j        d¦  «        ¦  «        \  }}| j                             d¦  «         | j                             |¦  «         |                      |t          j        d¦  «        ¦  «         t          j        d|z  d¬¦  «        5  | j         	                    d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nzß
                                from enum import Enum
                                class MyEnum(Enum):
                                    A = 'A'
                                    B = 'B'
                            Ú2a  
                                from enum import Enum
                                class MyEnum(Enum):
                                    A = 'A'
                                    B = 'B'
                                    C = 'C'
                            ú[autoreload of %s failed:Ústderr©ÚchannelÚpass)
rj   r]   r^   r   r.   r3   rf   ÚttÚAssertNotPrintsr&   ©r   rh   ri   s      r   Útest_reload_enumsz TestAutoreload.test_reload_enums˜   s)  € ØŸ?š?ÝŒOð ñô ñ	
ô 	
Ñˆ�&ð 	Œ
×#Ò# CÑ(Ô(Ð(ØŒ
× Ò  Ñ*Ô*Ð*Ø�ŠØÝŒOð ñô ñ	
ô 	
ð 	
õ ÔØ(¨8Ñ3¸hð
ñ 
ô 
ð 	(ð 	(ð ŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   Â CÃCÃCc                 óF  — | j                              d¦  «         |                      d¦  «        \  }}d| j         j        vsJ ‚d| j         j        vsJ ‚| j                              d|z  ¦  «         | j                              d¦  «         |                      |d¦  «         | j         j        d         }| j                              d¦  «         t          |¦  «        }t          ||¦  «        sJ ‚| j                              d	¦  «         | j                              d
¦  «         d S )Nry   zd
            class Test():
                def meth(self):
                    return "old"
        ÚtestÚresultzfrom %s import Testztest = Test()zd
            class Test():
                def meth(self):
                    return "new"
        r~   zimport picklezp = pickle.dumps(test))r   r.   rj   r   r&   rf   ru   Ú
isinstance)r   rh   ri   Útest_objectÚ
test_classs        r   Útest_reload_class_typez%TestAutoreload.test_reload_class_type¶   s1  € ØŒ
×#Ò# CÑ(Ô(Ð(ØŸ?š?ðñ
ô 
Ñˆ�&ð ˜TœZœ]Ð*Ð*Ð*Ð*Ø˜tœzœ}Ð,Ð,Ð,Ð,àŒ
×ÒÐ1°HÑ<Ñ=Ô=Ð=ØŒ
×Ò˜OÑ,Ô,Ð,à�ŠØðñ	
ô 	
ð 	
ð ”j”m FÔ+ˆð 	Œ
×Ò˜FÑ#Ô#Ð#å-¨kÑ:Ô:ˆ
Ý˜+ zÑ2Ô2Ð2Ð2Ð2ð 	Œ
×Ò˜OÑ,Ô,Ð,ØŒ
×ÒÐ4Ñ5Ô5Ð5Ð5Ð5r   c                 óF  — | j                              d¦  «         |                      t          j        d¦  «        ¦  «        \  }}| j                              d|z  ¦  «         | j                              d¦  «         | j                              d¦  «         |                      t          ¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   | j                              d¦  «         |                      t          ¦  «        5  | j                              d	¦  «         d d d ¦  «         n# 1 swxY w Y   |                      |t          j        d
¦  «        ¦  «         | j                              d¦  «         dD �]G}| j                              |› d�¦  «         |                      t          ¦  «        5  | j                              |› d�¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5  | j                              |› d�¦  «         d d d ¦  «         n# 1 swxY w Y   | j                              |› d�¦  «         | j                              |› d�¦  «         |                      t          ¦  «        5  | j                              |› d�¦  «         d d d ¦  «         n# 1 swxY w Y   �ŒId S )Nry   aà  
                                class MyClass:

                                    def __init__(self, a=10):
                                        self.a = a
                                        self.b = 22 
                                        # self.toto = 33

                                    def square(self):
                                        print('compute square')
                                        return self.a*self.a
                            úfrom %s import MyClasszfirst = MyClass(5)zfirst.square()zfirst.cube()zfirst.power(5)zfirst.bz
first.totoa�  
                            class MyClass:

                                def __init__(self, a=10):
                                    self.a = a
                                    self.b = 11

                                def power(self, p):
                                    print('compute power '+str(p))
                                    return self.a**p
                            zsecond = MyClass(5)>   ÚfirstÚsecondz	.power(5)z.cube()z	.square()z.bz.az.toto)	r   r.   rj   r]   r^   r&   ÚassertRaisesÚAttributeErrorrf   )r   rh   ri   Úobject_names       r   Útest_reload_class_attributesz+TestAutoreload.test_reload_class_attributesÚ   s{  € ØŒ
×#Ò# CÑ(Ô(Ð(ØŸ?š?ÝŒOð ñô ñ
ô 
Ñˆ�&ð  	Œ
×ÒÐ4°xÑ?Ñ@Ô@Ð@ØŒ
×ÒÐ0Ñ1Ô1Ð1ØŒ
×ÒÐ,Ñ-Ô-Ð-Ø×Ò�~Ñ.Ô.ð 	0ð 	0ØŒJ×Ò Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0à×Ò�~Ñ.Ô.ð 	2ð 	2ØŒJ×ÒÐ 0Ñ1Ô1Ð1ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2àŒ
×Ò˜IÑ&Ô&Ð&Ø×Ò�~Ñ.Ô.ð 	.ð 	.ØŒJ×Ò Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð
 	�ŠØÝŒOð
 ñô ñ	
ô 	
ð 	
ð" 	Œ
×ÒÐ1Ñ2Ô2Ð2à.ð 		;ñ 		;ˆKØŒJ×Ò ;Ð 9Ð 9Ð 9Ñ:Ô:Ð:Ø×"Ò"¥>Ñ2Ô2ð =ð =Ø”
×#Ò# {Ð$;Ð$;Ð$;Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =à×"Ò"¥>Ñ2Ô2ð ?ð ?Ø”
×#Ò# {Ð$=Ð$=Ð$=Ñ>Ô>Ð>ð?ð ?ð ?ñ ?ô ?ð ?ð ?ð ?ð ?ð ?ð ?øøøð ?ð ?ð ?ð ?àŒJ×Ò ;Ð 2Ð 2Ð 2Ñ3Ô3Ð3ØŒJ×Ò ;Ð 2Ð 2Ð 2Ñ3Ô3Ð3Ø×"Ò"¥>Ñ2Ô2ð ;ð ;Ø”
×#Ò# {Ð$9Ð$9Ð$9Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ùð		;ð 		;sl   Â0CÃCÃCÃ<D#Ä#D'Ä*D'Å"F	Æ	FÆFÈH<È<I 	ÉI 	É!JÊJ	ÊJ	Ë*LÌL	ÌL	c                 óä  — | j                              d¦  «         |                      t          j        d¦  «        ¦  «        \  }}| j                              d|z  ¦  «         | j                              d¦  «         |                      |t          j        d¦  «        ¦  «         t          j        d|z  d¬¦  «        5  | j                              d	¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nry   zù
                                import numpy as np
                                class MyClass:
                                    a = (np.array((.1, .2)),
                                         np.array((.2, .3)))
                            r‹   zfirst = MyClass()zù
                                import numpy as np
                                class MyClass:
                                    a = (np.array((.3, .4)),
                                         np.array((.5, .6)))
                            rz   r{   r|   r~   )	r   r.   rj   r]   r^   r&   rf   r   r€   r�   s      r   Útest_comparing_numpy_structuresz.TestAutoreload.test_comparing_numpy_structures  sH  € àŒ
×#Ò# CÑ(Ô(Ð(ØŸ?š?ÝŒOð ñô ñ	
ô 	
Ñˆ�&ð 	Œ
×ÒÐ4°xÑ?Ñ@Ô@Ð@ØŒ
×ÒÐ/Ñ0Ô0Ð0ð 	�ŠØÝŒOð ñô ñ
	
ô 
	
ð 
	
õ ÔØ(¨8Ñ3¸hð
ñ 
ô 
ð 	(ð 	(ð ŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(s   Â=C%Ã%C)Ã,C)c                 ó&  — | j                              d¦  «         d}|                      t          j        |¦  «        ¦  «        \  }}| j                              d|› d�¦  «         | j                              d¦  «         |                      t          ¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   |                      t          ¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   d	}|                      |t          j        |¦  «        ¦  «         | j                              d¦  «         | j                              d
|› d�¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         d}|                      |t          j        |¦  «        ¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         t          j
        dk     r| j                              d¦  «         d}|                      t          j        |¦  «        ¦  «        \  }}d|› d�}|                      |t          j        |¦  «        ¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         | j                              d¦  «         d S )NÚ3ú#
        def func1(): pass
        zfrom z	 import *zfunc1()zfunc2()z
t = Test()Únumberz¹
        def func1(): pass
        def func2(): pass
        class Test: pass
        number = 0
        from enum import Enum
        class TestEnum(Enum):
            A = 'a'
        zimport sys; sys.modules['z
'].func2()z
TestEnum.Aa%  
        def func1(): return 'changed'
        def func2(): return 'changed'
        class Test:
            def new_func(self):
                return 'changed'
        number = 1
        from enum import Enum
        class TestEnum(Enum):
            A = 'a'
            B = 'added'
        zassert func1() == 'changed'zassert func2() == 'changed'z,t = Test(); assert t.new_func() == 'changed'zassert number == 1)é   é   z"assert TestEnum.B.value == 'added'zë
        from enum import Enum
        class Ext(Enum):
            A = 'ext'
        def ext_func():
            return 'ext'
        class ExtTest:
            def meth(self):
                return 'ext'
        ext_int = 2
        z
        from z import *
        zassert Ext.A.value == 'ext'zassert ext_func() == 'ext'z't = ExtTest(); assert t.meth() == 'ext'zassert ext_int == 2)r   r.   rj   r]   r^   r&   rŽ   Ú	NameErrorrf   rB   Úversion_info)	r   Úmod_coderh   ri   Únew_codeÚnew_mod_codeÚnew_mod_nameÚ
new_mod_fnÚcurrent_mod_codes	            r   Ú!test_autoload_newly_added_objectsz0TestAutoreload.test_autoload_newly_added_objects9  s  € àŒ
×#Ò# CÑ(Ô(Ð(ðˆð  Ÿ?š?­8¬?¸8Ñ+DÔ+DÑEÔEÑˆ�&ØŒ
×ÒÐ7 HÐ7Ð7Ð7Ñ8Ô8Ð8ØŒ
×Ò˜IÑ&Ô&Ð&Ø×Ò�yÑ)Ô)ð 	+ð 	+ØŒJ×Ò 	Ñ*Ô*Ð*ð	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+à×Ò�yÑ)Ô)ð 	.ð 	.ØŒJ×Ò Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.à×Ò�yÑ)Ô)ð 	*ð 	*ØŒJ×Ò Ñ)Ô)Ð)ð	*ð 	*ð 	*ñ 	*ô 	*ð 	*ð 	*ð 	*ð 	*ð 	*ð 	*øøøð 	*ð 	*ð 	*ð 	*ð
ˆð 	�Š˜¥¤°Ñ 9Ô 9Ñ:Ô:Ð:ð 	Œ
×Ò˜IÑ&Ô&Ð&àŒ
×ÒÐL¸ÐLÐLÐLÑMÔMÐMàŒ
×Ò˜LÑ)Ô)Ð)àŒ
×Ò˜HÑ%Ô%Ð%àŒ
×Ò˜LÑ)Ô)Ð)ðˆð 	�Š˜¥¤°Ñ 9Ô 9Ñ:Ô:Ð:ØŒ
×ÒÐ9Ñ:Ô:Ð:ØŒ
×ÒÐ9Ñ:Ô:Ð:ØŒ
×ÒÐJÑKÔKÐKØŒ
×ÒÐ0Ñ1Ô1Ð1ÝÔ˜gÒ%Ð%ØŒJ×ÒÐ DÑEÔEÐEð
ˆð $(§?¢?µ8´?À<Ñ3PÔ3PÑ#QÔ#QÑ ˆ�jðØðð ð Ðð 	�Š˜¥¤Ð0@Ñ AÔ AÑBÔBÐBØŒ
×ÒÐ9Ñ:Ô:Ð:ØŒ
×ÒÐ8Ñ9Ô9Ð9ØŒ
×ÒÐEÑFÔFÐFØŒ
×ÒÐ1Ñ2Ô2Ð2Ð2Ð2s6   ÂC Ã CÃCÃ%DÄDÄDÄ1EÅEÅEc                 óè  ‡ ‡— t            G d„ d¦  «        ¦   «         Šˆˆ f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 ‚‰                      t          ¦  «        5  ‰ j                             d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nc                   ó.   — e Zd ZU eed<   eed<   eed<   dS )ú=TestAutoreload.test_verbose_names.<locals>.AutoreloadSettingsÚ	check_allÚenabledÚautoload_objN)r4   r5   r6   ÚboolÚ__annotations__r   r   r   ÚAutoreloadSettingsr¥   �  s0   € € € € € € àˆOˆO‰OØˆMˆM‰MØÐÐÑÐÐr   r«   c                 ó’   •— ‰j                              | ¦  «         ‰j         j        j        } ‰|j        |j        |j        ¦  «        S r   )r   r.   r   Ú	_reloaderr¦   r§   r¨   )ÚmodeÚmodule_reloaderr«   r   s     €€r   Úgather_settingsz:TestAutoreload.test_verbose_names.<locals>.gather_settings–  sM   ø€ ØŒJ×'Ò'¨Ñ-Ô-Ð-Ø"œjÔ4Ô>ˆOØ%Ð%ØÔ)ØÔ'ØÔ,ñô ð r   Ú0ÚoffÚOFFÚ1Úexplicitry   Úallr•   ÚcompleteÚ4)r   rŽ   Ú
ValueErrorr   r.   )r   r°   r«   s   ` @r   Útest_verbose_namesz!TestAutoreload.test_verbose_namesŽ  sŸ  øø€ å	ð	ð 	ð 	ð 	ð 	ñ 	ô 	ñ 
Œð	ð
	ð 	ð 	ð 	ð 	ð 	ð ˆ˜sÑ#Ô#  °uÑ'=Ô'=Ò=Ð=Ð=Ð=Øˆ˜sÑ#Ô#  °uÑ'=Ô'=Ò=Ð=Ð=Ð=Øˆ˜sÑ#Ô#  °zÑ'BÔ'BÒBÐBÐBÐBØˆ˜sÑ#Ô#  °uÑ'=Ô'=Ò=Ð=Ð=Ð=Øˆ˜sÑ#Ô#  °zÑ'BÔ'BÒBÐBÐBÐBð ×Ò�zÑ*Ô*ð 	-ð 	-ØŒJ×'Ò'¨Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-ð 	-ð 	-s   Â?C'Ã'C+Ã.C+c                 ó4  — | j         j        j        }| j                              d¦  «         |j        d         du sJ ‚d|j                             ¦   «         vsJ ‚| j                              d¦  «         |j        d         du sJ ‚d|j                             ¦   «         vsJ ‚| j                              d¦  «         |j        d         du sJ ‚d|j                             ¦   «         vsJ ‚|j        d         du sJ ‚d|j                             ¦   «         vsJ ‚d S )NrT   Tz-mathÚmathz	-os, math)r   r   r­   r3   rS   Úskip_modulesÚkeys)r   r¯   s     r   Útest_aimport_parsingz#TestAutoreload.test_aimport_parsing©  sD  € àœ*Ô0Ô:ˆØŒ
× Ò  Ñ&Ô&Ð&ØÔ& tÔ,°Ð4Ð4Ð4Ð4Ø˜?Ô7×<Ò<Ñ>Ô>Ð>Ð>Ð>Ð>àŒ
× Ò  Ñ)Ô)Ð)ØÔ+¨FÔ3°tÐ;Ð;Ð;Ð;Ø˜_Ô4×9Ò9Ñ;Ô;Ð;Ð;Ð;Ð;àŒ
× Ò Øñ	
ô 	
ð 	
ð Ô& vÔ.°$Ð6Ð6Ð6Ð6Ø˜_Ô9×>Ò>Ñ@Ô@Ð@Ð@Ð@Ð@ØÔ+¨DÔ1°TÐ9Ð9Ð9Ð9Ø˜?Ô2×7Ò7Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9r   c                 óH  — | j                              d¦  «         d}|                      |¦  «        \  }}| j                              d|› �¦  «         t	          j        dd¬¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   | j                              d¦  «         |                      ||¦  «         t	          j        d	|› d
�d¬¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   | j                              d¦  «         |                      ||¦  «         t	          j        d	|› d
�d¬¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   | j                              d¦  «         |                      ||¦  «         t	          j        d	|› d
�d¬¦  «        5  | j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   | j                              d¦  «         |                      ||¦  «         |                      d¬¦  «        5 }| j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   |j        d|› d
�gk    sJ ‚| j                              d¦  «         |                      ||¦  «         |                      d¬¦  «        5 }| j                              d¦  «         d d d ¦  «         n# 1 swxY w Y   |j        d|› d
�gk    sJ ‚d S )Nr·   r–   zimport rM   Ústdoutr|   r~   zcomplete --printzReloading 'z'.zcomplete -pzcomplete --print --logr,   )ÚloggerzINFO:autoreload:Reloading 'zcomplete -l)	r   r.   rj   r&   r   ÚAssertPrintsrf   Ú
assertLogsÚoutput)r   rœ   rh   ri   Úlos        r   Útest_autoreload_outputz%TestAutoreload.test_autoreload_output¼  s±  € ØŒ
×#Ò# JÑ/Ô/Ð/ðˆð  Ÿ?š?¨8Ñ4Ô4Ñˆ�&ØŒ
×ÒÐ0 hÐ0Ð0Ñ1Ô1Ð1ÝŒ_˜R¨Ð2Ñ2Ô2ð 	(ð 	(ØŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	Œ
×#Ò#Ð$6Ñ7Ô7Ð7Ø�Š˜ Ñ)Ô)Ð)ÝŒ_Ø&˜(Ð&Ð&Ð&°ð
ñ 
ô 
ð 	(ð 	(ð ŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð
 	Œ
×#Ò# MÑ2Ô2Ð2Ø�Š˜ Ñ)Ô)Ð)ÝŒ_Ø&˜(Ð&Ð&Ð&°ð
ñ 
ô 
ð 	(ð 	(ð ŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð
 	Œ
×#Ò#Ð$<Ñ=Ô=Ð=Ø�Š˜ Ñ)Ô)Ð)ÝŒ_Ø&˜(Ð&Ð&Ð&°ð
ñ 
ô 
ð 	(ð 	(ð ŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð
 	Œ
×#Ò#Ð$<Ñ=Ô=Ð=Ø�Š˜ Ñ)Ô)Ð)Ø�_Š_ Lˆ_Ñ1Ô1ð 	(°RØŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àŒyÐG¸8ÐGÐGÐGÐHÒHÐHÐHÐHàŒ
×#Ò# MÑ2Ô2Ð2Ø�Š˜ Ñ)Ô)Ð)Ø�_Š_ Lˆ_Ñ1Ô1ð 	(°RØŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(àŒyÐG¸8ÐGÐGÐGÐHÒHÐHÐHÐHÐHÐHsl   Á(BÂBÂBÃ$DÄDÄDÅ FÆFÆFÇHÈHÈ
HÉI;É;I?ÊI?ËLÌL	ÌL	Tc                 ó$	  ‡ ‡‡‡‡	— ‰                       d¦  «        \  }}|rÖ‰ j                             d¦  «         ‰ j                             |¦  «         t	          ¦   «         }‰ j                             d|¬¦  «         ‰                      d|z  |                     ¦   «         ¦  «         ‰                      t          ¦  «        5  ‰ j                             d¦  «         ddd¦  «         n# 1 swxY w Y   nŠ‰ j                             d¦  «         ‰ j         	                    d	|z  ¦  «         t	          ¦   «         }‰ j                             d|¬¦  «         ‰  
                    d
|                     ¦   «         v ¦  «         ‰                      |‰ j        j        ¦  «         t          j        |         Š‰j        Š‰                     d¦  «        Š‰                     ¦   «         Š	ˆˆˆˆ	ˆ fd„} |¦   «          ‰                      |d¦  «         t%          j        d|z  d¬¦  «        5  ‰ j         	                    d¦  «         ddd¦  «         n# 1 swxY w Y   t%          j        d|z  d¬¦  «        5  ‰ j         	                    d¦  «         ddd¦  «         n# 1 swxY w Y    |¦   «          ‰                      |d¦  «         ˆˆˆˆ	ˆ fd„}‰ j         	                    d¦  «          |¦   «          t+          j        |¦  «         ‰ j         	                    d¦  «          |¦   «          |rŽ‰ j                             d|z   ¦  «         t	          ¦   «         }‰ j                             d|¬¦  «         ‰  
                    d|z  |                     ¦   «         v ¦  «         ‰ j                             d¦  «         n‰ j                             d¦  «         ‰                      |d¦  «         ‰ j         	                    d¦  «         ‰ j         	                    d¦  «          |¦   «          |r‰ j                             |¦  «         n‰ j                             d¦  «         ‰ j         	                    d¦  «         ‰                      ‰j        d¦  «         dS )zt
        Functional test for the automatic reloader using either
        '%autoreload 1' or '%autoreload 2'
        a¸  
x = 9

z = 123  # this item will be deleted

def foo(y):
    return y + 3

class Baz(object):
    def __init__(self, x):
        self.x = x
    def bar(self, y):
        return self.x + y
    @property
    def quux(self):
        return 42
    def zzz(self):
        '''This method will be deleted below'''
        return 99

class Bar:    # old-style class: weakref doesn't work for it on Python < 2.7
    def foo(self):
        return 1
r´   rM   r0   zModules to reload:
%sÚtmpmod_as318989e89dsNry   z	import %sz%Modules to reload:
all-except-skippedé	   c                  ó   •— ‰                      ‰j        d¦  «         ‰                      ‰j        d¦  «         ‰                       ‰d¦  «        d¦  «         ‰                      ‰                     d¦  «        d¦  «         ‰                     d¦  «        } ‰                      ‰                     d¦  «        d¦  «         ‰                      |                      d¦  «        d¦  «         ‰                      | j        d¦  «         ‰                      |                      ¦   «         d¦  «         ‰                     ¦   «         }‰                      ‰                     ¦   «         d¦  «         ‰                      |                     ¦   «         d¦  «         d S )	NrÊ   é{   r   r˜   é   é
   é*   éc   )	ÚassertEqualÚxÚzÚfooÚBazÚbarÚquuxÚzzzÚBar©rq   rs   ÚmodÚold_fooÚold_objÚold_obj2r   s     €€€€€r   Úcheck_module_contentsz>TestAutoreload._check_smoketest.<locals>.check_module_contents'  sE  ø€ Ø×Ò˜SœU AÑ&Ô&Ð&Ø×Ò˜SœU CÑ(Ô(Ð(à×Ò˜W˜W Q™ZœZ¨Ñ+Ô+Ð+Ø×Ò˜SŸWšW Q™ZœZ¨Ñ+Ô+Ð+à—'’'˜!‘*”*ˆCØ×Ò˜WŸ[š[¨™^œ^¨RÑ0Ô0Ð0Ø×Ò˜SŸWšW Q™ZœZ¨Ñ,Ô,Ð,Ø×Ò˜SœX rÑ*Ô*Ð*Ø×Ò˜SŸWšW™YœY¨Ñ+Ô+Ð+à—7’7‘9”9ˆDØ×Ò˜XŸ\š\™^œ^¨QÑ/Ô/Ð/Ø×Ò˜TŸXšX™ZœZ¨Ñ+Ô+Ð+Ð+Ð+r   z
a syntax error
rz   r{   r|   r~   a  
x = 10

def foo(y):
    return y + 4

class Baz(object):
    def __init__(self, x):
        self.x = x
    def bar(self, y):
        return self.x + y + 1
    @property
    def quux(self):
        return 43

class Bar:    # old-style class
    def foo(self):
        return 2
c                  ó¢  •— ‰                      ‰j        d¦  «         ‰                     t          ‰d¦  «        ¦  «         ‰                       ‰d¦  «        d¦  «         ‰                      ‰                     d¦  «        d¦  «         ‰                     d¦  «        } ‰                      ‰                     d¦  «        d¦  «         ‰                      |                      d¦  «        d¦  «         ‰                      ‰j        d¦  «         ‰                      | j        d¦  «         ‰                     t          ‰d	¦  «        ¦  «         ‰                     t          | d	¦  «        ¦  «         ‰                     ¦   «         }‰                      ‰                     ¦   «         d
¦  «         ‰                      |                     ¦   «         d
¦  «         d S )NrÎ   rÓ   r   é   rÊ   rÍ   é   é+   rØ   é   )	rÑ   rÒ   ÚassertFalseÚhasattrrÔ   rÕ   rÖ   r×   rÙ   rÚ   s     €€€€€r   rß   z>TestAutoreload._check_smoketest.<locals>.check_module_contentsi  s�  ø€ Ø×Ò˜SœU BÑ'Ô'Ð'Ø×Ò�W S¨#Ñ.Ô.Ñ/Ô/Ð/à×Ò˜W˜W Q™ZœZ¨Ñ+Ô+Ð+Ø×Ò˜SŸWšW Q™ZœZ¨Ñ+Ô+Ð+à—'’'˜!‘*”*ˆCØ×Ò˜WŸ[š[¨™^œ^¨RÑ0Ô0Ð0Ø×Ò˜SŸWšW Q™ZœZ¨Ñ,Ô,Ð,à×Ò˜Wœ\¨2Ñ.Ô.Ð.Ø×Ò˜SœX rÑ*Ô*Ð*à×Ò�W W¨eÑ4Ô4Ñ5Ô5Ð5Ø×Ò�W S¨%Ñ0Ô0Ñ1Ô1Ð1à—7’7‘9”9ˆDØ×Ò˜XŸ\š\™^œ^¨QÑ/Ô/Ð/Ø×Ò˜TŸXšX™ZœZ¨Ñ+Ô+Ð+Ð+Ð+r   ú-zModules to skip:
%sz-tmpmod_as318989e89dsr±   z	
x = -99
i�ÿÿÿ)rj   r   r.   r3   r   ÚassertInÚgetvaluerŽ   ÚImportErrorr&   Ú
assertTruer   rB   rS   rÔ   rÕ   rÙ   rf   r   rÃ   r€   rT   ÚunlinkrÑ   rÒ   )
r   Úuse_aimportrh   ri   r1   rß   rÛ   rÜ   rÝ   rÞ   s
   `     @@@@r   Ú_check_smoketestzTestAutoreload._check_smoketestç  s¤  øøøøø€ ð  Ÿ?š?ðñ
ô 
Ñˆ�&ð< ð 	ØŒJ×'Ò'¨Ñ,Ô,Ð,ØŒJ×$Ò$ XÑ.Ô.Ð.Ý‘Z”ZˆFØŒJ×$Ò$ R°Ð$Ñ7Ô7Ð7Ø�MŠMÐ3°hÑ>ÀÇÂÑARÔARÑSÔSÐSà×"Ò"¥;Ñ/Ô/ð Að AØ”
×(Ò(Ð)?Ñ@Ô@Ð@ðAð Að Añ Aô Að Að Að Að Að Að Aøøøð Að Að Að Aøð ŒJ×'Ò'¨Ñ,Ô,Ð,ØŒJ×Ò ¨hÑ 6Ñ7Ô7Ð7Ý‘Z”ZˆFØŒJ×$Ò$ R°Ð$Ñ7Ô7Ð7Ø�OŠOØ8¸F¿OºOÑ<MÔ<MÐMñô ð ð 	�Š�h ¤
¤Ñ.Ô.Ð.åŒk˜(Ô#ˆð
 ”'ˆØ—'’'˜!‘*”*ˆØ—7’7‘9”9ˆð	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð" 	ÐÑÔÐð 	�ŠØðñ	
ô 	
ð 	
õ Œ_Ø(¨8Ñ3¸hð
ñ 
ô 
ð 	(ð 	(ð ŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ ÔØ(¨8Ñ3¸hð
ñ 
ô 
ð 	(ð 	(ð ŒJ×Ò Ñ'Ô'Ð'ð	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	ÐÑÔÐð
 	�ŠØðñ	
ô 	
ð 	
ð.	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð* 	Œ
×Ò˜FÑ#Ô#Ð#ØÐÑÔÐõ
 	Œ	�&ÑÔÐàŒ
×Ò˜FÑ#Ô#Ð#ØÐÑÔÐð
 ð 		-ØŒJ×$Ò$ S¨8¡^Ñ4Ô4Ð4Ý‘Z”ZˆFØŒJ×$Ò$ R°Ð$Ñ7Ô7Ð7Ø�OŠOÐ3°hÑ>À6Ç?Â?ÑCTÔCTÐTÑUÔUÐUð ŒJ×$Ò$Ð%<Ñ=Ô=Ð=Ð=àŒJ×'Ò'¨Ñ,Ô,Ð,à�ŠØðñ	
ô 	
ð 	
ð 	Œ
×Ò˜FÑ#Ô#Ð#ØŒ
×Ò˜FÑ#Ô#Ð#ØÐÑÔÐð
 ð 	,ØŒJ×$Ò$ XÑ.Ô.Ð.Ð.àŒJ×'Ò'¨Ñ+Ô+Ð+àŒ
×Ò˜FÑ#Ô#Ð#Ø×Ò˜œ Ñ$Ô$Ð$Ð$Ð$s6   ÃC*Ã*C.Ã1C.È$IÉIÉIÉ/JÊJÊJc                 ó2   — |                       d¬¦  «         d S )NT©rí   ©rî   r   s    r   Útest_smoketest_aimportz%TestAutoreload.test_smoketest_aimport­  s   € Ø×Ò¨$ÐÑ/Ô/Ð/Ð/Ð/r   c                 ó2   — |                       d¬¦  «         d S )NFrð   rñ   r   s    r   Útest_smoketest_autoreloadz(TestAutoreload.test_smoketest_autoreload°  s   € Ø×Ò¨%ÐÑ0Ô0Ð0Ð0Ð0r   N)T)r4   r5   r6   r‚   r‰   r‘   r	   r“   r¢   rº   r¿   rÇ   rî   rò   rô   r   r   r   rw   rw   —   sÛ   € € € € € ð(ð (ð (ð<"6ð "6ð "6ðH;;ð ;;ð ;;ðz ð(ð (ñ Ôð(ðBS3ð S3ð S3ðj-ð -ð -ð6:ð :ð :ð&)Ið )Ið )IðVD%ð D%ð D%ð D%ðL0ð 0ð 0ð1ð 1ð 1ð 1ð 1r   rw   )"rk   rT   ÚplatformÚpytestrB   r>   r]   rH   rP   r_   Úior   Údataclassesr   ÚIPython.testing.toolsÚtestingÚtoolsr   Úunittestr   ÚIPython.extensions.autoreloadr   ÚIPython.core.eventsr   r   ÚIPython.testing.decoratorsr	   Úpython_implementationÚskipr7   r   r;   ru   rw   r   r   r   ú<module>r     sÐ  ððð ð 
€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð à :Ð :Ð :Ð :Ð :Ð :Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7à!€8Ô!Ñ#Ô# vÒ-Ð-Ø€F„KØEØðñ ô ð ð Ð€ð-ð -ð -ð -ð -ñ -ô -ð -ð68 ð 8 ð 8 ð 8 ð 8 ˆhñ 8 ô 8 ð 8 ð@	ð 	ð 	ðZ1ð Z1ð Z1ð Z1ð Z1�Wñ Z1ô Z1ð Z1ð Z1ð Z1r   