sshplex 1.0.0__tar.gz → 1.0.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. {sshplex-1.0.0 → sshplex-1.0.4}/MANIFEST.in +0 -2
  2. {sshplex-1.0.0/sshplex.egg-info → sshplex-1.0.4}/PKG-INFO +14 -12
  3. {sshplex-1.0.0 → sshplex-1.0.4}/README.md +6 -4
  4. {sshplex-1.0.0 → sshplex-1.0.4}/pyproject.toml +8 -8
  5. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/__init__.py +1 -1
  6. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/cli.py +1 -1
  7. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/config-template.yaml +2 -2
  8. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/config.py +3 -3
  9. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/ui/host_selector.py +1 -1
  10. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/main.py +22 -1
  11. {sshplex-1.0.0 → sshplex-1.0.4/sshplex.egg-info}/PKG-INFO +14 -12
  12. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex.egg-info/SOURCES.txt +0 -2
  13. sshplex-1.0.4/sshplex.egg-info/requires.txt +15 -0
  14. sshplex-1.0.0/requirements-dev.txt +0 -6
  15. sshplex-1.0.0/requirements.txt +0 -8
  16. sshplex-1.0.0/sshplex.egg-info/requires.txt +0 -15
  17. {sshplex-1.0.0 → sshplex-1.0.4}/LICENSE +0 -0
  18. {sshplex-1.0.0 → sshplex-1.0.4}/setup.cfg +0 -0
  19. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/__init__.py +0 -0
  20. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/logger.py +0 -0
  21. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/multiplexer/__init__.py +0 -0
  22. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/multiplexer/base.py +0 -0
  23. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/multiplexer/tmux.py +0 -0
  24. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/sot/__init__.py +0 -0
  25. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/sot/base.py +0 -0
  26. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/sot/netbox.py +0 -0
  27. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/ssh/__init__.py +0 -0
  28. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/ssh/connection.py +0 -0
  29. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/ssh/manager.py +0 -0
  30. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/ui/__init__.py +0 -0
  31. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/lib/ui/session_manager.py +0 -0
  32. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/populate_examples.py +0 -0
  33. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex/sshplex_connector.py +0 -0
  34. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex.egg-info/dependency_links.txt +0 -0
  35. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex.egg-info/entry_points.txt +0 -0
  36. {sshplex-1.0.0 → sshplex-1.0.4}/sshplex.egg-info/top_level.txt +0 -0
  37. {sshplex-1.0.0 → sshplex-1.0.4}/tests/test_config.py +0 -0
@@ -1,7 +1,5 @@
1
1
  include README.md
2
2
  include LICENSE
3
- include requirements.txt
4
- include requirements-dev.txt
5
3
  recursive-include sshplex *.py
6
4
  recursive-include sshplex *.yaml
7
5
  recursive-include sshplex *.yml
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sshplex
3
- Version: 1.0.0
3
+ Version: 1.0.4
4
4
  Summary: Multiplex your SSH connections with style
5
5
  Author-email: MJAHED Sabri <contact@sabrimjahed.com>
6
6
  License: MIT
@@ -28,13 +28,13 @@ Classifier: Topic :: Terminals
28
28
  Requires-Python: >=3.8
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
- Requires-Dist: pynetbox==7.3.3
32
- Requires-Dist: textual==0.47.1
33
- Requires-Dist: pyyaml==6.0.1
34
- Requires-Dist: pydantic==2.5.0
35
- Requires-Dist: loguru==0.7.2
36
- Requires-Dist: rich==13.7.0
37
- Requires-Dist: libtmux==0.25.0
31
+ Requires-Dist: pynetbox==7.5.0
32
+ Requires-Dist: textual==3.3.0
33
+ Requires-Dist: pyyaml==6.0.2
34
+ Requires-Dist: pydantic==2.11.0
35
+ Requires-Dist: loguru==0.7.3
36
+ Requires-Dist: rich==13.9.4
37
+ Requires-Dist: libtmux==0.46.1
38
38
  Provides-Extra: dev
39
39
  Requires-Dist: pytest>=7.0.0; extra == "dev"
40
40
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
@@ -83,7 +83,7 @@ SSHplex is a Python-based SSH connection multiplexer that provides a modern Term
83
83
  - Custom multiplexer plugins
84
84
  - 📈 **Performance Optimization**: Enhanced performance for large host lists
85
85
 
86
- ## Installation
86
+ ## 📦 Installation
87
87
 
88
88
  ### From PyPI (Recommended)
89
89
 
@@ -91,6 +91,8 @@ SSHplex is a Python-based SSH connection multiplexer that provides a modern Term
91
91
  pip install sshplex
