MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / __setitem__

Function __setitem__

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

Source from the content-addressed store, hash-verified

1160 return insert
1161
1162 def __setitem__(fn):
1163 def __setitem__(self, index, value):
1164 if not isinstance(index, slice):
1165 existing = self[index]
1166 if existing is not None:
1167 __del(self, existing, None, index)
1168 value = __set(self, value, None, index)
1169 fn(self, index, value)
1170 else:
1171 # slice assignment requires __delitem__, insert, __len__
1172 step = index.step or 1
1173 start = index.start or 0
1174 if start < 0:
1175 start += len(self)
1176 if index.stop is not None:
1177 stop = index.stop
1178 else:
1179 stop = len(self)
1180 if stop < 0:
1181 stop += len(self)
1182
1183 if step == 1:
1184 if value is self:
1185 return
1186 for i in range(start, stop, step):
1187 if len(self) > start:
1188 del self[start]
1189
1190 for i, item in enumerate(value):
1191 self.insert(i + start, item)
1192 else:
1193 rng = list(range(start, stop, step))
1194 if len(value) != len(rng):
1195 raise ValueError(
1196 "attempt to assign sequence of size %s to "
1197 "extended slice of size %s"
1198 % (len(value), len(rng))
1199 )
1200 for i, item in zip(rng, value):
1201 self.__setitem__(i, item)
1202
1203 _tidy(__setitem__)
1204 return __setitem__
1205
1206 def __delitem__(fn):
1207 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