Skip to content

Commit

Permalink
Don't infer the default value type when it's clear from context (#1531)
Browse files Browse the repository at this point in the history
* Don't infer the default value type when it's clear from context

* Also apply to ReadOnly
  • Loading branch information
mdickinson authored Sep 20, 2021
1 parent 64c6254 commit bc46f0f
Showing 1 changed file with 64 additions and 2 deletions.
66 changes: 64 additions & 2 deletions traits/trait_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,9 @@ class BaseInt(TraitType):
#: The function to use for evaluating strings to this type:
evaluate = int

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = 0

Expand Down Expand Up @@ -296,6 +299,9 @@ class BaseFloat(TraitType):
#: The function to use for evaluating strings to this type:
evaluate = float

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = 0.0

Expand Down Expand Up @@ -340,6 +346,9 @@ class BaseComplex(TraitType):
#: The function to use for evaluating strings to this type:
evaluate = complex

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = 0.0 + 0.0j

Expand Down Expand Up @@ -380,6 +389,9 @@ class BaseStr(TraitType):
""" A trait type whose value must be a string.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = ""

Expand Down Expand Up @@ -436,6 +448,9 @@ class BaseBytes(TraitType):
""" A trait type whose value must be a bytestring.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = b""

Expand Down Expand Up @@ -483,6 +498,9 @@ class BaseBool(TraitType):
#: The function to use for evaluating strings to this type:
evaluate = bool

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = False

Expand Down Expand Up @@ -694,6 +712,9 @@ class String(TraitType):
A Python regular expression that the string must match.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(
self, value="", minlen=0, maxlen=sys.maxsize, regex="", **metadata
):
Expand Down Expand Up @@ -871,6 +892,9 @@ class BaseCallable(TraitType):
#: The standard metadata for the trait:
metadata = {"copy": "ref"}

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = None

Expand Down Expand Up @@ -920,6 +944,9 @@ class This(BaseType):
""" A trait type whose value must be an instance of the defining class.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The C-level fast validator to use:
fast_validate = (ValidateTrait.self_type,)

Expand Down Expand Up @@ -1052,6 +1079,9 @@ class Python(TraitType):
#: The standard metadata for the trait:
metadata = {"type": "python"}

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = Undefined

Expand All @@ -1072,6 +1102,9 @@ class ReadOnly(TraitType):
# Defines the CTrait type to use for this trait:
ctrait_type = TraitKind.read_only

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = Undefined

Expand Down Expand Up @@ -1345,6 +1378,9 @@ class Expression(TraitType):
the trait.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

#: The default value for the trait:
default_value = "0"

Expand Down Expand Up @@ -1686,6 +1722,9 @@ class BaseRange(TraitType):
Indicates whether the high end of the range is exclusive.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(
self,
low=None,
Expand Down Expand Up @@ -2081,6 +2120,9 @@ class BaseEnum(TraitType):
None.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(self, *args, values=None, **metadata):
self.name = values

Expand Down Expand Up @@ -2338,6 +2380,9 @@ class BaseTuple(TraitType):
element.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(self, *types, **metadata):
if len(types) == 0:
self.init_fast_validate(ValidateTrait.coerce, tuple, None, list)
Expand Down Expand Up @@ -2372,7 +2417,6 @@ def __init__(self, *types, **metadata):
dvt == DefaultValue.constant for dvt in child_default_types
)
if constant_default:
self.default_value_type = DefaultValue.constant
default_value = tuple(child_defaults)
else:
self.default_value_type = DefaultValue.callable
Expand Down Expand Up @@ -3104,6 +3148,9 @@ class Map(TraitType):
trait attribute.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

is_mapped = True

def __init__(self, map, **metadata):
Expand Down Expand Up @@ -3188,6 +3235,10 @@ class PrefixMap(TraitType):
trait attribute, and whose corresponding values are the values for
the shadow trait attribute.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

is_mapped = True

def __init__(self, map, **metadata):
Expand Down Expand Up @@ -4071,6 +4122,9 @@ class Union(TraitType):
first trait will be used.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(self, *traits, **metadata):
self.list_ctrait_instances = []

Expand Down Expand Up @@ -4103,7 +4157,6 @@ def __init__(self, *traits, **metadata):
self.list_ctrait_instances[0].default_value())

if first_default_value_type == DefaultValue.constant:
self.default_value_type = DefaultValue.constant
default_value = first_default_value
else:
self.default_value_type = DefaultValue.callable
Expand Down Expand Up @@ -4405,6 +4458,9 @@ class Date(TraitType):
Additional metadata.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(
self,
default_value=None,
Expand Down Expand Up @@ -4503,6 +4559,9 @@ class Datetime(TraitType):
Additional metadata.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(
self,
default_value=None,
Expand Down Expand Up @@ -4577,6 +4636,9 @@ class Time(TraitType):
Additional metadata.
"""

#: The default value type to use.
default_value_type = DefaultValue.constant

def __init__(
self,
default_value=None,
Expand Down

0 comments on commit bc46f0f

Please sign in to comment.