Skip to content

feat/Add new cli to generate schema as yaml #6

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ def load_requirements(file: Union[str, Path]) -> List[str]:
packages=find_packages(),
entry_points={
"console_scripts": [
"etl-uvicorn=unstructured_platform_plugins.etl_uvicorn.main:cmd",
"etl-validate=unstructured_platform_plugins.validate_api:validate_api",
"etl-uvicorn=unstructured_platform_plugins.cli.etl_uvicorn.main:cmd",
"etl-validate=unstructured_platform_plugins.cli.validate.main:validate_api",
"etl-schema=unstructured_platform_plugins.cli.schema_yaml.main:generate_yaml",
],
},
install_requires=load_requirements("requirements/cli.in")
Expand Down
2 changes: 1 addition & 1 deletion test/test_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from pydantic import BaseModel

import unstructured_platform_plugins.schema.json_schema as js
from unstructured_platform_plugins.etl_uvicorn.utils import get_input_schema
from unstructured_platform_plugins.cli.utils import get_input_schema
from unstructured_platform_plugins.schema.model import is_validate_dict


Expand Down
2 changes: 1 addition & 1 deletion test/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
from pydantic import BaseModel
from uvicorn.importer import import_from_string

from unstructured_platform_plugins.etl_uvicorn import utils
from unstructured_platform_plugins.cli import utils


def test_get_func_simple():
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
from pydantic import BaseModel
from uvicorn.importer import import_from_string

from unstructured_platform_plugins.etl_uvicorn.utils import (
from unstructured_platform_plugins.cli.utils import (
get_func,
get_input_schema,
get_output_sig,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from uvicorn.config import LOGGING_CONFIG, Config, RawConfigParser
from uvicorn.main import main, run

from unstructured_platform_plugins.etl_uvicorn.api_generator import generate_fast_api
from unstructured_platform_plugins.cli.etl_uvicorn.api_generator import generate_fast_api


@dataclass
Expand Down
25 changes: 25 additions & 0 deletions unstructured_platform_plugins/cli/schema_yaml/main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from typing import Optional

import click
from uvicorn.importer import import_from_string
from yaml import Dumper, dump

from unstructured_platform_plugins.cli.utils import get_func, get_schema_dict


@click.command()
@click.argument("app", envvar="UVICORN_APP")
@click.option(
"--method-name",
required=False,
type=str,
default=None,
help="If passed in instance is a class, what method to wrap. "
"Will fall back to __call__ if none is provided.",
)
def generate_yaml(app: str, method_name: Optional[str] = None) -> None:
instance = import_from_string(app)
func = get_func(instance=instance, method_name=method_name)
schemas = get_schema_dict(func)
output = dump(schemas, Dumper=Dumper)
print(output)
Loading