spindlex


Namespindlex JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/spindle-dev/spindle
SummaryA pure-Python SSHv2 client/server library
upload_time2025-10-17 06:31:37
maintainerNone
docs_urlNone
authorSpindle Team
requires_python>=3.8
licenseMIT
keywords ssh sftp client server cryptography security
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # SpindleX

A pure-Python SSHv2 client/server library that provides secure, high-performance SSH and SFTP operations without GPL/LGPL dependencies.

## Features

- **Pure Python**: No C extensions or system dependencies
- **Modern Security**: Ed25519, ECDSA, ChaCha20-Poly1305, and other modern algorithms
- **Full SSH Support**: Client and server implementations with all major features
- **SFTP Support**: Complete SFTP client and server functionality
- **Async Support**: Optional asyncio support for high-performance applications
- **Comprehensive**: Port forwarding, authentication methods, host key policies
- **Well-Tested**: Extensive test suite with high code coverage
- **Type Hints**: Fully typed codebase for better development experience

## Quick Start

### Installation

```bash
pip install spindlex
```

### Basic Usage

```python
from spindlex import SSHClient

# Create client and connect
client = SSHClient()
client.connect('example.com', username='user', password='password')

# Execute a command
stdin, stdout, stderr = client.exec_command('ls -la')
print(stdout.read().decode())

# Use SFTP
sftp = client.open_sftp()
sftp.get('/remote/file.txt', '/local/file.txt')
sftp.close()

# Clean up
client.close()
```

### Key-based Authentication

```python
from spindlex import SSHClient
from spindlex.crypto.pkey import Ed25519Key

# Load private key
private_key = Ed25519Key.from_private_key_file('/path/to/private_key')

client = SSHClient()
client.connect(
    hostname='example.com',
    username='user',
    pkey=private_key
)
```

## Documentation

