ipython / ipython/traitlets

changing default value of containers to None

Abierto
#455 5 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
653
Forks
217
Merge medio
2 d 21 h
PR fusionados (30 d)
2

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.