Python typing

そういえば 10 月になった。
GNOME 43 はどうなったのかな?

GNOME Release Notes

シャットダウンが又してもアイコンのみに、コロコロ変わりすぎ。
ログアウト選択ダイアログの 2 アクションに戻るんだろうか?
macOS はずっと 1 アクションだし何年もメニューは変わっていないというのに。

gnome-terminal は新規ターミナルに置き換えみたい。
本サイトの Tips を書き換えしなきゃいけなくなりそうだ。

GTK4 化アプリは全部 Libadwaita デザインにするっぽいな。
GNOME に謎の魔改造をする某ディストロはどうすんのやら、しらんけど。

GNOME 43 for Developers

GtkInscription は解説を見てもよく解らないな。
Fedora 37 が出たら色々試してみよう。

役立たずだった GtkPicture に色々手を入れたみたい。
いや用途適にスマホの縦写真を回転してくれないと使い物にならんままですけど。

g_idle_add_once と g_timeout_add_once か、名前のとおりな関数。
FALSE を戻すだけでいいのにわざわざ別関数を作った意味は何だ?

Drag and Drop – GNOME Developer Documentation

もう筆者は知っているけど解説を作ったらしいので。
Python のコードを見るとアレッ、Python って型指定ができるの?

typing — 型ヒントのサポート ? Python 3.10.6 ドキュメント

-> は知っていたけどこういう指定も可能だったのか。
というか型指定は Python の型だけでなく Class ならなんでもいいのね。
Gio.File は PyGObject では Class 扱いです。

def on_drop(self, drop_target, value: Gdk.FileList, x, y, user_data=None):
    files: List[Gio.File] = value.get_files()

    # Loop through the files and print their names.
    for file in files:
        print(file.get_path())

たださ。
PyGObject は型指定しなくても動くし None 引数を省略できるんだが。

    drop_target = Gtk.DropTarget.new(Gdk.FileList, Gdk.DragAction.COPY)
    drop_target.connect('drop', self.on_file_drop)
    drop_target.connect('accept', self.on_drop_accept)
    self.add_controller(drop_target)

def on_drop_accept(self, target, drop):
    return True

def on_file_drop(self, target, value, x, y):
    self.set_uri(value.get_files()[0].get_uri())

筆者が書いたやつ。
型指定バリバリな解説は混乱を招くと思うんだけーが。

しかしこんなことで Python の知らなかった機能を知るとは。
Fedora 37 が出るまで Python Tips を書き足しでもするか。