File tree Expand file tree Collapse file tree 3 files changed +19
-5
lines changed Expand file tree Collapse file tree 3 files changed +19
-5
lines changed Original file line number Diff line number Diff line change 2121
2222
2323class DevConsoleHeader :
24- def __init__ (self , verbose : bool = False ) -> None :
24+ def __init__ (self , port : int | None = None , verbose : bool = False ) -> None :
25+ self .port = port
2526 self .verbose = verbose
2627
2728 def __rich_console__ (
2829 self , console : Console , options : ConsoleOptions
2930 ) -> RenderResult :
3031 preamble = Text .from_markup (
3132 f"[bold]Textual Development Console [magenta]v{ version ('textual' )} \n "
32- "[magenta]Run a Textual app with [reverse]textual run --dev my_app.py [/] to connect.\n "
33+ f "[magenta]Run a Textual app with [reverse]{ self . _run_command () } [/] to connect.\n "
3334 "[magenta]Press [reverse]Ctrl+C[/] to quit."
3435 )
3536 if self .verbose :
@@ -45,6 +46,12 @@ def __rich_console__(
4546 yield from line
4647 yield new_line
4748
49+ def _run_command (self ) -> str :
50+ if self .port :
51+ return f"textual run --port { self .port } --dev my_app.py"
52+ else :
53+ return "textual run --dev my_app.py"
54+
4855
4956class DevConsoleLog :
5057 """Renderable representing a single log message
Original file line number Diff line number Diff line change @@ -41,7 +41,7 @@ async def _on_startup(app: Application) -> None:
4141def _run_devtools (
4242 verbose : bool , exclude : list [str ] | None = None , port : int | None = None
4343) -> None :
44- app = _make_devtools_aiohttp_app (verbose = verbose , exclude = exclude )
44+ app = _make_devtools_aiohttp_app (port = port , verbose = verbose , exclude = exclude )
4545
4646 def noop_print (_ : str ) -> None :
4747 pass
@@ -63,6 +63,7 @@ def noop_print(_: str) -> None:
6363
6464def _make_devtools_aiohttp_app (
6565 size_change_poll_delay_secs : float = DEFAULT_SIZE_CHANGE_POLL_DELAY_SECONDS ,
66+ port : int | None = None ,
6667 verbose : bool = False ,
6768 exclude : list [str ] | None = None ,
6869) -> Application :
@@ -73,7 +74,10 @@ def _make_devtools_aiohttp_app(
7374
7475 app ["verbose" ] = verbose
7576 app ["service" ] = DevtoolsService (
76- update_frequency = size_change_poll_delay_secs , verbose = verbose , exclude = exclude
77+ update_frequency = size_change_poll_delay_secs ,
78+ port = port ,
79+ verbose = verbose ,
80+ exclude = exclude ,
7781 )
7882
7983 app .add_routes (
Original file line number Diff line number Diff line change @@ -29,17 +29,20 @@ class DevtoolsService:
2929 def __init__ (
3030 self ,
3131 update_frequency : float ,
32+ port : int | None = None ,
3233 verbose : bool = False ,
3334 exclude : list [str ] | None = None ,
3435 ) -> None :
3536 """
3637 Args:
3738 update_frequency: The number of seconds to wait between
3839 sending updates of the console size to connected clients.
40+ port: Port console is running on.
3941 verbose: Enable verbose logging on client.
4042 exclude: List of log groups to exclude from output.
4143 """
4244 self .update_frequency = update_frequency
45+ self .port = port
4346 self .verbose = verbose
4447 self .exclude = {name .upper () for name in exclude } if exclude else set ()
4548 self .console = Console ()
@@ -49,7 +52,7 @@ def __init__(
4952 async def start (self ) -> None :
5053 """Starts devtools tasks"""
5154 self .size_poll_task = asyncio .create_task (self ._console_size_poller ())
52- self .console .print (DevConsoleHeader (verbose = self .verbose ))
55+ self .console .print (DevConsoleHeader (port = self . port , verbose = self .verbose ))
5356
5457 @property
5558 def clients_connected (self ) -> bool :
You can’t perform that action at this time.
0 commit comments