| Server IP : 217.160.0.135 / Your IP : 216.73.217.85 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1074145052 ( 1074145052) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/lib/python3/dist-packages/IPython/extensions/__pycache__/ |
Upload File : |
�
�@�cL � �n � d Z dZddlZddlZddlZddlZddlZddlZddlm Z m
Z
ddlmZ G d� d� � Z
g d�Zd � Zd
� Zd� Zd� Zd
� Zd� efd� efd� efgZe� d� d� fg� � d� Z G d� d� � Zg d�Zdd�Ze
ddfd�ZddlmZmZmZ e G d� de� � � � Zd� Z dS )aY
IPython extension to reload modules before executing user code.
``autoreload`` reloads modules automatically before entering the execution of
code typed at the IPython prompt.
This makes for example the following workflow possible:
.. sourcecode:: ipython
In [1]: %load_ext autoreload
In [2]: %autoreload 2
In [3]: from foo import some_function
In [4]: some_function()
Out[4]: 42
In [5]: # open foo.py in an editor and change some_function to return 43
In [6]: some_function()
Out[6]: 43
The module was reloaded without reloading it explicitly, and the object
imported with ``from foo import ...`` was also updated.
Usage
=====
The following magic commands are provided:
``%autoreload``
Reload all modules (except those excluded by ``%aimport``)
automatically now.
``%autoreload 0``
Disable automatic reloading.
``%autoreload 1``
Reload all modules imported with ``%aimport`` every time before
executing the Python code typed.
``%autoreload 2``
Reload all modules (except those excluded by ``%aimport``) every
time before executing the Python code typed.
``%autoreload 3``
Reload all modules AND autoload newly added objects
every time before executing the Python code typed.
``%aimport``
List modules which are to be automatically imported or not to be imported.
``%aimport foo``
Import module 'foo' and mark it to be autoreloaded for ``%autoreload 1``
``%aimport foo, bar``
Import modules 'foo', 'bar' and mark them to be autoreloaded for ``%autoreload 1``
``%aimport -foo``
Mark module 'foo' to not be autoreloaded.
Caveats
=======
Reloading Python modules in a reliable way is in general difficult,
and unexpected things may occur. ``%autoreload`` tries to work around
common pitfalls by replacing function code objects and parts of
classes previously in the module with new versions. This makes the
following things to work:
- Functions and classes imported via 'from xxx import foo' are upgraded
to new versions when 'xxx' is reloaded.
- Methods and properties of classes are upgraded on reload, so that
calling 'c.foo()' on an object 'c' created before the reload causes
the new code for 'foo' to be executed.
Some of the known remaining caveats are:
- Replacing code objects does not always succeed: changing a @property
in a class to an ordinary method or a method to a member variable
can cause problems (but in old objects only).
- Functions that are removed (eg. via monkey-patching) from a module
before it is reloaded are not upgraded.
- C extension modules cannot be reloaded, and so cannot be autoreloaded.
T� N)�
import_module�reload)�source_from_cachec �H � e Zd ZdZ dZ dZ d
d�Zd� Zd� Zd� Z d� Z
dd �ZdS )�ModuleReloaderFTNc � � i | _ i | _ i | _ i | _ i | _ || _ | � dd�� � d S )NTF)� check_all� do_reload)�failed�modules�skip_modules�old_objects�modules_mtimes�shell�check)�selfr s �?/usr/lib/python3/dist-packages/IPython/extensions/autoreload.py�__init__zModuleReloader.__init__� sM � ������������� �����
�
�
�
�T�U�
�3�3�3�3�3� c �N � | j |= n# t $ r Y nw xY wd| j |<