happypandax-client
A python client library for communicating with HappyPanda X servers
Installing
Install and update using pip
$ pip3 install happypandax-client
Example
Get up and running fast:
import happypandax_client as hpxclient
from pprint import pprint
c = hpxclient.Client("my-client")
c.connect(host="localhost", port=7007)
c.handshake(user = None, password = None)
d = c.send([{"fname": "get_version"}])
pprint(d)
API
Client (name, host="localhost", port=7007, session_id="", ssl_context=None, timeout=60) → A Client instance
A client for communicating with a HappyPanda X server.
Args:
name: name of clienthost: HPX server hostport: HPX server hostsession_id: if provided, this will be the session id used in messagesssl_context: seessl.create_default_contexttimeout: seesocket.settimeout
Client.host (property) → str
Set or return the HPX server host
Client.port (property) → int
Set or return the HPX server port
Client.accepted (property) → bool
Whether this client has been authenticated or not (this value will only be available after connecting)
Client.version (property) → dict
The version message returned from the HPX server (this value will only be available after connecting)
Client.guest_allowed (property) → bool
Whether guests are allowed on the connected HPX server (this value will only be available after connecting)
Client.ready () → bool
Whether this client is ready to exchange messages with the HPX server
Client.alive () → bool
Whether the connection is still alive
Client.connect (self, host=None, port=None) → bool
Connect to HPX server
Args:
host: HPX server host, if set toNonethe provided host on instantiation will be usedport: HPX server port, if set toNonethe provided port on instantiation will be used
Client.handshake (self, user=None, password=None, ignore_err=False, _data={}) → bool
Perfom a handshake with the HPX server
Args:
user: usernamepassword: passwordignore_err: don't raise any errors
Client.request_handshake (self, user=False, password=False, ignore_err=False) → bool
Basically a re-login
Args:
user: username, if set toFalsethe previously provided username will be usedpassword: password, if set toFalsethe previously provided password will be usedignore_err: don't raise any errors
Client.send_bytes (self, data, raise_on_auth=True) → bytes
Send bytedata to server. Receive bytedata from server.
Args:
data: bytes data to send to serverraise_on_auth: raise an error if client is not authenticated
Client.send_raw (self, data, raise_on_auth=True, encoding='utf-8') → dict
Send json-compatible dict to server. Receive json-compatible from server.
Note that this method will not add anything to your message and expects you to add the name and session yourself. See the finalize function.
Args:
data: data to send to server, this is a dictraise_on_auth: raise an error if client is not authenticatedencoding: bytes encoding, there shouldn't be a reason to change this
Client.send (self, data, raise_on_auth=True, encoding='utf-8') → dict
Like Client.send_raw, but as a convenience, this method will wrap your message into the required message structure HPX expects and automatically sets the session and name:
final_msg = {
'session': client.session_id,
'name': client.name,
'data': data, # <--- your message is put here
}
Args:
data: data to send to server, this is usually a list of dictsraise_on_auth: raise an error if client is not authenticatedencoding: bytes encoding, there shouldn't be a reason to change this
Client.close () → None
Close connection with server. Note that it won't be possible to connect again after the connection has been closed.
finalize (name, data, session_id="") → dict
A helper function that will wrap your message up like this:
msg = {
'session': session_id,
'name': name,
'data': data, # <--- your message is put here
}
Args:
name: name of clientdata: data to send to server, this is usually a list of dictssession_id: session id
These are all the exceptions that can be raised by the client:
ClientError(Exception)
Base client exception, all client exceptions will derive from this
ConnectionError(ClientError, ConnectionError)
Server connection error
ServerDisconnectError(ConnectionError, ConnectionAbortedError)
Server disconnected
AuthError(ClientError)
Auth Base Error
AuthRequiredError(AuthError)
AuthWrongCredentialsError(AuthError)
AuthMissingCredentials(AuthError)
JSONParseError(ClientError)
Extra
Using a different json library
It must support being used as a drop-in replacement for the standard json module
import happypandax_client as hpxclient
import ujson
hpxclient.client.json = ujson
Metadata
Release files for happypandax-client 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| happypandax-client-1.0.0.tar.gz | 6.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| happypandax_client-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.0 kB
Release files / happypandax-client-1.0.0.tar.gz
| Download URL | happypandax-client-1.0.0.tar.gz |
|---|---|
| Size | 6.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b1485c4039eb8d07989c43b88fe54af337e8e59b47cbc7a9d87419516ba252d8
|
|
BLAKE2b-256 checksum How to use checksums |
71834f4ccdfc4bd12a6febb77e5422cfa8fa4c813ba7f12c0f6dc358a2b3e2c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.5
|
Release files / happypandax_client-1.0.0-py3-none-any.whl
| Download URL | happypandax_client-1.0.0-py3-none-any.whl |
|---|---|
| Size | 7.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
10796ba034a9526dbd29e1a68a5a9cb8426e7977f193e91adbaf00ca0447e936
|
|
BLAKE2b-256 checksum How to use checksums |
35569c17c7c3bc7b60951c7d728cb7c8abb8b7bd30e43a9b5da4efc0a20bfbd6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.5
|