Xqt created this task.
Xqt added a project: Pywikibot.
Restricted Application added subscribers: pywikibot-bugs-list, Aklapper.
TASK DESCRIPTION
Family.__new__() constructor has Python 2 code which should removed after
that version has been dropped
def __new__(cls):
"""Allocator."""
# any Family class defined in this file are abstract
if cls in globals().values():
raise TypeError(
'Abstract Family class {0} cannot be instantiated; '
'subclass it instead'.format(cls.__name__))
# Override classproperty
cls.instance = super().__new__(cls)
# staticmethod is because python 2.7 binds the lambda to the class
cls.__new__ = staticmethod(lambda cls: cls.instance) # shortcut
# don't use hasattr() here. consider only the class itself
if '__init__' in cls.__dict__:
# Initializer deprecated. Families should be immutable and any
# instance / class modification should go to allocator (__new__).
# The function is read from __dict__ because deprecated expect a
# function and python 2.7 binds the method to the class.
cls.__init__ = deprecated(cls.__dict__['__init__'])
# Invoke initializer immediately and make initializer no-op.
# This is to avoid repeated initializer invocation on repeated
# invocations of the metaclass's __call__.
cls.instance.__init__()
cls.__init__ = lambda self: None # no-op
return cls.instance
TASK DETAIL
https://phabricator.wikimedia.org/T265817
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: Xqt
Cc: Aklapper, zhuyifei1999, Xqt, pywikibot-bugs-list, JohnsonLee01, SHEKH,
Dijkstra, Khutuck, Zkhalido, Viztor, Wenyi, Tbscho, MayS, Mdupont, JJMC89,
Dvorapa, Altostratus, Avicennasis, mys_721tx, jayvdb, Masti, Alchimista, Rxy
_______________________________________________
pywikibot-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-bugs