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
@@ -387,7 +385,6 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
387
385
388
386
Examples
389
387
--------
390
- >>> server = Server()
391
388
>>> # Clean up any existing test session
392
389
>>> if server.has_session("test_session"):
393
390
... server.kill_session("test_session")
@@ -399,10 +396,11 @@ def has_session(self, target_session: str, exact: bool = True) -> bool:
399
396
False
400
397
>>> server.has_session("test_session", exact=True) # Exact match
401
398
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
403
401
True
404
402
>>> server.kill_session("test_session") # Clean up
405
- Server(socket_path=/tmp/tmux- .../default )
403
+ Server(socket_name=libtmux_test ...)
406
404
"""
407
405
session_check_name (target_session )
408
406
@@ -419,16 +417,14 @@ def kill(self) -> None:
419
417
420
418
Examples
421
419
--------
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()
424
423
Session(...)
425
-
426
- >>> svr.is_alive()
424
+ >>> test_server.is_alive()
427
425
True
428
-
429
- >>> svr.kill()
430
-
431
- >>> svr.is_alive()
426
+ >>> test_server.kill()
427
+ >>> test_server.is_alive()
432
428
False
433
429
"""
434
430
self .cmd ("kill-server" )
@@ -443,15 +439,14 @@ def kill_session(self, target_session: str | int) -> Server:
443
439
444
440
Examples
445
441
--------
446
- >>> server = Server()
447
442
>>> # Clean up any existing session first
448
443
>>> if server.has_session("temp"):
449
444
... server.kill_session("temp")
450
445
>>> session = server.new_session(session_name="temp")
451
446
>>> server.has_session("temp")
452
447
True
453
448
>>> server.kill_session("temp")
454
- Server(socket_path=/tmp/tmux- .../default )
449
+ Server(socket_name=libtmux_test ...)
455
450
>>> server.has_session("temp")
456
451
False
457
452
"""
@@ -468,6 +463,22 @@ def switch_client(self, target_session: str) -> None:
468
463
target_session
469
464
The name or pattern of the target session.
470
465
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
+
471
482
Raises
472
483
------
473
484
exc.BadSessionName
@@ -489,6 +500,18 @@ def attach_session(self, target_session: str | None = None) -> None:
489
500
The name or pattern of the target session. If None, attaches to
490
501
the most recently used session.
491
502
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
+
492
515
Raises
493
516
------
494
517
exc.BadSessionName
@@ -540,7 +563,6 @@ def new_session(
540
563
541
564
Examples
542
565
--------
543
- >>> server = Server()
544
566
>>> # Clean up any existing sessions first
545
567
>>> for name in ["basic", "custom", "env_test"]:
546
568
... if server.has_session(name):
@@ -569,9 +591,9 @@ def new_session(
569
591
>>> # Clean up
570
592
>>> for name in ["basic", "custom", "env_test"]:
571
593
... 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 ...)
575
597
"""
576
598
if session_name is not None :
577
599
session_check_name (session_name )
@@ -635,7 +657,6 @@ def sessions(self) -> QueryList[Session]:
635
657
636
658
Examples
637
659
--------
638
- >>> server = Server()
639
660
>>> # Clean up any existing test sessions first
640
661
>>> for name in ["test1", "test2"]:
641
662
... if server.has_session(name):
@@ -649,9 +670,9 @@ def sessions(self) -> QueryList[Session]:
649
670
['test1', 'test2']
650
671
>>> # Clean up
651
672
>>> server.kill_session("test1")
652
- Server(socket_path=/tmp/tmux- .../default )
673
+ Server(socket_name=libtmux_test ...)
653
674
>>> server.kill_session("test2")
654
- Server(socket_path=/tmp/tmux- .../default )
675
+ Server(socket_name=libtmux_test ...)
655
676
"""
656
677
sessions : list [Session ] = []
657
678
with contextlib .suppress (Exception ):
@@ -670,6 +691,36 @@ def windows(self) -> QueryList[Window]:
670
691
671
692
This includes windows in all sessions.
672
693
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
+
673
724
Access advanced filtering and retrieval with:
674
725
:meth:`.windows.get() <libtmux._internal.query_list.QueryList.get()>` and
675
726
:meth:`.windows.filter() <libtmux._internal.query_list.QueryList.filter()>`
@@ -690,6 +741,24 @@ def panes(self) -> QueryList[Pane]:
690
741
691
742
This includes panes from all windows in all sessions.
692
743
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
+
693
762
Access advanced filtering and retrieval with:
694
763
:meth:`.panes.get() <libtmux._internal.query_list.QueryList.get()>` and
695
764
:meth:`.panes.filter() <libtmux._internal.query_list.QueryList.filter()>`
0 commit comments