Skip to main content

Common webapp scaffolding.

Project description

lassen

40.4881° N, 121.5049° W

Core utilities for MonkeySee web applications.

Not guaranteed to be backwards compatible, use at your own risk.

Structure

Stores: Each datamodel is expected to have its own store. Base classes that provide standard logic are provided by lassen.store

  • StoreBase: Base class for all stores
  • StoreFilterMixin: Mixin for filtering stores that specify an additional schema to use to filter

Schemas: Each datamodel should define a Model class (SQLAlchemy base object) and a series of Schema objects (Pydantic) that allow the Store to serialize the models. These schemas are also often used for direct CRUD referencing in the API layer.

We use a base Stub file to generate these schemas from a centralized definition.

poetry run generate-lassen

Datasets: Optional huggingface datasets processing utilities. Only installed under the lassen[datasets] extra. These provide support for:

  • batch_to_examples: Iterate and manipulate each example separately, versus over nested key-based lists.
  • examples_to_batch: Takes the output of a typehinted element-wise batch and converts into the format needed for dataset insertion. If datasets can't automatically interpret the type of the fields, also provide automatic casting based on the typehinted dataclass.
from lassen.datasets import batch_to_examples, examples_to_batch
import pandas as pd

@dataclass
class BatchInsertion:
    texts: list[str]

def batch_process(examples):
    new_examples : list[BatchInsertion] = []
    for example in batch_to_examples(examples):
        new_examples.append(
            BatchInsertion(
                example["raw_text"].split()
            )
        )

    # datasets won't be able to typehint a dataset that starts with an empty example, so we use our explicit schema to cast the data
    return examples_to_batch(new_examples, BatchInsertion, explicit_schema=True)

df = pd.DataFrame(
    [
        {"raw_text": ""},
        {"raw_text": "This is a test"},
        {"raw_text": "This is another test"},
    ]
)

dataset = Dataset.from_pandas(df)

dataset = dataset.map(
    batch_process,
    batched=True,
    batch_size=1,
    num_proc=1,
    remove_columns=dataset.column_names,
)

Migrations: Lassen includes a templated alembic.init and env.py file. Client applications just need to have a migrations folder within their project root. After this you can swap poetry run alembic with poetry run migrate.

poetry run migrate upgrade head

Settings: Application settings should subclass our core settings. This provides a standard way to load settings from environment variables and includes common database keys.

from lassen.core.config import CoreSettings, register_settings

@register_settings
class ClientSettings(CoreSettings):
    pass

Schemas: For helper schemas when returning results via API, see lassen.schema.

Development

poetry install --extras "datasets"

createuser lassen
createdb -O lassen lassen_db
createdb -O lassen lassen_test_db

Unit Tests:

poetry run pytest

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

lassen-0.2.0.tar.gz (41.5 kB view details)

Uploaded Source

Built Distribution

lassen-0.2.0-py3-none-any.whl (45.5 kB view details)

Uploaded Python 3

File details

Details for the file lassen-0.2.0.tar.gz.

File metadata

  • Download URL: lassen-0.2.0.tar.gz
  • Upload date:
  • Size: 41.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.10.4 Darwin/22.5.0

File hashes

Hashes for lassen-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ab0706ce21ce1167f3b828b62915cb46865eb436e041cae04a6e0b233260ca54
MD5 48df2036cf7e1b34db62fac2b7d3eb4b
BLAKE2b-256 8bdd449993e91106fb0809db41ac76180866edaa25c57e172b90502cef8fa908

See more details on using hashes here.

File details

Details for the file lassen-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: lassen-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 45.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.1 CPython/3.10.4 Darwin/22.5.0

File hashes

Hashes for lassen-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54250aef6706fa1c3e0e20e336a1ba8f55a6c7fd03ae4d3b97ba84ee5f1f3b43
MD5 b3a35f2247f47f2be0d4046878bf1d3e
BLAKE2b-256 225f50b8e95bd8fac318b076775ce5f4eff816658b1d47b2afb061c9a63a6139

See more details on using hashes here.

Supported by

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