# Path: hac/util_common.py
# def with_metaclass(mcls):
#     def decorator(cls):
#         body = vars(cls).copy()
#         # Clean out class body.
#         body.pop('__dict__', None)
#         body.pop('__weakref__', None)
#         return mcls(cls.__name__, cls.__bases__, body)
#     return decorator


from abc import ABCMeta, abstractmethod
from hac.util_common import with_metaclass
import hac
# -*- coding: utf-8 -*-
"""Data-structures definitons for:
    - web-sites
    - contests
    - problems
"""



# -- Dynamic data (plugins) ---------------------------------------------------
class ISiteRegistry(ABCMeta):
    """Dynamic registry of sites (plugin architecture).
    """
    sites = []
    def __init__(cls, name, bases, attrs):
        if name != 'ISite':
            ISiteRegistry.sites.append(cls)



# Path: hac/util_common.py
# def with_metaclass(mcls):
#     def decorator(cls):
#         body = vars(cls).copy()
#         # Clean out class body.
#         body.pop('__dict__', None)
#         body.pop('__weakref__', None)
#         return mcls(cls.__name__, cls.__bases__, body)
#     return decorator


# Path: hac/data.py
from abc import ABCMeta, abstractmethod
from hac.util_common import with_metaclass
import hac

# -*- coding: utf-8 -*-
"""Data-structures definitons for:
    - web-sites
    - contests
    - problems
"""



# -- Dynamic data (plugins) ---------------------------------------------------
class ISiteRegistry(ABCMeta):
    """Dynamic registry of sites (plugin architecture).
    """
    sites = []
    def __init__(cls, name, bases, attrs):
        if name != 'ISite':
            ISiteRegistry.sites.append(cls)



@with_metaclass(ISiteRegistry)