Here are the examples of the python api sys._exc_info taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
14 Examples
3
Example 1
Project: headphones Source File: _cperror.py
def __init__(self, status=500, message=None):
self.status = status
try:
self.code, self.reason, defaultmsg = _httputil.valid_status(status)
except ValueError:
raise self.__class__(500, _exc_info()[1].args[0])
if self.code < 400 or self.code > 599:
raise ValueError("status must be between 400 and 599.")
# See http://www.python.org/dev/peps/pep-0352/
# self.message = message
self._message = message or defaultmsg
CherryPyException.__init__(self, status, message)
3
Example 2
def format_exc(exc=None):
"""Return exc (or sys.exc_info if None), formatted."""
try:
if exc is None:
exc = _exc_info()
if exc == (None, None, None):
return ""
import traceback
return "".join(traceback.format_exception(*exc))
finally:
del exc
3
Example 3
def format_exc(exc=None):
"""Return exc (or sys.exc_info if None), formatted."""
if exc is None:
exc = _exc_info()
if exc == (None, None, None):
return ""
import traceback
return "".join(traceback.format_exception(*exc))
3
Example 4
Project: HTPC-Manager Source File: _cperror.py
def __init__(self, status=500, message=None):
self.status = status
try:
self.code, self.reason, defaultmsg = _httputil.valid_status(status)
except ValueError:
raise self.__class__(500, _exc_info()[1].args[0])
if self.code < 400 or self.code > 599:
raise ValueError("status must be between 400 and 599.")
# See http://www.python.org/dev/peps/pep-0352/
# self.message = message
self._message = message or defaultmsg
CherryPyException.__init__(self, status, message)
3
Example 5
Project: fwlite Source File: hub.py
def _start(self):
try:
greenlet = self.greenlet_class(self.handle)
greenlet.switch()
except:
self.hub.handle_error(None, *sys._exc_info())
0
Example 6
Project: headphones Source File: _cperror.py
def get_error_page(status, **kwargs):
"""Return an HTML page, containing a pretty error response.
status should be an int or a str.
kwargs will be interpolated into the page template.
"""
import cherrypy
try:
code, reason, message = _httputil.valid_status(status)
except ValueError:
raise cherrypy.HTTPError(500, _exc_info()[1].args[0])
# We can't use setdefault here, because some
# callers send None for kwarg values.
if kwargs.get('status') is None:
kwargs['status'] = "%s %s" % (code, reason)
if kwargs.get('message') is None:
kwargs['message'] = message
if kwargs.get('traceback') is None:
kwargs['traceback'] = ''
if kwargs.get('version') is None:
kwargs['version'] = cherrypy.__version__
for k, v in iteritems(kwargs):
if v is None:
kwargs[k] = ""
else:
kwargs[k] = _escape(kwargs[k])
# Use a custom template or callable for the error page?
pages = cherrypy.serving.request.error_page
error_page = pages.get(code) or pages.get('default')
# Default template, can be overridden below.
template = _HTTPErrorTemplate
if error_page:
try:
if hasattr(error_page, '__call__'):
# The caller function may be setting headers manually,
# so we delegate to it completely. We may be returning
# an iterator as well as a string here.
#
# We *must* make sure any content is not unicode.
result = error_page(**kwargs)
if cherrypy.lib.is_iterator(result):
from cherrypy.lib.encoding import UTF8StreamEncoder
return UTF8StreamEncoder(result)
elif isinstance(result, cherrypy._cpcompat.unicodestr):
return result.encode('utf-8')
else:
if not isinstance(result, cherrypy._cpcompat.bytestr):
raise ValueError('error page function did not '
'return a bytestring, unicodestring or an '
'iterator - returned object of type %s.'
% (type(result).__name__))
return result
else:
# Load the template from this path.
template = tonative(open(error_page, 'rb').read())
except:
e = _format_exception(*_exc_info())[-1]
m = kwargs['message']
if m:
m += "<br />"
m += "In addition, the custom error page failed:\n<br />%s" % e
kwargs['message'] = m
response = cherrypy.serving.response
response.headers['Content-Type'] = "text/html;charset=utf-8"
result = template % kwargs
return result.encode('utf-8')
0
Example 7
Project: NOT_UPDATED_Sick-Beard-Dutch Source File: _cperror.py
def get_error_page(status, **kwargs):
"""Return an HTML page, containing a pretty error response.
status should be an int or a str.
kwargs will be interpolated into the page template.
"""
import cherrypy
try:
code, reason, message = _httputil.valid_status(status)
except ValueError, x:
raise cherrypy.HTTPError(500, x.args[0])
# We can't use setdefault here, because some
# callers send None for kwarg values.
if kwargs.get('status') is None:
kwargs['status'] = "%s %s" % (code, reason)
if kwargs.get('message') is None:
kwargs['message'] = message
if kwargs.get('traceback') is None:
kwargs['traceback'] = ''
if kwargs.get('version') is None:
kwargs['version'] = cherrypy.__version__
for k, v in kwargs.iteritems():
if v is None:
kwargs[k] = ""
else:
kwargs[k] = _escape(kwargs[k])
# Use a custom template or callable for the error page?
pages = cherrypy.serving.request.error_page
error_page = pages.get(code) or pages.get('default')
if error_page:
try:
if callable(error_page):
return error_page(**kwargs)
else:
return open(error_page, 'rb').read() % kwargs
except:
e = _format_exception(*_exc_info())[-1]
m = kwargs['message']
if m:
m += "<br />"
m += "In addition, the custom error page failed:\n<br />%s" % e
kwargs['message'] = m
return _HTTPErrorTemplate % kwargs
0
Example 8
Project: HTPC-Manager Source File: _cperror.py
def get_error_page(status, **kwargs):
"""Return an HTML page, containing a pretty error response.
status should be an int or a str.
kwargs will be interpolated into the page template.
"""
import cherrypy
try:
code, reason, message = _httputil.valid_status(status)
except ValueError:
raise cherrypy.HTTPError(500, _exc_info()[1].args[0])
# We can't use setdefault here, because some
# callers send None for kwarg values.
if kwargs.get('status') is None:
kwargs['status'] = "%s %s" % (code, reason)
if kwargs.get('message') is None:
kwargs['message'] = message
if kwargs.get('traceback') is None:
kwargs['traceback'] = ''
if kwargs.get('version') is None:
kwargs['version'] = cherrypy.__version__
for k, v in iteritems(kwargs):
if v is None:
kwargs[k] = ""
else:
kwargs[k] = _escape(kwargs[k])
# Use a custom template or callable for the error page?
pages = cherrypy.serving.request.error_page
error_page = pages.get(code) or pages.get('default')
if error_page:
try:
if hasattr(error_page, '__call__'):
return error_page(**kwargs)
else:
data = open(error_page, 'rb').read()
return tonative(data) % kwargs
except:
e = _format_exception(*_exc_info())[-1]
m = kwargs['message']
if m:
m += "<br />"
m += "In addition, the custom error page failed:\n<br />%s" % e
kwargs['message'] = m
return _HTTPErrorTemplate % kwargs
0
Example 9
Project: GoAtThrottleUp Source File: _cperror.py
def get_error_page(status, **kwargs):
"""Return an HTML page, containing a pretty error response.
status should be an int or a str.
kwargs will be interpolated into the page template.
"""
import cherrypy
try:
code, reason, message = _httputil.valid_status(status)
except ValueError:
raise cherrypy.HTTPError(500, _exc_info()[1].args[0])
# We can't use setdefault here, because some
# callers send None for kwarg values.
if kwargs.get('status') is None:
kwargs['status'] = "%s %s" % (code, reason)
if kwargs.get('message') is None:
kwargs['message'] = message
if kwargs.get('traceback') is None:
kwargs['traceback'] = ''
if kwargs.get('version') is None:
kwargs['version'] = cherrypy.__version__
for k, v in iteritems(kwargs):
if v is None:
kwargs[k] = ""
else:
kwargs[k] = _escape(kwargs[k])
# Use a custom template or callable for the error page?
pages = cherrypy.serving.request.error_page
error_page = pages.get(code) or pages.get('default')
if error_page:
try:
if hasattr(error_page, '__call__'):
return error_page(**kwargs)
else:
data = open(error_page, 'rb').read()
return tonative(data) % kwargs
except:
e = _format_exception(*_exc_info())[-1]
m = kwargs['message']
if m:
m += "<br />"
m += "In addition, the custom error page failed:\n<br />%s" % e
kwargs['message'] = m
return _HTTPErrorTemplate % kwargs
0
Example 10
Project: circuits Source File: manager.py
def _dispatcher(self, event, channels, remaining): # noqa
# XXX: C901: This has a high McCabe complexity score of 22.
# TODO: Refactor this method.
if event.cancelled:
return
if event.complete:
if not getattr(event, "cause", None):
event.cause = event
event.effects = 1 # event itself counts (must be done)
eargs = event.args
ekwargs = event.kwargs
if self._cache_needs_refresh:
# Don't call self._cache.clear() from other threads,
# this may interfere with cache rebuild.
self._cache.clear()
self._cache_needs_refresh = False
try: # try/except is fastest if successful in most cases
event_handlers = self._cache[(event.name, channels)]
except KeyError:
h = (self.getHandlers(event, channel) for channel in channels)
event_handlers = sorted(
chain(*h),
key=attrgetter("priority"),
reverse=True
)
if isinstance(event, generate_events):
from .helpers import FallBackGenerator
event_handlers.append(FallBackGenerator()._on_generate_events)
elif isinstance(event, exception) and len(event_handlers) == 0:
from .helpers import FallBackExceptionHandler
event_handlers.append(FallBackExceptionHandler()._on_exception)
elif isinstance(event, signal) and len(event_handlers) == 0:
from .helpers import FallBackSignalHandler
event_handlers.append(FallBackSignalHandler()._on_signal)
self._cache[(event.name, channels)] = event_handlers
if isinstance(event, generate_events):
with self._lock:
self._currently_handling = event
if remaining > 0 or len(self._queue) or not self._running:
event.reduce_time_left(0)
elif self._tasks:
event.reduce_time_left(TIMEOUT)
# From now on, firing an event will reduce time left
# to 0, which prevents event handlers from waiting (or wakes
# them up with resume if they should be waiting already)
else:
self._currently_handling = event
value = None
err = None
for event_handler in event_handlers:
event.handler = event_handler
try:
if event_handler.event:
value = event_handler(event, *eargs, **ekwargs)
else:
value = event_handler(*eargs, **ekwargs)
except KeyboardInterrupt:
self.stop()
except SystemExit as e:
self.stop(e.code)
except:
value = err = _exc_info()
event.value.errors = True
if event.failure:
self.fire(
event.child("failure", event, err),
*event.channels
)
self.fire(exception(*err, handler=event_handler, fevent=event))
if value is not None:
if isinstance(value, GeneratorType):
event.waitingHandlers += 1
event.value.promise = True
self.registerTask((event, value, None))
else:
event.value.value = value
# it is kind of a temporal hack to allow processing
# of tasks, added in one of event handlers here
if isinstance(event, generate_events) and self._tasks:
event.reduce_time_left(TIMEOUT)
if event.stopped:
break # Stop further event processing
self._currently_handling = None
self._eventDone(event, err)
0
Example 11
def processTask(self, event, task, parent=None): # noqa
# XXX: C901: This has a high McCabe complexity score of 16.
# TODO: Refactor this method.
value = None
try:
value = next(task)
if isinstance(value, CallValue):
# Done here, next() will StopIteration anyway
self.unregisterTask((event, task, parent))
# We are in a callEvent
value = parent.send(value.value)
if isinstance(value, GeneratorType):
# We loose a yield but we gain one,
# we don't need to change
# event.waitingHandlers
# The below code is delegated to handlers
# in the waitEvent generator
# self.registerTask((event, value, parent))
task_state = next(value)
task_state.task_event = event
task_state.task = value
task_state.parent = parent
else:
event.waitingHandlers -= 1
if value is not None:
event.value.value = value
self.registerTask((event, parent, None))
elif isinstance(value, GeneratorType):
event.waitingHandlers += 1
self.unregisterTask((event, task, None))
# First yielded value is always the task state
task_state = next(value)
task_state.task_event = event
task_state.task = value
task_state.parent = task
# The below code is delegated to handlers
# in the waitEvent generator
# self.registerTask((event, value, task))
# XXX: ^^^ Why is this commented out anyway?
elif isinstance(value, ExceptionWrapper):
self.unregisterTask((event, task, parent))
if parent:
value = parent.throw(value.extract())
if value is not None:
value_generator = (val for val in (value,))
self.registerTask((event, value_generator, parent))
else:
raise value.extract()
elif isinstance(value, Sleep):
if value is not task:
value.task = (event, task, parent)
self.registerTask((event, value, parent))
self.unregisterTask((event, task, parent))
elif value is not None:
event.value.value = value
except StopIteration:
event.waitingHandlers -= 1
self.unregisterTask((event, task, parent))
if parent:
self.registerTask((event, parent, None))
elif hasattr(task, "task"):
# XXX: The subtask is considered a "waiting handler"
event.waitingHandlers += 1
self.registerTask(task.task)
elif event.waitingHandlers == 0:
event.value.inform(True)
self._eventDone(event)
except KeyboardInterrupt:
self.stop()
except SystemExit as e:
self.stop(e.code)
except:
self.unregisterTask((event, task, parent))
err = _exc_info()
event.value.value = err
event.value.errors = True
event.value.inform(True)
if event.failure:
self.fire(event.child("failure", event, err), *event.channels)
self.fire(exception(*err, handler=None, fevent=event))
0
Example 12
Project: circuits Source File: wsgi.py
@handler("request", priority=0.2)
def _on_request(self, event, req, res):
if not self.apps:
return
parts = req.path.split("/")
candidates = []
for i in range(len(parts)):
k = "/".join(parts[:(i + 1)]) or "/"
if k in self.apps:
candidates.append((k, self.apps[k]))
candidates = sorted(candidates, key=itemgetter(0), reverse=True)
if not candidates:
return
path, app = candidates[0]
buffer = StringIO()
def start_response(status, headers, exc_info=None):
res.status = int(status.split(" ", 1)[0])
for header in headers:
res.headers.add_header(*header)
return buffer.write
errors = self.errors[path]
environ = create_environ(errors, path, req)
try:
body = app(environ, start_response)
if isinstance(body, list):
body = "".join(body)
elif isinstance(body, GeneratorType):
res.body = body
res.stream = True
return res
if not body:
if not buffer.tell():
return empty
else:
buffer.seek(0)
return buffer
else:
return body
except Exception as error:
etype, evalue, etraceback = _exc_info()
error = (etype, evalue, format_tb(etraceback))
return httperror(req, res, 500, error=error)
finally:
event.stop()
0
Example 13
Project: cylc Source File: _cperror.py
def get_error_page(status, **kwargs):
"""Return an HTML page, containing a pretty error response.
status should be an int or a str.
kwargs will be interpolated into the page template.
"""
import cherrypy
try:
code, reason, message = _httputil.valid_status(status)
except ValueError:
raise cherrypy.HTTPError(500, _exc_info()[1].args[0])
# We can't use setdefault here, because some
# callers send None for kwarg values.
if kwargs.get('status') is None:
kwargs['status'] = "%s %s" % (code, reason)
if kwargs.get('message') is None:
kwargs['message'] = message
if kwargs.get('traceback') is None:
kwargs['traceback'] = ''
if kwargs.get('version') is None:
kwargs['version'] = cherrypy.__version__
for k, v in iteritems(kwargs):
if v is None:
kwargs[k] = ""
else:
kwargs[k] = _escape(kwargs[k])
# Use a custom template or callable for the error page?
pages = cherrypy.serving.request.error_page
error_page = pages.get(code) or pages.get('default')
# Default template, can be overridden below.
template = _HTTPErrorTemplate
if error_page:
try:
if hasattr(error_page, '__call__'):
# The caller function may be setting headers manually,
# so we delegate to it completely. We may be returning
# an iterator as well as a string here.
#
# We *must* make sure any content is not unicode.
result = error_page(**kwargs)
if cherrypy.lib.is_iterator(result):
from cherrypy.lib.encoding import UTF8StreamEncoder
return UTF8StreamEncoder(result)
elif isinstance(result, _unicode_type):
return result.encode('utf-8')
else:
if not isinstance(result, bytes):
raise ValueError('error page function did not '
'return a bytestring, unicode type or an '
'iterator - returned object of type %s.'
% (type(result).__name__))
return result
else:
# Load the template from this path.
template = tonative(open(error_page, 'rb').read())
except:
e = _format_exception(*_exc_info())[-1]
m = kwargs['message']
if m:
m += "<br />"
m += "In addition, the custom error page failed:\n<br />%s" % e
kwargs['message'] = m
response = cherrypy.serving.response
response.headers['Content-Type'] = "text/html;charset=utf-8"
result = template % kwargs
return result.encode('utf-8')
0
Example 14
Project: LazyLibrarian Source File: _cperror.py
def get_error_page(status, **kwargs):
"""Return an HTML page, containing a pretty error response.
status should be an int or a str.
kwargs will be interpolated into the page template.
"""
import cherrypy
try:
code, reason, message = _httputil.valid_status(status)
except ValueError, x:
raise cherrypy.HTTPError(500, x.args[0])
# We can't use setdefault here, because some
# callers send None for kwarg values.
if kwargs.get('status') is None:
kwargs['status'] = "%s %s" % (code, reason)
if kwargs.get('message') is None:
kwargs['message'] = message
if kwargs.get('traceback') is None:
kwargs['traceback'] = ''
if kwargs.get('version') is None:
kwargs['version'] = cherrypy.__version__
for k, v in iteritems(kwargs):
if v is None:
kwargs[k] = ""
else:
kwargs[k] = _escape(kwargs[k])
# Use a custom template or callable for the error page?
pages = cherrypy.serving.request.error_page
error_page = pages.get(code) or pages.get('default')
if error_page:
try:
if hasattr(error_page, '__call__'):
return error_page(**kwargs)
else:
return open(error_page, 'rb').read() % kwargs
except:
e = _format_exception(*_exc_info())[-1]
m = kwargs['message']
if m:
m += "<br />"
m += "In addition, the custom error page failed:\n<br />%s" % e
kwargs['message'] = m
return _HTTPErrorTemplate % kwargs