@memoized
  def asset_class(self, asset_type_name):
    xmldata = self.server.get_meta_xml(asset_type_name)
    class_members = {
        '_v1_v1meta': self, 
        '_v1_asset_type_name': asset_type_name,
        }
    for operation in xmldata.findall('Operation'):
      opname = operation.get('name')
      def operation_func(myself, opname2=opname):
        myself._v1_execute_operation(opname2)
      class_members[opname] = operation_func

    for attribute in xmldata.findall('AttributeDefinition'):
      attr = attribute.get("name")
      if attribute.get('attributetype') == 'Relation':
        if attribute.get('ismultivalue') == 'True':
          def getter(self, attr=attr):
            return self._v1_getattr(attr)
          def setter(self, value, attr=attr):
            return self._v1_setattr(attr, list(value))
          def deleter(self, attr=attr):
            raise NotImplementedError
        else:
          def getter(self, attr=attr):
            v = self._v1_getattr(attr)
            if v:
              return self._v1_getattr(attr)[0]
            else:
              return NoneDeref()
          def setter(self, value, attr=attr):
            return self._v1_setattr(attr, value)
          def deleter(self, attr=attr):
            raise NotImplementedError
      else:
          def getter(self, attr=attr):
            return self._v1_getattr(attr)
          def setter(self, value, attr=attr):
            return self._v1_setattr(attr, value)
          def deleter(self, attr=attr):
            raise NotImplementedError
            
      class_members[attr] = property(getter, setter, deleter)
      
    bases = [BaseAsset,]
    # mix in any special methods
    if special_classes in asset_type_name:
      mixin = special_classes[asset_type_name]
      bases.append(mixin)
      
    new_asset_class = type(asset_type_name, tuple(bases), class_members)
    return new_asset_class
dataset/ETHPy150Open versionone/VersionOne.SDK.Python/v1pysdk/v1meta.py/V1Meta.asset_class/swapped operands of `in`