MCPcopy Index your code
hub / github.com/RustPython/RustPython / __setitem__

Method __setitem__

Lib/enum.py:342–442  ·  view source on GitHub ↗

Changes anything not dundered or not a descriptor. If an enum member name is used twice, an error is raised; duplicate values are not checked for. Single underscore (sunder) names are reserved.

(self, key, value)

Source from the content-addressed store, hash-verified

340 self._cls_name = cls_name
341
342 def __setitem__(self, key, value):
343 """
344 Changes anything not dundered or not a descriptor.
345
346 If an enum member name is used twice, an error is raised; duplicate
347 values are not checked for.
348
349 Single underscore (sunder) names are reserved.
350 """
351 if self._cls_name is not None and _is_private(self._cls_name, key):
352 # do nothing, name will be a normal attribute
353 pass
354 elif _is_sunder(key):
355 if key not in (
356 '_order_',
357 '_generate_next_value_', '_numeric_repr_', '_missing_', '_ignore_',
358 '_iter_member_', '_iter_member_by_value_', '_iter_member_by_def_',
359 '_add_alias_', '_add_value_alias_',
360 # While not in use internally, those are common for pretty
361 # printing and thus excluded from Enum's reservation of
362 # _sunder_ names
363 ) and not key.startswith('_repr_'):
364 raise ValueError(
365 '_sunder_ names, such as %r, are reserved for future Enum use'
366 % (key, )
367 )
368 if key == '_generate_next_value_':
369 # check if members already defined as auto()
370 if self._auto_called:
371 raise TypeError("_generate_next_value_ must be defined before members")
372 _gnv = value.__func__ if isinstance(value, staticmethod) else value
373 setattr(self, '_generate_next_value', _gnv)
374 elif key == '_ignore_':
375 if isinstance(value, str):
376 value = value.replace(',',' ').split()
377 else:
378 value = list(value)
379 self._ignore = value
380 already = set(value) & set(self._member_names)
381 if already:
382 raise ValueError(
383 '_ignore_ cannot specify already set names: %r'
384 % (already, )
385 )
386 elif _is_dunder(key):
387 if key == '__order__':
388 key = '_order_'
389 elif key in self._member_names:
390 # descriptor overwriting an enum?
391 raise TypeError('%r already defined as %r' % (key, self[key]))
392 elif key in self._ignore:
393 pass
394 elif isinstance(value, nonmember):
395 # unwrap value here; it won't be processed by the below `else`
396 value = value.value
397 elif _is_descriptor(value):
398 pass
399 elif self._cls_name is not None and _is_internal_class(self._cls_name, value):

Callers

nothing calls this directly

Calls 15

_is_privateFunction · 0.85
_is_sunderFunction · 0.85
isinstanceFunction · 0.85
setattrFunction · 0.85
listClass · 0.85
setFunction · 0.85
_is_descriptorFunction · 0.85
_is_internal_classFunction · 0.85
lenFunction · 0.85
superClass · 0.85
_is_dunderFunction · 0.70
anyFunction · 0.70

Tested by

no test coverage detected