Skip to main content

Autodoc for socket

Project description

Autodoc for Socketio and Fastapi

Create autodoc for socketio and access using API Router.

Use decorator and method for describe the event running, Use sub for 'subscribe' and use pub for 'publish'. This code also integrated with pydantic, so it will be detect data model in your params if using pydantic. Beside that other type data like array or general type like str, int, etc can be solved. Other type from python typing like Optional and Union especially Union with none type can be solved.

Example Using

To use this import the class SokcetDocumentations, and assign the class to var. Use decorator (@) to create documentation. There is two option to create documentation. First is class method sub to define the event under decorator is subscribe, The second is pub to define the event or method under decorator is to publish. In this bellow is example how to use the code:

from pdc_event_autodoc import SocketDocumentation 

doc = SocketDocumentation()

First time is set your application info like bellow:

doc.set_info_app(title= 'Example App', version= '1.0.0', description= 'This is example documentation of Example App version 1.0.0')

You can decla your params using pydantic model:

class PydanticModel(BaseModel):
    id: int
    name: str
    address: str

# Example using pydantic model
@doc.sub(event_name= 'message', 
        tags= ['SubcribeMessage'], 
        schema= PydanticModel, 
        summary= 'ReceiveMessage', 
        description= 'This is event when we receive a message.')
@sm.on('message')
def receive_message(sid, data: PydanticModel):
    return data.dict()

Or using general type like

@doc.pub(event_name= 'message', 
        tags= ['PublishMessage'],
        summary= 'To Send a Message', 
        description= 'This is event when we want to send a message.')
def sending_message(sid, data: str):
    return sm.emit('message', data)

To preview the documentation, you can using FastAPI or APIRouter. This is an example using APIRouter:

from fastapi import APIRouter
from fastapi.encoders import jsonable_encoder
from pydantic import AnyHttpUrl

from pdc_event_autodoc import SocketDocumentation, get_asyncapi_html

doc = SocketDocumentation()

router = APIRouter(tags= ['Socket Documentations])

@router.get('/socket.json')
def get_socket_json():
    return jsonable_encoder(doc.main_data)

@router.get('/socket_doc')
def get_socket_documentation():
    async_url= AnyHttpUrl('/socket.json', scheme= 'http')
    return get_asyncapi_html(asyncapi_url= async_url, title= 'Notification Service')

In AnyHttpUrl if you using prefix, don't forget to include your prefix.!

The documentattion can be access in path '/socket_doc'.

Notice

Dont't forget to declare your type params (it can be Pydantic model, array, str, int, Optional or Union, etc).

If not be declare it will be detect that your function using Any params.

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

pdc_event_autodoc-0.0.2.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

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

pdc_event_autodoc-0.0.2-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file pdc_event_autodoc-0.0.2.tar.gz.

File metadata

  • Download URL: pdc_event_autodoc-0.0.2.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.9.7 Windows/10

File hashes

Hashes for pdc_event_autodoc-0.0.2.tar.gz
Algorithm Hash digest
SHA256 31f3cf47cc384376f4116a21e6c2ddddd8665cd30de65217a9055d48545ee805
MD5 e5b35502d4b4c47c92f476de70894134
BLAKE2b-256 429241f52bd8149b0e421abaf00b4429cc9c52352a937514225c15cc7cbe08ff

See more details on using hashes here.

File details

Details for the file pdc_event_autodoc-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: pdc_event_autodoc-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.12 CPython/3.9.7 Windows/10

File hashes

Hashes for pdc_event_autodoc-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a7610474e5dff4aae129540b89015aac8421c40418dbd227f8346bdddd892940
MD5 60eb40624a4f94553cf7df3183ca2a14
BLAKE2b-256 b43e51b09aafe75ff201b2ddb400181aff7c30cc1b40526716b5b06dc4683b24

See more details on using hashes here.

Supported by

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