##// END OF EJS Templates
Reduce the number of test on Appveyor....
Reduce the number of test on Appveyor. Appveyor is way slower than Travis, in part because we test on more architecture. In particular 32 and 64 bits. And accumulate delay sometime leading to 30 min between travis success and AppVeyor response. 32 Bits OSes are starting to be rare (or not our target, like tablets). Less that 1/5 market share is some survey, and account for more than 2/3 of our testing time. So slash 3 out of 4 testing on 32 bits. Test only python 3.6 32 bits. (I know that's paradoxal are mostly old system are 32 bits... but do we expect people with old system and old python to use new IPython ?) For example: Windows Arch Share Windows 10 64 bit 36.97% Windows 7 64 bit 32.99% Windows 8.1 64 bit 12.93% Windows 8 64 bit 1.64% Windows Vista 64 bit 0.13% Windows 7 32 bit 6.97% Windows XP 32 bit 2.00% Windows 10 32 bit 1.31% Windows 8.1 32 bit 0.34% Windows Vista 32 bit 0.24% Windows 8 32 bit 0.15% Total about 83ish % of 64 bits. Source: http://www.digitaltrends.com/computing/steam-users-windows-10-market-share/ and http://store.steampowered.com/hwsurvey?platform=pc

File last commit:

r23129:81d5575c
r23236:a8f84d57
Show More
builtin_trap.py
86 lines | 2.9 KiB | text/x-python | PythonLexer
"""
A context manager for managing things injected into :mod:`builtins`.
"""
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
import builtins as builtin_mod
from traitlets.config.configurable import Configurable
from traitlets import Instance
class __BuiltinUndefined(object): pass
BuiltinUndefined = __BuiltinUndefined()
class __HideBuiltin(object): pass
HideBuiltin = __HideBuiltin()
class BuiltinTrap(Configurable):
shell = Instance('IPython.core.interactiveshell.InteractiveShellABC',
allow_none=True)
def __init__(self, shell=None):
super(BuiltinTrap, self).__init__(shell=shell, config=None)
self._orig_builtins = {}
# We define this to track if a single BuiltinTrap is nested.
# Only turn off the trap when the outermost call to __exit__ is made.
self._nested_level = 0
self.shell = shell
# builtins we always add - if set to HideBuiltin, they will just
# be removed instead of being replaced by something else
self.auto_builtins = {'exit': HideBuiltin,
'quit': HideBuiltin,
'get_ipython': self.shell.get_ipython,
}
def __enter__(self):
if self._nested_level == 0:
self.activate()
self._nested_level += 1
# I return self, so callers can use add_builtin in a with clause.
return self
def __exit__(self, type, value, traceback):
if self._nested_level == 1:
self.deactivate()
self._nested_level -= 1
# Returning False will cause exceptions to propagate
return False
def add_builtin(self, key, value):
"""Add a builtin and save the original."""
bdict = builtin_mod.__dict__
orig = bdict.get(key, BuiltinUndefined)
if value is HideBuiltin:
if orig is not BuiltinUndefined: #same as 'key in bdict'
self._orig_builtins[key] = orig
del bdict[key]
else:
self._orig_builtins[key] = orig
bdict[key] = value
def remove_builtin(self, key, orig):
"""Remove an added builtin and re-set the original."""
if orig is BuiltinUndefined:
del builtin_mod.__dict__[key]
else:
builtin_mod.__dict__[key] = orig
def activate(self):
"""Store ipython references in the __builtin__ namespace."""
add_builtin = self.add_builtin
for name, func in self.auto_builtins.items():
add_builtin(name, func)
def deactivate(self):
"""Remove any builtins which might have been added by add_builtins, or
restore overwritten ones to their previous values."""
remove_builtin = self.remove_builtin
for key, val in self._orig_builtins.items():
remove_builtin(key, val)
self._orig_builtins.clear()
self._builtins_added = False