Skip to main content

xpipe_client

GitHub license PyPI version

Python client for the XPipe API

Installation

python3 -m pip install xpipe_client

Usage

from xpipe_client import Client

# By default, Client() will read the API key from xpipe_auth on the local filesystem
# and talk to the XPipe API on localhost.  To connect to a remote instance with an API
# key, use Client(token="foo", base_url = "http://servername:21723")
client = Client()

# connection_query accepts glob-based filters on the category, connection name, and connection type
all_connections = client.connection_query()

# Each connection includes uuid, category, connection, and type information
first_connection_uuid = all_connections[0]["uuid"]

# Before any shell commands can be run, a shell session must be started on a connection
client.shell_start(first_connection_uuid)

# Prints {'exitCode': 0, 'stdout': 'hello world', 'stderr': ''}
print(client.shell_exec(first_connection_uuid, "echo hello world"))

# Clean up after ourselves
client.shell_stop(first_connection_uuid)

There's also an async version of the client that can be accessed as AsyncClient:

import asyncio
from xpipe_client import AsyncClient


async def main():
    # By default, AsyncClient() will read the API key from xpipe_auth on the local filesystem
    # and talk to the XPipe API on localhost.  To connect to a remote instance with an API
    # key, use Client(token="foo", base_url = "http://servername:21723")
    client = AsyncClient()

    # connection_query accepts glob-based filters on the category, connection name, and connection type
    all_connections = await client.connection_query()
    
    # Each connection includes uuid, category, connection, and type information
    first_connection_uuid = all_connections[0]["uuid"]
    
    # Before any shell commands can be run, a shell session must be started on a connection
    await client.shell_start(first_connection_uuid)
    
    # Prints {'exitCode': 0, 'stdout': 'hello world', 'stderr': ''}
    print(await client.shell_exec(first_connection_uuid, "echo hello world"))
    
    # Clean up after ourselves
    await client.shell_stop(first_connection_uuid)


if __name__ == "__main__":
    asyncio.run(main())

Tests

To run the test suite, you'll need to define the XPIPE_APIKEY env var. This will allow the two "log in with the ApiKey rather than Local method" tests to work. Here's the recommended method for running the tests with poetry:

cd /path/to/python_xpipe_client
poetry install
XPIPE_APIKEY=<api_key> poetry run pytest

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xpipe_client-0.1.26.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xpipe_client-0.1.26-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file xpipe_client-0.1.26.tar.gz.

File metadata

  • Download URL: xpipe_client-0.1.26.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.0 Windows/10

File hashes

Hashes for xpipe_client-0.1.26.tar.gz
Algorithm Hash digest
SHA256 b45cf3ef082bac2b880e1002c3f37a5cc0bd31973e9eb015339de4f5329e9a46
MD5 4e97bd924c1eda024ec8092290afaf14
BLAKE2b-256 7baeef42045e9b5e46957e01c960007657bd76e826b72165dcd7dcf8e764c113

See more details on using hashes here.

File details

Details for the file xpipe_client-0.1.26-py3-none-any.whl.

File metadata

  • Download URL: xpipe_client-0.1.26-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.0 Windows/10

File hashes

Hashes for xpipe_client-0.1.26-py3-none-any.whl
Algorithm Hash digest
SHA256 e3cfe7511c1268254fb1fd1ac39ece8916715af662439dbc5dd9f2be75dcaefc
MD5 5ed28b6e091d0e133f35f258bac8bff6
BLAKE2b-256 9aff9df2c67f84b0fba703c29c49777a73ebb25e8e728a2468423c5a5f880bb3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.26 This release

2 files

0.1.25

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.9

2 files

0.1.8

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page