136 lines
4.6 KiB
Python
136 lines
4.6 KiB
Python
from typing import Any, Dict, List, Type, TypeVar, Union
|
|
|
|
import attr
|
|
|
|
from ..models.ai_plugin_api import AiPluginApi
|
|
from ..models.ai_plugin_auth import AiPluginAuth
|
|
from ..types import UNSET, Unset
|
|
|
|
SA = TypeVar("SA", bound="AiPluginManifest")
|
|
|
|
|
|
@attr.s(auto_attribs=True)
|
|
class AiPluginManifest:
|
|
"""AI plugin manifest.
|
|
|
|
This is used for OpenAI's ChatGPT plugins. You can read more about them [here](https://platform.openai.com/docs/plugins/getting-started/plugin-manifest).
|
|
""" # noqa: E501
|
|
|
|
api: Union[Unset, AiPluginApi] = UNSET
|
|
auth: Union[Unset, AiPluginAuth] = UNSET
|
|
contact_email: Union[Unset, str] = UNSET
|
|
description_for_human: Union[Unset, str] = UNSET
|
|
description_for_model: Union[Unset, str] = UNSET
|
|
legal_info_url: Union[Unset, str] = UNSET
|
|
logo_url: Union[Unset, str] = UNSET
|
|
name_for_human: Union[Unset, str] = UNSET
|
|
name_for_model: Union[Unset, str] = UNSET
|
|
schema_version: Union[Unset, str] = UNSET
|
|
|
|
additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
|
|
|
|
def to_dict(self) -> Dict[str, Any]:
|
|
if not isinstance(self.api, Unset):
|
|
api = self.api
|
|
if not isinstance(self.auth, Unset):
|
|
auth = self.auth
|
|
contact_email = self.contact_email
|
|
description_for_human = self.description_for_human
|
|
description_for_model = self.description_for_model
|
|
legal_info_url = self.legal_info_url
|
|
logo_url = self.logo_url
|
|
name_for_human = self.name_for_human
|
|
name_for_model = self.name_for_model
|
|
schema_version = self.schema_version
|
|
|
|
field_dict: Dict[str, Any] = {}
|
|
field_dict.update(self.additional_properties)
|
|
field_dict.update({})
|
|
if api is not UNSET:
|
|
field_dict["api"] = api.to_dict()
|
|
if auth is not UNSET:
|
|
field_dict["auth"] = auth.to_dict()
|
|
if contact_email is not UNSET:
|
|
field_dict["contact_email"] = contact_email
|
|
if description_for_human is not UNSET:
|
|
field_dict["description_for_human"] = description_for_human
|
|
if description_for_model is not UNSET:
|
|
field_dict["description_for_model"] = description_for_model
|
|
if legal_info_url is not UNSET:
|
|
field_dict["legal_info_url"] = legal_info_url
|
|
if logo_url is not UNSET:
|
|
field_dict["logo_url"] = logo_url
|
|
if name_for_human is not UNSET:
|
|
field_dict["name_for_human"] = name_for_human
|
|
if name_for_model is not UNSET:
|
|
field_dict["name_for_model"] = name_for_model
|
|
if schema_version is not UNSET:
|
|
field_dict["schema_version"] = schema_version
|
|
|
|
return field_dict
|
|
|
|
@classmethod
|
|
def from_dict(cls: Type[SA], src_dict: Dict[str, Any]) -> SA:
|
|
d = src_dict.copy()
|
|
_api = d.pop("api", UNSET)
|
|
api: Union[Unset, AiPluginApi]
|
|
if isinstance(_api, Unset):
|
|
api = UNSET
|
|
else:
|
|
api = _api # type: ignore[arg-type]
|
|
|
|
_auth = d.pop("auth", UNSET)
|
|
auth: Union[Unset, AiPluginAuth]
|
|
if isinstance(_auth, Unset):
|
|
auth = UNSET
|
|
else:
|
|
auth = _auth # type: ignore[arg-type]
|
|
|
|
contact_email = d.pop("contact_email", UNSET)
|
|
|
|
description_for_human = d.pop("description_for_human", UNSET)
|
|
|
|
description_for_model = d.pop("description_for_model", UNSET)
|
|
|
|
legal_info_url = d.pop("legal_info_url", UNSET)
|
|
|
|
logo_url = d.pop("logo_url", UNSET)
|
|
|
|
name_for_human = d.pop("name_for_human", UNSET)
|
|
|
|
name_for_model = d.pop("name_for_model", UNSET)
|
|
|
|
schema_version = d.pop("schema_version", UNSET)
|
|
|
|
ai_plugin_manifest = cls(
|
|
api=api,
|
|
auth=auth,
|
|
contact_email=contact_email,
|
|
description_for_human=description_for_human,
|
|
description_for_model=description_for_model,
|
|
legal_info_url=legal_info_url,
|
|
logo_url=logo_url,
|
|
name_for_human=name_for_human,
|
|
name_for_model=name_for_model,
|
|
schema_version=schema_version,
|
|
)
|
|
|
|
ai_plugin_manifest.additional_properties = d
|
|
return ai_plugin_manifest
|
|
|
|
@property
|
|
def additional_keys(self) -> List[str]:
|
|
return list(self.additional_properties.keys())
|
|
|
|
def __getitem__(self, key: str) -> Any:
|
|
return self.additional_properties[key]
|
|
|
|
def __setitem__(self, key: str, value: Any) -> None:
|
|
self.additional_properties[key] = value
|
|
|
|
def __delitem__(self, key: str) -> None:
|
|
del self.additional_properties[key]
|
|
|
|
def __contains__(self, key: str) -> bool:
|
|
return key in self.additional_properties
|