Skip to main content

socpi

A simple async socket framework for python supporting tcp and unix sockets. Allows you to go beyond json by using pickle

How to use it

from socpi import App, Client


# create the app with the socket path for unix sockets
app = App('/run/socpi')

# or use [ip, port] tuple for tcp
# app = App(('0.0.0.0', 4238))

# Specify your endpoints
@app.register
def echo(msg: str) -> str:
    return msg.lower()

# then launch your server, change `SERVER` to false to launch a client
SERVER = True
if SERVER:
    asyncio.run(app.run())

# or launch a client:
async def main():
    # no openapi required, everything is generated from the `app`
    client = Client(app)
    print(await client.echo('fooo'))

if not SERVER:
    asyncio.run(main())

There is a demo of a chat application in the examples directory.

What can it do:

Generators:

You can write and call generators and async generators:

@app.register
def foo():
    print('hello from the other side')
    yield 'foo'

And call them like you would expect:

async for i in client.foo():
    print(i)

Every generator will be turned into an async one!

Exceptions:

Exception handling is completely transparent, just raise and except them as usual.

@app.register
def failer():
    raise Exception('foo')

Handle them as usual, the objects will not be changed (but missing server and broken connections will add some extra ones):

try:
    await client.failer()
except Exception as e:
    print(e) # foo

Serialization:

Anything pickleable will work, as such remote code execution is not a bug, it is a feature. Deploying socpi to the wider internet is not recommended.

A json only version might be a more secure, less capable option.

Metadata

Release files for socpi 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for socpi 0.2.1
File Size Uploaded
socpi-0.2.1.tar.gz 12.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for socpi 0.2.1
File Interpreter ABI Platform
socpi-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 26.4 kB

Release files / socpi-0.2.1.tar.gz

Download URL socpi-0.2.1.tar.gz
Size 12.6 kB
Tags Source
SHA-256 checksum
How to use checksums
ebded5780220439d3ea09e8f6caf17ae1b6803692afb78342c813faf8388e1e2
BLAKE2b-256 checksum
How to use checksums
180b2f6518abac81f35430b7bf99e73f695f0316f83421fbee51562f25200b2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.14 CPython/3.10.5 Linux/5.18.12-264-tkg-pds

Release files / socpi-0.2.1-py3-none-any.whl

Download URL socpi-0.2.1-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ce90b7286dca3ea41771a88ac39925f2fa8105e96d3b77716625b456acf116a2
BLAKE2b-256 checksum
How to use checksums
b67efa39e373e6ec2938138c1eba40f506b74c83a6a4829b24b673544a5606cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.14 CPython/3.10.5 Linux/5.18.12-264-tkg-pds

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page