1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

atcoder-cliの提出時「assert parsed_memory_limit」エラーが発生する

Posted at

AtCoderにはatcoder-cliという、cli上で課題提出できる便利なツールがありますが、提出時に以下のエラーが発生しました。
※一部パスをで省略してます。

acc s
submit to: https://atcoder.jp/contests/abcXXX/tasks/abcXXX_X

[ERROR] 
Traceback (most recent call last):
  File "<omission>/onlinejudge_command/main.py", line 101, in main
    sys.exit(run_program(parsed, parser=parser))
  File "<omission>/onlinejudge_command/main.py", line 67, in run_program
    if not subcommand_submit.run(args):
  File "<omission>/onlinejudge_command/subcommand/submit.py", line 100, in run
    language_dict: Dict[LanguageId, str] = {language.id: language.name for language in problem.get_available_languages(session=sess)}
  File "<omission>/onlinejudge/service/atcoder.py", line 1008, in get_available_languages
    data = self.download_data(session=session)
  File "<omission>/onlinejudge/service/atcoder.py", line 811, in download_data
    return AtCoderProblemDetailedData.from_html(html, problem=self, session=session, response=resp, timestamp=timestamp)
  File "<omission>/onlinejudge/service/atcoder.py", line 770, in from_html
    data = AtCoderProblemData._from_html(html, problem=problem, session=session, response=response, timestamp=timestamp)
  File "<omission>/onlinejudge/service/atcoder.py", line 582, in _from_html
    assert parsed_memory_limit
AssertionError

online-judge-toolsで何か問題が起こっている模様?
下記コードでインストールし直しましたが変化なし。

pip3 install -U online-judge-tools

調べたところ以下の記事を発見。

ABC408 より、メモリ制限の単位が「KB」「MB」から「KiB」「MiB」に変更されたとのこと。online-judge-toolsのGithubリポジトリでは、親切な方からプルリクエストは送られているようですが、まだマージされていないようです。今のところはまだ手作業で修正するしかなさそう。

# When login as the admin, a link is added after memory limit. See https://github.com/online-judge-tools/api-client/issues/90
-parsed_memory_limit = re.search(r'^(メモリ制限|Memory Limit): ([0-9.]+) (KB|MB)', memory_limit)
+parsed_memory_limit = re.search(r'^(メモリ制限|Memory Limit): ([0-9.]+) (KiB|MiB)', memory_limit)
assert parsed_memory_limit

memory_limit_value = parsed_memory_limit.group(2)
memory_limit_unit = parsed_memory_limit.group(3)
-if memory_limit_unit == 'KB':
-    memory_limit_byte = int(float(memory_limit_value) * 1000)
+if memory_limit_unit == 'KiB':
+    memory_limit_byte = int(float(memory_limit_value) * 1024)
-elif memory_limit_unit == 'MB':
-    memory_limit_byte = int(float(memory_limit_value) * 1000 * 1000)
+    elif memory_limit_unit == 'MiB':
+    memory_limit_byte = int(float(memory_limit_value) * 1024 * 1024)
else:
    assert False

記事ではサイズが1000、プルリクエストではサイズが1024となっていました。
どっちでもエラーは解消されるようですが、自分は1024にしておきました。

早期に修正されることを願います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?