#!/usr/bin/env python3
from __future__ import annotations

import __future__
import collections
import os.path
import sys


def main() -> int:
    assert sys.version_info >= (3, 10), 'need python3.10'

    by_version = collections.defaultdict(list)

    for k, v in vars(__future__).items():
        if k == 'barry_as_FLUFL' or not hasattr(v, 'mandatory'):
            continue

        if v.mandatory is None:
            continue
        elif v.mandatory[1] == 0:
            version = (v.mandatory[0],)
        else:
            version = v.mandatory[:2]

        by_version[version].append(k)

    print(f'# GENERATED VIA {os.path.basename(sys.argv[0])}')
    for version, names in sorted(by_version.items()):
        if len(names) == 1:
            s = f'from __future__ import {names[0]}'
            print(f'REMOVALS[{version}].add({s!r})')
        else:
            print(f'REMOVALS[{version}].update((')
            for name in names:
                print(f"    'from __future__ import {name}',")
            print('))')
    print('# END GENERATED')

    return 0


if __name__ == '__main__':
    raise SystemExit(main())