92
92
  ```
93
93
 
94
+ This installs SSHplex with all its dependencies and makes the `sshplex` and `sshplex-cli` commands available system-wide.
95
+
94
96
  ### From Source
95
97
 
96
98
  ```bash
@@ -151,8 +153,8 @@ sudo dnf install tmux python3 python3-pip
151
153
  git clone https://github.com/sabrimjd/sshplex.git
152
154
  cd sshplex
153
155
 
154
- # Install dependencies
155
- pip3 install -r requirements.txt
156
+ # Install in development mode
157
+ pip3 install -e .
156
158
 
157
159
  # Run main TUI application
158
160
  python3 sshplex.py
@@ -183,7 +185,7 @@ This installs the `sshplex-cli` command for NetBox connectivity testing and conf
183
185
  ```bash
184
186
  git clone https://github.com/sabrimjd/sshplex.git
185
187
  cd sshplex
186
- pip install -r requirements.txt
188
+ pip install -e .
187
189
  ```
188
190
 
189
191
  This gives you access to the full TUI interface with tmux integration.
@@ -37,7 +37,7 @@ SSHplex is a Python-based SSH connection multiplexer that provides a modern Term
37
37
  - Custom multiplexer plugins
38
38
  - 📈 **Performance Optimization**: Enhanced performance for large host lists
39
39
 
40
- ## Installation
40
+ ## 📦 Installation
41
41
 
42
42
  ### From PyPI (Recommended)
43
43
 
@@ -45,6 +45,8 @@ SSHplex is a Python-based SSH connection multiplexer that provides a modern Term
45
45
  pip install sshplex
46
46
  ```
47
47
 
48
+ This installs SSHplex with all its dependencies and makes the `sshplex` and `sshplex-cli` commands available system-wide.
49
+
48
50
  ### From Source
49
51
 
50
52
  ```bash
@@ -105,8 +107,8 @@ sudo dnf install tmux python3 python3-pip
105
107
  git clone https://github.com/sabrimjd/sshplex.git
106
108
  cd sshplex
107
109
 
108
- # Install dependencies
109
- pip3 install -r requirements.txt
110
+ # Install in development mode
111
+ pip3 install -e .
110
112
 
111
113
  # Run main TUI application
112
114
  python3 sshplex.py
@@ -137,7 +139,7 @@ This installs the `sshplex-cli` command for NetBox connectivity testing and conf
137
139
  ```bash
138
140
  git clone https://github.com/sabrimjd/sshplex.git
139
141
  cd sshplex
140
- pip install -r requirements.txt
142
+ pip install -e .
141
143
  ```
142
144
 
143
145
  This gives you access to the full TUI interface with tmux integration.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "sshplex"
7
- version = "1.0.0"
7
+ version = "1.0.4"
8
8
  description = "Multiplex your SSH connections with style"
9
9
  authors = [{name = "MJAHED Sabri", email = "contact@sabrimjahed.com"}]
10
10
  readme = "README.md"
