Source code for kittycad.models.ai_plugin_manifest

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")


[docs]@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)
[docs] 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 if auth is not UNSET: field_dict["auth"] = auth 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
[docs] @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())
[docs] def __getitem__(self, key: str) -> Any: return self.additional_properties[key]
[docs] def __setitem__(self, key: str, value: Any) -> None: self.additional_properties[key] = value
[docs] def __delitem__(self, key: str) -> None: del self.additional_properties[key]
[docs] def __contains__(self, key: str) -> bool: return key in self.additional_properties