MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / __setitem__

Function __setitem__

lib/sqlalchemy/orm/collections.py:1110–1152  ·  view source on GitHub ↗
(fn)

Source from the content-addressed store, hash-verified

1108 return insert
1109
1110 def __setitem__(fn):
1111 def __setitem__(self, index, value):
1112 if not isinstance(index, slice):
1113 existing = self[index]
1114 if existing is not None:
1115 __del(self, existing, None, index)
1116 value = __set(self, value, None, index)
1117 fn(self, index, value)
1118 else:
1119 # slice assignment requires __delitem__, insert, __len__
1120 step = index.step or 1
1121 start = index.start or 0
1122 if start < 0:
1123 start += len(self)
1124 if index.stop is not None:
1125 stop = index.stop
1126 else:
1127 stop = len(self)
1128 if stop < 0:
1129 stop += len(self)
1130
1131 if step == 1:
1132 if value is self:
1133 return
1134 for i in range(start, stop, step):
1135 if len(self) > start:
1136 del self[start]
1137
1138 for i, item in enumerate(value):
1139 self.insert(i + start, item)
1140 else:
1141 rng = list(range(start, stop, step))
1142 if len(value) != len(rng):
1143 raise ValueError(
1144 "attempt to assign sequence of size %s to "
1145 "extended slice of size %s"
1146 % (len(value), len(rng))
1147 )
1148 for i, item in zip(rng, value):
1149 self.__setitem__(i, item)
1150
1151 _tidy(__setitem__)
1152 return __setitem__
1153
1154 def __delitem__(fn):
1155 def __delitem__(self, index):

Callers

nothing calls this directly

Calls 5

__delFunction · 0.85
__setFunction · 0.85
_tidyFunction · 0.85
insertMethod · 0.45
__setitem__Method · 0.45

Tested by

no test coverage detected