##// END OF EJS Templates
Experimental patch to keep Trio event loop alive between cells...
Experimental patch to keep Trio event loop alive between cells Run Trio in a background thread and use trio.from_thread.run() to schedule cells in that thread. This exports a nursery object named GLOBAL_NURSERY that client code can use to start background tasks without blocking the completion of the current cell. Co-authored-by: Brian Mackintosh <bcmackintosh@gmail.com>

File last commit:

r25227:390d0400
r25425:f724bc82
Show More
conftest.py
69 lines | 2.0 KiB | text/x-python | PythonLexer
Matthias Bussonnier
Also run test with Pytest....
r25117 import types
import sys
import builtins
import os
import pytest
import pathlib
import shutil
Srinivas Reddy Thatiparthy
Change absolute imports to relative imports to facilitate processes embedding kernel or debugger
r25227 from .testing import tools
Matthias Bussonnier
Also run test with Pytest....
r25117
def get_ipython():
Srinivas Reddy Thatiparthy
Change absolute imports to relative imports to facilitate processes embedding kernel or debugger
r25227 from .terminal.interactiveshell import TerminalInteractiveShell
Matthias Bussonnier
Also run test with Pytest....
r25117 if TerminalInteractiveShell._instance:
return TerminalInteractiveShell.instance()
config = tools.default_config()
config.TerminalInteractiveShell.simple_prompt = True
# Create and initialize our test-friendly IPython instance.
shell = TerminalInteractiveShell.instance(config=config)
return shell
@pytest.fixture(scope='session', autouse=True)
def work_path():
path = pathlib.Path("./tmp-ipython-pytest-profiledir")
os.environ["IPYTHONDIR"] = str(path.absolute())
if path.exists():
raise ValueError('IPython dir temporary path already exists ! Did previous test run exit successfully ?')
path.mkdir()
yield
shutil.rmtree(str(path.resolve()))
def nopage(strng, start=0, screen_lines=0, pager_cmd=None):
if isinstance(strng, dict):
strng = strng.get("text/plain", "")
print(strng)
def xsys(self, cmd):
"""Replace the default system call with a capturing one for doctest.
"""
# We use getoutput, but we need to strip it because pexpect captures
# the trailing newline differently from commands.getoutput
print(self.getoutput(cmd, split=False, depth=1).rstrip(), end="", file=sys.stdout)
sys.stdout.flush()
# for things to work correctly we would need this as a session fixture;
# unfortunately this will fail on some test that get executed as _collection_
# time (before the fixture run), in particular parametrized test that contain
# yields. so for now execute at import time.
#@pytest.fixture(autouse=True, scope='session')
def inject():
builtins.get_ipython = get_ipython
builtins._ip = get_ipython()
builtins.ip = get_ipython()
builtins.ip.system = types.MethodType(xsys, ip)
builtins.ip.builtin_trap.activate()
Srinivas Reddy Thatiparthy
Change absolute imports to relative imports to facilitate processes embedding kernel or debugger
r25227 from .core import page
Matthias Bussonnier
Also run test with Pytest....
r25117
page.pager_page = nopage
# yield
inject()