# Path: termicoder/models/Contest.py
# class Contest(ABC):
#     @abstractmethod
#     def __init__(self, data=None):
#         # If contest_data, problems is passed, it should take priority
#         self.code = None
#         self.problems = None
#         self.judge_name = None
#         self.data = data
# 
#     @abstractmethod
#     def __str__(self):
#         pass
# 
# Path: termicoder/utils/logging.py



from termicoder.models import Contest
from collections import namedtuple
from beautifultable import BeautifulTable
from termicoder.utils.logging import logger
#!/usr/bin/python
# -*- coding: utf-8 -*-


class CodechefContest(Contest):
    def __init__(self, data):
        self.code = None
        self.problems = []
        self.data = data
        self.judge_name = "codechef"
        self.problem_codes = []

# Path: termicoder/models/Contest.py
# class Contest(ABC):
#     @abstractmethod
#     def __init__(self, data=None):
#         # If contest_data, problems is passed, it should take priority
#         self.code = None
#         self.problems = None
#         self.judge_name = None
#         self.data = data
# 
#     @abstractmethod
#     def __str__(self):
#         pass
# 
# Path: termicoder/utils/logging.py



# Path: termicoder/judges/codechef/models/Contest.py
from termicoder.models import Contest
from collections import namedtuple
from beautifultable import BeautifulTable
from termicoder.utils.logging import logger

#!/usr/bin/python
# -*- coding: utf-8 -*-


class CodechefContest(Contest):
    def __init__(self, data):
        self.code = None
        self.problems = []
        self.data = data
        self.judge_name = "codechef"
        self.problem_codes = []

        if(data is not None):