Source code for annofabapi.pydantic_models.annotation_props_for_editor
"""
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
The version of the OpenAPI document: 1.0.0
Generated by OpenAPI Generator (https://openapi-generator.tech)
Do not edit the class manually.
"""
from __future__ import annotations
import json
import pprint
import re # noqa: F401
from typing import Any, ClassVar, Dict, List, Set
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
from typing_extensions import Self
[docs]
class AnnotationPropsForEditor(BaseModel):
"""
アノテーションエディタ用のアノテーション毎のプロパティです。<br /> ここに含まれているデータはアノテーション結果に反映されず、エディタが利用するために存在します。 エディタ用のデータであるため、たとえば`can_delete`や`can_edit_data`が`false`でも、APIによる編集は妨げません。<br /> ここで定義されているデータを利用して動作を変えるかどうかは、エディタによって異なります。
"""
can_delete: StrictBool | None = Field(default=None, description="アノテーションがエディタ上で削除できるかどうか。 trueの場合削除可能。")
can_edit_data: StrictBool | None = Field(
default=None,
description="アノテーションの本体のデータを編集できるかどうか。 trueの場合編集可能。 2022/09現在、この値を利用しているエディタは存在しません。",
)
can_edit_additional: StrictBool | None = Field(
default=None,
description="アノテーションの付加情報を編集できるかどうか。 trueの場合編集可能。 2022/09現在、この値を利用しているエディタは存在しません。",
)
description: StrictStr | None = Field(
default=None, description="アノテーションについての人間可読な説明。 2022/09現在、この値を利用しているエディタは存在しません。"
)
tags: List[StrictStr] | None = Field(
default=None,
description="アノテーションに付与されている機械可読・人間可読なタグの列。 2022/09現在、この値を利用しているエディタは存在しません",
)
etc: Any | None = Field(default=None, description="上記以外の任意のJson構造")
__properties: ClassVar[List[str]] = ["can_delete", "can_edit_data", "can_edit_additional", "description", "tags", "etc"]
model_config = ConfigDict(
populate_by_name=True,
validate_assignment=True,
protected_namespaces=(),
)
[docs]
def to_str(self) -> str:
"""Returns the string representation of the model using alias"""
return pprint.pformat(self.model_dump(by_alias=True))
[docs]
def to_json(self) -> str:
"""Returns the JSON representation of the model using alias"""
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
return json.dumps(self.to_dict())
[docs]
@classmethod
def from_json(cls, json_str: str) -> Self | None:
"""Create an instance of AnnotationPropsForEditor from a JSON string"""
return cls.from_dict(json.loads(json_str))
[docs]
def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.
This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:
* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
excluded_fields: Set[str] = set([])
_dict = self.model_dump(
by_alias=True,
exclude=excluded_fields,
exclude_none=True,
)
# set to None if etc (nullable) is None
# and model_fields_set contains the field
if self.etc is None and "etc" in self.model_fields_set:
_dict["etc"] = None
return _dict
[docs]
@classmethod
def from_dict(cls, obj: Dict[str, Any] | None) -> Self | None:
"""Create an instance of AnnotationPropsForEditor from a dict"""
if obj is None:
return None
if not isinstance(obj, dict):
return cls.model_validate(obj)
_obj = cls.model_validate(
{
"can_delete": obj.get("can_delete"),
"can_edit_data": obj.get("can_edit_data"),
"can_edit_additional": obj.get("can_edit_additional"),
"description": obj.get("description"),
"tags": obj.get("tags"),
"etc": obj.get("etc"),
}
)
return _obj