mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-12 15:20:51 +08:00
- Run comfyui workflows directly inside other python applications using EmbeddedComfyClient. - Optional telemetry in prompts and models using anonymity preserving Plausible self-hosted or hosted. - Better OpenAPI schema - Basic support for distributed ComfyUI backends. Limitations: no progress reporting, no easy way to start your own distributed backend, requires RabbitMQ as a message broker.
166 lines
5.5 KiB
Python
166 lines
5.5 KiB
Python
# coding: utf-8
|
|
|
|
"""
|
|
Generated by: https://github.com/openapi-json-schema-tools/openapi-json-schema-generator
|
|
"""
|
|
|
|
from comfy.api import api_client, exceptions
|
|
from comfy.api.shared_imports.operation_imports import * # pyright: ignore [reportWildcardImportFromLibrary]
|
|
from comfy.api.paths.upload_image.post.request_body.content.multipart_form_data import schema
|
|
|
|
from .. import path
|
|
from .responses import (
|
|
response_200,
|
|
response_400,
|
|
)
|
|
from . import request_body
|
|
|
|
|
|
__StatusCodeToResponse = typing.TypedDict(
|
|
'__StatusCodeToResponse',
|
|
{
|
|
'200': typing.Type[response_200.ResponseFor200],
|
|
'400': typing.Type[response_400.ResponseFor400],
|
|
}
|
|
)
|
|
_status_code_to_response: __StatusCodeToResponse = {
|
|
'200': response_200.ResponseFor200,
|
|
'400': response_400.ResponseFor400,
|
|
}
|
|
_non_error_status_codes = frozenset({
|
|
'200',
|
|
})
|
|
_error_status_codes = frozenset({
|
|
'400',
|
|
})
|
|
|
|
_all_accept_content_types = (
|
|
"application/json",
|
|
)
|
|
|
|
|
|
class BaseApi(api_client.Api):
|
|
@typing.overload
|
|
def _upload_image(
|
|
self,
|
|
body: typing.Union[
|
|
schema.SchemaDictInput,
|
|
schema.SchemaDict,
|
|
schemas.Unset
|
|
] = schemas.unset,
|
|
*,
|
|
skip_deserialization: typing.Literal[False] = False,
|
|
content_type: typing.Literal["multipart/form-data"] = "multipart/form-data",
|
|
accept_content_types: typing.Tuple[str, ...] = _all_accept_content_types,
|
|
server_index: typing.Optional[int] = None,
|
|
stream: bool = False,
|
|
timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None,
|
|
) -> response_200.ApiResponse: ...
|
|
|
|
@typing.overload
|
|
def _upload_image(
|
|
self,
|
|
body: typing.Union[
|
|
schema.SchemaDictInput,
|
|
schema.SchemaDict,
|
|
schemas.Unset
|
|
] = schemas.unset,
|
|
*,
|
|
skip_deserialization: typing.Literal[True],
|
|
content_type: typing.Literal["multipart/form-data"] = "multipart/form-data",
|
|
accept_content_types: typing.Tuple[str, ...] = _all_accept_content_types,
|
|
server_index: typing.Optional[int] = None,
|
|
stream: bool = False,
|
|
timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None,
|
|
) -> api_response.ApiResponseWithoutDeserialization: ...
|
|
|
|
def _upload_image(
|
|
self,
|
|
body: typing.Union[
|
|
schema.SchemaDictInput,
|
|
schema.SchemaDict,
|
|
schemas.Unset
|
|
] = schemas.unset,
|
|
*,
|
|
skip_deserialization: bool = False,
|
|
content_type: typing.Literal["multipart/form-data"] = "multipart/form-data",
|
|
accept_content_types: typing.Tuple[str, ...] = _all_accept_content_types,
|
|
server_index: typing.Optional[int] = None,
|
|
stream: bool = False,
|
|
timeout: typing.Optional[typing.Union[int, float, typing.Tuple]] = None,
|
|
):
|
|
"""
|
|
(UI) Upload an image.
|
|
:param skip_deserialization: If true then api_response.response will be set but
|
|
api_response.body and api_response.headers will not be deserialized into schema
|
|
class instances
|
|
"""
|
|
used_path = path
|
|
headers = self._get_headers(accept_content_types=accept_content_types)
|
|
# TODO add cookie handling
|
|
|
|
fields, serialized_body = self._get_fields_and_body(
|
|
request_body=request_body.RequestBody,
|
|
body=body,
|
|
content_type=content_type,
|
|
headers=headers
|
|
)
|
|
host = self.api_client.configuration.get_server_url(
|
|
"servers", server_index
|
|
)
|
|
|
|
raw_response = self.api_client.call_api(
|
|
resource_path=used_path,
|
|
method='post',
|
|
host=host,
|
|
headers=headers,
|
|
fields=fields,
|
|
body=serialized_body,
|
|
stream=stream,
|
|
timeout=timeout,
|
|
)
|
|
|
|
if skip_deserialization:
|
|
skip_deser_response = api_response.ApiResponseWithoutDeserialization(response=raw_response)
|
|
self._verify_response_status(skip_deser_response)
|
|
return skip_deser_response
|
|
|
|
status = str(raw_response.status)
|
|
if status in _non_error_status_codes:
|
|
status_code = typing.cast(
|
|
typing.Literal[
|
|
'200',
|
|
],
|
|
status
|
|
)
|
|
return _status_code_to_response[status_code].deserialize(
|
|
raw_response, self.api_client.schema_configuration)
|
|
elif status in _error_status_codes:
|
|
error_status_code = typing.cast(
|
|
typing.Literal[
|
|
'400',
|
|
],
|
|
status
|
|
)
|
|
error_response = _status_code_to_response[error_status_code].deserialize(
|
|
raw_response, self.api_client.schema_configuration)
|
|
raise exceptions.ApiException(
|
|
status=error_response.response.status,
|
|
reason=error_response.response.reason,
|
|
api_response=error_response
|
|
)
|
|
|
|
response = api_response.ApiResponseWithoutDeserialization(response=raw_response)
|
|
self._verify_response_status(response)
|
|
return response
|
|
|
|
|
|
class UploadImage(BaseApi):
|
|
# this class is used by api classes that refer to endpoints with operationId.snakeCase fn names
|
|
upload_image = BaseApi._upload_image
|
|
|
|
|
|
class ApiForPost(BaseApi):
|
|
# this class is used by api classes that refer to endpoints by path and http method names
|
|
post = BaseApi._upload_image
|