![PyPI - Version](https://img.shields.io/pypi/v/fabricplus)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fabricplus)
![PyPI - License](https://img.shields.io/pypi/l/fabricplus)
![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/prokopto-dev/fabric-plus/testing.yml?logo=github&label=testing)
# FabricPlus
A drop-in expansion of features in the Fabric library.
As of version `0.1.0`, those include:
- Jumphost connectivity support
- `jump_run` command to run commands from the intermediate jumphost
- SCP Transfer support (including via a jumphost)
- `su` command support
See the API documentation on the [FabricPlus Website](https://fabricplus.prokopto.dev/) for more information, as well as "Getting Started" guide.
See [`fabric`](https://github.com/fabric/fabric) for more details on the base `fabric` library, if interested in the underlying behaviors. Some have been changed: see Important Changes and the documentation for more information.
## Note On Changelogs
### v1.0.1
- Bugfix: `su` command had an invalid argument when processing subcommands. Fixed.
## Installation
### pip (via PyPI)
As of version `0.1.0`, FabricPlus is available via `pip` and is on the Python Package Index.
To install, simply install `fabricplus`.
```bash
pip install fabricplus
```
### Building From Source
You can also build `fabricplus` from source, especially if you want features or updates released outside of a tagged release on `PyPI`.
To do so, you'll need `poetry`, and an environment with a version of Python greater than or equal to `3.8`.
#### Step 1: Install Poetry
To install `poetry`, simply run:
```bash
pip install poetry
```
For more information on `poetry`, see the [Poetry Website](https://python-poetry.org/).
#### Step 2: Clone Repo and Run `poetry build`
Once you have that installed, clone the repo, then run `poetry build` from the root directory:
```bash
# Clone
git clone https://github.com/prokopto-dev/fabric-plus
# Move into fabric-plus
cd fabric-plus
# Run poetry build
poetry build
# install with pip the newly build wheel file (file name may vary)
pip install dist/fabricplus-0.1.0-py3-none-any.whl
```
## Quick-Start
The following is all the basic *new* features in one small block.
```python3
# importing as Connection
from fabricplus.connection import ConnectionPlus as Connection
# Creating a basic connection
conn_1: Connection = Connection("host1.example.com")
# Creating a jumphost connection, and then a host connection via that jumphost
jumphost_1: Connection = Connection("jumphost.example.com")
conn_via_jh: Connection = Connection("host2.example.com", jump_target=jumphost_1)
# Creating a host that uses SCP for transfers by default
conn_2: Connection("host3.example.com", scp=True)
# Running a get via SCP on the host1/conn_1, which doesn't use SCP by default
conn_1.get("/path/to/some/remote/file", scp=True)
# Running a command as some other user via su
conn_1.su("date", user="someotheruser", password="someuserspasswd")
```
License Addendum
----------------
- [`scp.py`](https://github.com/jbardin/scp.py) is used by import under the LGPL v2.1 license, and this notice is in accordance with that license.
- [`paramiko-jump`](https://github.com/andrewschenck/paramiko-jump) used under Apache License 2.0, see `fabricplus/paramiko_modifications/client.py` for license details.
- [`fabric`](https://github.com/fabric/fabric) is used, and falls under a BSD-2-Clause license, which doesn't restrict its use as an imported library, but is noted here anyways.
Raw data
{
"_id": null,
"home_page": "https://fabricplus.prokopto.dev/",
"name": "fabricplus",
"maintainer": "Courtney Caldwell",
"docs_url": null,
"requires_python": "<4.0,>=3.8.1",
"maintainer_email": "courtneyccaldwell@gmail.com",
"keywords": "fabric, scp, file transfer, python, wrapper, paramiko, connection, transfer",
"author": "Courtney Caldwell",
"author_email": "courtneyccaldwell@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/1d/75/4a784ee1868a14ab7b42b80f3a91be004e662baa755cdf764662fc119f66/fabricplus-1.0.1.tar.gz",
"platform": null,
"description": "![PyPI - Version](https://img.shields.io/pypi/v/fabricplus)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fabricplus)\n![PyPI - License](https://img.shields.io/pypi/l/fabricplus)\n![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/prokopto-dev/fabric-plus/testing.yml?logo=github&label=testing)\n\n# FabricPlus\n\nA drop-in expansion of features in the Fabric library.\n\nAs of version `0.1.0`, those include:\n\n- Jumphost connectivity support\n - `jump_run` command to run commands from the intermediate jumphost\n- SCP Transfer support (including via a jumphost)\n- `su` command support\n\nSee the API documentation on the [FabricPlus Website](https://fabricplus.prokopto.dev/) for more information, as well as \"Getting Started\" guide.\n\nSee [`fabric`](https://github.com/fabric/fabric) for more details on the base `fabric` library, if interested in the underlying behaviors. Some have been changed: see Important Changes and the documentation for more information.\n\n## Note On Changelogs\n\n### v1.0.1\n\n- Bugfix: `su` command had an invalid argument when processing subcommands. Fixed.\n\n## Installation\n\n### pip (via PyPI)\n\nAs of version `0.1.0`, FabricPlus is available via `pip` and is on the Python Package Index.\n\nTo install, simply install `fabricplus`.\n\n```bash\npip install fabricplus\n```\n\n### Building From Source\n\nYou can also build `fabricplus` from source, especially if you want features or updates released outside of a tagged release on `PyPI`.\n\nTo do so, you'll need `poetry`, and an environment with a version of Python greater than or equal to `3.8`.\n\n#### Step 1: Install Poetry\n\nTo install `poetry`, simply run:\n\n```bash\npip install poetry\n```\n\nFor more information on `poetry`, see the [Poetry Website](https://python-poetry.org/).\n\n#### Step 2: Clone Repo and Run `poetry build`\n\nOnce you have that installed, clone the repo, then run `poetry build` from the root directory:\n\n```bash\n# Clone\ngit clone https://github.com/prokopto-dev/fabric-plus\n# Move into fabric-plus\ncd fabric-plus\n# Run poetry build\npoetry build\n# install with pip the newly build wheel file (file name may vary)\npip install dist/fabricplus-0.1.0-py3-none-any.whl\n```\n\n## Quick-Start\n\nThe following is all the basic *new* features in one small block.\n\n```python3\n# importing as Connection\nfrom fabricplus.connection import ConnectionPlus as Connection\n\n# Creating a basic connection\nconn_1: Connection = Connection(\"host1.example.com\")\n\n# Creating a jumphost connection, and then a host connection via that jumphost\njumphost_1: Connection = Connection(\"jumphost.example.com\")\nconn_via_jh: Connection = Connection(\"host2.example.com\", jump_target=jumphost_1)\n\n# Creating a host that uses SCP for transfers by default\nconn_2: Connection(\"host3.example.com\", scp=True)\n\n# Running a get via SCP on the host1/conn_1, which doesn't use SCP by default\nconn_1.get(\"/path/to/some/remote/file\", scp=True)\n\n# Running a command as some other user via su\nconn_1.su(\"date\", user=\"someotheruser\", password=\"someuserspasswd\")\n```\n\nLicense Addendum\n----------------\n- [`scp.py`](https://github.com/jbardin/scp.py) is used by import under the LGPL v2.1 license, and this notice is in accordance with that license.\n- [`paramiko-jump`](https://github.com/andrewschenck/paramiko-jump) used under Apache License 2.0, see `fabricplus/paramiko_modifications/client.py` for license details.\n- [`fabric`](https://github.com/fabric/fabric) is used, and falls under a BSD-2-Clause license, which doesn't restrict its use as an imported library, but is noted here anyways.",
"bugtrack_url": null,
"license": "MIT",
"summary": "A Python 3.8.10+ wrapper to add in SCP functionality for file transfer in Fabric.",
"version": "1.0.1",
"project_urls": {
"Homepage": "https://fabricplus.prokopto.dev/",
"Repository": "https://github.com/prokopto-dev/fabric-plus"
},
"split_keywords": [
"fabric",
" scp",
" file transfer",
" python",
" wrapper",
" paramiko",
" connection",
" transfer"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3a89a7962c8fd1e1d3963f51d0ae31f55d884a16289f8d9739b49df8701ca8d9",
"md5": "6098419ac2ca98012d033c43c8262f92",
"sha256": "bb0150c9620e7b44a57897cc0407ca815e107f0b5d107335a6b23af58a28e7bb"
},
"downloads": -1,
"filename": "fabricplus-1.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6098419ac2ca98012d033c43c8262f92",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8.1",
"size": 12850,
"upload_time": "2024-06-05T14:30:10",
"upload_time_iso_8601": "2024-06-05T14:30:10.359474Z",
"url": "https://files.pythonhosted.org/packages/3a/89/a7962c8fd1e1d3963f51d0ae31f55d884a16289f8d9739b49df8701ca8d9/fabricplus-1.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1d754a784ee1868a14ab7b42b80f3a91be004e662baa755cdf764662fc119f66",
"md5": "69292e860a14419876f8d988a20ca469",
"sha256": "cc2d30b43efddd8a5c5d1cdb2c1dfbf32d49cbf9e9fa8bc2c97843c599ab1d2e"
},
"downloads": -1,
"filename": "fabricplus-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "69292e860a14419876f8d988a20ca469",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8.1",
"size": 12393,
"upload_time": "2024-06-05T14:30:14",
"upload_time_iso_8601": "2024-06-05T14:30:14.739463Z",
"url": "https://files.pythonhosted.org/packages/1d/75/4a784ee1868a14ab7b42b80f3a91be004e662baa755cdf764662fc119f66/fabricplus-1.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-05 14:30:14",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "prokopto-dev",
"github_project": "fabric-plus",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "fabricplus"
}