-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
atcodertools.client を online-judge-tools で置き換える #134
Conversation
WIP で止まっているのは online-judge-tools/oj#380 の問題を解決しないと完了させられないためです。 |
0be964c
to
778c36c
Compare
Codecov Report
@@ Coverage Diff @@
## master #134 +/- ##
==========================================
- Coverage 89.85% 88.09% -1.76%
==========================================
Files 53 50 -3
Lines 2582 2419 -163
==========================================
- Hits 2320 2131 -189
- Misses 262 288 +26
Continue to review full report at Codecov.
|
テストが gzip された HTML を読んで実行しており、現状の atcoder-tools/tests/test_constpred.py Lines 36 to 37 in 778c36c
atcoder-tools/tests/test_constpred.py Lines 69 to 70 in 778c36c
|
@kmyk |
@kyuridenamida 生HTMLダウンロード機能は何も検討していませんでした。とりあえずは あってもよさそうですが、何も考えずにライブラリの公開APIとして足すには仕様についていくつか検討しないといけない点があり、その判断が難しいためです。具体的には次の2点です:
|
とりあえず、入力部分やサンプル説明を (毎回解析して取得するのでなくて) 直接保存しておいて使う方向を試そうとしています。 |
返事おそくなりましたが納得です。ありがとうございます。最近僕側の反応速度が律速になっていて申し訳無さを感じています |
778c36c
to
384c382
Compare
@kyuridenamida 生HTMLを操作するAPIをonline-judge-toolsに足して、とりあえず実装はできました。 |
個人的な意見としては、このような形のすべてを舐めるようなテストは良くないと思っています。
テストとして使う問題をいくつか選んでそれだけを扱う形に書き直すのでもよいですが、どう思いますか? |
@kmyk さん
ありがとうございます!!!はい、大丈夫です。こういう一番バグりそうな瞬間に既存のテストが役に立たないのはかなり悔しさがありますが、各コンテストに対する成功率が変化しているかどうかについては僕もマージ前に確認します!
この網羅テストのおかげでコア機能に関するバグを防いでいる実感があるので、半分くらい反対です。このテストが無いとして入力解析アルゴリズム(例えば正規化方法とか)を弄ったときにどの問題に対する解析が壊れるか想定・網羅してユニットテストを厳選して書いておくのは人的コストに見合わないので、単にdiffを検知するツールとして持っておきたいという気持ちがあります。 ・・・が、半分くらい同意です。仰る通りあのテストにドキュメントとしての機能はほぼありません。かなり不便です。端なるdiffを検知するテストのためのzipを濫用していくつもの重要なテストを汚染しているのは雑なので、あのテストの代わりにドキュメント性の高い開発時に役に立ちそうないくつかのきちんとした小さいユニットテストを書くということには賛成です。 他の指摘に関するコメントです。
実はあのテストを最新に保つことに必要性は強く感じておらず、主に焦点を当てていたのは、単にデータの量の大小です。そういう理由で過去問だけでも十分な量のサンプルだと思っていて、更新しなくても正直そこまで支障が出ないと考えています。入力形式によほど大きな変更が起きたときにこの楽観視は終焉を遂げるのですが、さすがにissueが飛んでくるかなと思っています。
間違ったものが入っているのは単にテストケースが多い & 僕が1つ1つ吟味するのが面倒くさかったという事実の組み合せに起因するものです。申し訳ない。そこで、"想定解"の定義を「現状と同じ動作である」という風に誤魔化してdiffツールとして使っています。zipの更新に関しては、今回は特にhtmlではなく中途半端な形式で圧縮していることが主な理由だと思っていて、htmlで圧縮しておけば良かったと思っています...。とはいえそもそもzipを使うことによって.gitが膨らむのは知らず、完全にgit初心者ムーブでした。gitで圧縮ファイルはやめます...(前教えてもらったのに放置しててすみません。)
これはテストの書き方次第でどうとでもなりそうです。 : 上記を踏まえた上で以下の2ステップの作業の提案です。
どうでしょうか。 いつもかなり建設的な議論を持ちかけてくれて、助かっています。 |
提案されたものはよさそうです。 ただし、フルテストを CI の範囲に含めるかどうかについては確認しておきたいです。 コメントについても特に異論ありません。 ところで、少なくともサンプルケースの取得のフルテストについては online-judge-tools の側でも行おうと思います。参加者の提出のダウンロード機能とコンテナ技術をあわせれば精度ほぼ100%が達成できるはずということに気付きました。
これですが、こちらこそありがとうございます。議論に丁寧に付き合ってもらえるので新しい発見が多くて勉強になります。 |
すみません、返事が必要系のコメントだと認識しておらず、放置していました。 フルテストをCIに含めるかどうかですが、少なくともatcoder側の通信部分くらいはonlinejudgetoolsの挙動の影響を受けても良いです。それが壊れてるとそもそもユーザーが使えないですし、どちらにしろ検出されるべきシチュエーションではあると思います。
これすごい、堅牢なライブラリを作る達人 |
384c382
to
308a912
Compare
…udge.type.Submission
…ervice.atcoder.AtCoderContest
…ervice.atcoder.AtCoderProblem
…ent with online-judge-tools
308a912
to
56013b2
Compare
@kyuridenamida テストの修正ができました (2か月も待たせてしまってごめんなさい) |
これかなりさっさとCR終えてマージすべきだったな、後回しにした結果コンフリクトが発生するやつですね...頑張って終わらせます |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
こんだけ待たせてしまったのに実はunused import以外指摘するところがなくて若干申し訳ないですが、一応CR終わりました。ほぼマイナー指摘なので、このままMRしてもいいくらいです。かなり素晴らしい修正なのに放置し続けてしまったことを悔いています。ありがとうございます&すみません。
Co-Authored-By: Kazuma Mikami <tyotyo3@gmail.com>
conflict の解消もしたのですが、マージはひとまず待ってほしいです。 |
@kyuridenamida conflict の解消と online-judge-tools の依存するバージョンの安定版への更新をしまし、マージできる状態になりました (おまたせしました) |
@kmyk |
@kyuridenamida マージはしてもらって大丈夫です。そちらでコンフリクト解消してもらえるのならとても助かります。 ところで、マージするにせよしないにせよ、このプルリクをマージすべきかどうかは現状を踏まえて検討しなおすべきだと思っています。reject すべきだと判断したならきちんと reject してください。 当初想定していた利点は次のふたつでした。
しかし、どちらの利点も薄くなっている気がしています。 |
僕は実はこれに希望を感じている人です。 |
これとりあえず閉じておきますね。conflict 解消たいへんでそう簡単にはマージできないだろうし、大きいプルリクが Open のまま残ってると他の人がプルリク出しにくそうなためです。 |
以前から話をしているものです。
次の2点が嬉しさです:
注意点としては: