diff --git a/onlinejudge/implementation/command/download.py b/onlinejudge/implementation/command/download.py index 29c351d1..69d079ac 100644 --- a/onlinejudge/implementation/command/download.py +++ b/onlinejudge/implementation/command/download.py @@ -24,15 +24,13 @@ def download(args: 'argparse.Namespace') -> None: problem = onlinejudge.dispatch.problem_from_url(args.url) if problem is None: sys.exit(1) - kwargs = {} if args.system: supported_service_names = [ 'aoj', 'yukicoder' ] if problem.get_service().get_name() not in supported_service_names: log.error('--system for %s is not supported', problem.get_service().get_name()) sys.exit(1) - kwargs['is_system'] = True if args.format is None: - if kwargs.get('is_system'): + if args.system: if problem.get_service().get_name() == 'yukicoder': args.format = '%b.%e' else: @@ -42,7 +40,10 @@ def download(args: 'argparse.Namespace') -> None: # get samples from the server with utils.with_cookiejar(utils.new_default_session(), path=args.cookie) as sess: - samples = problem.download(session=sess, **kwargs) # type: ignore + if args.system: + samples = problem.download_system_cases(session=sess) # type: ignore + else: + samples = problem.download_sample_cases(session=sess) # type: ignore # write samples to files for i, sample in enumerate(samples): diff --git a/onlinejudge/implementation/command/submit.py b/onlinejudge/implementation/command/submit.py index 2d21beef..12d2b1c5 100644 --- a/onlinejudge/implementation/command/submit.py +++ b/onlinejudge/implementation/command/submit.py @@ -105,7 +105,7 @@ def submit(args: 'argparse.Namespace') -> None: else: kwargs['kind'] = 'example' try: - submission = problem.submit(code, language=args.language, session=sess, **kwargs) # type: ignore + submission = problem.submit_code(code, language=args.language, session=sess, **kwargs) # type: ignore except onlinejudge.type.SubmissionError: log.failure('submission failed') return diff --git a/onlinejudge/service/anarchygolf.py b/onlinejudge/service/anarchygolf.py index 6ee09192..6a8acd02 100644 --- a/onlinejudge/service/anarchygolf.py +++ b/onlinejudge/service/anarchygolf.py @@ -33,7 +33,7 @@ class AnarchyGolfProblem(onlinejudge.type.Problem): def __init__(self, problem_id: str): self.problem_id = problem_id - def download(self, session: Optional[requests.Session] = None) -> List[onlinejudge.type.TestCase]: + def download_sample_cases(self, session: Optional[requests.Session] = None) -> List[onlinejudge.type.TestCase]: session = session or utils.new_default_session() # get resp = utils.request('GET', self.get_url(), session=session) diff --git a/onlinejudge/service/aoj.py b/onlinejudge/service/aoj.py index 027a4b9b..3ccee67e 100644 --- a/onlinejudge/service/aoj.py +++ b/onlinejudge/service/aoj.py @@ -41,13 +41,7 @@ class AOJProblem(onlinejudge.type.Problem): def __init__(self, problem_id): self.problem_id = problem_id - def download(self, session: Optional[requests.Session] = None, is_system: bool = False) -> List[TestCase]: - if is_system: - return self.download_system(session=session) - else: - return self.download_samples(session=session) - - def download_samples(self, session: Optional[requests.Session] = None) -> List[TestCase]: + def download_sample_cases(self, session: Optional[requests.Session] = None) -> List[TestCase]: session = session or utils.new_default_session() # get samples via the official API # reference: http://developers.u-aizu.ac.jp/api?key=judgedat%2Ftestcases%2Fsamples%2F%7BproblemId%7D_GET @@ -61,7 +55,7 @@ def download_samples(self, session: Optional[requests.Session] = None) -> List[T ) ] return samples - def download_system(self, session: Optional[requests.Session] = None) -> List[TestCase]: + def download_system_cases(self, session: Optional[requests.Session] = None) -> List[TestCase]: session = session or utils.new_default_session() # get header diff --git a/onlinejudge/service/atcoder.py b/onlinejudge/service/atcoder.py index fecedcf3..fb910961 100644 --- a/onlinejudge/service/atcoder.py +++ b/onlinejudge/service/atcoder.py @@ -88,7 +88,7 @@ def __init__(self, contest_id: str, problem_id: str): self.problem_id = problem_id self._task_id = None # type: Optional[int] - def download(self, session: Optional[requests.Session] = None) -> List[onlinejudge.type.TestCase]: + def download_sample_cases(self, session: Optional[requests.Session] = None) -> List[onlinejudge.type.TestCase]: session = session or utils.new_default_session() # get resp = utils.request('GET', self.get_url(), session=session) @@ -223,7 +223,7 @@ def get_language_dict(self, session: Optional[requests.Session] = None) -> Dict[ language_dict[option.attrs['value']] = { 'description': option.string } return language_dict - def submit(self, code: str, language: str, session: Optional[requests.Session] = None) -> onlinejudge.type.DummySubmission: + def submit_code(self, code: str, language: str, session: Optional[requests.Session] = None) -> onlinejudge.type.DummySubmission: assert language in self.get_language_dict(session=session) session = session or utils.new_default_session() # get diff --git a/onlinejudge/service/codeforces.py b/onlinejudge/service/codeforces.py index 9b15be67..a383bc4e 100644 --- a/onlinejudge/service/codeforces.py +++ b/onlinejudge/service/codeforces.py @@ -74,7 +74,7 @@ def __init__(self, contest_id: int, index: str, kind: Optional[str] = None): kind = 'gym' self.kind = kind # It seems 'gym' is specialized, 'contest' and 'problemset' are the same thing - def download(self, session: Optional[requests.Session] = None) -> List[onlinejudge.type.TestCase]: + def download_sample_cases(self, session: Optional[requests.Session] = None) -> List[onlinejudge.type.TestCase]: session = session or utils.new_default_session() # get resp = utils.request('GET', self.get_url(), session=session) diff --git a/onlinejudge/service/csacademy.py b/onlinejudge/service/csacademy.py index c2495483..e33fa3cb 100644 --- a/onlinejudge/service/csacademy.py +++ b/onlinejudge/service/csacademy.py @@ -36,7 +36,7 @@ def __init__(self, contest_name: str, task_name: str): self.contest_name = contest_name self.task_name = task_name - def download(self, session: Optional[requests.Session] = None) -> List[TestCase]: + def download_sample_cases(self, session: Optional[requests.Session] = None) -> List[TestCase]: session = session or utils.new_default_session() base_url = self.get_url() diff --git a/onlinejudge/service/topcoder.py b/onlinejudge/service/topcoder.py index 07453893..93057fd4 100644 --- a/onlinejudge/service/topcoder.py +++ b/onlinejudge/service/topcoder.py @@ -102,7 +102,7 @@ def get_language_dict(self, session: Optional[requests.Session] = None) -> Dict[ 'Python': { 'value': '6', 'description': 'Pyhton 2' }, } - def submit(self, code: str, language: str, session: Optional[requests.Session] = None, kind: str = 'example') -> onlinejudge.type.Submission: + def submit_code(self, code: str, language: str, session: Optional[requests.Session] = None, kind: str = 'example') -> onlinejudge.type.Submission: assert kind in [ 'example', 'full' ] session = session or utils.new_default_session() diff --git a/onlinejudge/service/yukicoder.py b/onlinejudge/service/yukicoder.py index 56e07c12..9fe80bc3 100644 --- a/onlinejudge/service/yukicoder.py +++ b/onlinejudge/service/yukicoder.py @@ -240,12 +240,7 @@ def __init__(self, problem_no=None, problem_id=None): self.problem_no = problem_no self.problem_id = problem_id - def download(self, session: Optional[requests.Session] = None, is_system: bool = False) -> List[TestCase]: - if is_system: - return self.download_system(session=session) - else: - return self.download_samples(session=session) - def download_samples(self, session: Optional[requests.Session] = None) -> List[TestCase]: + def download_sample_cases(self, session: Optional[requests.Session] = None) -> List[TestCase]: session = session or utils.new_default_session() # get resp = utils.request('GET', self.get_url(), session=session) @@ -259,7 +254,8 @@ def download_samples(self, session: Optional[requests.Session] = None) -> List[T data, name = it samples.add(data, name) return samples.get() - def download_system(self, session: Optional[requests.Session] = None) -> List[TestCase]: + + def download_system_cases(self, session: Optional[requests.Session] = None) -> List[TestCase]: session = session or utils.new_default_session() # get url = 'https://yukicoder.me/problems/no/{}/testcase.zip'.format(self.problem_no) diff --git a/onlinejudge/type.py b/onlinejudge/type.py index fb9519b4..60cfce43 100644 --- a/onlinejudge/type.py +++ b/onlinejudge/type.py @@ -27,9 +27,11 @@ class SubmissionError(RuntimeError): pass class Problem(object): - def download(self, session: Optional['requests.Session'] = None) -> List[TestCase]: + def download_sample_cases(self, session: Optional['requests.Session'] = None) -> List[TestCase]: raise NotImplementedError - def submit(self, code: str, language: str, session: Optional['requests.Session'] = None) -> 'Submission': # or SubmissionError + def download_system_cases(self, session: Optional['requests.Session'] = None) -> List[TestCase]: + raise NotImplementedError + def submit_code(self, code: str, language: str, session: Optional['requests.Session'] = None) -> 'Submission': # or SubmissionError raise NotImplementedError def get_language_dict(self, session: Optional['requests.Session'] = None) -> Dict[str, Language]: raise NotImplementedError @@ -47,7 +49,7 @@ def from_url(self, s: str) -> Optional['Problem']: class Submission(object): - def download(self, session: Optional['requests.Session'] = None) -> str: + def download_code(self, session: Optional['requests.Session'] = None) -> str: raise NotImplementedError def get_url(self) -> str: raise NotImplementedError