Beispiel #1
0
    def __init__(self):
        self.db = MongoClient(config.environ['database']).goatwars
        self.goats = self.db.goats
        self.factory = dataclass_factory.Factory()
        self.sync_all_goats()

        self.field = list()
Beispiel #2
0
@dataclass
class Book:
    title: str
    price: int
    author: str = "Unknown author"


data = {
    "title": "Fahrenheit 451",
    "price": 100,
}
invalid_data = {
    "title": "1984",
    "price": -100,
}


def validate_book(book: Book) -> Book:
    if not book.title:
        raise ValueError("Empty title")
    if book.price <= 0:
        raise ValueError("InvalidPrice")
    return book


factory = dataclass_factory.Factory(
    schemas={Book: Schema(post_parse=validate_book)})
book = factory.load(data, Book)  # No error
other_book = factory.load(invalid_data, Book)  # ValueError: InvalidPrice
Beispiel #3
0
from dataclasses import dataclass

import dataclass_factory
from dataclass_factory import Schema


@dataclass
class Book:
    title: str
    price: int
    extra: str = ""


data = {
    "title": "Fahrenheit 451",
    "price": 100,
    "extra": "some extra string"
}

# using `only`:
factory = dataclass_factory.Factory(schemas={Book: Schema(only=["title", "price"])})
book: Book = factory.load(data, Book)  # Same as Book(title="Fahrenheit 451", price=100)
serialized = factory.dump(book)  # no `extra` key will be in serialized

# using `exclude`
factory = dataclass_factory.Factory(schemas={Book: Schema(exclude=["extra"])})
book: Book = factory.load(data, Book)  # Same as Book(title="Fahrenheit 451", price=100)
serialized = factory.dump(book)  # no `extra` key will be in serialized
Beispiel #4
0
from dataclasses import dataclass

import dataclass_factory


@dataclass
class Person:
    name: str


@dataclass
class Book:
    title: str
    price: int
    author: Person


data = {
    "title": "Fahrenheit 451",
    "price": 100,
    "author": {
        "name": "Ray Bradbury"
    }
}

factory = dataclass_factory.Factory()

# Book(title="Fahrenheit 451", price=100, author=Person("Ray Bradbury"))
book: Book = factory.load(data, Book)
serialized = factory.dump(book)
Beispiel #5
0
from dataclasses import dataclass

import dataclass_factory
from dataclass_factory import Schema


@dataclass
class Book:
    title: str
    price: int
    _total: int = 0


data = {
    "title": "Fahrenheit 451",
    "price": 100,
    "_total": 1000,
}

factory = dataclass_factory.Factory(default_schema=Schema(skip_internal=True))
book: Book = factory.load(data, Book)  # Same as Book(title="Fahrenheit 451", price=100)
serialized = factory.dump(book)  # no `_total` key will be produced

Beispiel #6
0
 def __init__(self):
     self.factory = dataclass_factory.Factory()
     self.sync_all_users()
Beispiel #7
0
from dataclasses import dataclass

import dataclass_factory
from dataclass_factory import Schema


@dataclass
class Book:
    title: str
    price: int


data = {
    "title": "Fahrenheit 451",
    "book price": 100,
}

book_schema = Schema(name_mapping={"price": "book price"})
factory = dataclass_factory.Factory(schemas={Book: book_schema})
book: Book = factory.load(data, Book)
serialized = factory.dump(book)

print(book)
Beispiel #8
0
from dataclasses import dataclass

import dataclass_factory
from dataclass_factory import Schema


@dataclass
class Period:
    from_: int
    to_: int


data = {
    "from_": 1,
    "to_": 100,
}

factory = dataclass_factory.Factory(default_schema=Schema(
    trim_trailing_underscore=False))
period = factory.load(data, Period)
factory.dump(period)
Beispiel #9
0
    def load_schema(schema, args: dict) -> dict:
        factory = dataclass_factory.Factory()
        selection = factory.load(args, schema)
        serialized: dict = factory.dump(selection)

        return serialized
Beispiel #10
0
from dataclass_factory import Schema


@dataclass
class Book:
    title: str
    price: int
    _author: str = "Unknown author"


data = {
    "title": "Fahrenheit 451",
    "price": 100,
}


class DataSchema(Schema[Any]):
    skip_internal = True

    def post_parse(self, data):
        print("parsing done")
        return data


factory = dataclass_factory.Factory(
    schemas={Book: DataSchema(trim_trailing_underscore=False)})

book: Book = factory.load(
    data, Book)  # Same as Book(title="Fahrenheit 451", price=100)
serialized = factory.dump(book)
Beispiel #11
0
from typing import Optional, List

from dataclasses import dataclass, field

import dataclass_factory
from dataclass_factory import Schema


@dataclass
class Book:
    title: str
    price: Optional[int] = None
    authors: List[str] = field(default_factory=list)


data = {
    "title": "Fahrenheit 451",
}

factory = dataclass_factory.Factory(default_schema=Schema(omit_default=True))
book = Book(title="Fahrenheit 451", price=None, authors=[])
serialized = factory.dump(
    book)  # no `price` and `authors` key will be produced
assert data == serialized
Beispiel #12
0
 def __init__(self):
     self.db = MongoClient(config.environ['database']).library
     self.books = self.db.books
     self.factory = dataclass_factory.Factory()
     self.sync_all_books()
Beispiel #13
0
    year: str = ""
    rated: str = ""
    released: str = ""
    runtime: str = ""
    genre: str = ""
    director: str = ""
    writer: str = ""
    actors: str = ""
    plot: str = ""
    language: str = ""
    country: str = ""
    awards: str = ""
    poster: str = ""
    metascore: str = ""
    imdb_rating: str = ""
    imdb_votes: str = ""
    imdb_id: str = ""
    type: str = ""
    total_seasons: str = ""
    response: str = ""


@dataclass
class Movies:
    movies_list: List[UniqueMovie] = field(default_factory=list)


mapping_factory = dataclass_factory.Factory(schemas={UniqueMovie: Schema(
    name_mapping={"imdb_rating": "imdbRating", "imdb_votes": "imdbVotes", "imdb_id": "imdbID",
                  "total_seasons": "totalSeasons"}, name_style=NameStyle.camel)})