1010
1111Examples
1212--------
13- >>> from libtmux import Server
14- >>> server = Server() # Create a new server instance
1513>>> server.is_alive() # Check if tmux server is running
1614True
1715>>> # Clean up any existing test session first
2321>>> server.has_session("test_session")
2422True
2523>>> server.kill_session("test_session") # Clean up
26- Server(socket_path=/tmp/tmux- .../default )
24+ Server(socket_name=libtmux_test ...)
2725"""
2826
2927from __future__ import annotations
@@ -337,7 +335,6 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
337335
338336 Examples
339337 --------
340- >>> server = Server()
341338 >>> # Clean up any existing test session
342339 >>> if server.has_session("test_session"):
343340 ... server.kill_session("test_session")
@@ -349,10 +346,11 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
349346 False
350347 >>> server.has_session("test_session", exact=True) # Exact match
351348 True
352- >>> server.has_session("test*", exact=False) # Pattern match
349+ >>> # Pattern matching (using tmux's pattern matching)
350+ >>> server.has_session("test_sess*", exact=False) # Pattern match
353351 True
354352 >>> server.kill_session("test_session") # Clean up
355- Server(socket_path=/tmp/tmux- .../default )
353+ Server(socket_name=libtmux_test ...)
356354 """
357355 session_check_name (target_session )
358356
@@ -369,16 +367,14 @@ def kill(self) -> None:
369367
370368 Examples
371369 --------
372- >>> svr = Server(socket_name="testing")
373- >>> svr.new_session()
370+ >>> # Create a new server for testing kill()
371+ >>> test_server = Server(socket_name="testing")
372+ >>> test_server.new_session()
374373 Session(...)
375-
376- >>> svr.is_alive()
374+ >>> test_server.is_alive()
377375 True
378-
379- >>> svr.kill()
380-
381- >>> svr.is_alive()
376+ >>> test_server.kill()
377+ >>> test_server.is_alive()
382378 False
383379 """
384380 self .cmd ("kill-server" )
@@ -393,15 +389,14 @@ def kill_session(self, target_session: str | int) -> Server:
393389
394390 Examples
395391 --------
396- >>> server = Server()
397392 >>> # Clean up any existing session first
398393 >>> if server.has_session("temp"):
399394 ... server.kill_session("temp")
400395 >>> session = server.new_session(session_name="temp")
401396 >>> server.has_session("temp")
402397 True
403398 >>> server.kill_session("temp")
404- Server(socket_path=/tmp/tmux- .../default )
399+ Server(socket_name=libtmux_test ...)
405400 >>> server.has_session("temp")
406401 False
407402 """
@@ -418,6 +413,22 @@ def switch_client(self, target_session: str) -> None:
418413 target_session
419414 The name or pattern of the target session.
420415
416+ Examples
417+ --------
418+ >>> # Create two test sessions
419+ >>> for name in ["session1", "session2"]:
420+ ... if server.has_session(name):
421+ ... server.kill_session(name)
422+ >>> session1 = server.new_session(session_name="session1")
423+ >>> session2 = server.new_session(session_name="session2")
424+ >>> # Note: switch_client() requires an interactive terminal
425+ >>> # so we can't demonstrate it in doctests
426+ >>> # Clean up
427+ >>> server.kill_session("session1")
428+ Server(socket_name=libtmux_test...)
429+ >>> server.kill_session("session2")
430+ Server(socket_name=libtmux_test...)
431+
421432 Raises
422433 ------
423434 exc.BadSessionName
@@ -439,6 +450,18 @@ def attach_session(self, target_session: str | None = None) -> None:
439450 The name or pattern of the target session. If None, attaches to
440451 the most recently used session.
441452
453+ Examples
454+ --------
455+ >>> # Create a test session
456+ >>> if server.has_session("test_attach"):
457+ ... server.kill_session("test_attach")
458+ >>> session = server.new_session(session_name="test_attach")
459+ >>> # Note: attach_session() requires an interactive terminal
460+ >>> # so we can't demonstrate it in doctests
461+ >>> # Clean up
462+ >>> server.kill_session("test_attach")
463+ Server(socket_name=libtmux_test...)
464+
442465 Raises
443466 ------
444467 exc.BadSessionName
@@ -490,7 +513,6 @@ def new_session(
490513
491514 Examples
492515 --------
493- >>> server = Server()
494516 >>> # Clean up any existing sessions first
495517 >>> for name in ["basic", "custom", "env_test"]:
496518 ... if server.has_session(name):
@@ -519,9 +541,9 @@ def new_session(
519541 >>> # Clean up
520542 >>> for name in ["basic", "custom", "env_test"]:
521543 ... server.kill_session(name)
522- Server(socket_path=/tmp/tmux- .../default )
523- Server(socket_path=/tmp/tmux- .../default )
524- Server(socket_path=/tmp/tmux- .../default )
544+ Server(socket_name=libtmux_test ...)
545+ Server(socket_name=libtmux_test ...)
546+ Server(socket_name=libtmux_test ...)
525547 """
526548 if session_name is not None :
527549 session_check_name (session_name )
@@ -585,7 +607,6 @@ def sessions(self) -> QueryList[Session]:
585607
586608 Examples
587609 --------
588- >>> server = Server()
589610 >>> # Clean up any existing test sessions first
590611 >>> for name in ["test1", "test2"]:
591612 ... if server.has_session(name):
@@ -599,9 +620,9 @@ def sessions(self) -> QueryList[Session]:
599620 ['test1', 'test2']
600621 >>> # Clean up
601622 >>> server.kill_session("test1")
602- Server(socket_path=/tmp/tmux- .../default )
623+ Server(socket_name=libtmux_test ...)
603624 >>> server.kill_session("test2")
604- Server(socket_path=/tmp/tmux- .../default )
625+ Server(socket_name=libtmux_test ...)
605626 """
606627 sessions : list [Session ] = []
607628 with contextlib .suppress (Exception ):
@@ -620,6 +641,36 @@ def windows(self) -> QueryList[Window]:
620641
621642 This includes windows in all sessions.
622643
644+ Examples
645+ --------
646+ >>> # Clean up any existing test sessions
647+ >>> for name in ["test_windows1", "test_windows2"]:
648+ ... if server.has_session(name):
649+ ... server.kill_session(name)
650+ >>> # Create sessions with windows
651+ >>> session1 = server.new_session(session_name="test_windows1")
652+ >>> session2 = server.new_session(session_name="test_windows2")
653+ >>> # Create additional windows
654+ >>> _ = session1.new_window(window_name="win1") # Create window
655+ >>> _ = session2.new_window(window_name="win2") # Create window
656+ >>> # Each session should have 2 windows (default + new)
657+ >>> len([w for w in server.windows if w.session.name == "test_windows1"])
658+ 2
659+ >>> len([w for w in server.windows if w.session.name == "test_windows2"])
660+ 2
661+ >>> # Verify window names
662+ >>> wins1 = [w for w in server.windows if w.session.name == "test_windows1"]
663+ >>> wins2 = [w for w in server.windows if w.session.name == "test_windows2"]
664+ >>> sorted(w.name for w in wins1)
665+ ['win1', ...]
666+ >>> sorted(w.name for w in wins2)
667+ ['win2', ...]
668+ >>> # Clean up
669+ >>> server.kill_session("test_windows1")
670+ Server(socket_name=libtmux_test...)
671+ >>> server.kill_session("test_windows2")
672+ Server(socket_name=libtmux_test...)
673+
623674 Access advanced filtering and retrieval with:
624675 :meth:`.windows.get() <libtmux._internal.query_list.QueryList.get()>` and
625676 :meth:`.windows.filter() <libtmux._internal.query_list.QueryList.filter()>`
@@ -640,6 +691,24 @@ def panes(self) -> QueryList[Pane]:
640691
641692 This includes panes from all windows in all sessions.
642693
694+ Examples
695+ --------
696+ >>> # Clean up any existing test session
697+ >>> if server.has_session("test_panes"):
698+ ... server.kill_session("test_panes")
699+ >>> # Create a session and split some panes
700+ >>> session = server.new_session(session_name="test_panes")
701+ >>> window = session.attached_window
702+ >>> # Split into two panes
703+ >>> window.split_window()
704+ Pane(%... Window(@... 1:..., Session($... test_panes)))
705+ >>> # Each window starts with 1 pane, split creates another
706+ >>> len([p for p in server.panes if p.window.session.name == "test_panes"])
707+ 2
708+ >>> # Clean up
709+ >>> server.kill_session("test_panes")
710+ Server(socket_name=libtmux_test...)
711+
643712 Access advanced filtering and retrieval with:
644713 :meth:`.panes.get() <libtmux._internal.query_list.QueryList.get()>` and
645714 :meth:`.panes.filter() <libtmux._internal.query_list.QueryList.filter()>`
0 commit comments