Skip to content

Commit

Permalink
Move __repr__ to base figure, put arguments in format.
Browse files Browse the repository at this point in the history
  • Loading branch information
rmarren1 committed Dec 14, 2018
1 parent 75a285f commit eaef497
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 63 deletions.
55 changes: 17 additions & 38 deletions dash/development/_py_components_generation.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,67 +50,36 @@ def __init__(self, {default_argtext}):
self._prop_names = {list_of_valid_keys}
self._type = '{typename}'
self._namespace = '{namespace}'
self._valid_wildcard_attributes =\
{list_of_valid_wildcard_attr_prefixes}
self._valid_wildcard_attributes = {list_of_valid_wildcard_attr_prefixes}
self.available_events = {events}
self.available_properties = {list_of_valid_keys}
self.available_wildcard_properties =\
{list_of_valid_wildcard_attr_prefixes}
self.available_wildcard_properties = {list_of_valid_wildcard_attr_prefixes}
_explicit_args = kwargs.pop('_explicit_args')
_locals = locals()
_locals.update(kwargs) # For wildcard attrs
args = {{k: _locals[k] for k in _explicit_args if k != 'children'}}
for k in {required_args}:
for k in {required_props}:
if k not in args:
raise TypeError(
'Required argument `' + k + '` was not specified.')
super({typename}, self).__init__({argtext})
def __repr__(self):
if(any(getattr(self, c, None) is not None
for c in self._prop_names
if c is not self._prop_names[0])
or any(getattr(self, c, None) is not None
for c in self.__dict__.keys()
if any(c.startswith(wc_attr)
for wc_attr in self._valid_wildcard_attributes))):
props_string = ', '.join([c+'='+repr(getattr(self, c, None))
for c in self._prop_names
if getattr(self, c, None) is not None])
wilds_string = ', '.join([c+'='+repr(getattr(self, c, None))
for c in self.__dict__.keys()
if any([c.startswith(wc_attr)
for wc_attr in
self._valid_wildcard_attributes])])
return ('{typename}(' + props_string +
(', ' + wilds_string if wilds_string != '' else '') + ')')
else:
return (
'{typename}(' +
repr(getattr(self, self._prop_names[0], None)) + ')')
'''

filtered_props = reorder_props(filter_props(props))
# pylint: disable=unused-variable
list_of_valid_wildcard_attr_prefixes = repr(parse_wildcards(props))
# pylint: disable=unused-variable
wildcard_prefixes = repr(parse_wildcards(props))
list_of_valid_keys = repr(list(map(str, filtered_props.keys())))
# pylint: disable=unused-variable
docstring = create_docstring(
component_name=typename,
props=filtered_props,
events=parse_events(props),
description=description).replace('\r\n', '\n')

# pylint: disable=unused-variable
events = '[' + ', '.join(parse_events(props)) + ']'
prop_keys = list(props.keys())
if 'children' in props:
prop_keys.remove('children')
default_argtext = "children=None, "
# pylint: disable=unused-variable
argtext = 'children=children, **args'
else:
default_argtext = ""
Expand All @@ -122,11 +91,21 @@ def __repr__(self):
for p in prop_keys
if not p.endswith("-*") and
p not in kwlist and
p not in ['dashEvents', 'fireEvent', 'setProps']] + ['**kwargs']
p not in ['dashEvents', 'fireEvent', 'setProps']] + ["**kwargs"]
)

required_args = required_props(props)
return c.format(**locals())
return c.format(
typename=typename,
namespace=namespace,
filtered_props=filtered_props,
list_of_valid_wildcard_attr_prefixes=wildcard_prefixes,
list_of_valid_keys=list_of_valid_keys,
docstring=docstring,
events=events,
default_argtext=default_argtext,
argtext=argtext,
required_props=required_args
)


def generate_class_file(typename, props, description, namespace):
Expand Down
29 changes: 29 additions & 0 deletions dash/development/base_component.py
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,35 @@ def __len__(self):
length = 1
return length

def __repr__(self):
# pylint: disable=no-member
props_with_values = [
c for c in self._prop_names
if getattr(self, c, None) is not None
] + [
c for c in self.__dict__
if any(
c.startswith(wc_attr)
for wc_attr in self._valid_wildcard_attributes
)
]
if any(
p != 'children'
for p in props_with_values
):
props_string = ", ".join(
'{prop}={value}'.format(
prop=p,
value=repr(getattr(self, p))
) for p in props_with_values
)
else:
props_string = repr(getattr(self, 'children', None))
return "{type}({props_string})".format(
type=self._type,
props_string=props_string
)


def _explicitize_args(func):
# Python 2
Expand Down
27 changes: 2 additions & 25 deletions tests/development/metadata_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ def __init__(self, children=None, optionalArray=Component.UNDEFINED, optionalBoo
self._prop_names = ['children', 'optionalArray', 'optionalBool', 'optionalNumber', 'optionalObject', 'optionalString', 'optionalNode', 'optionalElement', 'optionalEnum', 'optionalUnion', 'optionalArrayOf', 'optionalObjectOf', 'optionalObjectWithShapeAndNestedDescription', 'optionalAny', 'customProp', 'customArrayProp', 'data-*', 'aria-*', 'in', 'id']
self._type = 'Table'
self._namespace = 'TableComponents'
self._valid_wildcard_attributes = ['data-', 'aria-']
self._valid_wildcard_attributes = ['data-', 'aria-']
self.available_events = ['restyle', 'relayout', 'click']
self.available_properties = ['children', 'optionalArray', 'optionalBool', 'optionalNumber', 'optionalObject', 'optionalString', 'optionalNode', 'optionalElement', 'optionalEnum', 'optionalUnion', 'optionalArrayOf', 'optionalObjectOf', 'optionalObjectWithShapeAndNestedDescription', 'optionalAny', 'customProp', 'customArrayProp', 'data-*', 'aria-*', 'in', 'id']
self.available_wildcard_properties = ['data-', 'aria-']
self.available_wildcard_properties = ['data-', 'aria-']

_explicit_args = kwargs.pop('_explicit_args')
_locals = locals()
Expand All @@ -58,26 +58,3 @@ def __init__(self, children=None, optionalArray=Component.UNDEFINED, optionalBoo
raise TypeError(
'Required argument `' + k + '` was not specified.')
super(Table, self).__init__(children=children, **args)

def __repr__(self):
if(any(getattr(self, c, None) is not None
for c in self._prop_names
if c is not self._prop_names[0])
or any(getattr(self, c, None) is not None
for c in self.__dict__.keys()
if any(c.startswith(wc_attr)
for wc_attr in self._valid_wildcard_attributes))):
props_string = ', '.join([c+'='+repr(getattr(self, c, None))
for c in self._prop_names
if getattr(self, c, None) is not None])
wilds_string = ', '.join([c+'='+repr(getattr(self, c, None))
for c in self.__dict__.keys()
if any([c.startswith(wc_attr)
for wc_attr in
self._valid_wildcard_attributes])])
return ('Table(' + props_string +
(', ' + wilds_string if wilds_string != '' else '') + ')')
else:
return (
'Table(' +
repr(getattr(self, self._prop_names[0], None)) + ')')

0 comments on commit eaef497

Please sign in to comment.