ipython / ipython/traitlets

changing default value of containers to None

Ouverte
#455 5 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Python
Étoiles
653
Forks
217
Merge moyen
2 j 21 h
PR mergées (30 j)
2

Description

Hi,

I wanted to create my own trait types, so all have the same `default_value`, e.g. `None`, and call `tag` automatically, but I'm having problems with `default_value` for containers. I will use `List` as an example, I'm defining a new class:

```
class List(traitlets.List):
allow_none = True
default_value = None
info_text = "a list with default_value = None"

def __init__(self, trait=None, default_value=None, minlen=0, maxlen=sys.maxsize, kw=None,
read_only=None, help=None, config=None, **kwargs):
super(List, self).__init__(trait=trait, default_value=default_value, minlen=0, maxlen=maxlen,
kw=kw, read_only=read_only, help=help, config=config)
self.tag(**kwargs)
```

and I'd like my new class to pass those test:

```
def test_list_default_1():
class HasTr(traitlets.HasTraits):
foo = List()
ht = HasTr()
assert ht.foo is None

def test_list_default_2():
class HasTr(traitlets.HasTraits):
foo = List(default_value=[1])
ht = HasTr()
assert ht.foo == [1]
```

I'm passing the first test, but not the second (in both cases `ht.foo is None`). From quick reading of your code, it looks like the method `make_dynamic_default` is not called when I define my `List` class with class attribute `default_value = None`. Is this on purpose? Do you have any other suggestions how I can write my class (for all traits) that I'm able to pass both tests?

**system Info**
{'commit_hash': 'd86648c5d',
'commit_source': 'installation',
'default_encoding': 'UTF-8',
'ipython_path': '/Users/dorota/anaconda/envs/py35_trlets/lib/python3.5/site-packages/IPython',
'ipython_version': '6.1.0',
'os_name': 'posix',
'platform': 'Darwin-16.1.0-x86_64-i386-64bit',
'sys_executable': '/Users/dorota/anaconda/envs/py35_trlets/bin/python',
'sys_platform': 'darwin',
'sys_version': '3.5.3 | packaged by conda-forge | (default, May 12 2017, '
'15:35:12) \n'
'[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)]'}

I'm using the current master.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.