@@ -30,13 +30,13 @@ classifiers = [
30
30
  keywords = ["ssh", "tmux", "multiplexer", "netbox", "tui", "terminal"]
31
31
  requires-python = ">=3.8"
32
32
  dependencies = [
33
- "pynetbox==7.3.3",
34
- "textual==0.47.1",
35
- "pyyaml==6.0.1",
36
- "pydantic==2.5.0",
37
- "loguru==0.7.2",
38
- "rich==13.7.0",
39
- "libtmux==0.25.0",
33
+ "pynetbox==7.5.0",
34
+ "textual==3.3.0",
35
+ "pyyaml==6.0.2",
36
+ "pydantic==2.11.0",
37
+ "loguru==0.7.3",
38
+ "rich==13.9.4",
39
+ "libtmux==0.46.1",
40
40
  ]
41
41
 
42
42
  [project.optional-dependencies]
@@ -1,4 +1,4 @@
1
1
  """SSHplex - SSH Connection Multiplexer"""
2
- __version__ = "1.0.0"
2
+ __version__ = "1.0.4"
3
3
  __author__ = "MJAHED Sabri"
4
4
  __email__ = "contact@sabrimjahed.com"
@@ -16,7 +16,7 @@ def main() -> int:
16
16
  # Parse command line arguments
17
17
  parser = argparse.ArgumentParser(description="SSHplex CLI: Debug interface for NetBox connectivity testing.")
18
18
  parser.add_argument('--config', type=str, default=None, help='Path to the configuration file (default: ~/.config/sshplex/sshplex.yaml)')
19
- parser.add_argument('--version', action='version', version='SSHplex 1.0.0')
19
+ parser.add_argument('--version', action='version', version='SSHplex 1.0.4')
20
20
  args = parser.parse_args()
21
21
 
22
22
  # Load configuration (will use default path if none specified)
@@ -1,6 +1,6 @@
1
- # SSHplex Configuration - Phase 2 with tmux support
1
+ # SSHplex Configuration - tmux support
2
2
  sshplex:
3
- version: "1.0.0"
3
+ version: "1.0.4"
4
4
  session_prefix: "sshplex"
5
5
 
6
6
  netbox:
@@ -1,4 +1,4 @@
1
- """SSHplex configuration management with pydantic validation - Phase 3."""
1
+ """SSHplex configuration management with pydantic validation"""
2
2
 
3
3
  from pathlib import Path
4
4
  from typing import Dict, Any, Optional
@@ -10,7 +10,7 @@ from pydantic import BaseModel, Field, validator
10
10
 
11
11
  class SSHplexConfig(BaseModel):
12
12
  """SSHplex main configuration."""
13
- version: str = "1.0.0"
13
+ version: str = "1.0.4"
14
14
  session_prefix: str = "sshplex"
15
15
 
16
16
 
@@ -123,7 +123,7 @@ def initialize_default_config() -> Path:
123
123
  def load_config(config_path: Optional[str] = None) -> Config:
124
124
  """Load and validate configuration from YAML file.
125
125
 
126
- Phase 3: Uses ~/.config/sshplex/sshplex.yaml as default location.
126
+ Uses ~/.config/sshplex/sshplex.yaml as default location.
127
127
  Creates config directory and copies template on first run.
128
128
 
129
129
  Args:
@@ -327,7 +327,7 @@ class HostSelector(App):
327
327
  broadcast = "ON" if self.use_broadcast else "OFF"
328
328
  self.log_message(f"INFO: Connecting to {len(selected_host_objects)} selected hosts in {mode} mode with Broadcast {broadcast}...", level="info")
329
329
 
330
- # For Phase 1, just log the selection - connection logic will be added later
330
+ # just log the selection
331
331
  for host in selected_host_objects:
332
332
  self.log_message(f"INFO: Would connect to: {host.name} ({host.ip}) - Cluster: {getattr(host, 'cluster', 'N/A')}", level="info")
333
333
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  import sys
4
4
  import argparse
5
+ import shutil
5
6
  from pathlib import Path
6
7
  from datetime import datetime
7
8
  from typing import Any
@@ -13,14 +14,34 @@ from .lib.ui.host_selector import HostSelector
13
14
  from .sshplex_connector import SSHplexConnector
14
15
 
15
16
 
17
+ def check_system_dependencies() -> bool:
18
+ """Check if required system dependencies are available."""
19
+ # Check if tmux is installed and available in PATH
20
+ if not shutil.which("tmux"):
21
+ print("❌ Error: tmux is not installed or not found in PATH")
22
+ print("\nSSHplex requires tmux for terminal multiplexing.")
23
+ print("Please install tmux:")
24
+ print("\n macOS: brew install tmux")
25
+ print(" Ubuntu: sudo apt install tmux")
26
+ print(" RHEL/CentOS/Fedora: sudo dnf install tmux")
27
+ print("\nThen try running SSHplex again.")
28
+ return False
29
+
30
+ return True
31
+
32
+
16
33
  def main() -> int:
17
34
  """Main entry point for SSHplex TUI Application."""
18
35
 
19
36
  try:
37
+ # Check system dependencies first
38
+ if not check_system_dependencies():
39
+ return 1
40
+
20
41
  # Parse command line arguments
21
42
  parser = argparse.ArgumentParser(description="SSHplex: Multiplex your SSH connections with style.")
22
43
  parser.add_argument('--config', type=str, default=None, help='Path to the configuration file (default: ~/.config/sshplex/sshplex.yaml)')
23
- parser.add_argument('--version', action='version', version='SSHplex 1.0.0')
44
+ parser.add_argument('--version', action='version', version='SSHplex 1.0.4')
24
45
  parser.add_argument('--debug', action='store_true', help='Run in debug mode (CLI only, no TUI)')
25
46
  args = parser.parse_args()
26
47
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sshplex
3
- Version: 1.0.0
3
+ Version: 1.0.4
4
4
  Summary: Multiplex your SSH connections with style
5
5
  Author-email: MJAHED Sabri <contact@sabrimjahed.com>
6
6
  License: MIT
@@ -28,13 +28,13 @@ Classifier: Topic :: Terminals
28
28
  Requires-Python: >=3.8
29
29
  Description-Content-Type: text/markdown
30
30
  License-File: LICENSE
31
- Requires-Dist: pynetbox==7.3.3
32
- Requires-Dist: textual==0.47.1
33
- Requires-Dist: pyyaml==6.0.1
34
- Requires-Dist: pydantic==2.5.0
35
- Requires-Dist: loguru==0.7.2
36
- Requires-Dist: rich==13.7.0
37
- Requires-Dist: libtmux==0.25.0
31
+ Requires-Dist: pynetbox==7.5.0
32
+ Requires-Dist: textual==3.3.0
33
+ Requires-Dist: pyyaml==6.0.2
34
+ Requires-Dist: pydantic==2.11.0
35
+ Requires-Dist: loguru==0.7.3
36
+ Requires-Dist: rich==13.9.4
37
+ Requires-Dist: libtmux==0.46.1
38
38
  Provides-Extra: dev
39
39
  Requires-Dist: pytest>=7.0.0; extra == "dev"
40
40
  Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
@@ -83,7 +83,7 @@ SSHplex is a Python-based SSH connection multiplexer that provides a modern Term
83
83
  - Custom multiplexer plugins
84
84
  - 📈 **Performance Optimization**: Enhanced performance for large host lists
85
85
 
86
- ## Installation
86
+ ## 📦 Installation
87
87
 
88
88
  ### From PyPI (Recommended)
89
89
 
@@ -91,6 +91,8 @@ SSHplex is a Python-based SSH connection multiplexer that provides a modern Term
91
91
  pip install sshplex
92
92
  ```
93
93
 
94
+ This installs SSHplex with all its dependencies and makes the `sshplex` and `sshplex-cli` commands available system-wide.
95
+
94
96
  ### From Source
95
97
 
96
98
  ```bash
@@ -151,8 +153,8 @@ sudo dnf install tmux python3 python3-pip
151
153
  git clone https://github.com/sabrimjd/sshplex.git
152
154
  cd sshplex
153
155
 
154
- # Install dependencies
155
- pip3 install -r requirements.txt
156
+ # Install in development mode
157
+ pip3 install -e .
156
158
 
157
159
  # Run main TUI application
158
160
  python3 sshplex.py
@@ -183,7 +185,7 @@ This installs the `sshplex-cli` command for NetBox connectivity testing and conf
183
185
  ```bash
184
186
  git clone https://github.com/sabrimjd/sshplex.git
185
187
  cd sshplex
186
- pip install -r requirements.txt
188
+ pip install -e .
187
189
  ```
188
190
 
189
191
  This gives you access to the full TUI interface with tmux integration.
@@ -2,8 +2,6 @@ LICENSE
2
2
  MANIFEST.in
3
3
  README.md
4
4
  pyproject.toml
5
- requirements-dev.txt
6
- requirements.txt
7
5
  sshplex/__init__.py
8
6
  sshplex/cli.py
9
7
  sshplex/config-template.yaml
@@ -0,0 +1,15 @@
1
+ pynetbox==7.5.0
2
+ textual==3.3.0
3
+ pyyaml==6.0.2
4
+ pydantic==2.11.0
5
+ loguru==0.7.3
6
+ rich==13.9.4
7
+ libtmux==0.46.1
8
+
9
+ [dev]
10
+ pytest>=7.0.0
11
+ pytest-cov>=4.0.0
12
+ black>=22.0.0
13
+ flake8>=5.0.0
14
+ mypy>=1.0.0
15
+ types-PyYAML>=6.0.0
@@ -1,6 +0,0 @@
1
- pynetbox==7.3.3
2
- pytest==7.4.4
3
- pytest-mock==3.12.0
4
- pytest-asyncio==0.23.0
5
- rich==13.7.0
6
- loguru==0.7.2
@@ -1,8 +0,0 @@
1
- # Core functionality - Phase 1 & 2
2
- pynetbox==7.3.3 # NetBox API client
3
- textual==0.47.1 # Modern TUI framework
4
- pyyaml==6.0.1 # YAML configuration
5
- pydantic==2.5.0 # Data validation
6
- loguru==0.7.2 # Simple, powerful logging
7
- rich==13.7.0 # Enhanced terminal output (works with textual)
8
- libtmux==0.25.0 # tmux session management
@@ -1,15 +0,0 @@
1
- pynetbox==7.3.3
2
- textual==0.47.1
3
- pyyaml==6.0.1
4
- pydantic==2.5.0
5
- loguru==0.7.2
6
- rich==13.7.0
7
- libtmux==0.25.0
8
-
9
- [dev]
10
- pytest>=7.0.0
11
- pytest-cov>=4.0.0
12
- black>=22.0.0
13
- flake8>=5.0.0
14
- mypy>=1.0.0
15
- types-PyYAML>=6.0.0
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes