def test_ignored(self): with TestModule() as m: self.assertFalse(m.loaded) with demandimport.enabled(): with demandimport.ignored(m.name): lm = __import__(m.name, locals={'foo': 'bar'}) self.assertTrue(m.loaded)
def test_disabled_context(self): self.assertFalse(demandimport.is_enabled) with demandimport.enabled(): self.assertTrue(demandimport.is_enabled) with demandimport.disabled(): self.assertFalse(demandimport.is_enabled) self.assertTrue(demandimport.is_enabled) self.assertFalse(demandimport.is_enabled)
def test_simple(self): with TestModule() as m: self.assertFalse(m.loaded) with demandimport.enabled(): lm = __import__(m.name, locals={'foo': 'bar'}) self.assertFalse(m.loaded) self.assertEqual(lm.name, m.name) self.assertTrue(m.loaded)
def test_issue2(self): with TestModule() as m: with demandimport.enabled(): os.mkdir(os.path.join(m.path, 'a')) with open(os.path.join(m.path, 'a', '__init__.py'), 'w') as f: pass with open(os.path.join(m.path, 'a', 'b.py'), 'w') as f: pass __import__(m.name+'.a.b', locals={'foo': 'bar'}).a.b.__name__
def test_issue1(self): with TestModule() as m: with demandimport.enabled(): with open(os.path.join(m.path, 'a.py'), 'w') as f: f.write(textwrap.dedent(""" import {0}.b {0}.b.__name__ """).format(m.name)) with open(os.path.join(m.path, 'b.py'), 'w') as f: pass __import__(m.name+'.a', locals={'foo': 'bar'}).a.__name__
def test_issue3(self): if sys.version_info[0] >= 3: return with TestModule() as m: with demandimport.enabled(): os.mkdir(os.path.join(m.path, 'a')) with open(os.path.join(m.path, 'a', '__init__.py'), 'w') as f: pass with open(os.path.join(m.path, 'a', 'b.py'), 'w') as f: pass with open(os.path.join(m.path, 'a', 'c.py'), 'w') as f: f.write("from b import *") __import__(m.name+'.a.c', locals={'foo': 'bar'}).a.c.__name__
def test_is_proxy_and_loaded(self): with TestModule() as m: lm = __import__(m.name) self.assertFalse(demandimport.is_proxy(lm)) self.assertTrue(m.loaded) self.assertTrue(demandimport.is_loaded(lm)) with TestModule() as m: with demandimport.enabled(): lm = __import__(m.name, locals={'foo': 'bar'}) self.assertTrue(demandimport.is_proxy(lm)) self.assertFalse(demandimport.is_loaded(lm)) self.assertFalse(m.loaded) self.assertEqual(lm.name, m.name) self.assertTrue(demandimport.is_loaded(lm)) self.assertTrue(m.loaded) self.assertTrue(demandimport.is_proxy(lm))
def test_issue3_hook(self): with TestModule() as m: with open(os.path.join(m.path, '__init__.py'), 'a') as f: f.write(import_hook) os.mkdir(os.path.join(m.path, 'lib')) open(os.path.join(m.path, 'lib', '__init__.py'), 'w').close() open(os.path.join(m.path, 'lib', 'b.py'), 'w').close() with open(os.path.join(m.path, 'lib', 'c.py'), 'w') as f: f.write("import {}.b".format(m.name)) __import__(m.name).__name__ with demandimport.enabled(): __import__(m.name+'.c', locals={'foo': 'bar'}, level=0).c.__name__ __import__(m.name+'.lib.c', locals={'foo': 'bar'}, level=0).lib.c.__name__
def test_issue3_hook(self): with TestModule() as m: with open(os.path.join(m.path, '__init__.py'), 'a') as f: f.write(import_hook) os.mkdir(os.path.join(m.path, 'lib')) open(os.path.join(m.path, 'lib', '__init__.py'), 'w').close() open(os.path.join(m.path, 'lib', 'b.py'), 'w').close() with open(os.path.join(m.path, 'lib', 'c.py'), 'w') as f: f.write("import {}.b".format(m.name)) __import__(m.name).__name__ with demandimport.enabled(): __import__(m.name + '.c', locals={ 'foo': 'bar' }, level=0).c.__name__ __import__(m.name + '.lib.c', locals={ 'foo': 'bar' }, level=0).lib.c.__name__
import os import string import struct import zlib import perun.utils.timestamps as timestamps import perun.utils.log as perun_log import perun.utils.helpers as helpers from perun.utils.helpers import IndexEntry, LINE_PARSING_REGEX from perun.utils.structs import PerformanceChange, DegradationInfo from perun.utils.exceptions import EntryNotFoundException, NotPerunRepositoryException, \ MalformedIndexFileException import demandimport with demandimport.enabled(): import hashlib __author__ = 'Tomas Fiedor' INDEX_TAG_REGEX = re.compile(r"^(\d+)@i$") INDEX_TAG_RANGE_REGEX = re.compile(r"^(\d+)@i-(\d+)@i$") PENDING_TAG_REGEX = re.compile(r"^(\d+)@p$") PENDING_TAG_RANGE_REGEX = re.compile(r"^(\d+)@p-(\d+)@p$") def touch_file(touched_filename, times=None): """ Corresponding implementation of touch inside python. Courtesy of:
def test_ignoring__import__(self): with TestModule() as m: self.assertFalse(m.loaded) with demandimport.enabled(): __import__(m.name) self.assertTrue(m.loaded)
def test_ignoring_star(self): with TestModule() as m: self.assertFalse(m.loaded) with demandimport.enabled(): __import__(m.name, locals={'foo': 'bar'}, fromlist=('*',)) self.assertTrue(m.loaded)
def test_ignoring_star(self): with TestModule() as m: self.assertFalse(m.loaded) with demandimport.enabled(): __import__(m.name, locals={'foo': 'bar'}, fromlist=('*', )) self.assertTrue(m.loaded)