##// END OF EJS Templates
Test of simpler way to define ast macros. (#14100)...
Test of simpler way to define ast macros. (#14100) Provide and easier way to generate magics and pre-post hooks This introduce a code base way of modifying the ast. This allow to use Template strings with the two special variable names names `__code__` and `__ret__` allowing to quickly write a magic, or hooks that modify the ast. This also introduce a `%code_wrap` cell magic to on the fly wrap code. It is this easy to for example modify IPython to say time each block of code, or retry them, or wrap them in try/except and analyse the error message, profile... Note that this is not new, but simply convenience function and utilities, especially around hygiene.

File last commit:

r27548:6d40fd89 merge
r28324:c3d7f161 merge
Show More
test_deepreload.py
57 lines | 1.8 KiB | text/x-python | PythonLexer
/ IPython / lib / tests / test_deepreload.py
Bradley M. Froehle
Reformat test to a standard style.
r6534 # -*- coding: utf-8 -*-
Bradley M. Froehle
Add deepreload unit test....
r6533 """Test suite for the deepreload module."""
Thomas Kluyver
numpy no longer seems amenable to deep reloading...
r22971 # Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
Bradley M. Froehle
Reformat test to a standard style.
r6534
Nikita Kniazev
Port `deepreload` to `importlib`...
r27044 import types
dswij
use pathlib on test_deepreload
r26042 from pathlib import Path
Bradley M. Froehle
Add deepreload functionality test.
r6535
Matthias Bussonnier
MAINT: cleanup imports of tempdir....
r27509 import pytest
from tempfile import TemporaryDirectory
from IPython.lib.deepreload import modules_reloading
from IPython.lib.deepreload import reload as dreload
Bradley M. Froehle
Clean up sys.path entry.
r6541 from IPython.utils.syspathcontext import prepended_to_syspath
Bradley M. Froehle
Add deepreload unit test....
r6533
dswij
run black
r26043
Bradley M. Froehle
Add deepreload functionality test.
r6535 def test_deepreload():
"Test that dreload does deep reloads and skips excluded modules."
with TemporaryDirectory() as tmpdir:
Bradley M. Froehle
Clean up sys.path entry.
r6541 with prepended_to_syspath(tmpdir):
dswij
use pathlib on test_deepreload
r26042 tmpdirpath = Path(tmpdir)
gousaiyang
Format code
r27495 with open(tmpdirpath / "A.py", "w", encoding="utf-8") as f:
Nikita Kniazev
Port `deepreload` to `importlib`...
r27044 f.write("class Object:\n pass\nok = True\n")
gousaiyang
Format code
r27495 with open(tmpdirpath / "B.py", "w", encoding="utf-8") as f:
Nikita Kniazev
Port `deepreload` to `importlib`...
r27044 f.write("import A\nassert A.ok, 'we are fine'\n")
Bradley M. Froehle
Clean up sys.path entry.
r6541 import A
import B
# Test that A is not reloaded.
obj = A.Object()
dswij
run black
r26043 dreload(B, exclude=["A"])
Samuel Gaist
[lib][tests][deepreload] Remove nose
r26913 assert isinstance(obj, A.Object) is True
Bradley M. Froehle
Clean up sys.path entry.
r6541
Nikita Kniazev
Port `deepreload` to `importlib`...
r27044 # Test that an import failure will not blow-up us.
A.ok = False
with pytest.raises(AssertionError, match="we are fine"):
dreload(B, exclude=["A"])
assert len(modules_reloading) == 0
assert not A.ok
Bradley M. Froehle
Clean up sys.path entry.
r6541 # Test that A is reloaded.
obj = A.Object()
Nikita Kniazev
Port `deepreload` to `importlib`...
r27044 A.ok = False
Bradley M. Froehle
Clean up sys.path entry.
r6541 dreload(B)
Nikita Kniazev
Port `deepreload` to `importlib`...
r27044 assert A.ok
Samuel Gaist
[lib][tests][deepreload] Remove nose
r26913 assert isinstance(obj, A.Object) is False
Nikita Kniazev
Port `deepreload` to `importlib`...
r27044
def test_not_module():
pytest.raises(TypeError, dreload, "modulename")
def test_not_in_sys_modules():
fake_module = types.ModuleType("fake_module")
with pytest.raises(ImportError, match="not in sys.modules"):
dreload(fake_module)