Skip to content

Commit d9cdb27

Browse files
committed
Use a sentinel for missing __classcell__
1 parent efb9ad2 commit d9cdb27

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

Lib/collections/__init__.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,9 @@ def __ror__(self, other):
358358
except ImportError:
359359
_tuplegetter = lambda index, doc: property(_itemgetter(index), doc=doc)
360360

361-
def _namedtuple(typename, field_names, *, rename=False, defaults=None, module=None, classcell=None):
361+
_nmtuple_classcell_sentinel = object()
362+
363+
def _namedtuple(typename, field_names, *, rename=False, defaults=None, module=None, classcell=_nmtuple_classcell_sentinel):
362364
# Validate the field names. At the user's option, either generate an error
363365
# message or automatically replace the field name with a valid name.
364366
if isinstance(field_names, str):
@@ -486,7 +488,7 @@ def __getnewargs__(self):
486488
'__match_args__': field_names,
487489
}
488490

489-
if classcell is not None:
491+
if classcell is not _nmtuple_classcell_sentinel:
490492
class_namespace["__classcell__"] = classcell
491493

492494
for index, name in enumerate(field_names):

Lib/typing.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2929,7 +2929,7 @@ def __round__(self, ndigits: int = 0) -> T:
29292929
pass
29302930

29312931

2932-
def _make_nmtuple(name, fields, annotate_func, module, defaults = (), classcell=None):
2932+
def _make_nmtuple(name, fields, annotate_func, module, defaults = (), classcell=collections._nmtuple_classcell_sentinel):
29332933
nm_tpl = collections._namedtuple(name, fields, defaults=defaults,
29342934
module=module, classcell=classcell)
29352935
nm_tpl.__annotate__ = nm_tpl.__new__.__annotate__ = annotate_func
@@ -3000,7 +3000,7 @@ def annotate(format):
30003000
f"{', '.join(default_names)}")
30013001
nm_tpl = _make_nmtuple(typename, field_names, annotate,
30023002
defaults=[ns[n] for n in default_names], module=ns['__module__'],
3003-
classcell=ns.pop('__classcell__', None))
3003+
classcell=ns.pop('__classcell__', collections._nmtuple_classcell_sentinel))
30043004
nm_tpl.__bases__ = bases
30053005
if Generic in bases:
30063006
class_getitem = _generic_class_getitem

0 commit comments

Comments
 (0)