- [Quick Start Guide](https://spindlex.readthedocs.io/en/latest/quickstart.html)
- [User Guide](https://spindlex.readthedocs.io/en/latest/user_guide/)
- [API Reference](https://spindlex.readthedocs.io/en/latest/api_reference/)
- [Examples](https://spindlex.readthedocs.io/en/latest/examples/)
- [Security Guide](https://spindlex.readthedocs.io/en/latest/security.html)

## Requirements

- Python 3.8+
- cryptography >= 3.0

## Optional Dependencies

- `asyncio` support: `pip install spindlex[async]`
- Development tools: `pip install spindlex[dev]`
- GSSAPI authentication: `pip install spindlex[gssapi]` (Unix only)

## Contributing

We welcome contributions! Please see our [Contributing Guide](https://spindlex.readthedocs.io/en/latest/contributing.html) for details.

## Security

For security issues, please email security@spindlex.org instead of creating a public issue.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- Built with modern Python cryptography
- Inspired by the need for a pure-Python SSH library
- Thanks to all contributors and the Python community

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/spindle-dev/spindle",
    "name": "spindlex",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "SpindleX Team <team@spindlex.org>",
    "keywords": "ssh, sftp, client, server, cryptography, security",
    "author": "Spindle Team",
    "author_email": "SpindleX Team <team@spindlex.org>",
    "download_url": "https://files.pythonhosted.org/packages/6d/51/ebfeb41a41b37084801aa9a32e80a38d538bed88d63dc52452f4c1f7c27d/spindlex-0.1.0.tar.gz",
    "platform": null,
    "description": "# SpindleX\r\n\r\nA pure-Python SSHv2 client/server library that provides secure, high-performance SSH and SFTP operations without GPL/LGPL dependencies.\r\n\r\n## Features\r\n\r\n- **Pure Python**: No C extensions or system dependencies\r\n- **Modern Security**: Ed25519, ECDSA, ChaCha20-Poly1305, and other modern algorithms\r\n- **Full SSH Support**: Client and server implementations with all major features\r\n- **SFTP Support**: Complete SFTP client and server functionality\r\n- **Async Support**: Optional asyncio support for high-performance applications\r\n- **Comprehensive**: Port forwarding, authentication methods, host key policies\r\n- **Well-Tested**: Extensive test suite with high code coverage\r\n- **Type Hints**: Fully typed codebase for better development experience\r\n\r\n## Quick Start\r\n\r\n### Installation\r\n\r\n```bash\r\npip install spindlex\r\n```\r\n\r\n### Basic Usage\r\n\r\n```python\r\nfrom spindlex import SSHClient\r\n\r\n# Create client and connect\r\nclient = SSHClient()\r\nclient.connect('example.com', username='user', password='password')\r\n\r\n# Execute a command\r\nstdin, stdout, stderr = client.exec_command('ls -la')\r\nprint(stdout.read().decode())\r\n\r\n# Use SFTP\r\nsftp = client.open_sftp()\r\nsftp.get('/remote/file.txt', '/local/file.txt')\r\nsftp.close()\r\n\r\n# Clean up\r\nclient.close()\r\n```\r\n\r\n### Key-based Authentication\r\n\r\n```python\r\nfrom spindlex import SSHClient\r\nfrom spindlex.crypto.pkey import Ed25519Key\r\n\r\n# Load private key\r\nprivate_key = Ed25519Key.from_private_key_file('/path/to/private_key')\r\n\r\nclient = SSHClient()\r\nclient.connect(\r\n    hostname='example.com',\r\n    username='user',\r\n    pkey=private_key\r\n)\r\n```\r\n\r\n## Documentation\r\n\r\n- [Quick Start Guide](https://spindlex.readthedocs.io/en/latest/quickstart.html)\r\n- [User Guide](https://spindlex.readthedocs.io/en/latest/user_guide/)\r\n- [API Reference](https://spindlex.readthedocs.io/en/latest/api_reference/)\r\n- [Examples](https://spindlex.readthedocs.io/en/latest/examples/)\r\n- [Security Guide](https://spindlex.readthedocs.io/en/latest/security.html)\r\n\r\n## Requirements\r\n\r\n- Python 3.8+\r\n- cryptography >= 3.0\r\n\r\n## Optional Dependencies\r\n\r\n- `asyncio` support: `pip install spindlex[async]`\r\n- Development tools: `pip install spindlex[dev]`\r\n- GSSAPI authentication: `pip install spindlex[gssapi]` (Unix only)\r\n\r\n## Contributing\r\n\r\nWe welcome contributions! Please see our [Contributing Guide](https://spindlex.readthedocs.io/en/latest/contributing.html) for details.\r\n\r\n## Security\r\n\r\nFor security issues, please email security@spindlex.org instead of creating a public issue.\r\n\r\n## License\r\n\r\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Acknowledgments\r\n\r\n- Built with modern Python cryptography\r\n- Inspired by the need for a pure-Python SSH library\r\n- Thanks to all contributors and the Python community\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A pure-Python SSHv2 client/server library",
    "version": "0.1.0",
    "project_urls": {
        "Changelog": "https://gitlab.com/daveops.world/development/python/spindlex/-/blob/main/CHANGELOG.md",
        "Documentation": "https://spindlex.readthedocs.io/",
        "Homepage": "https://gitlab.com/daveops.world/development/python/spindlex",
        "Issues": "https://gitlab.com/daveops.world/development/python/spindlex/-/issues",
        "Repository": "https://gitlab.com/daveops.world/development/python/spindlex.git"
    },
    "split_keywords": [
        "ssh",
        " sftp",
        " client",
        " server",
        " cryptography",
        " security"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b68e21fd547a8530e8dc4d9a03beb1907a474760825f739958ce6ff9a96590e1",
                "md5": "6f4508b187e8af93139ad895b4caf522",
                "sha256": "c955fe8e497fb50845817ad7157b5bf74506c93135309c8f3f80e54086703eb1"
            },
            "downloads": -1,
            "filename": "spindlex-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6f4508b187e8af93139ad895b4caf522",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 107818,
            "upload_time": "2025-10-17T06:31:35",
            "upload_time_iso_8601": "2025-10-17T06:31:35.878260Z",
            "url": "https://files.pythonhosted.org/packages/b6/8e/21fd547a8530e8dc4d9a03beb1907a474760825f739958ce6ff9a96590e1/spindlex-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6d51ebfeb41a41b37084801aa9a32e80a38d538bed88d63dc52452f4c1f7c27d",
                "md5": "8dcfc8e56affe75934f82356d53f558f",
                "sha256": "310e2f9bb527a8c9e9561caac53eeebfbade2f2a2263d95f59f36bd52ca309cb"
            },
            "downloads": -1,
            "filename": "spindlex-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "8dcfc8e56affe75934f82356d53f558f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 94082,
            "upload_time": "2025-10-17T06:31:37",
            "upload_time_iso_8601": "2025-10-17T06:31:37.155089Z",
            "url": "https://files.pythonhosted.org/packages/6d/51/ebfeb41a41b37084801aa9a32e80a38d538bed88d63dc52452f4c1f7c27d/spindlex-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-17 06:31:37",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "spindle-dev",
    "github_project": "spindle",
    "github_not_found": true,
    "lcname": "spindlex"
}
        
Elapsed time: 2.12686s