Skip to main content

Provides integrations of classic libs with Falcon web framework

Project description

Classic Falcon Integration

Предоставляет простую интеграцию веб-фреймворка Falcon, orjson и classic-error-handling.

Установка

pip install classic-falcon-integration

Quickstart

from falcon import App, Request, Response
from pydantic import BaseModel
import waitress

from classic.components import component
from classic.falcon_integration import register_all
from classic import db_tools


class Pet(BaseModel):
    id: int
    name: str
    age: int


class FilterPets(BaseModel):
    name__contains: list[str] | None = None
    age__le: int | None = None
    age__gt: int | None = None
    id: int | None = None


class NewPet(BaseModel):
    name: str
    age: int


@component
class PetsResource:
    db: db_tools.Engine

    def on_get(self, request: Request, response: Response):
        # Валидация по спецификации отключена по умолчанию,
        # потому вызов валидации обязательно добавлять вручную.
        # Валидацию лучше сего проводить через model_validate,
        # так как далее данные все равно будут переданы в виде dict
        FilterPets.model_validate(request.params)

        # Здесь приведен пример работы с БД с classic-db-tools,
        # но здесь может быть что угодно
        with self.db:
            response.media = self.db.queries.filter_pets(
                **request.params
            ).return_as(
                db_tools.ToCls(Pet, id='id'),
                returns=Pet,
            ).many()

    def on_post(self, request: Request, response: Response):
        NewPet.model_validate(request.media)
        with self.db:
            response.media = self.db.queries.save_pet(
                **request.media,
            )


if __name__ == '__main__':
    app = App()
    app.add_route('/api/pets', PetsResource())
    register_all(app)

    waitress.serve(
        app,
        host='127.0.0.1',
        port='8000',
    )

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

classic_falcon_integration-2.0.1.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

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

classic_falcon_integration-2.0.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file classic_falcon_integration-2.0.1.tar.gz.

File metadata

File hashes

Hashes for classic_falcon_integration-2.0.1.tar.gz
Algorithm Hash digest
SHA256 0306c65469258ba834c97d67fbdc0b3f0dda6c8c327980fe51dab9902c6f33fa
MD5 78bd78fe35ff9bb42c064097dfa54312
BLAKE2b-256 03d32f383c5fc7d0871a5253334d4ffd024218518a2290676614502a1cd368cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for classic_falcon_integration-2.0.1.tar.gz:

Publisher: publish.yml on variasov/classic-falcon-integration

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file classic_falcon_integration-2.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for classic_falcon_integration-2.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eecb8482a5d3dd4c3fb8959d21434454212e028e26bac7216cae328eef30375f
MD5 37659c207e9c50165bc002daf8c8595d
BLAKE2b-256 7c8454a3b47e5bb828fea035c178d92cf740190dbfc02fd3c7903b18150bd33b

See more details on using hashes here.

Provenance

The following attestation bundles were made for classic_falcon_integration-2.0.1-py3-none-any.whl:

Publisher: publish.yml on variasov/classic-falcon-integration

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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