cmd_queue.util.textual_extensions module

class cmd_queue.util.textual_extensions.class_or_instancemethod[source]

Bases: classmethod

Allows a method to behave as a class or instance method

References

https://stackoverflow.com/questions/28237955/same-name-for-classmethod-and-instancemethod

Example

>>> class X:
...     @class_or_instancemethod
...     def foo(self_or_cls):
...         if isinstance(self_or_cls, type):
...             return f"bound to the class"
...         else:
...             return f"bound to the instance"
>>> print(X.foo())
bound to the class
>>> print(X().foo())
bound to the instance
class cmd_queue.util.textual_extensions.InstanceRunnableApp[source]

Bases: object

Extension of App that allows for running an instance

CommandLine

xdoctest -m cmd_queue.util.textual_extensions InstanceRunnableApp:0 --interact

Example

>>> # xdoctest: +REQUIRES(module:textual)
>>> # xdoctest: +REQUIRES(--interact)
>>> from textual import events
>>> #from textual.widgets import ScrollView
>>> from textual.scroll_view import ScrollView
>>> class DemoApp(InstanceRunnableApp):
>>>     def __init__(self, myvar, **kwargs):
>>>         super().__init__(**kwargs)
>>>         self.myvar = myvar
>>>     async def on_load(self, event: events.Load) -> None:
>>>         await self.bind("q", "quit", "Quit")
>>>     async def on_mount(self, event: events.Mount) -> None:
>>>         self.body = body = ScrollView(auto_width=True)
>>>         await self.view.dock(body)
>>>         async def add_content():
>>>             from rich.text import Text
>>>             content = Text(self.myvar)
>>>             await body.update(content)
>>>         await self.call_later(add_content)
>>> DemoApp.run(myvar='Existing classmethod way of running an App')
>>> self = DemoApp(myvar='The instance way of running an App')
>>> self.run()
classmethod _run_as_cls(console=None, screen: bool = True, driver=None, **kwargs)[source]

Original classmethod logic

_run_as_instance(console=None, screen: bool = True, driver=None, **kwargs)[source]

New instancemethod logic

classmethod run(console=None, screen: bool = True, driver=None, **kwargs)[source]

Run the app. :Parameters: * console (Console, optional) – Console object. Defaults to None.

  • screen (bool, optional) – Enable application mode. Defaults to True.

  • driver (Type[Driver], optional) – Driver class or None for default. Defaults to None.