◐ Shell
clean mode source ↗

gh-104719: Restore Tokenize module constants by mgmacias95 · Pull Request #104722 · python/cpython

I was wondering if you could do something like this:

_deprecated_objects = {
    "group": lambda *choices: '(' + '|'.join(choices) + ')',
    "any": lambda *choices: group(*choices) + '*',
    "maybe": lambda *choices: group(*choices) + '?',
    "Whitespace": r'[ \f\t]*',
    # etc.
}

And then at the end of the file have:

def __getattr__(name):
    if name in _deprecated_objects:
        import warnings
        warnings._deprecated(
            f"tokenize.{name}",
            message=(
                "{name} is untested, undocumented, and deprecated. "
                "It will be removed in Python {remove}."
            ),
            remove=(3, 14)
        )
        obj = globals()[name] = _deprecated_objects[name]
        return obj
    raise AttributeError(f"module 'tokenize' has no attribute '{name}'")

But I will defer to you and @pablogsal as to whether that's a good idea or not.