예제 #1
0
from __future__ import annotations
import typing as t
import sys
from metashape.runtime import get_walker
from metashape.outputs.openapi import emit


class Team:
    name: str
    members: t.List[Person]


class Person:
    team: Team
    name: str
    age: int
    nickname: t.Optional[str]
    parents: t.List[Person]


emit(get_walker(aggressive=True), output=sys.stdout)
예제 #2
0
        paths = ctx.result.result["paths"] = {}
    path_item = paths.get(path)
    if path_item is None:
        path_item = paths[path] = {}
    path_parameters = extract_parameters(_f, path)
    if path_parameters:
        parameters = path_item.get("parameters")
        if parameters is None:
            parameters = path_item["parameters"] = []
            for p in path_parameters:
                parameters.append(
                    {
                        "name": p,
                        "in": "path",
                        "required": True,
                        "schema": {"type": "string"},
                    }
                )
    operation = {method: {"responses": {"200": {"content": {"*/*": {"schema": "<>"}}}}}}
    # description
    # operationID
    # tags
    path_item.update(operation)


paths = [
    Path("/people", "GET", response=t.List[Person]),
    Path("/people/{person_id}", "GET", response=Person),
]
emit(ctx, output=sys.stdout)
예제 #3
0
from metashape.runtime import get_walker
from metashape.outputs.openapi import emit


class Person:
    name: str


w = get_walker(aggressive=True)
emit(w)
예제 #4
0

# self references
class Person:
    name: str
    spouse: t.Optional[Person]  # reverse: spouse,  synmetric one-to-one
    friends: t.Set[Person]  # reverse: friends, synmetric many-to-many
    manager: t.Optional[Person]  # reverse: employees, one side of non-synmetric
    employees: t.Set[Person]  # reverse: manager, another side of non-synmetric


# multiple relationships between two entities
class User:
    name: str
    tweets: t.Set[Tweet]  # reverse: author
    favorites: t.Set[Tweet]  # reverse: favorited


class Tweet:
    text: str
    author: User  # reverse tweets
    favorited: t.Set[User]  # reverse favorites


import sys
from metashape.runtime import get_walker
from metashape.outputs.openapi import emit

w = get_walker([User, Person], aggressive=True, recursive=True)
emit(w, output=sys.stdout)
예제 #5
0
from metashape.outputs.openapi import emit
from metashape.runtime import get_walker


class Person:
    name: str


emit(get_walker(aggressive=True))