diff --git a/libqtile/command/interface.py b/libqtile/command/interface.py index 171588c4ad..fa8cf72b76 100644 --- a/libqtile/command/interface.py +++ b/libqtile/command/interface.py @@ -28,7 +28,7 @@ import types import typing from abc import ABCMeta, abstractmethod -from typing import TYPE_CHECKING, Any, Literal, get_args, get_origin +from typing import TYPE_CHECKING, Any, Literal, Union, get_args, get_origin from libqtile import ipc from libqtile.command.base import CommandError, CommandException, CommandObject, SelectError @@ -309,7 +309,7 @@ def lift_args(cmd, args, kwargs): def lift_arg(typ, arg): # for stuff like int | None, allow either - if get_origin(typ) in [types.UnionType, typing.Union]: + if get_origin(typ) in [types.UnionType, Union]: for t in get_args(typ): if t == types.NoneType: # special case None? I don't know what this looks like diff --git a/test/test_command.py b/test/test_command.py index d31baff360..d43faac214 100644 --- a/test/test_command.py +++ b/test/test_command.py @@ -68,6 +68,7 @@ class CallConfig(Config): bottom=libqtile.bar.Bar( [ libqtile.widget.GroupBox(), + libqtile.widget.TextBox(), ], 20, ), @@ -110,6 +111,12 @@ def test_param_hoisting(manager): cmd_client.call("hide_show_bar", position="top", lifted=True) + # 'zomg' is not a valid font size + with pytest.raises(IPCError): + cmd_client.navigate("widget", "textbox").call("set_font", fontsize="zomg", lifted=True) + + cmd_client.navigate("widget", "textbox").call("set_font", fontsize=12, lifted=True) + class FakeCommandObject(CommandObject): @staticmethod