class Parameter:
@staticmethod
def from_json(json: Any) -> Parameter:
return Parameter(
json["id"],
json["name"],
json["qname"],
json.get("default_value", None),
ParameterAssignment[json.get("assigned_by", "POSITION_OR_NAME")],
json.get("is_public", True),
ParameterDocumentation.from_dict(json.get("docstring", {})),
)
def __hash__(self) -> int:
return hash(
(
self.id,
self.name,
self.qname,
self.default_value,
self.assigned_by,
self.is_public,
self.documentation,
)
)
def __init__(
self,
id_: str,
name: str,
qname: str,
default_value: Optional[str],
assigned_by: ParameterAssignment,
is_public: bool,
documentation: ParameterDocumentation,
) -> None:
self.id: str = id_
self.name: str = name
self.qname: str = qname
self.default_value: Optional[str] = default_value
self.assigned_by: ParameterAssignment = assigned_by
self.is_public: bool = is_public
self.documentation = documentation
self.type: Optional[AbstractType] = create_type(documentation)
def is_optional(self) -> bool:
return self.default_value is not None
def is_required(self) -> bool:
return self.default_value is None
def to_json(self) -> Any:
return {
"id": self.id,
"name": self.name,
"qname": self.qname,
"default_value": self.default_value,
"assigned_by": self.assigned_by.name,
"is_public": self.is_public,
"docstring": self.documentation.to_dict(),
"type": self.type.to_json() if self.type is not None else {},
}
def __repr__(self) -> str:
return "Parameter(id=" + self.id + ")"