Apricot-S / majsoulrpa

A Robotic Process Automation (RPA) framework for Mahjong Soul (雀魂)
Other
19 stars 5 forks source link

Presentationが_implではなくRPAに依存するようにする #65

Closed Apricot-S closed 6 months ago

Apricot-S commented 8 months ago

概要

各Presentationは現在_implBrowserBase, MessageQueueClientBase, PresentationCreatorBase をメンバーに持っているが、できればRPAをメンバーに持つようにする ただし、RPAのプライベートメンバーへのアクセスを避けつつ外部には非公開にする必要がある(要設計)

なぜ必要か

To Be

Presentationクラスの__init___implのクラスではなくRPAクラスを与える RPAはPresentationに各メンバーを公開する手段を持つ(フレームワーク利用者には非公開にする)

Apricot-S commented 6 months ago

PresentationBaseRPA のプライベートメンバにアクセスするプライベートプロパティを持っていればよさそう そうすれば既存のコードの変更も不要になるし、Ruff の警告も 1 箇所ずつの計 2 箇所で済む

Apricot-S commented 6 months ago

PresentationBaseRPA のプライベートメンバにアクセスするプライベートプロパティを持っていればよさそう そうすれば既存のコードの変更も不要になるし、Ruff の警告も 1 箇所ずつで済む

この場合の変更範囲

テストは変更不要のはず(要確認)

Apricot-S commented 6 months ago

変更した場合の影響範囲について

RPAPresentation*** が循環参照になる RPA.wait() は本来別のクラスかトップレベルの関数になるべきかもしれない

とりあえず Presentation***importwait() メソッド内に移動すればエラーは起きなくなる 本格的な変更は一旦後にする

Apricot-S commented 6 months ago

疑問

RPA クラスを経由すると browsermessage_queue_clientNone でないか毎回確認が必要となるが設計として正しいか? 一旦ローカル変数に受けるべき?

Apricot-S commented 6 months ago

https://github.com/Apricot-S/majsoulrpa/commit/aa21233e859fb4929000cf4edadcfb1ca7159bb1 にて対応