10
10
11
11
Examples
12
12
--------
13
- >>> from libtmux import Server
14
- >>> server = Server() # Create a new server instance
15
13
>>> server.is_alive() # Check if tmux server is running
16
14
True
17
15
>>> # Clean up any existing test session first
23
21
>>> server.has_session("test_session")
24
22
True
25
23
>>> server.kill_session("test_session") # Clean up
26
- Server(socket_path=/tmp/tmux- .../default )
24
+ Server(socket_name=libtmux_test ...)
27
25
"""
28
26
29
27
from __future__ import annotations
@@ -389,7 +387,6 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
389
387
390
388
Examples
391
389
--------
392
- >>> server = Server()
393
390
>>> # Clean up any existing test session
394
391
>>> if server.has_session("test_session"):
395
392
... server.kill_session("test_session")
@@ -401,10 +398,11 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
401
398
False
402
399
>>> server.has_session("test_session", exact=True) # Exact match
403
400
True
404
- >>> server.has_session("test*", exact=False) # Pattern match
401
+ >>> # Pattern matching (using tmux's pattern matching)
402
+ >>> server.has_session("test_sess*", exact=False) # Pattern match
405
403
True
406
404
>>> server.kill_session("test_session") # Clean up
407
- Server(socket_path=/tmp/tmux- .../default )
405
+ Server(socket_name=libtmux_test ...)
408
406
"""
409
407
session_check_name (target_session )
410
408
@@ -421,16 +419,14 @@ def kill(self) -> None:
421
419
422
420
Examples
423
421
--------
424
- >>> svr = Server(socket_name="testing")
425
- >>> svr.new_session()
422
+ >>> # Create a new server for testing kill()
423
+ >>> test_server = Server(socket_name="testing")
424
+ >>> test_server.new_session()
426
425
Session(...)
427
-
428
- >>> svr.is_alive()
426
+ >>> test_server.is_alive()
429
427
True
430
-
431
- >>> svr.kill()
432
-
433
- >>> svr.is_alive()
428
+ >>> test_server.kill()
429
+ >>> test_server.is_alive()
434
430
False
435
431
"""
436
432
self .cmd ("kill-server" )
@@ -445,15 +441,14 @@ def kill_session(self, target_session: str | int) -> Server:
445
441
446
442
Examples
447
443
--------
448
- >>> server = Server()
449
444
>>> # Clean up any existing session first
450
445
>>> if server.has_session("temp"):
451
446
... server.kill_session("temp")
452
447
>>> session = server.new_session(session_name="temp")
453
448
>>> server.has_session("temp")
454
449
True
455
450
>>> server.kill_session("temp")
456
- Server(socket_path=/tmp/tmux- .../default )
451
+ Server(socket_name=libtmux_test ...)
457
452
>>> server.has_session("temp")
458
453
False
459
454
"""
@@ -470,6 +465,22 @@ def switch_client(self, target_session: str) -> None:
470
465
target_session
471
466
The name or pattern of the target session.
472
467
468
+ Examples
469
+ --------
470
+ >>> # Create two test sessions
471
+ >>> for name in ["session1", "session2"]:
472
+ ... if server.has_session(name):
473
+ ... server.kill_session(name)
474
+ >>> session1 = server.new_session(session_name="session1")
475
+ >>> session2 = server.new_session(session_name="session2")
476
+ >>> # Note: switch_client() requires an interactive terminal
477
+ >>> # so we can't demonstrate it in doctests
478
+ >>> # Clean up
479
+ >>> server.kill_session("session1")
480
+ Server(socket_name=libtmux_test...)
481
+ >>> server.kill_session("session2")
482
+ Server(socket_name=libtmux_test...)
483
+
473
484
Raises
474
485
------
475
486
exc.BadSessionName
@@ -491,6 +502,18 @@ def attach_session(self, target_session: str | None = None) -> None:
491
502
The name or pattern of the target session. If None, attaches to
492
503
the most recently used session.
493
504
505
+ Examples
506
+ --------
507
+ >>> # Create a test session
508
+ >>> if server.has_session("test_attach"):
509
+ ... server.kill_session("test_attach")
510
+ >>> session = server.new_session(session_name="test_attach")
511
+ >>> # Note: attach_session() requires an interactive terminal
512
+ >>> # so we can't demonstrate it in doctests
513
+ >>> # Clean up
514
+ >>> server.kill_session("test_attach")
515
+ Server(socket_name=libtmux_test...)
516
+
494
517
Raises
495
518
------
496
519
exc.BadSessionName
@@ -542,7 +565,6 @@ def new_session(
542
565
543
566
Examples
544
567
--------
545
- >>> server = Server()
546
568
>>> # Clean up any existing sessions first
547
569
>>> for name in ["basic", "custom", "env_test"]:
548
570
... if server.has_session(name):
@@ -571,9 +593,9 @@ def new_session(
571
593
>>> # Clean up
572
594
>>> for name in ["basic", "custom", "env_test"]:
573
595
... server.kill_session(name)
574
- Server(socket_path=/tmp/tmux- .../default )
575
- Server(socket_path=/tmp/tmux- .../default )
576
- Server(socket_path=/tmp/tmux- .../default )
596
+ Server(socket_name=libtmux_test ...)
597
+ Server(socket_name=libtmux_test ...)
598
+ Server(socket_name=libtmux_test ...)
577
599
"""
578
600
if session_name is not None :
579
601
session_check_name (session_name )
@@ -637,7 +659,6 @@ def sessions(self) -> QueryList[Session]:
637
659
638
660
Examples
639
661
--------
640
- >>> server = Server()
641
662
>>> # Clean up any existing test sessions first
642
663
>>> for name in ["test1", "test2"]:
643
664
... if server.has_session(name):
@@ -651,9 +672,9 @@ def sessions(self) -> QueryList[Session]:
651
672
['test1', 'test2']
652
673
>>> # Clean up
653
674
>>> server.kill_session("test1")
654
- Server(socket_path=/tmp/tmux- .../default )
675
+ Server(socket_name=libtmux_test ...)
655
676
>>> server.kill_session("test2")
656
- Server(socket_path=/tmp/tmux- .../default )
677
+ Server(socket_name=libtmux_test ...)
657
678
"""
658
679
sessions : list [Session ] = []
659
680
with contextlib .suppress (Exception ):
@@ -672,6 +693,36 @@ def windows(self) -> QueryList[Window]:
672
693
673
694
This includes windows in all sessions.
674
695
696
+ Examples
697
+ --------
698
+ >>> # Clean up any existing test sessions
699
+ >>> for name in ["test_windows1", "test_windows2"]:
700
+ ... if server.has_session(name):
701
+ ... server.kill_session(name)
702
+ >>> # Create sessions with windows
703
+ >>> session1 = server.new_session(session_name="test_windows1")
704
+ >>> session2 = server.new_session(session_name="test_windows2")
705
+ >>> # Create additional windows
706
+ >>> _ = session1.new_window(window_name="win1") # Create window
707
+ >>> _ = session2.new_window(window_name="win2") # Create window
708
+ >>> # Each session should have 2 windows (default + new)
709
+ >>> len([w for w in server.windows if w.session.name == "test_windows1"])
710
+ 2
711
+ >>> len([w for w in server.windows if w.session.name == "test_windows2"])
712
+ 2
713
+ >>> # Verify window names
714
+ >>> wins1 = [w for w in server.windows if w.session.name == "test_windows1"]
715
+ >>> wins2 = [w for w in server.windows if w.session.name == "test_windows2"]
716
+ >>> sorted(w.name for w in wins1)
717
+ ['win1', ...]
718
+ >>> sorted(w.name for w in wins2)
719
+ ['win2', ...]
720
+ >>> # Clean up
721
+ >>> server.kill_session("test_windows1")
722
+ Server(socket_name=libtmux_test...)
723
+ >>> server.kill_session("test_windows2")
724
+ Server(socket_name=libtmux_test...)
725
+
675
726
Access advanced filtering and retrieval with:
676
727
:meth:`.windows.get() <libtmux._internal.query_list.QueryList.get()>` and
677
728
:meth:`.windows.filter() <libtmux._internal.query_list.QueryList.filter()>`
@@ -692,6 +743,24 @@ def panes(self) -> QueryList[Pane]:
692
743
693
744
This includes panes from all windows in all sessions.
694
745
746
+ Examples
747
+ --------
748
+ >>> # Clean up any existing test session
749
+ >>> if server.has_session("test_panes"):
750
+ ... server.kill_session("test_panes")
751
+ >>> # Create a session and split some panes
752
+ >>> session = server.new_session(session_name="test_panes")
753
+ >>> window = session.attached_window
754
+ >>> # Split into two panes
755
+ >>> window.split_window()
756
+ Pane(%... Window(@... 1:..., Session($... test_panes)))
757
+ >>> # Each window starts with 1 pane, split creates another
758
+ >>> len([p for p in server.panes if p.window.session.name == "test_panes"])
759
+ 2
760
+ >>> # Clean up
761
+ >>> server.kill_session("test_panes")
762
+ Server(socket_name=libtmux_test...)
763
+
695
764
Access advanced filtering and retrieval with:
696
765
:meth:`.panes.get() <libtmux._internal.query_list.QueryList.get()>` and
697
766
:meth:`.panes.filter() <libtmux._internal.query_list.QueryList.filter()>`
0 commit comments