Skip to main content

Seamless

PyPI version

test

Seamless is a Python package for creating and manipulating HTML components. It is working similar to React.js, but in Python.

We have detailed documentation here

Installation

pip install python-seamless

Usage

from seamless import Div, H1, P, Component, StyleObject

class MyComponent(Component):
  def render(self):
    root_style = StyleObject(color="#33343c")
    return Div(style=div_style)(
      H1(
        "Hello, World!",
      ),
      P(
        "Welcome to Seamless!"
      ),
    )
from .components import MyComponent
from seamless.renderer import render

@app.get("/")
def hello_world():
  return render(MyComponent())

Server actions

It's possible to pass a python function as component props.

The current version works with ASGIApp.

class Person(Component):
  def __init__(self, name: str, age: float):
    self.age = age
    self.name = name

  def render(self):
    return Form(on_submit=self.save_age)(
      Div(f"Update the age for {name}"),
      Label(html_for="age")(
        "Age: "
      ),
      Input(
        type="text",
        on_change=self.set_age
      ),
      Button(type="submit")(
        "Submit Age"
      ),
    )

  def set_age(self, event_data: ChangeEvent):
    self.age = event_data.value

  def save_age(self, event_data: SubmitEvent):
    user = get_user()
    user.age = self.age
    save(user)

To call a function on the server include this script in your file

<script src="https://cdn.jsdelivr.net/npm/@python-seamless/core@0.8.4/umd/seamless.init.js"></script>

Import the middleware and mount it to your app

from fastapi import FastAPI
from seamless.middlewares import ASGIMiddleware as SeamlessMiddleware

app = FastAPI()
app.add_middleware(SeamlessMiddleware)

You can pass the following config to the middleware to change the socket path of all seamless endpoints.

app.add_middleware(
  SeamlessMiddleware,
  socket_path="/my/custom/path"
)

Actions use socket.io to communicate between server and client.

TODO

  • Add detailed documentation
  • Add more tests
  • Add support for http actions

Contributing

Feel free to open an issue or a pull request.

Download files

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

Source Distribution

python_seamless-0.9.3.tar.gz (33.7 kB view details)

Uploaded Source

Built Distribution

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

python_seamless-0.9.3-py3-none-any.whl (97.0 kB view details)

Uploaded Python 3

File details

Details for the file python_seamless-0.9.3.tar.gz.

File metadata

  • Download URL: python_seamless-0.9.3.tar.gz
  • Upload date:
  • Size: 33.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for python_seamless-0.9.3.tar.gz
Algorithm Hash digest
SHA256 3dd24ac785b2ae85e863fa38871e2376e4e8bd2450a9500ebd0cec3b5d229c9d
MD5 7423d0cbbab3c3dbe56b43229162ef1b
BLAKE2b-256 91fcb497ea5b49a7717e9396079dca935aa6312894793904fa086bcfb0906d53

See more details on using hashes here.

File details

Details for the file python_seamless-0.9.3-py3-none-any.whl.

File metadata

File hashes

Hashes for python_seamless-0.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7b8c757d916ba99546e1f591168539ae1b025d231f7393f13de21e89168a18f8
MD5 e0e1aa4570e0efa7092495bd3ffbc7d5
BLAKE2b-256 fe3d1fef0d9d315d67cf2326c4f1af971a61b4857f4c2caec6e4d3797afc998d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.9.3 This release

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.6

2 files

0.8.5

2 files

0.8.4

2 files

0.8.3

2 files

0.8.2

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

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