def __getattr__(self, name): """this allows us to get a value with val = instance.field_name""" if name in self.required_properties: return self.__dict__[name] # get the attribute from the correct instance model_instances = self._var_name_to_model_instances.get( name, self._additional_properties_model_instances) path_to_item = [] if self._path_to_item: path_to_item.extend(self._path_to_item) path_to_item.append(name) if model_instances: values = set() for model_instance in model_instances: if name in model_instance._data_store: values.add(model_instance._data_store[name]) if len(values) == 1: return list(values)[0] raise ApiValueError( "Values stored for property {0} in {1} difffer when looking " "at self and self's composed instances. All values must be " "the same".format(name, type(self).__name__), path_to_item) raise ApiKeyError( "{0} has no key '{1}'".format(type(self).__name__, name), path_to_item)
def __setattr__(self, name, value): """this allows us to set a value with instance.field_name = val""" if name in self.required_properties: self.__dict__[name] = value return # set the attribute on the correct instance model_instances = self._var_name_to_model_instances.get( name, self._additional_properties_model_instances) if model_instances: for model_instance in model_instances: if model_instance == self: self.set_attribute(name, value) else: setattr(model_instance, name, value) if name not in self._var_name_to_model_instances: # we assigned an additional property self.__dict__['_var_name_to_model_instances'][name] = ( model_instance) return None path_to_item = [] if self._path_to_item: path_to_item.extend(self._path_to_item) path_to_item.append(name) raise ApiKeyError( "{0} has no key '{1}'".format(type(self).__name__, name), path_to_item)
def __get_item(self, name): if name in self._data_store: return self._data_store[name] path_to_item = [] if self._path_to_item: path_to_item.extend(self._path_to_item) path_to_item.append(name) raise ApiKeyError( "{0} has no key '{1}'".format(type(self).__name__, name), [name])
def __getattr__(self, name): """this allows us to get a value with val = instance.field_name""" if name in self.required_properties: return self.__dict__[name] if name in self.__dict__['_data_store']: return self.__dict__['_data_store'][name] path_to_item = [] if self._path_to_item: path_to_item.extend(self._path_to_item) path_to_item.append(name) raise ApiKeyError( "{0} has no key '{1}'".format(type(self).__name__, name), [name])
def set_attribute(self, name, value): # this is only used to set properties on self path_to_item = [] if self._path_to_item: path_to_item.extend(self._path_to_item) path_to_item.append(name) openapi_types = self.openapi_types() if name in openapi_types: required_types_mixed = openapi_types[name] elif self.additional_properties_type is None: raise ApiKeyError( "{0} has no key '{1}'".format(type(self).__name__, name), path_to_item ) elif self.additional_properties_type is not None: required_types_mixed = self.additional_properties_type if get_simple_class(name) != str: error_msg = type_error_message( var_name=name, var_value=name, valid_classes=(str,), key_type=True ) raise ApiTypeError( error_msg, path_to_item=path_to_item, valid_classes=(str,), key_type=True ) if self._check_type: value = validate_and_convert_types( value, required_types_mixed, path_to_item, self._from_server, self._check_type, configuration=self._configuration) if (name,) in self.allowed_values: check_allowed_values( self.allowed_values, (name,), value ) if (name,) in self.validations: check_validations( self.validations, (name,), value ) self.__dict__['_data_store'][name] = value