Skip to content

Commit

Permalink
Merge pull request #40 from takluyver/nonodefaultspecified
Browse files Browse the repository at this point in the history
Make NoDefaultSpecified an alias for Undefined
  • Loading branch information
minrk committed Jun 18, 2015
2 parents 2b8b540 + 8261449 commit f0fc237
Showing 1 changed file with 15 additions and 16 deletions.
31 changes: 15 additions & 16 deletions traitlets/traitlets.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,14 @@
#-----------------------------------------------------------------------------


NoDefaultSpecified = Sentinel('NoDefaultSpecified', 'traitlets',
Undefined = Sentinel('Undefined', 'traitlets',
'''
Used in Traitlets to specify that no defaults are set in kwargs
'''
)


class Undefined ( object ): pass
Undefined = Undefined()
# Deprecated alias
NoDefaultSpecified = Undefined

class TraitError(Exception):
pass
Expand Down Expand Up @@ -333,7 +332,7 @@ class TraitType(BaseDescriptor):
allow_none = False
info_text = 'any value'

def __init__(self, default_value=NoDefaultSpecified, allow_none=None, **metadata):
def __init__(self, default_value=Undefined, allow_none=None, **metadata):
"""Declare a traitlet.
If *allow_none* is True, None is a valid value in addition to any
Expand All @@ -344,7 +343,7 @@ def __init__(self, default_value=NoDefaultSpecified, allow_none=None, **metadata
arguments (``**metadata``). For instance, the config system uses 'config'
and 'help' keywords.
"""
if default_value is not NoDefaultSpecified:
if default_value is not Undefined:
self.default_value = default_value
if allow_none is not None:
self.allow_none = allow_none
Expand Down Expand Up @@ -903,7 +902,7 @@ def error(self, obj, value):
class Type(ClassBasedTraitType):
"""A trait whose value must be a subclass of a specified class."""

def __init__ (self, default_value=NoDefaultSpecified, klass=None, **metadata):
def __init__ (self, default_value=Undefined, klass=None, **metadata):
"""Construct a Type trait
A Type trait specifies that its values must be subclasses of
Expand All @@ -927,13 +926,13 @@ def __init__ (self, default_value=NoDefaultSpecified, klass=None, **metadata):
allow_none : bool [ default False ]
Indicates whether None is allowed as an assignable value.
"""
if default_value is NoDefaultSpecified:
if default_value is Undefined:
new_default_value = object if (klass is None) else klass
else:
new_default_value = default_value

if klass is None:
if (default_value is None) or (default_value is NoDefaultSpecified):
if (default_value is None) or (default_value is Undefined):
klass = object
else:
klass = default_value
Expand Down Expand Up @@ -1185,7 +1184,7 @@ class Int(TraitType):
default_value = 0
info_text = 'an int'

def __init__(self, default_value=NoDefaultSpecified,
def __init__(self, default_value=Undefined,
allow_none=None, **kwargs):
self.min = kwargs.pop('min', None)
self.max = kwargs.pop('max', None)
Expand Down Expand Up @@ -1273,7 +1272,7 @@ class Float(TraitType):
default_value = 0.0
info_text = 'a float'

def __init__(self, default_value=NoDefaultSpecified,
def __init__(self, default_value=Undefined,
allow_none=None, **kwargs):
self.min = kwargs.pop('min', -float('inf'))
self.max = kwargs.pop('max', float('inf'))
Expand Down Expand Up @@ -1441,9 +1440,9 @@ def validate(self, obj, value):
class Enum(TraitType):
"""An enum whose value must be in a given sequence."""

def __init__(self, values, default_value=NoDefaultSpecified, **metadata):
def __init__(self, values, default_value=Undefined, **metadata):
self.values = values
if metadata.get('allow_none', False) and default_value is NoDefaultSpecified:
if metadata.get('allow_none', False) and default_value is Undefined:
default_value = None
super(Enum, self).__init__(default_value, **metadata)

Expand Down Expand Up @@ -1758,7 +1757,7 @@ class Dict(Instance):
"""An instance of a Python dict."""
_trait = None

def __init__(self, trait=None, traits=None, default_value=NoDefaultSpecified,
def __init__(self, trait=None, traits=None, default_value=Undefined,
**metadata):
"""Create a dict trait type from a dict.
Expand All @@ -1779,13 +1778,13 @@ def __init__(self, trait=None, traits=None, default_value=NoDefaultSpecified,
`default_value` must conform to the constraints it specifies.
"""
# Handling positional arguments
if default_value is NoDefaultSpecified and trait is not None:
if default_value is Undefined and trait is not None:
if not is_trait(trait):
default_value = trait
trait = None

# Handling default value
if default_value is NoDefaultSpecified:
if default_value is Undefined:
default_value = {}
if default_value is None:
args = None
Expand Down

0 comments on commit f0fc237

Please sign in to comment.