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
@@ -387,7 +385,6 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
387385
388386 Examples
389387 --------
390- >>> server = Server()
391388 >>> # Clean up any existing test session
392389 >>> if server.has_session("test_session"):
393390 ... server.kill_session("test_session")
@@ -399,10 +396,11 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
399396 False
400397 >>> server.has_session("test_session", exact=True) # Exact match
401398 True
402- >>> server.has_session("test*", exact=False) # Pattern match
399+ >>> # Pattern matching (using tmux's pattern matching)
400+ >>> server.has_session("test_sess*", exact=False) # Pattern match
403401 True
404402 >>> server.kill_session("test_session") # Clean up
405- Server(socket_path=/tmp/tmux- .../default )
403+ Server(socket_name=libtmux_test ...)
406404 """
407405 session_check_name (target_session )
408406
@@ -419,16 +417,14 @@ def kill(self) -> None:
419417
420418 Examples
421419 --------
422- >>> svr = Server(socket_name="testing")
423- >>> svr.new_session()
420+ >>> # Create a new server for testing kill()
421+ >>> test_server = Server(socket_name="testing")
422+ >>> test_server.new_session()
424423 Session(...)
425-
426- >>> svr.is_alive()
424+ >>> test_server.is_alive()
427425 True
428-
429- >>> svr.kill()
430-
431- >>> svr.is_alive()
426+ >>> test_server.kill()
427+ >>> test_server.is_alive()
432428 False
433429 """
434430 self .cmd ("kill-server" )
@@ -443,15 +439,14 @@ def kill_session(self, target_session: str | int) -> Server:
443439
444440 Examples
445441 --------
446- >>> server = Server()
447442 >>> # Clean up any existing session first
448443 >>> if server.has_session("temp"):
449444 ... server.kill_session("temp")
450445 >>> session = server.new_session(session_name="temp")
451446 >>> server.has_session("temp")
452447 True
453448 >>> server.kill_session("temp")
454- Server(socket_path=/tmp/tmux- .../default )
449+ Server(socket_name=libtmux_test ...)
455450 >>> server.has_session("temp")
456451 False
457452 """
@@ -468,6 +463,22 @@ def switch_client(self, target_session: str) -> None:
468463 target_session
469464 The name or pattern of the target session.
470465
466+ Examples
467+ --------
468+ >>> # Create two test sessions
469+ >>> for name in ["session1", "session2"]:
470+ ... if server.has_session(name):
471+ ... server.kill_session(name)
472+ >>> session1 = server.new_session(session_name="session1")
473+ >>> session2 = server.new_session(session_name="session2")
474+ >>> # Note: switch_client() requires an interactive terminal
475+ >>> # so we can't demonstrate it in doctests
476+ >>> # Clean up
477+ >>> server.kill_session("session1")
478+ Server(socket_name=libtmux_test...)
479+ >>> server.kill_session("session2")
480+ Server(socket_name=libtmux_test...)
481+
471482 Raises
472483 ------
473484 exc.BadSessionName
@@ -489,6 +500,18 @@ def attach_session(self, target_session: str | None = None) -> None:
489500 The name or pattern of the target session. If None, attaches to
490501 the most recently used session.
491502
503+ Examples
504+ --------
505+ >>> # Create a test session
506+ >>> if server.has_session("test_attach"):
507+ ... server.kill_session("test_attach")
508+ >>> session = server.new_session(session_name="test_attach")
509+ >>> # Note: attach_session() requires an interactive terminal
510+ >>> # so we can't demonstrate it in doctests
511+ >>> # Clean up
512+ >>> server.kill_session("test_attach")
513+ Server(socket_name=libtmux_test...)
514+
492515 Raises
493516 ------
494517 exc.BadSessionName
@@ -540,7 +563,6 @@ def new_session(
540563
541564 Examples
542565 --------
543- >>> server = Server()
544566 >>> # Clean up any existing sessions first
545567 >>> for name in ["basic", "custom", "env_test"]:
546568 ... if server.has_session(name):
@@ -569,9 +591,9 @@ def new_session(
569591 >>> # Clean up
570592 >>> for name in ["basic", "custom", "env_test"]:
571593 ... server.kill_session(name)
572- Server(socket_path=/tmp/tmux- .../default )
573- Server(socket_path=/tmp/tmux- .../default )
574- Server(socket_path=/tmp/tmux- .../default )
594+ Server(socket_name=libtmux_test ...)
595+ Server(socket_name=libtmux_test ...)
596+ Server(socket_name=libtmux_test ...)
575597 """
576598 if session_name is not None :
577599 session_check_name (session_name )
@@ -635,7 +657,6 @@ def sessions(self) -> QueryList[Session]:
635657
636658 Examples
637659 --------
638- >>> server = Server()
639660 >>> # Clean up any existing test sessions first
640661 >>> for name in ["test1", "test2"]:
641662 ... if server.has_session(name):
@@ -649,9 +670,9 @@ def sessions(self) -> QueryList[Session]:
649670 ['test1', 'test2']
650671 >>> # Clean up
651672 >>> server.kill_session("test1")
652- Server(socket_path=/tmp/tmux- .../default )
673+ Server(socket_name=libtmux_test ...)
653674 >>> server.kill_session("test2")
654- Server(socket_path=/tmp/tmux- .../default )
675+ Server(socket_name=libtmux_test ...)
655676 """
656677 sessions : list [Session ] = []
657678 with contextlib .suppress (Exception ):
@@ -670,6 +691,36 @@ def windows(self) -> QueryList[Window]:
670691
671692 This includes windows in all sessions.
672693
694+ Examples
695+ --------
696+ >>> # Clean up any existing test sessions
697+ >>> for name in ["test_windows1", "test_windows2"]:
698+ ... if server.has_session(name):
699+ ... server.kill_session(name)
700+ >>> # Create sessions with windows
701+ >>> session1 = server.new_session(session_name="test_windows1")
702+ >>> session2 = server.new_session(session_name="test_windows2")
703+ >>> # Create additional windows
704+ >>> _ = session1.new_window(window_name="win1") # Create window
705+ >>> _ = session2.new_window(window_name="win2") # Create window
706+ >>> # Each session should have 2 windows (default + new)
707+ >>> len([w for w in server.windows if w.session.name == "test_windows1"])
708+ 2
709+ >>> len([w for w in server.windows if w.session.name == "test_windows2"])
710+ 2
711+ >>> # Verify window names
712+ >>> wins1 = [w for w in server.windows if w.session.name == "test_windows1"]
713+ >>> wins2 = [w for w in server.windows if w.session.name == "test_windows2"]
714+ >>> sorted(w.name for w in wins1)
715+ ['win1', ...]
716+ >>> sorted(w.name for w in wins2)
717+ ['win2', ...]
718+ >>> # Clean up
719+ >>> server.kill_session("test_windows1")
720+ Server(socket_name=libtmux_test...)
721+ >>> server.kill_session("test_windows2")
722+ Server(socket_name=libtmux_test...)
723+
673724 Access advanced filtering and retrieval with:
674725 :meth:`.windows.get() <libtmux._internal.query_list.QueryList.get()>` and
675726 :meth:`.windows.filter() <libtmux._internal.query_list.QueryList.filter()>`
@@ -690,6 +741,24 @@ def panes(self) -> QueryList[Pane]:
690741
691742 This includes panes from all windows in all sessions.
692743
744+ Examples
745+ --------
746+ >>> # Clean up any existing test session
747+ >>> if server.has_session("test_panes"):
748+ ... server.kill_session("test_panes")
749+ >>> # Create a session and split some panes
750+ >>> session = server.new_session(session_name="test_panes")
751+ >>> window = session.attached_window
752+ >>> # Split into two panes
753+ >>> window.split_window()
754+ Pane(%... Window(@... 1:..., Session($... test_panes)))
755+ >>> # Each window starts with 1 pane, split creates another
756+ >>> len([p for p in server.panes if p.window.session.name == "test_panes"])
757+ 2
758+ >>> # Clean up
759+ >>> server.kill_session("test_panes")
760+ Server(socket_name=libtmux_test...)
761+
693762 Access advanced filtering and retrieval with:
694763 :meth:`.panes.get() <libtmux._internal.query_list.QueryList.get()>` and
695764 :meth:`.panes.filter() <libtmux._internal.query_list.QueryList.filter()>`
0 commit comments