Skip to content

v0.1.5の変更点

ここではv0.1.5になるにあたって変更された点をご紹介します

Warning

v0.1.0-1aはreleasesにも書いてある通り歴史的に残してあるのであり、add_reaction等一部のメソッドが認証情報周りのエラーで動作しません。

大体の変更点は以下の通りです。

v0.1.5

Added

  • on_follow イベントを追加しました
  • utils.pyadd_auth_i関数を追加しました
  • upper_to_lower関数でネストされたdictのkeyを全て小文字化できるようになりました
  • NoteActionクラスにemoji_countメソッドを追加
  • config.pyを追加、auth_i等は全てここに保存するように
  • chart.pyを追加しました。
  • Driveモデルに DriveActionクラスを継承させるように
  • DriveActionクラスのuploadメソッドの引数にis_sensitiveforceを追加
  • utils.pyapi関数でfilesを受け取るように

Changed

  • 内部変更: delete send等のメソッドを別のクラスに分けました
  • 内部変更: on_messageへの送信部分の条件式をres使わないように
  • 内部変更: auth_iの共有方法を共通化
  • 内部変更: auth_iの部分をconfig.iに置き換え
  • uploadメソッドの引数変更に伴うadd_fileの引数にis_sensitiveforceを追加
  • ほぼすべてのデータ格納用クラスをPydanticに置き換え(NoteFileなど)
  • get_iUserActionに移動

Removed

  • auth_i削除に伴いapi.py削除しました
  • set_auth_i add_auth_i関数を削除しました
  • AuthIモデルを削除しました
  • auth_iをクラスやメソッドなどの引数から削除しました
  • Messageクラスを削除しました。基本的に不要な情報があり、実装の複雑さが上がっているだけだからです。

Fixed

  • add_reactionの認証情報周りの不具合が修正されました
  • ドキュメントでPydanticのモデルが表示できるようになりました
  • on_deletedイベントが正常に動作しない既知の不具合を修正しました
  • api関数でデータがunicodeだと正常に動作しない場合があるのを修正

この更新の大きな変更点は内部的に捉えるとauth_i(Token等の情報)になりますが、実際はクラスからモデルに移行したという点です。 今までの定義方法を見てみましょう。

class Note(object):
    def __init__(self, text, cw):
        self.text = text
        self.cw = cw

    def send(self):
        pass
ご覧の通り、クラスで定義されていました。これがPydanticを使用した以下のようなモデルに変更されています。

class NoteAction(self):
    def send(self):
        pass

class Note(BaseModel, NoteAction):
    text: str
    cw: str
この用になったらどのような変更があるのか、これは一番最初に出てきたauth_iと関連しており、 このバージョンからはapi.pyが削除されています。そのため、今までノートを投稿する際使用していたbot.note()といった 書き方が出来ないようになっています。(BotBaseクラスからapiの継承が消えているため)しかしながら、今後は以下のようにノートを投稿することが可能です。
Note(text='hello mi.py').send()
スマートですね、この用に今までapiにあったものをクラスを使用して作成するようになっています。

大雑把な変更点

Warning

bot.noteなどを使用していた場合はfrom mi import Note等を行う必要があります。

  • bot.note(text='hello mi.py')が使用不可に今後はNote(text='hello mi.py')
  • bot.drive()が利用不可に今後はDrive()

このライブラリに貢献しようとしている方への詳細な変更

Hint

開発者の方はここ見るよりCHANGELOGを見ていただけるとより詳細な変更点が分かると思います。というか、見たうえでここを見てください。

今回の変更点で開発者にとって大きな変更となるのは以下の通りです。

  • auth_i周りがすべて消え、config.pyinit関数を使うようになった

これにより、ほぼすべての認証情報が今までは関数ごとに渡されていましたが、現在はconfig.pyをインポートして config.i.token等で取得ができるようになっています。 その他は微細な変更や機能追加、引数追加なので、それほど大きな変更ではありません。


Last update: October 2, 2021