MCPcopy Index your code
hub / github.com/python/cpython / __setitem__

Method __setitem__

Lib/enum.py:343–443  ·  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

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

Callers

nothing calls this directly

Calls 14

_is_privateFunction · 0.85
_is_sunderFunction · 0.85
listClass · 0.85
setFunction · 0.85
_is_descriptorFunction · 0.85
_is_internal_classFunction · 0.85
tFunction · 0.85
superClass · 0.85
_is_dunderFunction · 0.70
anyFunction · 0.70
startswithMethod · 0.45
splitMethod · 0.45

Tested by

no test coverage detected