MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / __setitem__

Method __setitem__

tools/python-3.11.9-amd64/Lib/enum.py:367–466  ·  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

365 self._auto_called = False
366
367 def __setitem__(self, key, value):
368 """
369 Changes anything not dundered or not a descriptor.
370
371 If an enum member name is used twice, an error is raised; duplicate
372 values are not checked for.
373
374 Single underscore (sunder) names are reserved.
375 """
376 if _is_internal_class(self._cls_name, value):
377 import warnings
378 warnings.warn(
379 "In 3.13 classes created inside an enum will not become a member. "
380 "Use the `member` decorator to keep the current behavior.",
381 DeprecationWarning,
382 stacklevel=2,
383 )
384 if _is_private(self._cls_name, key):
385 # also do nothing, name will be a normal attribute
386 pass
387 elif _is_sunder(key):
388 if key not in (
389 '_order_',
390 '_generate_next_value_', '_numeric_repr_', '_missing_', '_ignore_',
391 '_iter_member_', '_iter_member_by_value_', '_iter_member_by_def_',
392 ):
393 raise ValueError(
394 '_sunder_ names, such as %r, are reserved for future Enum use'
395 % (key, )
396 )
397 if key == '_generate_next_value_':
398 # check if members already defined as auto()
399 if self._auto_called:
400 raise TypeError("_generate_next_value_ must be defined before members")
401 _gnv = value.__func__ if isinstance(value, staticmethod) else value
402 setattr(self, '_generate_next_value', _gnv)
403 elif key == '_ignore_':
404 if isinstance(value, str):
405 value = value.replace(',',' ').split()
406 else:
407 value = list(value)
408 self._ignore = value
409 already = set(value) & set(self._member_names)
410 if already:
411 raise ValueError(
412 '_ignore_ cannot specify already set names: %r'
413 % (already, )
414 )
415 elif _is_dunder(key):
416 if key == '__order__':
417 key = '_order_'
418 elif key in self._member_names:
419 # descriptor overwriting an enum?
420 raise TypeError('%r already defined as %r' % (key, self[key]))
421 elif key in self._ignore:
422 pass
423 elif isinstance(value, nonmember):
424 # unwrap value here; it won't be processed by the below `else`

Callers

nothing calls this directly

Calls 14

_is_internal_classFunction · 0.85
_is_privateFunction · 0.85
_is_sunderFunction · 0.85
listFunction · 0.85
_is_descriptorFunction · 0.85
tupleClass · 0.85
_is_dunderFunction · 0.70
anyFunction · 0.70
setFunction · 0.50
typeClass · 0.50
warnMethod · 0.45
splitMethod · 0.45

Tested by

no test coverage detected