traitlets icon indicating copy to clipboard operation
traitlets copied to clipboard

Container default_values are None, other traits default values are Undefined.

Open Carreau opened this issue 8 years ago • 3 comments

Is that on purpose ?

Carreau avatar May 17 '16 01:05 Carreau

Specific trait types like List and Dict have [] and {} as default values. I am not sure we have much to put in the Container base class at all in fact.

SylvainCorlay avatar May 17 '16 02:05 SylvainCorlay

Specific trait types like List and Dict have [] and {} as default values. I am not sure we have much to put in the Container base class at all in fact.

That in the signature:

traitlets.DottedObjectName(default_value=traitlets.Undefined,...
traitlets.ObjectName(default_value=traitlets.Undefined...
traitlets.Bytes(default_value=traitlets.Undefined...
traitlets.Complex(default_value=traitlets.Undefined...
traitlets.Type(default_value=traitlets.Undefined,...
class traitlets.ForwardDeclaredType(default_value=traitlets.Undefined...

While all container have None:

traitlets.List(trait=None, default_value=None,...
traitlets.Set(trait=None, default_value=None...
...

Basically 18 Constructor have a signature which default_value is traitlets.Undefined, 4 have None. I think the 4 containers have None as default kwarg by mistake.

(Updated title to add underscore between default & values

Carreau avatar May 17 '16 04:05 Carreau

Yeah it is just that None seems to stand for unspecified parameter but the constructed default value is actually not None. (We used to have an Unspecified sentinel...) Indeed we should use Undefined.

SylvainCorlay avatar May 17 '16 18:05 SylvainCorlay