Skip to main content

Logo

Scruby-Json

Plugin for Scruby - In search methods, returns result as json strings.

Build Status Docs PyPI pyversions PyPI status PyPI version fury.io
Types: Pyrefly Code style: Ruff Format PyPI Downloads GitHub license

Scruby-Json is a plugin for the Scruby project.


Documentation

Requirements

Installation

uv add scruby-json

Usage

Examples

import anyio
from typing import Any
from pydantic import Field
from scruby import Scruby, ScrubyModel, ScrubyConfig
from scruby_json import ReturnJson

# Plugins connection.
ScrubyConfig.plugins = [
    ReturnJson,
]


class Car(ScrubyModel):
    """Car model."""
    brand: str = Field(strict=True, frozen=True)
    model: str = Field(strict=True, frozen=True)
    year: int = Field(strict=True, frozen=True)
    power_reserve: int = Field(strict=True, frozen=True)
    description: str = Field(strict=True)
    # key is always at bottom
    key: str = Field(
        strict=True,
        frozen=True,
        default_factory=lambda data: f"{data['brand']}:{data['model']}",
    )


async def main() -> None:
    """Example."""
    # Get collection `Car`
    car_coll = await Scruby.collection(Car)
    # Create cars.
    for num in range(1, 10):
        car = Car(
            brand="Mazda",
            model=f"EZ-6 {num}",
            year=2025,
            power_reserve=600,
            description="Electric cars are the future of the global automotive industry.",
        )
        await car_coll.add_doc(car)

    # Find one car
    car_json: str | None = await car_coll.plugins.returnJson.find_one(
        filter_fn=lambda doc: doc.brand == "Mazda" and doc.model == "EZ-6 9",
    )
    if car_json is not None:
      print(car_json)
    else:
      print("Not Found")

    # Fand many cars
    car_json_list: list[str] | None = await car_coll.plugins.returnJson.find_many(
        filter_fn=lambda doc: doc.brand == "Mazda",
    )
    if car_json_list is not None:
      print(car_json_list)
    else:
      print("Not Found")

    # Full database deletion.
    # Hint: The main purpose is tests.
    Scruby.napalm()


if __name__ == "__main__":
    anyio.run(main)

Changelog

GPL-3.0

Metadata

Release files for scruby-json 0.6.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for scruby-json 0.6.4
File Interpreter ABI Platform
scruby_json-0.6.4-py3-none-any.whl Python 3 none any Details

Release files / scruby_json-0.6.4-py3-none-any.whl

Download URL scruby_json-0.6.4-py3-none-any.whl
Size 6.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
29c047d2c708af20490f9be9e8695c61a45230a95d9f5c4e341c99f0f1f14554
BLAKE2b-256 checksum
How to use checksums
8a7f3c3c66ae59621432e50354d53f2f04dd49c10a5146b5ee25d976e5655420
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.6.4 This release

1 release file

0.6.3

1 release file

0.6.1

1 release file

0.6.0

1 release file

0.5.1

1 release file

0.5.0

1 release file

0.4.3

1 release file

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page