use super::{
BuiltinSignature, Param, ShapeFieldDescriptor, Ty, TY_ANY, TY_BOOL, TY_DICT, TY_DICT_OR_NIL,
TY_INT, TY_LIST, TY_NIL, TY_STRING, TY_STRING_OR_NIL,
};
const SCHEMA_RECOVER_ENVELOPE: Ty = Ty::Shape(&[
ShapeFieldDescriptor::new("ok", TY_BOOL),
ShapeFieldDescriptor::new("data", Ty::Union(&[Ty::Generic("T"), TY_NIL])),
ShapeFieldDescriptor::new("raw_text", TY_STRING),
ShapeFieldDescriptor::new("error", TY_STRING),
ShapeFieldDescriptor::new("error_category", TY_STRING_OR_NIL),
ShapeFieldDescriptor::new("attempts", TY_INT),
ShapeFieldDescriptor::new("stage", TY_STRING),
ShapeFieldDescriptor::new("repaired", TY_BOOL),
]);
const TY_SCHEMA_VALUE: Ty = Ty::Union(&[TY_DICT, Ty::Apply("Schema", &[TY_ANY])]);
pub(crate) const SIGNATURES: &[BuiltinSignature] = &[
BuiltinSignature {
name: "is_type",
params: &[
Param::new("value", TY_ANY),
Param::new("schema", TY_SCHEMA_VALUE),
],
returns: TY_BOOL,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_check",
params: &[
Param::new("value", TY_ANY),
Param::new("schema", Ty::SchemaOf("T")),
],
returns: Ty::Apply("Result", &[Ty::Generic("T"), TY_STRING]),
type_params: &["T"],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_expect",
params: &[
Param::new("value", TY_ANY),
Param::new("schema", Ty::SchemaOf("T")),
Param::optional("apply_defaults", TY_BOOL),
],
returns: Ty::Generic("T"),
type_params: &["T"],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_extend",
params: &[
Param::new("base", TY_DICT),
Param::new("overrides", TY_DICT),
],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_from_json_schema",
params: &[Param::new("json_schema", TY_DICT)],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_from_openapi_schema",
params: &[Param::new("openapi_schema", TY_DICT)],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_is",
params: &[
Param::new("value", TY_ANY),
Param::new("schema", TY_SCHEMA_VALUE),
],
returns: TY_BOOL,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_of",
params: &[Param::new("type_alias", TY_ANY)],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_omit",
params: &[
Param::new("schema", TY_SCHEMA_VALUE),
Param::new("keys", TY_LIST),
],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_parse",
params: &[
Param::new("value", TY_ANY),
Param::new("schema", Ty::SchemaOf("T")),
],
returns: Ty::Apply("Result", &[Ty::Generic("T"), TY_STRING]),
type_params: &["T"],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_partial",
params: &[Param::new("schema", TY_SCHEMA_VALUE)],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_pick",
params: &[
Param::new("schema", TY_SCHEMA_VALUE),
Param::new("keys", TY_LIST),
],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_recover",
params: &[
Param::new("text", TY_STRING),
Param::new("schema", Ty::SchemaOf("T")),
Param::optional("options", TY_DICT_OR_NIL),
],
returns: SCHEMA_RECOVER_ENVELOPE,
type_params: &["T"],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_to_json_schema",
params: &[Param::new("schema", TY_SCHEMA_VALUE)],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
BuiltinSignature {
name: "schema_to_openapi_schema",
params: &[Param::new("schema", TY_SCHEMA_VALUE)],
returns: TY_DICT,
type_params: &[],
has_rest: false,
where_clauses: &[],
},
];