##// END OF EJS Templates
Important changes to simplify traitlets....
Important changes to simplify traitlets. Some aspect of traitlets were a bit too magical for us. Thus, we have simplified certain things to make it more straitforward: * Default values are always validated, but now, this is done when the HasTraitlets.__new__ is called. We used to do this the first time __get__ was called. * The klass argument of Type and Instance traitlets must be a class. Unlike enthought.traits, we are no longer accepting class names as str or instances. * The args and kw arguments to Instance.__init__ are now handled in better manner, but that is quite different from enthought.traits. * More tests of edge cases.

File last commit:

r2056:93de9373
r2182:4cfda302
Show More
growl.py
49 lines | 1.1 KiB | text/x-python | PythonLexer
#!/usr/bin/env python
# encoding: utf-8
class IPythonGrowlError(Exception):
pass
class Notifier(object):
def __init__(self, app_name):
try:
import Growl
except ImportError:
self.g_notifier = None
else:
self.g_notifier = Growl.GrowlNotifier(app_name, ['kernel', 'core'])
self.g_notifier.register()
def _notify(self, title, msg):
if self.g_notifier is not None:
self.g_notifier.notify('kernel', title, msg)
def notify(self, title, msg):
self._notify(title, msg)
def notify_deferred(self, r, msg):
title = "Deferred Result"
msg = msg + '\n' + repr(r)
self._notify(title, msg)
return r
_notifier = None
def notify(title, msg):
pass
def notify_deferred(r, msg):
return r
def start(app_name):
global _notifier, notify, notify_deferred
if _notifier is not None:
raise IPythonGrowlError("this process is already registered with Growl")
else:
_notifier = Notifier(app_name)
notify = _notifier.notify
notify_deferred = _notifier.notify_deferred