Spaces:
Sleeping
Sleeping
| class _AttributeHolder(object): | |
| """Abstract base class that provides __repr__. | |
| The __repr__ method returns a string in the format:: | |
| ClassName(attr=name, attr=name, ...) | |
| The attributes are determined either by a class-level attribute, | |
| '_kwarg_names', or by inspecting the instance __dict__. | |
| """ | |
| def __repr__(self): | |
| type_name = type(self).__name__ | |
| arg_strings = [] | |
| star_args = {} | |
| for arg in self._get_args(): | |
| arg_strings.append(repr(arg)) | |
| for name, value in self._get_kwargs(): | |
| if name.isidentifier(): | |
| arg_strings.append('%s=%r' % (name, value)) | |
| else: | |
| star_args[name] = value | |
| if star_args: | |
| arg_strings.append('**%s' % repr(star_args)) | |
| return '%s(%s)' % (type_name, ', '.join(arg_strings)) | |
| def _get_kwargs(self): | |
| return list(self.__dict__.items()) | |
| def _get_args(self): | |
| return [] | |
| class Namespace(_AttributeHolder): | |
| """Simple object for storing attributes. | |
| Implements equality by attribute names and values, and provides a simple | |
| string representation. | |
| """ | |
| def __init__(self, **kwargs): | |
| for name in kwargs: | |
| setattr(self, name, kwargs[name]) | |
| def __eq__(self, other): | |
| if not isinstance(other, Namespace): | |
| return NotImplemented | |
| return vars(self) == vars(other) | |
| def __contains__(self, key): | |
| return key in self.__dict__ | |