# coding: utf-8 from __future__ import absolute_import from __future__ import division from __future__ import print_function from __future__ import unicode_literals import sys from functools import partial from . import cli from . import cookies from . import exceptions from . import get from . import models from . import post from . import runner from . import transforms from . import utils from . import version from .exceptions import AocdError from .exceptions import PuzzleUnsolvedError from .get import get_data from .get import get_day_and_year from .post import submit from .utils import AOC_TZ from .version import __version__ __all__ = [ "cli", "cookies", "exceptions", "get", "models", "post", "runner", "utils", "version", "data", "get_data", "submit", "transforms", "__version__", "AocdError", "PuzzleUnsolvedError", "AOC_TZ", ] __all__ += transforms.__all__ # Add declaration for magic attribute `data` to make it discoverable by static analysis tools. data = "" class Aocd(object): _module = sys.modules[__name__] def __dir__(self): return __all__ def __getattr__(self, name): if name == "data": day, year = get_day_and_year() return get_data(day=day, year=year) if name == "submit": try: day, year = get_day_and_year() except AocdError: return submit else: return partial(submit, day=day, year=year) if name in transforms.__all__: transform = getattr(transforms, name) return transform(self.data) if name in dir(self): return globals()[name] raise AttributeError(name) sys.modules[__name__] = Aocd() if sys.platform == "win32": import colorama colorama.init(autoreset=True)