"""

    webencodings.mklabels
    ~~~~~~~~~~~~~~~~~~~~~

    Regenarate the webencodings.labels module.

    :copyright: Copyright 2012 by Simon Sapin
    :license: BSD, see LICENSE for details.

"""

import json

try:
    from urllib import urlopen
except ImportError:
    from urllib.request import urlopen


def assert_lower(string):
    assert string == string.lower()
    return string


def generate(url):
    parts = [
        '''\
"""

    webencodings.labels
    ~~~~~~~~~~~~~~~~~~~

    Map encoding labels to their name.

    :copyright: Copyright 2012 by Simon Sapin
    :license: BSD, see LICENSE for details.

"""

# XXX Do not edit!
# This file is automatically generated by mklabels.py

LABELS = {
'''
    ]
    labels = [
        (repr(assert_lower(label)).lstrip("u"), repr(encoding["name"]).lstrip("u"))
        for category in json.loads(urlopen(url).read().decode("ascii"))
        for encoding in category["encodings"]
        for label in encoding["labels"]
    ]
    max_len = max(len(label) for label, name in labels)
    parts.extend(
        "    %s:%s %s,\n" % (label, " " * (max_len - len(label)), name)
        for label, name in labels
    )
    parts.append("}")
    return "".join(parts)


if __name__ == "__main__":
    print(generate("http://encoding.spec.whatwg.org/encodings.json"))
