def __setattr__(self, name, value): if name in ['_id', '_proxy']: return object.__setattr__(self, name, value) command = SetAttributeCommand(self._id, Capsule.wrap(name), Capsule.wrap(value)) response = command.push(self._proxy) return response.interpret(self._proxy)
def __getattr__(self, name): command = GetAttributeCommand(self._id, Capsule.wrap(name)) response = command.push(self._proxy) return response.interpret(self._proxy)
def __setitem__(self, key, value): command = SetItemCommand(self._id, Capsule.wrap(key), Capsule.wrap(value)) response = command.push(self._proxy) return response.interpret(self._proxy)
def __getitem__(self, key): command = GetItemCommand(self._id, Capsule.wrap(key)) response = command.push(self._proxy) return response.interpret(self._proxy)
def __call__(self, *args, **kwargs): command = ExecuteCommand(self._id, Capsule.wrap(args), Capsule.wrap(kwargs)) response = command.push(self._proxy) return response.interpret(self._proxy)
def __add__(self, other): command = OperatorCommand(self._id, "addition", Capsule.wrap((other,))) response = command.push(self._proxy) return response.interpret(self._proxy)
def next(self): command = OperatorCommand(self._id, "next", Capsule.wrap(())) response = command.push(self._proxy) return response.interpret(self._proxy)
def __len__(self): command = OperatorCommand(self._id, "length", Capsule.wrap(())) response = command.push(self._proxy) return response.interpret(self._proxy)
def store(self, obj): command = StoreCommand(Capsule.wrap(obj)) response = command.push(self) return response.interpret(self)
def __eq__(self, other): command = OperatorCommand(self._id, Capsule.wrap(other), 'equals') response = command.push(self._proxy) return response.interpret(self._proxy)
def execute(self, actual): try: obj = actual.access(self._id) except KeyError as ex: return AccessErrorResponse(ex) return EvaluationResponse(Capsule.wrap(obj), self._variant)