Pydantic-enhanced SocketIO with FastAPI integration support.
Project description
Pydantic-SocketIO
A Pydantic-enhanced SocketIO library for Python, with FastAPI integration.
Features
⭐️ Pydantic-Enhanced SocketIO: Drop-in replacements for the original python-socketio server and client (sync and async), with built-in Pydantic validation for event data. You can also easily monkey patch this validation to the original socketio server and client.
🪐 Easy Integration with FastAPI: Seamlessly integrates Socket.IO with FastAPI, allowing you to manage event-driven communication effortlessly.
Installation
pip install pydantic-socketio
Usage
Recommended: Pydantic-Enhanced SocketIO Server and Client
Drop-in replacements for the original python-socketio server and client are provided.
The enhanced SocketIO server with Pydantic validation:
from pydantic import BaseModel
import pydantic_socketio
class ChatMessage(BaseModel):
role: str
content: str
# Create an enhanced SocketIO server; use AsyncServer for async server
sio = pydantic_socketio.Server()
# Define an event with Pydantic validation
@sio.event
def message(data: ChatMessage):
print(f"Received chat message from {data.role}: {data.content}")
data.content = data.content.upper()
print(f"Sending uppercase message: {data.content}")
# Emit an event with Pydantic model without any additional conversion
sio.emit("message", data)
# `on` decorator is also supported
@sio.on("custom_event")
def handle_custom_event(data: int):
...
The enhanced SocketIO client with Pydantic validation:
import pydantic_socketio
# Create an enhanced SocketIO client; use AsyncClient for async client
sio = pydantic_socketio.Client()
@sio.event
def ping(data: int):
...
@sio.on("pong")
def handle_pong(data: int):
...
Alternative: Monkey Patching for Original SocketIO
Alternatively, if you want to apply Pydantic validation to the original python-socketio server and client without replacing them, you can use the monkey_patch() method:
from pydantic_socketio import monkey_patch
import socketio
# Apply monkey patch to the original socketio server and client
monkey_patch()
# Now, you can use the original socketio server and client with Pydantic validation
sio = socketio.Server()
@sio.event
def ping(data: int):
print(f"Received ping: {data}")
data += 1
print(f"Sending pong: {data}")
sio.emit("poing", data)
FastAPI Integration
You can easily integrate the enhanced socketio server with FastAPI by using FastAPISocketIO:
from fastapi import FastAPI
from pydantic_socketio import FastAPISocketIO
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
...
# Create a FastAPI socketio server
sio = FastAPISocketIO(app)
@sio.event
async def ping(data: int):
print(f"Received ping: {data}")
data += 1
print(f"Sending pong: {data}")
await sio.emit("pong", data)
...
You can also integrate the SocketIO server manually after FastAPI initialization:
from fastapi import FastAPI
from pydantic_socketio import FastAPISocketIO
sio = FastAPISocketIO()
...
app = FastAPI()
...
# Integrate the SocketIO server to FastAPI
sio.integrate(app)
License
Pydantic-SocketIO © 2025 by Atomie CHEN is licensed under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pydantic_socketio-0.1.0.tar.gz.
File metadata
- Download URL: pydantic_socketio-0.1.0.tar.gz
- Upload date:
- Size: 173.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77c5be5c99de2275aa856eeed1af8b1363da248ab31d32a48969ffed9cc29364
|
|
| MD5 |
5c461a3626aa35a66dd8eed1b6b31b4f
|
|
| BLAKE2b-256 |
b884a4e0ecb1e44d1b6c495d8b03035ae42dba166c68819826644d223d2a98e3
|
File details
Details for the file pydantic_socketio-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pydantic_socketio-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be3b05e5b6108fd5614b1d17cc01b5ead8087918e83640943ad80e84d4ef2a16
|
|
| MD5 |
a238911013d111e29f65d39d50dbc3df
|
|
| BLAKE2b-256 |
5ff368daeb38d1a8c9d037d8890ed046cdc2aee8e7f2a5befb6c0b515c5dc922
|