kittycad.models.web_socket_request

Classes

OptionDebug(**data)

Return information about the connected instance

OptionHeaders(**data)

Authentication header request.

OptionMetricsResponse(**data)

The response to a metrics collection request from the server.

OptionModelingCmdBatchReq(**data)

A sequence of modeling requests.

OptionModelingCmdReq(**data)

The modeling command request.

OptionPing(**data)

The client-to-server Ping to ensure the WebSocket stays alive.

OptionSdpOffer(**data)

The SDP offer request.

OptionTrickleIce(**data)

The trickle ICE candidate request.

class kittycad.models.web_socket_request.OptionDebug(**data)[source][source]

Return information about the connected instance

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'model_config': 'ClassVar[ConfigDict]', 'type': typing.Literal['debug']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 78[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'cls': <class 'kittycad.models.web_socket_request.OptionDebug'>, 'config': {'title': 'OptionDebug'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionDebug'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionDebug:94897792878528', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'debug', 'schema': {'expected': ['debug'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDebug', 'type': 'model-fields'}, 'type': 'model'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'type': FieldInfo(annotation=Literal['debug'], required=False, default='debug')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d3c07c0,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f755a7a2010,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "debug",                                             },                                             expected_py: None,                                             name: "literal['debug']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 1,             },         ),         has_extra: false,         root_model: false,         name: "OptionDebug",     }, ), definitions=[])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionDebug", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa1c50,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f755a7a2010,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "debug": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f7556057480,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f755a7a2010,                                                 ),                                             ],                                         },                                         expected_repr: "'debug'",                                         name: "literal['debug']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['debug']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionDebug",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d3c07c0,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionDebug",     }, ), definitions=[], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, type: Literal['debug'] = 'debug') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'type': FieldInfo(annotation=Literal['debug'], required=False, default='debug')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['debug'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self

class kittycad.models.web_socket_request.OptionHeaders(**data)[source][source]

Authentication header request.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'headers': typing.Dict[str, str], 'model_config': 'ClassVar[ConfigDict]', 'type': typing.Literal['headers']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 86[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'cls': <class 'kittycad.models.web_socket_request.OptionHeaders'>, 'config': {'title': 'OptionHeaders'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionHeaders'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionHeaders:94897794121728', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'headers': {'metadata': {}, 'schema': {'keys_schema': {'type': 'str'}, 'type': 'dict', 'values_schema': {'type': 'str'}}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'headers', 'schema': {'expected': ['headers'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionHeaders', 'type': 'model-fields'}, 'type': 'model'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'headers': FieldInfo(annotation=Dict[str, str], required=True), 'type': FieldInfo(annotation=Literal['headers'], required=False, default='headers')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d4f0000,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f755b10e2b8,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "headers",                                             },                                             expected_py: None,                                             name: "literal['headers']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "headers": SerField {                         key_py: Py(                             0x00007f755b10e2b8,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             Dict(                                 DictSerializer {                                     key_serializer: Str(                                         StrSerializer,                                     ),                                     value_serializer: Str(                                         StrSerializer,                                     ),                                     filter: SchemaFilter {                                         include: None,                                         exclude: None,                                     },                                     name: "dict[str, str]",                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 2,             },         ),         has_extra: false,         root_model: false,         name: "OptionHeaders",     }, ), definitions=[])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionHeaders", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "headers",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "headers",                                         py_key: Py(                                             0x00007f7556fa1d40,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b10e2b8,                         ),                         validator: Dict(                             DictValidator {                                 strict: false,                                 key_validator: Str(                                     StrValidator {                                         strict: false,                                         coerce_numbers_to_str: false,                                     },                                 ),                                 value_validator: Str(                                     StrValidator {                                         strict: false,                                         coerce_numbers_to_str: false,                                     },                                 ),                                 min_length: None,                                 max_length: None,                                 name: "dict[str,str]",                             },                         ),                         frozen: false,                     },                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa1e30,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f755b10e2b8,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "headers": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f7556056ac0,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f755b10e2b8,                                                 ),                                             ],                                         },                                         expected_repr: "'headers'",                                         name: "literal['headers']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['headers']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionHeaders",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d4f0000,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionHeaders",     }, ), definitions=[], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, headers: Dict[str, str], type: Literal['headers'] = 'headers') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

headers: Dict[str, str][source]
json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'headers': FieldInfo(annotation=Dict[str, str], required=True), 'type': FieldInfo(annotation=Literal['headers'], required=False, default='headers')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['headers'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self

class kittycad.models.web_socket_request.OptionMetricsResponse(**data)[source][source]

The response to a metrics collection request from the server.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'metrics': <class 'kittycad.models.client_metrics.ClientMetrics'>, 'model_config': 'ClassVar[ConfigDict]', 'type': typing.Literal['metrics_response']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 68[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'cls': <class 'kittycad.models.web_socket_request.OptionMetricsResponse'>, 'config': {'title': 'OptionMetricsResponse'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionMetricsResponse'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionMetricsResponse:94897792884464', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'metrics': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.client_metrics.ClientMetrics'>, 'config': {'title': 'ClientMetrics'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.client_metrics.ClientMetrics'>>]}, 'ref': 'kittycad.models.client_metrics.ClientMetrics:94897789952560', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'rtc_frame_height': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_frame_width': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_frames_decoded': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_frames_dropped': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_frames_per_second': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_frames_received': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_freeze_count': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_jitter_sec': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_keyframes_decoded': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_packets_lost': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_pause_count': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_pli_count': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_stun_rtt_sec': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_total_freezes_duration_sec': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rtc_total_pauses_duration_sec': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'ClientMetrics', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'metrics_response', 'schema': {'expected': ['metrics_response'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMetricsResponse', 'type': 'model-fields'}, 'type': 'model'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'metrics': FieldInfo(annotation=ClientMetrics, required=True), 'type': FieldInfo(annotation=Literal['metrics_response'], required=False, default='metrics_response')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d3c1ef0,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "metrics": SerField {                         key_py: Py(                             0x00007f7556fa26d0,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             Prebuilt(                                 PrebuiltSerializer {                                     schema_serializer: Py(                                         0x00007f7556712150,                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f755605c570,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "metrics_response",                                             },                                             expected_py: None,                                             name: "literal['metrics_response']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 2,             },         ),         has_extra: false,         root_model: false,         name: "OptionMetricsResponse",     }, ), definitions=[])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionMetricsResponse", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "metrics",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "metrics",                                         py_key: Py(                                             0x00007f7556fa1bc0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f7556fa26d0,                         ),                         validator: Prebuilt(                             PrebuiltValidator {                                 schema_validator: Py(                                     0x0000564f1cd8a6a0,                                 ),                             },                         ),                         frozen: false,                     },                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa1cb0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f755605c570,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "metrics_response": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f7556057e40,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f755605c570,                                                 ),                                             ],                                         },                                         expected_repr: "'metrics_response'",                                         name: "literal['metrics_response']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['metrics_response']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionMetricsResponse",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d3c1ef0,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionMetricsResponse",     }, ), definitions=[], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, metrics: kittycad.models.client_metrics.ClientMetrics, type: Literal['metrics_response'] = 'metrics_response') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

metrics: ClientMetrics[source]
model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'metrics': FieldInfo(annotation=ClientMetrics, required=True), 'type': FieldInfo(annotation=Literal['metrics_response'], required=False, default='metrics_response')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['metrics_response'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self

class kittycad.models.web_socket_request.OptionModelingCmdBatchReq(**data)[source][source]

A sequence of modeling requests. If any request fails, following requests will not be tried.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'batch_id': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'model_config': 'ClassVar[ConfigDict]', 'requests': typing.List[kittycad.models.modeling_cmd_req.ModelingCmdReq], 'responses': <class 'bool'>, 'type': typing.Literal['modeling_cmd_batch_req']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 46[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'definitions': [{'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.axis_direction_pair.AxisDirectionPair'>, 'config': {'title': 'AxisDirectionPair'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.axis_direction_pair.AxisDirectionPair'>>]}, 'ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'cls': <enum 'Axis'>, 'members': [Axis.Y, Axis.Z], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.axis.Axis:94897786844256', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'direction': {'metadata': {}, 'schema': {'cls': <enum 'Direction'>, 'members': [Direction.POSITIVE, Direction.NEGATIVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.direction.Direction:94897784207408', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'AxisDirectionPair', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.transform.Transform'>, 'config': {'title': 'Transform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.transform.Transform'>>]}, 'ref': 'kittycad.models.transform.Transform:94897785816496', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'replicate': {'metadata': {}, 'schema': {'default': True, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'rotation': {'metadata': {}, 'schema': {'default': {'angle': {'unit': 'degrees', 'value': 0.0}, 'axis': {'x': 0.0, 'y': 0.0, 'z': 1.0}, 'origin': {'type': 'local'}}, 'schema': {'cls': <class 'kittycad.models.rotation.Rotation'>, 'config': {'title': 'Rotation'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.rotation.Rotation'>>]}, 'ref': 'kittycad.models.rotation.Rotation:94897785811024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'axis': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937245008]", 'root_model': True, 'schema': {'choices': {'custom': {'cls': <class 'kittycad.models.origin_type.OptionCustom'>, 'config': {'title': 'OptionCustom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionCustom'>>]}, 'ref': 'kittycad.models.origin_type.OptionCustom:94897785526736', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'origin': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'custom', 'schema': {'expected': ['custom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCustom', 'type': 'model-fields'}, 'type': 'model'}, 'global': {'cls': <class 'kittycad.models.origin_type.OptionGlobal'>, 'config': {'title': 'OptionGlobal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionGlobal'>>]}, 'ref': 'kittycad.models.origin_type.OptionGlobal:94897781840752', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'global', 'schema': {'expected': ['global'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGlobal', 'type': 'model-fields'}, 'type': 'model'}, 'local': {'cls': <class 'kittycad.models.origin_type.OptionLocal'>, 'config': {'title': 'OptionLocal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionLocal'>>]}, 'ref': 'kittycad.models.origin_type.OptionLocal:94897781837328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'local', 'schema': {'expected': ['local'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLocal', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'Rotation', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'scale': {'metadata': {}, 'schema': {'default': {'x': 1.0, 'y': 1.0, 'z': 1.0}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'default'}, 'type': 'model-field'}, 'translate': {'metadata': {}, 'schema': {'default': {'x': 0.0, 'y': 0.0, 'z': 0.0}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'Transform', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <enum 'AnnotationLineEnd'>, 'members': [AnnotationLineEnd.NONE, AnnotationLineEnd.ARROW], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'sub_type': 'str', 'type': 'enum'}, {'cls': <class 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d'>, 'config': {'title': 'TransformByForPoint3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d'>>]}, 'ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'is_local': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937245008]", 'root_model': True, 'schema': {'choices': {'custom': {'cls': <class 'kittycad.models.origin_type.OptionCustom'>, 'config': {'title': 'OptionCustom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionCustom'>>]}, 'ref': 'kittycad.models.origin_type.OptionCustom:94897785526736', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'origin': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'custom', 'schema': {'expected': ['custom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCustom', 'type': 'model-fields'}, 'type': 'model'}, 'global': {'cls': <class 'kittycad.models.origin_type.OptionGlobal'>, 'config': {'title': 'OptionGlobal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionGlobal'>>]}, 'ref': 'kittycad.models.origin_type.OptionGlobal:94897781840752', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'global', 'schema': {'expected': ['global'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGlobal', 'type': 'model-fields'}, 'type': 'model'}, 'local': {'cls': <class 'kittycad.models.origin_type.OptionLocal'>, 'config': {'title': 'OptionLocal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionLocal'>>]}, 'ref': 'kittycad.models.origin_type.OptionLocal:94897781837328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'local', 'schema': {'expected': ['local'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLocal', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'property': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'set': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'TransformByForPoint3d', 'type': 'model-fields'}, 'type': 'model'}], 'schema': {'cls': <class 'kittycad.models.web_socket_request.OptionModelingCmdBatchReq'>, 'config': {'title': 'OptionModelingCmdBatchReq'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionModelingCmdBatchReq'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionModelingCmdBatchReq:94897792992432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'batch_id': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'requests': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.modeling_cmd_req.ModelingCmdReq'>, 'config': {'title': 'ModelingCmdReq'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd_req.ModelingCmdReq'>>]}, 'ref': 'kittycad.models.modeling_cmd_req.ModelingCmdReq:94897790693200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'cmd': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141934485840]", 'root_model': True, 'schema': {'choices': {'add_hole_from_offset': {'cls': <class 'kittycad.models.modeling_cmd.OptionAddHoleFromOffset'>, 'config': {'title': 'OptionAddHoleFromOffset'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionAddHoleFromOffset'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionAddHoleFromOffset:94897790426640', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'offset': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'add_hole_from_offset', 'schema': {'expected': ['add_hole_from_offset'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionAddHoleFromOffset', 'type': 'model-fields'}, 'type': 'model'}, 'boolean_intersection': {'cls': <class 'kittycad.models.modeling_cmd.OptionBooleanIntersection'>, 'config': {'title': 'OptionBooleanIntersection'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionBooleanIntersection'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionBooleanIntersection:94897790387392', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'solid_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'boolean_intersection', 'schema': {'expected': ['boolean_intersection'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBooleanIntersection', 'type': 'model-fields'}, 'type': 'model'}, 'boolean_subtract': {'cls': <class 'kittycad.models.modeling_cmd.OptionBooleanSubtract'>, 'config': {'title': 'OptionBooleanSubtract'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionBooleanSubtract'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionBooleanSubtract:94897790398544', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'target_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tool_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'boolean_subtract', 'schema': {'expected': ['boolean_subtract'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBooleanSubtract', 'type': 'model-fields'}, 'type': 'model'}, 'boolean_union': {'cls': <class 'kittycad.models.modeling_cmd.OptionBooleanUnion'>, 'config': {'title': 'OptionBooleanUnion'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionBooleanUnion'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionBooleanUnion:94897790376368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'solid_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'boolean_union', 'schema': {'expected': ['boolean_union'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBooleanUnion', 'type': 'model-fields'}, 'type': 'model'}, 'camera_drag_end': {'cls': <class 'kittycad.models.modeling_cmd.OptionCameraDragEnd'>, 'config': {'title': 'OptionCameraDragEnd'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCameraDragEnd'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCameraDragEnd:94897790023904', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'interaction': {'metadata': {}, 'schema': {'cls': <enum 'CameraDragInteractionType'>, 'members': [CameraDragInteractionType.PAN, CameraDragInteractionType.ROTATE, CameraDragInteractionType.ROTATETRACKBALL, CameraDragInteractionType.ZOOM], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_drag_interaction_type.CameraDragInteractionType:94897785544464', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'camera_drag_end', 'schema': {'expected': ['camera_drag_end'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionCameraDragEnd', 'type': 'model-fields'}, 'type': 'model'}, 'camera_drag_move': {'cls': <class 'kittycad.models.modeling_cmd.OptionCameraDragMove'>, 'config': {'title': 'OptionCameraDragMove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCameraDragMove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCameraDragMove:94897790010320', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'interaction': {'metadata': {}, 'schema': {'cls': <enum 'CameraDragInteractionType'>, 'members': [CameraDragInteractionType.PAN, CameraDragInteractionType.ROTATE, CameraDragInteractionType.ROTATETRACKBALL, CameraDragInteractionType.ZOOM], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_drag_interaction_type.CameraDragInteractionType:94897785544464', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'camera_drag_move', 'schema': {'expected': ['camera_drag_move'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionCameraDragMove', 'type': 'model-fields'}, 'type': 'model'}, 'camera_drag_start': {'cls': <class 'kittycad.models.modeling_cmd.OptionCameraDragStart'>, 'config': {'title': 'OptionCameraDragStart'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCameraDragStart'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCameraDragStart:94897790001056', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'interaction': {'metadata': {}, 'schema': {'cls': <enum 'CameraDragInteractionType'>, 'members': [CameraDragInteractionType.PAN, CameraDragInteractionType.ROTATE, CameraDragInteractionType.ROTATETRACKBALL, CameraDragInteractionType.ZOOM], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_drag_interaction_type.CameraDragInteractionType:94897785544464', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'camera_drag_start', 'schema': {'expected': ['camera_drag_start'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionCameraDragStart', 'type': 'model-fields'}, 'type': 'model'}, 'center_of_mass': {'cls': <class 'kittycad.models.modeling_cmd.OptionCenterOfMass'>, 'config': {'title': 'OptionCenterOfMass'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCenterOfMass'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCenterOfMass:94897790195840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'center_of_mass', 'schema': {'expected': ['center_of_mass'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCenterOfMass', 'type': 'model-fields'}, 'type': 'model'}, 'close_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionClosePath'>, 'config': {'title': 'OptionClosePath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionClosePath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionClosePath:94897783918368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'close_path', 'schema': {'expected': ['close_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionClosePath', 'type': 'model-fields'}, 'type': 'model'}, 'curve_get_control_points': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveGetControlPoints'>, 'config': {'title': 'OptionCurveGetControlPoints'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveGetControlPoints'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveGetControlPoints:94897789112896', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'curve_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_get_control_points', 'schema': {'expected': ['curve_get_control_points'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveGetControlPoints', 'type': 'model-fields'}, 'type': 'model'}, 'curve_get_end_points': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveGetEndPoints'>, 'config': {'title': 'OptionCurveGetEndPoints'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveGetEndPoints'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveGetEndPoints:94897789252368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'curve_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_get_end_points', 'schema': {'expected': ['curve_get_end_points'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveGetEndPoints', 'type': 'model-fields'}, 'type': 'model'}, 'curve_get_type': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveGetType'>, 'config': {'title': 'OptionCurveGetType'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveGetType'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveGetType:94897789105008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'curve_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_get_type', 'schema': {'expected': ['curve_get_type'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveGetType', 'type': 'model-fields'}, 'type': 'model'}, 'curve_set_constraint': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveSetConstraint'>, 'config': {'title': 'OptionCurveSetConstraint'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveSetConstraint'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveSetConstraint:94897789037552', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'constraint_bound': {'metadata': {}, 'schema': {'cls': <enum 'PathComponentConstraintBound'>, 'members': [PathComponentConstraintBound.UNCONSTRAINED, PathComponentConstraintBound.PARTIALLY_CONSTRAINED, PathComponentConstraintBound.FULLY_CONSTRAINED], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.path_component_constraint_bound.PathComponentConstraintBound:94897789462704', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'constraint_type': {'metadata': {}, 'schema': {'cls': <enum 'PathComponentConstraintType'>, 'members': [PathComponentConstraintType.UNCONSTRAINED, PathComponentConstraintType.VERTICAL, PathComponentConstraintType.HORIZONTAL, PathComponentConstraintType.EQUAL_LENGTH, PathComponentConstraintType.PARALLEL, PathComponentConstraintType.ANGLE_BETWEEN], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.path_component_constraint_type.PathComponentConstraintType:94897789436192', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_set_constraint', 'schema': {'expected': ['curve_set_constraint'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveSetConstraint', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_center_to_scene': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToScene'>, 'config': {'title': 'OptionDefaultCameraCenterToScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToScene'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToScene:94897790272688', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'camera_movement': {'metadata': {}, 'schema': {'default': 'vantage', 'schema': {'cls': <enum 'CameraMovement'>, 'members': [CameraMovement.VANTAGE, CameraMovement.NONE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_movement.CameraMovement:94897785518896', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_center_to_scene', 'schema': {'expected': ['default_camera_center_to_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraCenterToScene', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_center_to_selection': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToSelection'>, 'config': {'title': 'OptionDefaultCameraCenterToSelection'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToSelection'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToSelection:94897790263232', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'camera_movement': {'metadata': {}, 'schema': {'default': 'vantage', 'schema': {'cls': <enum 'CameraMovement'>, 'members': [CameraMovement.VANTAGE, CameraMovement.NONE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_movement.CameraMovement:94897785518896', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_center_to_selection', 'schema': {'expected': ['default_camera_center_to_selection'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraCenterToSelection', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_focus_on': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraFocusOn'>, 'config': {'title': 'OptionDefaultCameraFocusOn'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraFocusOn'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraFocusOn:94897790218656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_focus_on', 'schema': {'expected': ['default_camera_focus_on'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'uuid': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraFocusOn', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_get_settings': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetSettings'>, 'config': {'title': 'OptionDefaultCameraGetSettings'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetSettings'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraGetSettings:94897790033664', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_get_settings', 'schema': {'expected': ['default_camera_get_settings'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraGetSettings', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_get_view': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetView'>, 'config': {'title': 'OptionDefaultCameraGetView'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetView'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraGetView:94897790040016', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_get_view', 'schema': {'expected': ['default_camera_get_view'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraGetView', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_look_at': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraLookAt'>, 'config': {'title': 'OptionDefaultCameraLookAt'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraLookAt'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraLookAt:94897790054256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_look_at', 'schema': {'expected': ['default_camera_look_at'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'vantage': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraLookAt', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_perspective_settings': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraPerspectiveSettings'>, 'config': {'title': 'OptionDefaultCameraPerspectiveSettings'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraPerspectiveSettings'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraPerspectiveSettings:94897790069360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'fov_y': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_perspective_settings', 'schema': {'expected': ['default_camera_perspective_settings'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'vantage': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'z_far': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'z_near': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraPerspectiveSettings', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_set_orthographic': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetOrthographic'>, 'config': {'title': 'OptionDefaultCameraSetOrthographic'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetOrthographic'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraSetOrthographic:94897790245536', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_set_orthographic', 'schema': {'expected': ['default_camera_set_orthographic'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraSetOrthographic', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_set_perspective': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetPerspective'>, 'config': {'title': 'OptionDefaultCameraSetPerspective'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetPerspective'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraSetPerspective:94897790252976', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'parameters': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.perspective_camera_parameters.PerspectiveCameraParameters'>, 'config': {'title': 'PerspectiveCameraParameters'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.perspective_camera_parameters.PerspectiveCameraParameters'>>]}, 'ref': 'kittycad.models.perspective_camera_parameters.PerspectiveCameraParameters:94897789500400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'fov_y': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'z_far': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'z_near': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'PerspectiveCameraParameters', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_set_perspective', 'schema': {'expected': ['default_camera_set_perspective'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraSetPerspective', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_set_view': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetView'>, 'config': {'title': 'OptionDefaultCameraSetView'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetView'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraSetView:94897790046384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_set_view', 'schema': {'expected': ['default_camera_set_view'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'view': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.camera_view_state.CameraViewState'>, 'config': {'title': 'CameraViewState'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.camera_view_state.CameraViewState'>>]}, 'ref': 'kittycad.models.camera_view_state.CameraViewState:94897785545456', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'eye_offset': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'fov_y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'is_ortho': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'ortho_scale_enabled': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'ortho_scale_factor': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'pivot_position': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'pivot_rotation': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point4d.Point4d'>, 'config': {'title': 'Point4d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point4d.Point4d'>>]}, 'ref': 'kittycad.models.point4d.Point4d:94897782027840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'w': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point4d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'world_coord_system': {'metadata': {}, 'schema': {'cls': <enum 'WorldCoordinateSystem'>, 'members': [WorldCoordinateSystem.RIGHT_HANDED_UP_Z, WorldCoordinateSystem.RIGHT_HANDED_UP_Y], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.world_coordinate_system.WorldCoordinateSystem:94897785538704', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'CameraViewState', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraSetView', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_zoom': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraZoom'>, 'config': {'title': 'OptionDefaultCameraZoom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraZoom'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraZoom:94897790095024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'magnitude': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_zoom', 'schema': {'expected': ['default_camera_zoom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraZoom', 'type': 'model-fields'}, 'type': 'model'}, 'density': {'cls': <class 'kittycad.models.modeling_cmd.OptionDensity'>, 'config': {'title': 'OptionDensity'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDensity'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDensity:94897790170304', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'material_mass': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'material_mass_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitMass'>, 'members': [UnitMass.G, UnitMass.KG, UnitMass.LB], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_mass.UnitMass:94897788671168', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitDensity'>, 'members': [UnitDensity.LB_FT3, UnitDensity.KG_M3], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_density.UnitDensity:94897788688240', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'density', 'schema': {'expected': ['density'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDensity', 'type': 'model-fields'}, 'type': 'model'}, 'disable_dry_run': {'cls': <class 'kittycad.models.modeling_cmd.OptionDisableDryRun'>, 'config': {'title': 'OptionDisableDryRun'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDisableDryRun'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDisableDryRun:94897789070400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'disable_dry_run', 'schema': {'expected': ['disable_dry_run'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDisableDryRun', 'type': 'model-fields'}, 'type': 'model'}, 'edge_lines_visible': {'cls': <class 'kittycad.models.modeling_cmd.OptionEdgeLinesVisible'>, 'config': {'title': 'OptionEdgeLinesVisible'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEdgeLinesVisible'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEdgeLinesVisible:94897789638464', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'hidden': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'edge_lines_visible', 'schema': {'expected': ['edge_lines_visible'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEdgeLinesVisible', 'type': 'model-fields'}, 'type': 'model'}, 'enable_dry_run': {'cls': <class 'kittycad.models.modeling_cmd.OptionEnableDryRun'>, 'config': {'title': 'OptionEnableDryRun'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEnableDryRun'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEnableDryRun:94897789064176', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'enable_dry_run', 'schema': {'expected': ['enable_dry_run'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEnableDryRun', 'type': 'model-fields'}, 'type': 'model'}, 'enable_sketch_mode': {'cls': <class 'kittycad.models.modeling_cmd.OptionEnableSketchMode'>, 'config': {'title': 'OptionEnableSketchMode'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEnableSketchMode'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEnableSketchMode:94897789049600', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'adjust_camera': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'animated': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'ortho': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'planar_normal': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'enable_sketch_mode', 'schema': {'expected': ['enable_sketch_mode'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEnableSketchMode', 'type': 'model-fields'}, 'type': 'model'}, 'engine_util_evaluate_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionEngineUtilEvaluatePath'>, 'config': {'title': 'OptionEngineUtilEvaluatePath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEngineUtilEvaluatePath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEngineUtilEvaluatePath:94897785817488', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_json': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 't': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'engine_util_evaluate_path', 'schema': {'expected': ['engine_util_evaluate_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEngineUtilEvaluatePath', 'type': 'model-fields'}, 'type': 'model'}, 'entity_circular_pattern': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityCircularPattern'>, 'config': {'title': 'OptionEntityCircularPattern'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityCircularPattern'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityCircularPattern:94897788831472', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'arc_degrees': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'num_repetitions': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'rotate_duplicates': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_circular_pattern', 'schema': {'expected': ['entity_circular_pattern'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityCircularPattern', 'type': 'model-fields'}, 'type': 'model'}, 'entity_clone': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityClone'>, 'config': {'title': 'OptionEntityClone'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityClone'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityClone:94897788791392', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_clone', 'schema': {'expected': ['entity_clone'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityClone', 'type': 'model-fields'}, 'type': 'model'}, 'entity_fade': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityFade'>, 'config': {'title': 'OptionEntityFade'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityFade'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityFade:94897788958928', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'duration_seconds': {'metadata': {}, 'schema': {'default': 0.4, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'fade_in': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_fade', 'schema': {'expected': ['entity_fade'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityFade', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_all_child_uuids': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetAllChildUuids'>, 'config': {'title': 'OptionEntityGetAllChildUuids'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetAllChildUuids'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetAllChildUuids:94897790159968', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_all_child_uuids', 'schema': {'expected': ['entity_get_all_child_uuids'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetAllChildUuids', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_child_uuid': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetChildUuid'>, 'config': {'title': 'OptionEntityGetChildUuid'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetChildUuid'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetChildUuid:94897790151200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'child_index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_child_uuid', 'schema': {'expected': ['entity_get_child_uuid'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetChildUuid', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_distance': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetDistance'>, 'config': {'title': 'OptionEntityGetDistance'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetDistance'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetDistance:94897788780496', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'distance_type': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937782608]", 'root_model': True, 'schema': {'choices': {'euclidean': {'cls': <class 'kittycad.models.distance_type.OptionEuclidean'>, 'config': {'title': 'OptionEuclidean'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.distance_type.OptionEuclidean'>>]}, 'ref': 'kittycad.models.distance_type.OptionEuclidean:94897789348768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'euclidean', 'schema': {'expected': ['euclidean'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEuclidean', 'type': 'model-fields'}, 'type': 'model'}, 'on_axis': {'cls': <class 'kittycad.models.distance_type.OptionOnAxis'>, 'config': {'title': 'OptionOnAxis'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.distance_type.OptionOnAxis'>>]}, 'ref': 'kittycad.models.distance_type.OptionOnAxis:94897784051968', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'cls': <enum 'GlobalAxis'>, 'members': [GlobalAxis.X, GlobalAxis.Y, GlobalAxis.Z], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.global_axis.GlobalAxis:94897789391904', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'on_axis', 'schema': {'expected': ['on_axis'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionOnAxis', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'entity_id1': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'entity_id2': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_distance', 'schema': {'expected': ['entity_get_distance'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetDistance', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_num_children': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetNumChildren'>, 'config': {'title': 'OptionEntityGetNumChildren'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetNumChildren'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetNumChildren:94897790143328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_num_children', 'schema': {'expected': ['entity_get_num_children'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetNumChildren', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_parent_id': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetParentId'>, 'config': {'title': 'OptionEntityGetParentId'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetParentId'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetParentId:94897790135456', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_parent_id', 'schema': {'expected': ['entity_get_parent_id'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetParentId', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_sketch_paths': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetSketchPaths'>, 'config': {'title': 'OptionEntityGetSketchPaths'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetSketchPaths'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetSketchPaths:94897788772624', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_sketch_paths', 'schema': {'expected': ['entity_get_sketch_paths'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetSketchPaths', 'type': 'model-fields'}, 'type': 'model'}, 'entity_linear_pattern': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityLinearPattern'>, 'config': {'title': 'OptionEntityLinearPattern'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityLinearPattern'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityLinearPattern:94897788818992', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'num_repetitions': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'spacing': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_linear_pattern', 'schema': {'expected': ['entity_linear_pattern'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityLinearPattern', 'type': 'model-fields'}, 'type': 'model'}, 'entity_linear_pattern_transform': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityLinearPatternTransform'>, 'config': {'title': 'OptionEntityLinearPatternTransform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityLinearPatternTransform'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityLinearPatternTransform:94897789497984', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'transform': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'schema_ref': 'kittycad.models.transform.Transform:94897785816496', 'type': 'definition-ref'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'transforms': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'items_schema': {'schema_ref': 'kittycad.models.transform.Transform:94897785816496', 'type': 'definition-ref'}, 'type': 'list'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_linear_pattern_transform', 'schema': {'expected': ['entity_linear_pattern_transform'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityLinearPatternTransform', 'type': 'model-fields'}, 'type': 'model'}, 'entity_make_helix': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelix'>, 'config': {'title': 'OptionEntityMakeHelix'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelix'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMakeHelix:94897788846272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'cylinder_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'is_clockwise': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'length': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'revolutions': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 0.0}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_make_helix', 'schema': {'expected': ['entity_make_helix'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMakeHelix', 'type': 'model-fields'}, 'type': 'model'}, 'entity_make_helix_from_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromEdge'>, 'config': {'title': 'OptionEntityMakeHelixFromEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromEdge:94897788881808', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'is_clockwise': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'length': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'revolutions': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 0.0}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_make_helix_from_edge', 'schema': {'expected': ['entity_make_helix_from_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMakeHelixFromEdge', 'type': 'model-fields'}, 'type': 'model'}, 'entity_make_helix_from_params': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromParams'>, 'config': {'title': 'OptionEntityMakeHelixFromParams'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromParams'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromParams:94897788860784', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'is_clockwise': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'length': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'revolutions': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 0.0}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_make_helix_from_params', 'schema': {'expected': ['entity_make_helix_from_params'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMakeHelixFromParams', 'type': 'model-fields'}, 'type': 'model'}, 'entity_mirror': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMirror'>, 'config': {'title': 'OptionEntityMirror'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMirror'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMirror:94897788899760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'point': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_mirror', 'schema': {'expected': ['entity_mirror'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMirror', 'type': 'model-fields'}, 'type': 'model'}, 'entity_mirror_across_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMirrorAcrossEdge'>, 'config': {'title': 'OptionEntityMirrorAcrossEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMirrorAcrossEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMirrorAcrossEdge:94897788913504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_mirror_across_edge', 'schema': {'expected': ['entity_mirror_across_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMirrorAcrossEdge', 'type': 'model-fields'}, 'type': 'model'}, 'entity_set_opacity': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntitySetOpacity'>, 'config': {'title': 'OptionEntitySetOpacity'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntitySetOpacity'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntitySetOpacity:94897788950192', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'opacity': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_set_opacity', 'schema': {'expected': ['entity_set_opacity'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntitySetOpacity', 'type': 'model-fields'}, 'type': 'model'}, 'export': {'cls': <class 'kittycad.models.modeling_cmd.OptionExport'>, 'config': {'title': 'OptionExport'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExport'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExport:94897790124176', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141939028048]", 'root_model': True, 'schema': {'choices': {'fbx': {'cls': <class 'kittycad.models.output_format3d.OptionFbx'>, 'config': {'title': 'OptionFbx'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionFbx'>>]}, 'ref': 'kittycad.models.output_format3d.OptionFbx:94897787675632', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'FbxStorage'>, 'members': [FbxStorage.ASCII, FbxStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.fbx_storage.FbxStorage:94897787657376', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'fbx', 'schema': {'expected': ['fbx'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFbx', 'type': 'model-fields'}, 'type': 'model'}, 'gltf': {'cls': <class 'kittycad.models.output_format3d.OptionGltf'>, 'config': {'title': 'OptionGltf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionGltf'>>]}, 'ref': 'kittycad.models.output_format3d.OptionGltf:94897787658368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'presentation': {'metadata': {}, 'schema': {'cls': <enum 'GltfPresentation'>, 'members': [GltfPresentation.COMPACT, GltfPresentation.PRETTY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_presentation.GltfPresentation:94897788642112', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'GltfStorage'>, 'members': [GltfStorage.BINARY, GltfStorage.STANDARD, GltfStorage.EMBEDDED], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_storage.GltfStorage:94897788627312', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'gltf', 'schema': {'expected': ['gltf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGltf', 'type': 'model-fields'}, 'type': 'model'}, 'obj': {'cls': <class 'kittycad.models.output_format3d.OptionObj'>, 'config': {'title': 'OptionObj'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionObj'>>]}, 'ref': 'kittycad.models.output_format3d.OptionObj:94897788637376', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'obj', 'schema': {'expected': ['obj'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionObj', 'type': 'model-fields'}, 'type': 'model'}, 'ply': {'cls': <class 'kittycad.models.output_format3d.OptionPly'>, 'config': {'title': 'OptionPly'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionPly'>>]}, 'ref': 'kittycad.models.output_format3d.OptionPly:94897786164416', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'PlyStorage'>, 'members': [PlyStorage.ASCII, PlyStorage.BINARY_LITTLE_ENDIAN, PlyStorage.BINARY_BIG_ENDIAN], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.ply_storage.PlyStorage:94897772554304', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ply', 'schema': {'expected': ['ply'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionPly', 'type': 'model-fields'}, 'type': 'model'}, 'step': {'cls': <class 'kittycad.models.output_format3d.OptionStep'>, 'config': {'title': 'OptionStep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStep'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStep:94897783523728', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'step', 'schema': {'expected': ['step'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStep', 'type': 'model-fields'}, 'type': 'model'}, 'stl': {'cls': <class 'kittycad.models.output_format3d.OptionStl'>, 'config': {'title': 'OptionStl'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStl'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStl:94897785832144', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'StlStorage'>, 'members': [StlStorage.ASCII, StlStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.stl_storage.StlStorage:94897787674640', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'stl', 'schema': {'expected': ['stl'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionStl', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'export', 'schema': {'expected': ['export'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExport', 'type': 'model-fields'}, 'type': 'model'}, 'export2d': {'cls': <class 'kittycad.models.modeling_cmd.OptionExport2d'>, 'config': {'title': 'OptionExport2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExport2d'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExport2d:94897790102928', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141935557840]", 'root_model': True, 'schema': {'choices': {'dxf': {'cls': <class 'kittycad.models.output_format2d.OptionDxf'>, 'config': {'title': 'OptionDxf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format2d.OptionDxf'>>]}, 'ref': 'kittycad.models.output_format2d.OptionDxf:94897785736528', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'storage': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.output_format2d.DxfData'>, 'config': {'title': 'DxfData'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format2d.DxfData'>>]}, 'ref': 'kittycad.models.output_format2d.DxfData:94897789318912', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {}, 'model_name': 'DxfData', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'dxf', 'schema': {'expected': ['dxf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDxf', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'export2d', 'schema': {'expected': ['export2d'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExport2d', 'type': 'model-fields'}, 'type': 'model'}, 'export3d': {'cls': <class 'kittycad.models.modeling_cmd.OptionExport3d'>, 'config': {'title': 'OptionExport3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExport3d'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExport3d:94897790112848', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141939028048]", 'root_model': True, 'schema': {'choices': {'fbx': {'cls': <class 'kittycad.models.output_format3d.OptionFbx'>, 'config': {'title': 'OptionFbx'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionFbx'>>]}, 'ref': 'kittycad.models.output_format3d.OptionFbx:94897787675632', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'FbxStorage'>, 'members': [FbxStorage.ASCII, FbxStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.fbx_storage.FbxStorage:94897787657376', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'fbx', 'schema': {'expected': ['fbx'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFbx', 'type': 'model-fields'}, 'type': 'model'}, 'gltf': {'cls': <class 'kittycad.models.output_format3d.OptionGltf'>, 'config': {'title': 'OptionGltf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionGltf'>>]}, 'ref': 'kittycad.models.output_format3d.OptionGltf:94897787658368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'presentation': {'metadata': {}, 'schema': {'cls': <enum 'GltfPresentation'>, 'members': [GltfPresentation.COMPACT, GltfPresentation.PRETTY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_presentation.GltfPresentation:94897788642112', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'GltfStorage'>, 'members': [GltfStorage.BINARY, GltfStorage.STANDARD, GltfStorage.EMBEDDED], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_storage.GltfStorage:94897788627312', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'gltf', 'schema': {'expected': ['gltf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGltf', 'type': 'model-fields'}, 'type': 'model'}, 'obj': {'cls': <class 'kittycad.models.output_format3d.OptionObj'>, 'config': {'title': 'OptionObj'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionObj'>>]}, 'ref': 'kittycad.models.output_format3d.OptionObj:94897788637376', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'obj', 'schema': {'expected': ['obj'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionObj', 'type': 'model-fields'}, 'type': 'model'}, 'ply': {'cls': <class 'kittycad.models.output_format3d.OptionPly'>, 'config': {'title': 'OptionPly'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionPly'>>]}, 'ref': 'kittycad.models.output_format3d.OptionPly:94897786164416', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'PlyStorage'>, 'members': [PlyStorage.ASCII, PlyStorage.BINARY_LITTLE_ENDIAN, PlyStorage.BINARY_BIG_ENDIAN], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.ply_storage.PlyStorage:94897772554304', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ply', 'schema': {'expected': ['ply'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionPly', 'type': 'model-fields'}, 'type': 'model'}, 'step': {'cls': <class 'kittycad.models.output_format3d.OptionStep'>, 'config': {'title': 'OptionStep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStep'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStep:94897783523728', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'step', 'schema': {'expected': ['step'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStep', 'type': 'model-fields'}, 'type': 'model'}, 'stl': {'cls': <class 'kittycad.models.output_format3d.OptionStl'>, 'config': {'title': 'OptionStl'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStl'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStl:94897785832144', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'StlStorage'>, 'members': [StlStorage.ASCII, StlStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.stl_storage.StlStorage:94897787674640', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'stl', 'schema': {'expected': ['stl'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionStl', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'export3d', 'schema': {'expected': ['export3d'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExport3d', 'type': 'model-fields'}, 'type': 'model'}, 'extend_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionExtendPath'>, 'config': {'title': 'OptionExtendPath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExtendPath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExtendPath:94897785779872', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'segment': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141935315792]", 'root_model': True, 'schema': {'choices': {'arc': {'cls': <class 'kittycad.models.path_segment.OptionArc'>, 'config': {'title': 'OptionArc'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionArc'>>]}, 'ref': 'kittycad.models.path_segment.OptionArc:94897789312816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'start': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'arc', 'schema': {'expected': ['arc'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionArc', 'type': 'model-fields'}, 'type': 'model'}, 'arc_to': {'cls': <class 'kittycad.models.path_segment.OptionArcTo'>, 'config': {'title': 'OptionArcTo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionArcTo'>>]}, 'ref': 'kittycad.models.path_segment.OptionArcTo:94897787609136', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'interior': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'arc_to', 'schema': {'expected': ['arc_to'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionArcTo', 'type': 'model-fields'}, 'type': 'model'}, 'bezier': {'cls': <class 'kittycad.models.path_segment.OptionBezier'>, 'config': {'title': 'OptionBezier'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionBezier'>>]}, 'ref': 'kittycad.models.path_segment.OptionBezier:94897787642240', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'control1': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'control2': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'bezier', 'schema': {'expected': ['bezier'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBezier', 'type': 'model-fields'}, 'type': 'model'}, 'circular_involute': {'cls': <class 'kittycad.models.path_segment.OptionCircularInvolute'>, 'config': {'title': 'OptionCircularInvolute'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionCircularInvolute'>>]}, 'ref': 'kittycad.models.path_segment.OptionCircularInvolute:94897788738336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'end_radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'reverse': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'start_radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'circular_involute', 'schema': {'expected': ['circular_involute'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCircularInvolute', 'type': 'model-fields'}, 'type': 'model'}, 'conic_to': {'cls': <class 'kittycad.models.path_segment.OptionConicTo'>, 'config': {'title': 'OptionConicTo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionConicTo'>>]}, 'ref': 'kittycad.models.path_segment.OptionConicTo:94897789470656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'end_tangent': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'interior': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'start_tangent': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'conic_to', 'schema': {'expected': ['conic_to'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionConicTo', 'type': 'model-fields'}, 'type': 'model'}, 'ellipse': {'cls': <class 'kittycad.models.path_segment.OptionEllipse'>, 'config': {'title': 'OptionEllipse'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionEllipse'>>]}, 'ref': 'kittycad.models.path_segment.OptionEllipse:94897788751504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'end_angle': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'major_axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'minor_radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ellipse', 'schema': {'expected': ['ellipse'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEllipse', 'type': 'model-fields'}, 'type': 'model'}, 'line': {'cls': <class 'kittycad.models.path_segment.OptionLine'>, 'config': {'title': 'OptionLine'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionLine'>>]}, 'ref': 'kittycad.models.path_segment.OptionLine:94897789522960', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'line', 'schema': {'expected': ['line'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLine', 'type': 'model-fields'}, 'type': 'model'}, 'tangential_arc': {'cls': <class 'kittycad.models.path_segment.OptionTangentialArc'>, 'config': {'title': 'OptionTangentialArc'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionTangentialArc'>>]}, 'ref': 'kittycad.models.path_segment.OptionTangentialArc:94897787607120', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'offset': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'tangential_arc', 'schema': {'expected': ['tangential_arc'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTangentialArc', 'type': 'model-fields'}, 'type': 'model'}, 'tangential_arc_to': {'cls': <class 'kittycad.models.path_segment.OptionTangentialArcTo'>, 'config': {'title': 'OptionTangentialArcTo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionTangentialArcTo'>>]}, 'ref': 'kittycad.models.path_segment.OptionTangentialArcTo:94897787640048', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle_snap_increment': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'to': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'tangential_arc_to', 'schema': {'expected': ['tangential_arc_to'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTangentialArcTo', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'extend_path', 'schema': {'expected': ['extend_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExtendPath', 'type': 'model-fields'}, 'type': 'model'}, 'extrude': {'cls': <class 'kittycad.models.modeling_cmd.OptionExtrude'>, 'config': {'title': 'OptionExtrude'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExtrude'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExtrude:94897789496992', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'distance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'extrude_method': {'metadata': {}, 'schema': {'default': 'merge', 'schema': {'cls': <enum 'ExtrudeMethod'>, 'members': [ExtrudeMethod.NEW, ExtrudeMethod.MERGE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.extrude_method.ExtrudeMethod:94897784453824', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'faces': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>, 'config': {'title': 'ExtrudedFaceInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>>]}, 'ref': 'kittycad.models.extruded_face_info.ExtrudedFaceInfo:94897784387264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'bottom': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'sides': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.side_face.SideFace'>, 'config': {'title': 'SideFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.side_face.SideFace'>>]}, 'ref': 'kittycad.models.side_face.SideFace:94897785353152', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'SideFace', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'top': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'ExtrudedFaceInfo', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'opposite': {'metadata': {}, 'schema': {'default': 'None', 'schema': {'function': {'function': <class 'kittycad.models.opposite_for_length_unit.OppositeForLengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'default'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'extrude', 'schema': {'expected': ['extrude'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExtrude', 'type': 'model-fields'}, 'type': 'model'}, 'face_get_center': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceGetCenter'>, 'config': {'title': 'OptionFaceGetCenter'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceGetCenter'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceGetCenter:94897789798320', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_get_center', 'schema': {'expected': ['face_get_center'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceGetCenter', 'type': 'model-fields'}, 'type': 'model'}, 'face_get_gradient': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceGetGradient'>, 'config': {'title': 'OptionFaceGetGradient'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceGetGradient'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceGetGradient:94897789806208', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_get_gradient', 'schema': {'expected': ['face_get_gradient'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'uv': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceGetGradient', 'type': 'model-fields'}, 'type': 'model'}, 'face_get_position': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceGetPosition'>, 'config': {'title': 'OptionFaceGetPosition'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceGetPosition'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceGetPosition:94897789789600', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_get_position', 'schema': {'expected': ['face_get_position'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'uv': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceGetPosition', 'type': 'model-fields'}, 'type': 'model'}, 'face_is_planar': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceIsPlanar'>, 'config': {'title': 'OptionFaceIsPlanar'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceIsPlanar'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceIsPlanar:94897789782336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_is_planar', 'schema': {'expected': ['face_is_planar'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceIsPlanar', 'type': 'model-fields'}, 'type': 'model'}, 'get_entity_type': {'cls': <class 'kittycad.models.modeling_cmd.OptionGetEntityType'>, 'config': {'title': 'OptionGetEntityType'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionGetEntityType'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionGetEntityType:94897789675648', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'get_entity_type', 'schema': {'expected': ['get_entity_type'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGetEntityType', 'type': 'model-fields'}, 'type': 'model'}, 'get_num_objects': {'cls': <class 'kittycad.models.modeling_cmd.OptionGetNumObjects'>, 'config': {'title': 'OptionGetNumObjects'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionGetNumObjects'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionGetNumObjects:94897790357216', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'get_num_objects', 'schema': {'expected': ['get_num_objects'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGetNumObjects', 'type': 'model-fields'}, 'type': 'model'}, 'get_sketch_mode_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionGetSketchModePlane'>, 'config': {'title': 'OptionGetSketchModePlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionGetSketchModePlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionGetSketchModePlane:94897789031296', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'get_sketch_mode_plane', 'schema': {'expected': ['get_sketch_mode_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGetSketchModePlane', 'type': 'model-fields'}, 'type': 'model'}, 'handle_mouse_drag_end': {'cls': <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragEnd'>, 'config': {'title': 'OptionHandleMouseDragEnd'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragEnd'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHandleMouseDragEnd:94897789226624', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'handle_mouse_drag_end', 'schema': {'expected': ['handle_mouse_drag_end'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionHandleMouseDragEnd', 'type': 'model-fields'}, 'type': 'model'}, 'handle_mouse_drag_move': {'cls': <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragMove'>, 'config': {'title': 'OptionHandleMouseDragMove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragMove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHandleMouseDragMove:94897789215872', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'handle_mouse_drag_move', 'schema': {'expected': ['handle_mouse_drag_move'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionHandleMouseDragMove', 'type': 'model-fields'}, 'type': 'model'}, 'handle_mouse_drag_start': {'cls': <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragStart'>, 'config': {'title': 'OptionHandleMouseDragStart'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragStart'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHandleMouseDragStart:94897789207936', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'handle_mouse_drag_start', 'schema': {'expected': ['handle_mouse_drag_start'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionHandleMouseDragStart', 'type': 'model-fields'}, 'type': 'model'}, 'highlight_set_entities': {'cls': <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntities'>, 'config': {'title': 'OptionHighlightSetEntities'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntities'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHighlightSetEntities:94897789605568', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'highlight_set_entities', 'schema': {'expected': ['highlight_set_entities'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionHighlightSetEntities', 'type': 'model-fields'}, 'type': 'model'}, 'highlight_set_entity': {'cls': <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntity'>, 'config': {'title': 'OptionHighlightSetEntity'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntity'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHighlightSetEntity:94897789570224', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'selected_at_window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'highlight_set_entity', 'schema': {'expected': ['highlight_set_entity'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionHighlightSetEntity', 'type': 'model-fields'}, 'type': 'model'}, 'import_files': {'cls': <class 'kittycad.models.modeling_cmd.OptionImportFiles'>, 'config': {'title': 'OptionImportFiles'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionImportFiles'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionImportFiles:94897789283248', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'files': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.import_file.ImportFile'>, 'config': {'title': 'ImportFile'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.import_file.ImportFile'>>]}, 'ref': 'kittycad.models.import_file.ImportFile:94897787791824', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'data': {'metadata': {}, 'schema': {'type': 'bytes'}, 'type': 'model-field'}, 'path': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'ImportFile', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938745040]", 'root_model': True, 'schema': {'choices': {'fbx': {'cls': <class 'kittycad.models.input_format3d.OptionFbx'>, 'config': {'title': 'OptionFbx'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionFbx'>>]}, 'ref': 'kittycad.models.input_format3d.OptionFbx:94897784204272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'fbx', 'schema': {'expected': ['fbx'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFbx', 'type': 'model-fields'}, 'type': 'model'}, 'gltf': {'cls': <class 'kittycad.models.input_format3d.OptionGltf'>, 'config': {'title': 'OptionGltf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionGltf'>>]}, 'ref': 'kittycad.models.input_format3d.OptionGltf:94897784205264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'gltf', 'schema': {'expected': ['gltf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGltf', 'type': 'model-fields'}, 'type': 'model'}, 'obj': {'cls': <class 'kittycad.models.input_format3d.OptionObj'>, 'config': {'title': 'OptionObj'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionObj'>>]}, 'ref': 'kittycad.models.input_format3d.OptionObj:94897782241840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'obj', 'schema': {'expected': ['obj'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionObj', 'type': 'model-fields'}, 'type': 'model'}, 'ply': {'cls': <class 'kittycad.models.input_format3d.OptionPly'>, 'config': {'title': 'OptionPly'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionPly'>>]}, 'ref': 'kittycad.models.input_format3d.OptionPly:94897782235440', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ply', 'schema': {'expected': ['ply'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionPly', 'type': 'model-fields'}, 'type': 'model'}, 'sldprt': {'cls': <class 'kittycad.models.input_format3d.OptionSldprt'>, 'config': {'title': 'OptionSldprt'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionSldprt'>>]}, 'ref': 'kittycad.models.input_format3d.OptionSldprt:94897782234448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'split_closed_faces': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'sldprt', 'schema': {'expected': ['sldprt'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSldprt', 'type': 'model-fields'}, 'type': 'model'}, 'step': {'cls': <class 'kittycad.models.input_format3d.OptionStep'>, 'config': {'title': 'OptionStep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionStep'>>]}, 'ref': 'kittycad.models.input_format3d.OptionStep:94897782081824', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'split_closed_faces': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'step', 'schema': {'expected': ['step'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStep', 'type': 'model-fields'}, 'type': 'model'}, 'stl': {'cls': <class 'kittycad.models.input_format3d.OptionStl'>, 'config': {'title': 'OptionStl'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionStl'>>]}, 'ref': 'kittycad.models.input_format3d.OptionStl:94897786143792', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'stl', 'schema': {'expected': ['stl'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionStl', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'import_files', 'schema': {'expected': ['import_files'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionImportFiles', 'type': 'model-fields'}, 'type': 'model'}, 'loft': {'cls': <class 'kittycad.models.modeling_cmd.OptionLoft'>, 'config': {'title': 'OptionLoft'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionLoft'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionLoft:94897783902016', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'base_curve_index': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'bez_approximate_rational': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'section_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'loft', 'schema': {'expected': ['loft'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'v_degree': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}}, 'model_name': 'OptionLoft', 'type': 'model-fields'}, 'type': 'model'}, 'make_axes_gizmo': {'cls': <class 'kittycad.models.modeling_cmd.OptionMakeAxesGizmo'>, 'config': {'title': 'OptionMakeAxesGizmo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMakeAxesGizmo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMakeAxesGizmo:94897789152480', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'clobber': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'gizmo_mode': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'make_axes_gizmo', 'schema': {'expected': ['make_axes_gizmo'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMakeAxesGizmo', 'type': 'model-fields'}, 'type': 'model'}, 'make_offset_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionMakeOffsetPath'>, 'config': {'title': 'OptionMakeOffsetPath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMakeOffsetPath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMakeOffsetPath:94897790412560', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_id': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'offset': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'make_offset_path', 'schema': {'expected': ['make_offset_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMakeOffsetPath', 'type': 'model-fields'}, 'type': 'model'}, 'make_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionMakePlane'>, 'config': {'title': 'OptionMakePlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMakePlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMakePlane:94897788971280', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'clobber': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'hide': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'bool'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'size': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'make_plane', 'schema': {'expected': ['make_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'x_axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'y_axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'OptionMakePlane', 'type': 'model-fields'}, 'type': 'model'}, 'mass': {'cls': <class 'kittycad.models.modeling_cmd.OptionMass'>, 'config': {'title': 'OptionMass'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMass'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMass:94897789303024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'material_density': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'material_density_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitDensity'>, 'members': [UnitDensity.LB_FT3, UnitDensity.KG_M3], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_density.UnitDensity:94897788688240', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitMass'>, 'members': [UnitMass.G, UnitMass.KG, UnitMass.LB], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_mass.UnitMass:94897788671168', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mass', 'schema': {'expected': ['mass'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMass', 'type': 'model-fields'}, 'type': 'model'}, 'mouse_click': {'cls': <class 'kittycad.models.modeling_cmd.OptionMouseClick'>, 'config': {'title': 'OptionMouseClick'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMouseClick'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMouseClick:94897789017120', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'mouse_click', 'schema': {'expected': ['mouse_click'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionMouseClick', 'type': 'model-fields'}, 'type': 'model'}, 'mouse_move': {'cls': <class 'kittycad.models.modeling_cmd.OptionMouseMove'>, 'config': {'title': 'OptionMouseMove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMouseMove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMouseMove:94897789006464', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mouse_move', 'schema': {'expected': ['mouse_move'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionMouseMove', 'type': 'model-fields'}, 'type': 'model'}, 'move_path_pen': {'cls': <class 'kittycad.models.modeling_cmd.OptionMovePathPen'>, 'config': {'title': 'OptionMovePathPen'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMovePathPen'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMovePathPen:94897785824448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'to': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'move_path_pen', 'schema': {'expected': ['move_path_pen'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMovePathPen', 'type': 'model-fields'}, 'type': 'model'}, 'new_annotation': {'cls': <class 'kittycad.models.modeling_cmd.OptionNewAnnotation'>, 'config': {'title': 'OptionNewAnnotation'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionNewAnnotation'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionNewAnnotation:94897789614816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'annotation_type': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationType'>, 'members': [AnnotationType.T2D, AnnotationType.T3D], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_type.AnnotationType:94897786530016', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'clobber': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'options': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.annotation_options.AnnotationOptions'>, 'config': {'title': 'AnnotationOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_options.AnnotationOptions'>>]}, 'ref': 'kittycad.models.annotation_options.AnnotationOptions:94897787297776', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_ends': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>, 'config': {'title': 'AnnotationLineEndOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>>]}, 'ref': 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions:94897785622816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}, 'start': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'AnnotationLineEndOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_width': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'position': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>, 'config': {'title': 'AnnotationTextOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>>]}, 'ref': 'kittycad.models.annotation_text_options.AnnotationTextOptions:94897781549536', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'point_size': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentX'>, 'members': [AnnotationTextAlignmentX.LEFT, AnnotationTextAlignmentX.CENTER, AnnotationTextAlignmentX.RIGHT], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_x.AnnotationTextAlignmentX:94897785629456', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentY'>, 'members': [AnnotationTextAlignmentY.BOTTOM, AnnotationTextAlignmentY.CENTER, AnnotationTextAlignmentY.TOP], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_y.AnnotationTextAlignmentY:94897785621552', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'AnnotationTextOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'AnnotationOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'new_annotation', 'schema': {'expected': ['new_annotation'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionNewAnnotation', 'type': 'model-fields'}, 'type': 'model'}, 'object_bring_to_front': {'cls': <class 'kittycad.models.modeling_cmd.OptionObjectBringToFront'>, 'config': {'title': 'OptionObjectBringToFront'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionObjectBringToFront'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionObjectBringToFront:94897789655056', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'object_bring_to_front', 'schema': {'expected': ['object_bring_to_front'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionObjectBringToFront', 'type': 'model-fields'}, 'type': 'model'}, 'object_set_material_params_pbr': {'cls': <class 'kittycad.models.modeling_cmd.OptionObjectSetMaterialParamsPbr'>, 'config': {'title': 'OptionObjectSetMaterialParamsPbr'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionObjectSetMaterialParamsPbr'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionObjectSetMaterialParamsPbr:94897789663024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'ambient_occlusion': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'color': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'metalness': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'roughness': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'object_set_material_params_pbr', 'schema': {'expected': ['object_set_material_params_pbr'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionObjectSetMaterialParamsPbr', 'type': 'model-fields'}, 'type': 'model'}, 'object_visible': {'cls': <class 'kittycad.models.modeling_cmd.OptionObjectVisible'>, 'config': {'title': 'OptionObjectVisible'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionObjectVisible'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionObjectVisible:94897789646336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'hidden': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'object_visible', 'schema': {'expected': ['object_visible'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionObjectVisible', 'type': 'model-fields'}, 'type': 'model'}, 'orient_to_face': {'cls': <class 'kittycad.models.modeling_cmd.OptionOrientToFace'>, 'config': {'title': 'OptionOrientToFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionOrientToFace'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionOrientToFace:94897790296896', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'animated': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'padding': {'metadata': {}, 'schema': {'default': 0.0, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'orient_to_face', 'schema': {'expected': ['orient_to_face'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionOrientToFace', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_curve_uuid': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuid'>, 'config': {'title': 'OptionPathGetCurveUuid'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuid'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetCurveUuid:94897783807520', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_curve_uuid', 'schema': {'expected': ['path_get_curve_uuid'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetCurveUuid', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_curve_uuids_for_vertices': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuidsForVertices'>, 'config': {'title': 'OptionPathGetCurveUuidsForVertices'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuidsForVertices'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetCurveUuidsForVertices:94897789169056', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_curve_uuids_for_vertices', 'schema': {'expected': ['path_get_curve_uuids_for_vertices'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'vertex_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetCurveUuidsForVertices', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_info': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetInfo'>, 'config': {'title': 'OptionPathGetInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetInfo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetInfo:94897789161200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_info', 'schema': {'expected': ['path_get_info'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetInfo', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_sketch_target_uuid': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetSketchTargetUuid'>, 'config': {'title': 'OptionPathGetSketchTargetUuid'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetSketchTargetUuid'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetSketchTargetUuid:94897789200048', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_sketch_target_uuid', 'schema': {'expected': ['path_get_sketch_target_uuid'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetSketchTargetUuid', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_vertex_uuids': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetVertexUuids'>, 'config': {'title': 'OptionPathGetVertexUuids'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetVertexUuids'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetVertexUuids:94897789192176', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_vertex_uuids', 'schema': {'expected': ['path_get_vertex_uuids'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetVertexUuids', 'type': 'model-fields'}, 'type': 'model'}, 'plane_intersect_and_project': {'cls': <class 'kittycad.models.modeling_cmd.OptionPlaneIntersectAndProject'>, 'config': {'title': 'OptionPlaneIntersectAndProject'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPlaneIntersectAndProject'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPlaneIntersectAndProject:94897789243616', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'plane_intersect_and_project', 'schema': {'expected': ['plane_intersect_and_project'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionPlaneIntersectAndProject', 'type': 'model-fields'}, 'type': 'model'}, 'plane_set_color': {'cls': <class 'kittycad.models.modeling_cmd.OptionPlaneSetColor'>, 'config': {'title': 'OptionPlaneSetColor'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPlaneSetColor'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPlaneSetColor:94897788988848', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'plane_set_color', 'schema': {'expected': ['plane_set_color'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPlaneSetColor', 'type': 'model-fields'}, 'type': 'model'}, 'project_entity_to_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionProjectEntityToPlane'>, 'config': {'title': 'OptionProjectEntityToPlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionProjectEntityToPlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionProjectEntityToPlane:94897789120816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'project_entity_to_plane', 'schema': {'expected': ['project_entity_to_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'use_plane_coords': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'OptionProjectEntityToPlane', 'type': 'model-fields'}, 'type': 'model'}, 'project_points_to_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionProjectPointsToPlane'>, 'config': {'title': 'OptionProjectPointsToPlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionProjectPointsToPlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionProjectPointsToPlane:94897789131744', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'points': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'project_points_to_plane', 'schema': {'expected': ['project_points_to_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'use_plane_coords': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'OptionProjectPointsToPlane', 'type': 'model-fields'}, 'type': 'model'}, 'reconfigure_stream': {'cls': <class 'kittycad.models.modeling_cmd.OptionReconfigureStream'>, 'config': {'title': 'OptionReconfigureStream'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionReconfigureStream'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionReconfigureStream:94897783687200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'bitrate': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'fps': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'height': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'reconfigure_stream', 'schema': {'expected': ['reconfigure_stream'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'width': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}}, 'model_name': 'OptionReconfigureStream', 'type': 'model-fields'}, 'type': 'model'}, 'remove_scene_objects': {'cls': <class 'kittycad.models.modeling_cmd.OptionRemoveSceneObjects'>, 'config': {'title': 'OptionRemoveSceneObjects'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionRemoveSceneObjects'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionRemoveSceneObjects:94897789234528', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'remove_scene_objects', 'schema': {'expected': ['remove_scene_objects'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionRemoveSceneObjects', 'type': 'model-fields'}, 'type': 'model'}, 'revolve': {'cls': <class 'kittycad.models.modeling_cmd.OptionRevolve'>, 'config': {'title': 'OptionRevolve'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionRevolve'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionRevolve:94897783850384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'axis_is_2d': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'opposite': {'metadata': {}, 'schema': {'default': 'None', 'schema': {'function': {'function': <class 'kittycad.models.opposite_for_angle.OppositeForAngle'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'default'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'revolve', 'schema': {'expected': ['revolve'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionRevolve', 'type': 'model-fields'}, 'type': 'model'}, 'revolve_about_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionRevolveAboutEdge'>, 'config': {'title': 'OptionRevolveAboutEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionRevolveAboutEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionRevolveAboutEdge:94897783886368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'opposite': {'metadata': {}, 'schema': {'default': 'None', 'schema': {'function': {'function': <class 'kittycad.models.opposite_for_angle.OppositeForAngle'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'default'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'revolve_about_edge', 'schema': {'expected': ['revolve_about_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionRevolveAboutEdge', 'type': 'model-fields'}, 'type': 'model'}, 'scene_clear_all': {'cls': <class 'kittycad.models.modeling_cmd.OptionSceneClearAll'>, 'config': {'title': 'OptionSceneClearAll'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSceneClearAll'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSceneClearAll:94897789554864', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'scene_clear_all', 'schema': {'expected': ['scene_clear_all'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneClearAll', 'type': 'model-fields'}, 'type': 'model'}, 'select_add': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectAdd'>, 'config': {'title': 'OptionSelectAdd'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectAdd'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectAdd:94897788933008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_add', 'schema': {'expected': ['select_add'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectAdd', 'type': 'model-fields'}, 'type': 'model'}, 'select_clear': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectClear'>, 'config': {'title': 'OptionSelectClear'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectClear'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectClear:94897790341808', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'select_clear', 'schema': {'expected': ['select_clear'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectClear', 'type': 'model-fields'}, 'type': 'model'}, 'select_get': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectGet'>, 'config': {'title': 'OptionSelectGet'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectGet'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectGet:94897790349520', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'select_get', 'schema': {'expected': ['select_get'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectGet', 'type': 'model-fields'}, 'type': 'model'}, 'select_remove': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectRemove'>, 'config': {'title': 'OptionSelectRemove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectRemove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectRemove:94897789545728', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_remove', 'schema': {'expected': ['select_remove'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectRemove', 'type': 'model-fields'}, 'type': 'model'}, 'select_replace': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectReplace'>, 'config': {'title': 'OptionSelectReplace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectReplace'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectReplace:94897789561088', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_replace', 'schema': {'expected': ['select_replace'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectReplace', 'type': 'model-fields'}, 'type': 'model'}, 'select_with_point': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectWithPoint'>, 'config': {'title': 'OptionSelectWithPoint'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectWithPoint'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectWithPoint:94897788923648', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'selected_at_window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection_type': {'metadata': {}, 'schema': {'cls': <enum 'SceneSelectionType'>, 'members': [SceneSelectionType.REPLACE, SceneSelectionType.ADD, SceneSelectionType.REMOVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.scene_selection_type.SceneSelectionType:94897785815504', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_with_point', 'schema': {'expected': ['select_with_point'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectWithPoint', 'type': 'model-fields'}, 'type': 'model'}, 'send_object': {'cls': <class 'kittycad.models.modeling_cmd.OptionSendObject'>, 'config': {'title': 'OptionSendObject'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSendObject'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSendObject:94897788941440', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'front': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'send_object', 'schema': {'expected': ['send_object'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSendObject', 'type': 'model-fields'}, 'type': 'model'}, 'set_background_color': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetBackgroundColor'>, 'config': {'title': 'OptionSetBackgroundColor'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetBackgroundColor'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetBackgroundColor:94897789077504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_background_color', 'schema': {'expected': ['set_background_color'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetBackgroundColor', 'type': 'model-fields'}, 'type': 'model'}, 'set_current_tool_properties': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetCurrentToolProperties'>, 'config': {'title': 'OptionSetCurrentToolProperties'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetCurrentToolProperties'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetCurrentToolProperties:94897789085376', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_current_tool_properties', 'schema': {'expected': ['set_current_tool_properties'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetCurrentToolProperties', 'type': 'model-fields'}, 'type': 'model'}, 'set_default_system_properties': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetDefaultSystemProperties'>, 'config': {'title': 'OptionSetDefaultSystemProperties'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetDefaultSystemProperties'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetDefaultSystemProperties:94897789095088', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_default_system_properties', 'schema': {'expected': ['set_default_system_properties'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetDefaultSystemProperties', 'type': 'model-fields'}, 'type': 'model'}, 'set_grid_auto_scale': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetGridAutoScale'>, 'config': {'title': 'OptionSetGridAutoScale'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetGridAutoScale'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetGridAutoScale:94897790457360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'set_grid_auto_scale', 'schema': {'expected': ['set_grid_auto_scale'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetGridAutoScale', 'type': 'model-fields'}, 'type': 'model'}, 'set_grid_reference_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetGridReferencePlane'>, 'config': {'title': 'OptionSetGridReferencePlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetGridReferencePlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetGridReferencePlane:94897790436912', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'grid_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'reference_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_grid_reference_plane', 'schema': {'expected': ['set_grid_reference_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetGridReferencePlane', 'type': 'model-fields'}, 'type': 'model'}, 'set_grid_scale': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetGridScale'>, 'config': {'title': 'OptionSetGridScale'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetGridScale'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetGridScale:94897790446704', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'set_grid_scale', 'schema': {'expected': ['set_grid_scale'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'OptionSetGridScale', 'type': 'model-fields'}, 'type': 'model'}, 'set_object_transform': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetObjectTransform'>, 'config': {'title': 'OptionSetObjectTransform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetObjectTransform'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetObjectTransform:94897790364944', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'transforms': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.component_transform.ComponentTransform'>, 'config': {'title': 'ComponentTransform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.component_transform.ComponentTransform'>>]}, 'ref': 'kittycad.models.component_transform.ComponentTransform:94897781887696', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'rotate_angle_axis': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.transform_by_for_point4d.TransformByForPoint4d'>, 'config': {'title': 'TransformByForPoint4d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.transform_by_for_point4d.TransformByForPoint4d'>>]}, 'ref': 'kittycad.models.transform_by_for_point4d.TransformByForPoint4d:94897781886704', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'is_local': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937245008]", 'root_model': True, 'schema': {'choices': {'custom': {'cls': <class 'kittycad.models.origin_type.OptionCustom'>, 'config': {'title': 'OptionCustom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionCustom'>>]}, 'ref': 'kittycad.models.origin_type.OptionCustom:94897785526736', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'origin': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'custom', 'schema': {'expected': ['custom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCustom', 'type': 'model-fields'}, 'type': 'model'}, 'global': {'cls': <class 'kittycad.models.origin_type.OptionGlobal'>, 'config': {'title': 'OptionGlobal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionGlobal'>>]}, 'ref': 'kittycad.models.origin_type.OptionGlobal:94897781840752', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'global', 'schema': {'expected': ['global'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGlobal', 'type': 'model-fields'}, 'type': 'model'}, 'local': {'cls': <class 'kittycad.models.origin_type.OptionLocal'>, 'config': {'title': 'OptionLocal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionLocal'>>]}, 'ref': 'kittycad.models.origin_type.OptionLocal:94897781837328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'local', 'schema': {'expected': ['local'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLocal', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'property': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point4d.Point4d'>, 'config': {'title': 'Point4d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point4d.Point4d'>>]}, 'ref': 'kittycad.models.point4d.Point4d:94897782027840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'w': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point4d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'set': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'TransformByForPoint4d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rotate_rpy': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'schema_ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'type': 'definition-ref'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'scale': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'schema_ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'type': 'definition-ref'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'translate': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'schema_ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'type': 'definition-ref'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'ComponentTransform', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_object_transform', 'schema': {'expected': ['set_object_transform'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetObjectTransform', 'type': 'model-fields'}, 'type': 'model'}, 'set_scene_units': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetSceneUnits'>, 'config': {'title': 'OptionSetSceneUnits'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetSceneUnits'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetSceneUnits:94897789294480', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'set_scene_units', 'schema': {'expected': ['set_scene_units'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionSetSceneUnits', 'type': 'model-fields'}, 'type': 'model'}, 'set_selection_filter': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetSelectionFilter'>, 'config': {'title': 'OptionSetSelectionFilter'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetSelectionFilter'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetSelectionFilter:94897790235008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'filter': {'metadata': {}, 'schema': {'items_schema': {'cls': <enum 'EntityType'>, 'members': [EntityType.ENTITY, EntityType.OBJECT, EntityType.PATH, EntityType.CURVE, EntityType.SOLID2D, EntityType.SOLID3D, EntityType.EDGE, EntityType.FACE, EntityType.PLANE, EntityType.VERTEX], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.entity_type.EntityType:94897785025168', 'sub_type': 'str', 'type': 'enum'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_selection_filter', 'schema': {'expected': ['set_selection_filter'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetSelectionFilter', 'type': 'model-fields'}, 'type': 'model'}, 'set_selection_type': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetSelectionType'>, 'config': {'title': 'OptionSetSelectionType'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetSelectionType'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetSelectionType:94897790226560', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'selection_type': {'metadata': {}, 'schema': {'cls': <enum 'SceneSelectionType'>, 'members': [SceneSelectionType.REPLACE, SceneSelectionType.ADD, SceneSelectionType.REMOVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.scene_selection_type.SceneSelectionType:94897785815504', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_selection_type', 'schema': {'expected': ['set_selection_type'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetSelectionType', 'type': 'model-fields'}, 'type': 'model'}, 'set_tool': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetTool'>, 'config': {'title': 'OptionSetTool'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetTool'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetTool:94897788997600', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'tool': {'metadata': {}, 'schema': {'cls': <enum 'SceneToolType'>, 'members': [SceneToolType.CAMERA_REVOLVE, SceneToolType.SELECT, SceneToolType.MOVE, SceneToolType.SKETCH_LINE, SceneToolType.SKETCH_TANGENTIAL_ARC, SceneToolType.SKETCH_CURVE, SceneToolType.SKETCH_CURVE_MOD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.scene_tool_type.SceneToolType:94897785798928', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_tool', 'schema': {'expected': ['set_tool'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetTool', 'type': 'model-fields'}, 'type': 'model'}, 'sketch_mode_disable': {'cls': <class 'kittycad.models.modeling_cmd.OptionSketchModeDisable'>, 'config': {'title': 'OptionSketchModeDisable'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSketchModeDisable'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSketchModeDisable:94897789025008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'sketch_mode_disable', 'schema': {'expected': ['sketch_mode_disable'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSketchModeDisable', 'type': 'model-fields'}, 'type': 'model'}, 'solid2d_add_hole': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid2dAddHole'>, 'config': {'title': 'OptionSolid2dAddHole'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid2dAddHole'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid2dAddHole:94897789692256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'hole_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid2d_add_hole', 'schema': {'expected': ['solid2d_add_hole'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid2dAddHole', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_fillet_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dFilletEdge'>, 'config': {'title': 'OptionSolid3dFilletEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dFilletEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dFilletEdge:94897789755264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'cut_type': {'metadata': {}, 'schema': {'default': 'fillet', 'schema': {'cls': <enum 'CutType'>, 'members': [CutType.FILLET, CutType.CHAMFER], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.cut_type.CutType:94897784048544', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'edge_id': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'edge_ids': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'extra_face_ids': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'strategy': {'metadata': {}, 'schema': {'default': 'automatic', 'schema': {'cls': <enum 'CutStrategy'>, 'members': [CutStrategy.BASIC, CutStrategy.CSG, CutStrategy.AUTOMATIC], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.cut_strategy.CutStrategy:94897784041152', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_fillet_edge', 'schema': {'expected': ['solid3d_fillet_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dFilletEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_adjacency_info': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAdjacencyInfo'>, 'config': {'title': 'OptionSolid3dGetAdjacencyInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAdjacencyInfo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetAdjacencyInfo:94897790331984', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_adjacency_info', 'schema': {'expected': ['solid3d_get_adjacency_info'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetAdjacencyInfo', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_all_edge_faces': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllEdgeFaces'>, 'config': {'title': 'OptionSolid3dGetAllEdgeFaces'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllEdgeFaces'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetAllEdgeFaces:94897789683504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_all_edge_faces', 'schema': {'expected': ['solid3d_get_all_edge_faces'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetAllEdgeFaces', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_all_opposite_edges': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllOppositeEdges'>, 'config': {'title': 'OptionSolid3dGetAllOppositeEdges'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllOppositeEdges'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetAllOppositeEdges:94897789701008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'along_vector': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_all_opposite_edges', 'schema': {'expected': ['solid3d_get_all_opposite_edges'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetAllOppositeEdges', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_common_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetCommonEdge'>, 'config': {'title': 'OptionSolid3dGetCommonEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetCommonEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetCommonEdge:94897789745184', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_common_edge', 'schema': {'expected': ['solid3d_get_common_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetCommonEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_extrusion_face_info': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetExtrusionFaceInfo'>, 'config': {'title': 'OptionSolid3dGetExtrusionFaceInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetExtrusionFaceInfo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetExtrusionFaceInfo:94897790322448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_extrusion_face_info', 'schema': {'expected': ['solid3d_get_extrusion_face_info'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetExtrusionFaceInfo', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_next_adjacent_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetNextAdjacentEdge'>, 'config': {'title': 'OptionSolid3dGetNextAdjacentEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetNextAdjacentEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetNextAdjacentEdge:94897785928272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_next_adjacent_edge', 'schema': {'expected': ['solid3d_get_next_adjacent_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetNextAdjacentEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_opposite_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetOppositeEdge'>, 'config': {'title': 'OptionSolid3dGetOppositeEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetOppositeEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetOppositeEdge:94897789714000', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_opposite_edge', 'schema': {'expected': ['solid3d_get_opposite_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetOppositeEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_prev_adjacent_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetPrevAdjacentEdge'>, 'config': {'title': 'OptionSolid3dGetPrevAdjacentEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetPrevAdjacentEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetPrevAdjacentEdge:94897789734272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_prev_adjacent_edge', 'schema': {'expected': ['solid3d_get_prev_adjacent_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetPrevAdjacentEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_shell_face': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dShellFace'>, 'config': {'title': 'OptionSolid3dShellFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dShellFace'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dShellFace:94897783871712', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'hollow': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'shell_thickness': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_shell_face', 'schema': {'expected': ['solid3d_shell_face'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dShellFace', 'type': 'model-fields'}, 'type': 'model'}, 'start_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionStartPath'>, 'config': {'title': 'OptionStartPath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionStartPath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionStartPath:94897785819040', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'start_path', 'schema': {'expected': ['start_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStartPath', 'type': 'model-fields'}, 'type': 'model'}, 'surface_area': {'cls': <class 'kittycad.models.modeling_cmd.OptionSurfaceArea'>, 'config': {'title': 'OptionSurfaceArea'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSurfaceArea'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSurfaceArea:94897790206720', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitArea'>, 'members': [UnitArea.CM2, UnitArea.DM2, UnitArea.FT2, UnitArea.IN2, UnitArea.KM2, UnitArea.M2, UnitArea.MM2, UnitArea.YD2], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_area.UnitArea:94897788674592', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'surface_area', 'schema': {'expected': ['surface_area'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSurfaceArea', 'type': 'model-fields'}, 'type': 'model'}, 'sweep': {'cls': <class 'kittycad.models.modeling_cmd.OptionSweep'>, 'config': {'title': 'OptionSweep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSweep'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSweep:94897783834336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'relative_to': {'metadata': {}, 'schema': {'default': 'sketch_plane', 'schema': {'cls': <enum 'RelativeTo'>, 'members': [RelativeTo.SKETCH_PLANE, RelativeTo.TRAJECTORY_CURVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.relative_to.RelativeTo:94897785778368', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'sectional': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'trajectory': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'sweep', 'schema': {'expected': ['sweep'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSweep', 'type': 'model-fields'}, 'type': 'model'}, 'take_snapshot': {'cls': <class 'kittycad.models.modeling_cmd.OptionTakeSnapshot'>, 'config': {'title': 'OptionTakeSnapshot'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionTakeSnapshot'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionTakeSnapshot:94897789144048', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'format': {'metadata': {}, 'schema': {'cls': <enum 'ImageFormat'>, 'members': [ImageFormat.PNG, ImageFormat.JPEG], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.image_format.ImageFormat:94897787789840', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'take_snapshot', 'schema': {'expected': ['take_snapshot'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTakeSnapshot', 'type': 'model-fields'}, 'type': 'model'}, 'twist_extrude': {'cls': <class 'kittycad.models.modeling_cmd.OptionTwistExtrude'>, 'config': {'title': 'OptionTwistExtrude'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionTwistExtrude'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionTwistExtrude:94897783935904', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle_step_size': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 15.0}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'default'}, 'type': 'model-field'}, 'center_2d': {'metadata': {}, 'schema': {'default': {'x': 0.0, 'y': 0.0}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'distance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'faces': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>, 'config': {'title': 'ExtrudedFaceInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>>]}, 'ref': 'kittycad.models.extruded_face_info.ExtrudedFaceInfo:94897784387264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'bottom': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'sides': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.side_face.SideFace'>, 'config': {'title': 'SideFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.side_face.SideFace'>>]}, 'ref': 'kittycad.models.side_face.SideFace:94897785353152', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'SideFace', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'top': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'ExtrudedFaceInfo', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'total_rotation_angle': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'twist_extrude', 'schema': {'expected': ['twist_extrude'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTwistExtrude', 'type': 'model-fields'}, 'type': 'model'}, 'update_annotation': {'cls': <class 'kittycad.models.modeling_cmd.OptionUpdateAnnotation'>, 'config': {'title': 'OptionUpdateAnnotation'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionUpdateAnnotation'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionUpdateAnnotation:94897789627984', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'annotation_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'options': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.annotation_options.AnnotationOptions'>, 'config': {'title': 'AnnotationOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_options.AnnotationOptions'>>]}, 'ref': 'kittycad.models.annotation_options.AnnotationOptions:94897787297776', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_ends': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>, 'config': {'title': 'AnnotationLineEndOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>>]}, 'ref': 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions:94897785622816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}, 'start': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'AnnotationLineEndOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_width': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'position': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>, 'config': {'title': 'AnnotationTextOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>>]}, 'ref': 'kittycad.models.annotation_text_options.AnnotationTextOptions:94897781549536', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'point_size': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentX'>, 'members': [AnnotationTextAlignmentX.LEFT, AnnotationTextAlignmentX.CENTER, AnnotationTextAlignmentX.RIGHT], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_x.AnnotationTextAlignmentX:94897785629456', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentY'>, 'members': [AnnotationTextAlignmentY.BOTTOM, AnnotationTextAlignmentY.CENTER, AnnotationTextAlignmentY.TOP], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_y.AnnotationTextAlignmentY:94897785621552', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'AnnotationTextOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'AnnotationOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'update_annotation', 'schema': {'expected': ['update_annotation'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionUpdateAnnotation', 'type': 'model-fields'}, 'type': 'model'}, 'view_isometric': {'cls': <class 'kittycad.models.modeling_cmd.OptionViewIsometric'>, 'config': {'title': 'OptionViewIsometric'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionViewIsometric'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionViewIsometric:94897788799248', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'padding': {'metadata': {}, 'schema': {'default': 0.0, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'view_isometric', 'schema': {'expected': ['view_isometric'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionViewIsometric', 'type': 'model-fields'}, 'type': 'model'}, 'volume': {'cls': <class 'kittycad.models.modeling_cmd.OptionVolume'>, 'config': {'title': 'OptionVolume'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionVolume'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionVolume:94897790184656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitVolume'>, 'members': [UnitVolume.CM3, UnitVolume.FT3, UnitVolume.IN3, UnitVolume.M3, UnitVolume.YD3, UnitVolume.USFLOZ, UnitVolume.USGAL, UnitVolume.L, UnitVolume.ML], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_volume.UnitVolume:94897788685216', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'volume', 'schema': {'expected': ['volume'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionVolume', 'type': 'model-fields'}, 'type': 'model'}, 'zoom_to_fit': {'cls': <class 'kittycad.models.modeling_cmd.OptionZoomToFit'>, 'config': {'title': 'OptionZoomToFit'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionZoomToFit'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionZoomToFit:94897790282128', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'animated': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'object_ids': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'padding': {'metadata': {}, 'schema': {'default': 0.0, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'zoom_to_fit', 'schema': {'expected': ['zoom_to_fit'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionZoomToFit', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'cmd_id': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'ModelingCmdReq', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'responses': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'modeling_cmd_batch_req', 'schema': {'expected': ['modeling_cmd_batch_req'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionModelingCmdBatchReq', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'definitions'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'batch_id': FieldInfo(annotation=ModelingCmdId, required=True), 'requests': FieldInfo(annotation=List[ModelingCmdReq], required=True), 'responses': FieldInfo(annotation=bool, required=False, default=False), 'type': FieldInfo(annotation=Literal['modeling_cmd_batch_req'], required=False, default='modeling_cmd_batch_req')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d3dc4b0,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "batch_id": SerField {                         key_py: Py(                             0x00007f75560581f0,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             Str(                                 StrSerializer,                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "requests": SerField {                         key_py: Py(                             0x00007f7557d67930,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             List(                                 ListSerializer {                                     item_serializer: Prebuilt(                                         PrebuiltSerializer {                                             schema_serializer: Py(                                                 0x00007f75565e1740,                                             ),                                         },                                     ),                                     filter: SchemaFilter {                                         include: None,                                         exclude: None,                                     },                                     name: "list[ModelingCmdReq]",                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "responses": SerField {                         key_py: Py(                             0x00007f75582f4e70,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f755b0c49e0,                                         ),                                     ),                                     serializer: Bool(                                         BoolSerializer,                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f75560582f0,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "modeling_cmd_batch_req",                                             },                                             expected_py: None,                                             name: "literal['modeling_cmd_batch_req']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 4,             },         ),         has_extra: false,         root_model: false,         name: "OptionModelingCmdBatchReq",     }, ), definitions=[Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f75565e1e70) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f7556712e40) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f75567601b0) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f7556f1fb30) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f75565e3120) }), Enum(EnumSerializer { class: Py(0x564f1c8f2600), serializer: Some(Str(StrSerializer)) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f7556761180) })])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionModelingCmdBatchReq", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "batch_id",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "batch_id",                                         py_key: Py(                                             0x00007f7556058f30,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f75560581f0,                         ),                         validator: FunctionAfter(                             FunctionAfterValidator {                                 validator: Str(                                     StrValidator {                                         strict: false,                                         coerce_numbers_to_str: false,                                     },                                 ),                                 func: Py(                                     0x0000564f1cd071d0,                                 ),                                 config: Py(                                     0x00007f7556059840,                                 ),                                 name: "function-after[ModelingCmdId(), str]",                                 field_name: None,                                 info_arg: false,                             },                         ),                         frozen: false,                     },                     Field {                         name: "requests",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "requests",                                         py_key: Py(                                             0x00007f7556058ef0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f7557d67930,                         ),                         validator: List(                             ListValidator {                                 strict: false,                                 item_validator: Some(                                     Prebuilt(                                         PrebuiltValidator {                                             schema_validator: Py(                                                 0x0000564f1d174fe0,                                             ),                                         },                                     ),                                 ),                                 min_length: None,                                 max_length: None,                                 name: OnceLock(                                     <uninit>,                                 ),                                 fail_fast: false,                             },                         ),                         frozen: false,                     },                     Field {                         name: "responses",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "responses",                                         py_key: Py(                                             0x00007f7556058eb0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f75582f4e70,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f755b0c49e0,                                     ),                                 ),                                 on_error: Raise,                                 validator: Bool(                                     BoolValidator {                                         strict: false,                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[bool]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa1860,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f75560582f0,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "modeling_cmd_batch_req": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f7556059040,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f75560582f0,                                                 ),                                             ],                                         },                                         expected_repr: "'modeling_cmd_batch_req'",                                         name: "literal['modeling_cmd_batch_req']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['modeling_cmd_batch_req']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionModelingCmdBatchReq",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d3dc4b0,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionModelingCmdBatchReq",     }, ), definitions=[Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cd02920) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cdb8500) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1c93d9d0) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1d08fe90) }), StrEnum(EnumValidator { phantom: PhantomData<_pydantic_core::validators::enum_::StrEnumValidator>, class: Py(0x564f1c8f2600), lookup: LiteralLookup { expected_bool: None, expected_int: None, expected_str: Some({"arrow": 1, "none": 0}), expected_py_dict: None, expected_py_values: None, expected_py_primitives: Some(Py(0x7f75560597c0)), values: [Py(0x7f7556749a30), Py(0x7f7556749d30)] }, missing: None, expected_repr: "'none' or 'arrow'", strict: false, class_repr: "AnnotationLineEnd", name: "str-enum[AnnotationLineEnd]" }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cc86ec0) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cda5a20) })], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, batch_id: kittycad.models.modeling_cmd_id.ModelingCmdId, requests: List[kittycad.models.modeling_cmd_req.ModelingCmdReq], responses: bool = False, type: Literal['modeling_cmd_batch_req'] = 'modeling_cmd_batch_req') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

batch_id: ModelingCmdId[source]
classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'batch_id': FieldInfo(annotation=ModelingCmdId, required=True), 'requests': FieldInfo(annotation=List[ModelingCmdReq], required=True), 'responses': FieldInfo(annotation=bool, required=False, default=False), 'type': FieldInfo(annotation=Literal['modeling_cmd_batch_req'], required=False, default='modeling_cmd_batch_req')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

requests: List[ModelingCmdReq][source]
responses: bool[source]
classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['modeling_cmd_batch_req'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self

class kittycad.models.web_socket_request.OptionModelingCmdReq(**data)[source][source]

The modeling command request.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'cmd': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'cmd_id': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'model_config': 'ClassVar[ConfigDict]', 'type': typing.Literal['modeling_cmd_req']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 34[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'definitions': [{'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.axis_direction_pair.AxisDirectionPair'>, 'config': {'title': 'AxisDirectionPair'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.axis_direction_pair.AxisDirectionPair'>>]}, 'ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'cls': <enum 'Axis'>, 'members': [Axis.Y, Axis.Z], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.axis.Axis:94897786844256', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'direction': {'metadata': {}, 'schema': {'cls': <enum 'Direction'>, 'members': [Direction.POSITIVE, Direction.NEGATIVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.direction.Direction:94897784207408', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'AxisDirectionPair', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <class 'kittycad.models.transform.Transform'>, 'config': {'title': 'Transform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.transform.Transform'>>]}, 'ref': 'kittycad.models.transform.Transform:94897785816496', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'replicate': {'metadata': {}, 'schema': {'default': True, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'rotation': {'metadata': {}, 'schema': {'default': {'angle': {'unit': 'degrees', 'value': 0.0}, 'axis': {'x': 0.0, 'y': 0.0, 'z': 1.0}, 'origin': {'type': 'local'}}, 'schema': {'cls': <class 'kittycad.models.rotation.Rotation'>, 'config': {'title': 'Rotation'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.rotation.Rotation'>>]}, 'ref': 'kittycad.models.rotation.Rotation:94897785811024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'axis': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937245008]", 'root_model': True, 'schema': {'choices': {'custom': {'cls': <class 'kittycad.models.origin_type.OptionCustom'>, 'config': {'title': 'OptionCustom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionCustom'>>]}, 'ref': 'kittycad.models.origin_type.OptionCustom:94897785526736', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'origin': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'custom', 'schema': {'expected': ['custom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCustom', 'type': 'model-fields'}, 'type': 'model'}, 'global': {'cls': <class 'kittycad.models.origin_type.OptionGlobal'>, 'config': {'title': 'OptionGlobal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionGlobal'>>]}, 'ref': 'kittycad.models.origin_type.OptionGlobal:94897781840752', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'global', 'schema': {'expected': ['global'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGlobal', 'type': 'model-fields'}, 'type': 'model'}, 'local': {'cls': <class 'kittycad.models.origin_type.OptionLocal'>, 'config': {'title': 'OptionLocal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionLocal'>>]}, 'ref': 'kittycad.models.origin_type.OptionLocal:94897781837328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'local', 'schema': {'expected': ['local'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLocal', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'Rotation', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'scale': {'metadata': {}, 'schema': {'default': {'x': 1.0, 'y': 1.0, 'z': 1.0}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'default'}, 'type': 'model-field'}, 'translate': {'metadata': {}, 'schema': {'default': {'x': 0.0, 'y': 0.0, 'z': 0.0}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'Transform', 'type': 'model-fields'}, 'type': 'model'}, {'cls': <enum 'AnnotationLineEnd'>, 'members': [AnnotationLineEnd.NONE, AnnotationLineEnd.ARROW], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'sub_type': 'str', 'type': 'enum'}, {'cls': <class 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d'>, 'config': {'title': 'TransformByForPoint3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d'>>]}, 'ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'is_local': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937245008]", 'root_model': True, 'schema': {'choices': {'custom': {'cls': <class 'kittycad.models.origin_type.OptionCustom'>, 'config': {'title': 'OptionCustom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionCustom'>>]}, 'ref': 'kittycad.models.origin_type.OptionCustom:94897785526736', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'origin': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'custom', 'schema': {'expected': ['custom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCustom', 'type': 'model-fields'}, 'type': 'model'}, 'global': {'cls': <class 'kittycad.models.origin_type.OptionGlobal'>, 'config': {'title': 'OptionGlobal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionGlobal'>>]}, 'ref': 'kittycad.models.origin_type.OptionGlobal:94897781840752', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'global', 'schema': {'expected': ['global'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGlobal', 'type': 'model-fields'}, 'type': 'model'}, 'local': {'cls': <class 'kittycad.models.origin_type.OptionLocal'>, 'config': {'title': 'OptionLocal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionLocal'>>]}, 'ref': 'kittycad.models.origin_type.OptionLocal:94897781837328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'local', 'schema': {'expected': ['local'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLocal', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'property': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'set': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'TransformByForPoint3d', 'type': 'model-fields'}, 'type': 'model'}], 'schema': {'cls': <class 'kittycad.models.web_socket_request.OptionModelingCmdReq'>, 'config': {'title': 'OptionModelingCmdReq'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionModelingCmdReq'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionModelingCmdReq:94897792949072', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'cmd': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141934485840]", 'root_model': True, 'schema': {'choices': {'add_hole_from_offset': {'cls': <class 'kittycad.models.modeling_cmd.OptionAddHoleFromOffset'>, 'config': {'title': 'OptionAddHoleFromOffset'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionAddHoleFromOffset'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionAddHoleFromOffset:94897790426640', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'offset': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'add_hole_from_offset', 'schema': {'expected': ['add_hole_from_offset'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionAddHoleFromOffset', 'type': 'model-fields'}, 'type': 'model'}, 'boolean_intersection': {'cls': <class 'kittycad.models.modeling_cmd.OptionBooleanIntersection'>, 'config': {'title': 'OptionBooleanIntersection'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionBooleanIntersection'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionBooleanIntersection:94897790387392', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'solid_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'boolean_intersection', 'schema': {'expected': ['boolean_intersection'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBooleanIntersection', 'type': 'model-fields'}, 'type': 'model'}, 'boolean_subtract': {'cls': <class 'kittycad.models.modeling_cmd.OptionBooleanSubtract'>, 'config': {'title': 'OptionBooleanSubtract'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionBooleanSubtract'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionBooleanSubtract:94897790398544', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'target_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tool_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'boolean_subtract', 'schema': {'expected': ['boolean_subtract'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBooleanSubtract', 'type': 'model-fields'}, 'type': 'model'}, 'boolean_union': {'cls': <class 'kittycad.models.modeling_cmd.OptionBooleanUnion'>, 'config': {'title': 'OptionBooleanUnion'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionBooleanUnion'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionBooleanUnion:94897790376368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'solid_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'boolean_union', 'schema': {'expected': ['boolean_union'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBooleanUnion', 'type': 'model-fields'}, 'type': 'model'}, 'camera_drag_end': {'cls': <class 'kittycad.models.modeling_cmd.OptionCameraDragEnd'>, 'config': {'title': 'OptionCameraDragEnd'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCameraDragEnd'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCameraDragEnd:94897790023904', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'interaction': {'metadata': {}, 'schema': {'cls': <enum 'CameraDragInteractionType'>, 'members': [CameraDragInteractionType.PAN, CameraDragInteractionType.ROTATE, CameraDragInteractionType.ROTATETRACKBALL, CameraDragInteractionType.ZOOM], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_drag_interaction_type.CameraDragInteractionType:94897785544464', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'camera_drag_end', 'schema': {'expected': ['camera_drag_end'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionCameraDragEnd', 'type': 'model-fields'}, 'type': 'model'}, 'camera_drag_move': {'cls': <class 'kittycad.models.modeling_cmd.OptionCameraDragMove'>, 'config': {'title': 'OptionCameraDragMove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCameraDragMove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCameraDragMove:94897790010320', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'interaction': {'metadata': {}, 'schema': {'cls': <enum 'CameraDragInteractionType'>, 'members': [CameraDragInteractionType.PAN, CameraDragInteractionType.ROTATE, CameraDragInteractionType.ROTATETRACKBALL, CameraDragInteractionType.ZOOM], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_drag_interaction_type.CameraDragInteractionType:94897785544464', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'camera_drag_move', 'schema': {'expected': ['camera_drag_move'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionCameraDragMove', 'type': 'model-fields'}, 'type': 'model'}, 'camera_drag_start': {'cls': <class 'kittycad.models.modeling_cmd.OptionCameraDragStart'>, 'config': {'title': 'OptionCameraDragStart'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCameraDragStart'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCameraDragStart:94897790001056', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'interaction': {'metadata': {}, 'schema': {'cls': <enum 'CameraDragInteractionType'>, 'members': [CameraDragInteractionType.PAN, CameraDragInteractionType.ROTATE, CameraDragInteractionType.ROTATETRACKBALL, CameraDragInteractionType.ZOOM], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_drag_interaction_type.CameraDragInteractionType:94897785544464', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'camera_drag_start', 'schema': {'expected': ['camera_drag_start'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionCameraDragStart', 'type': 'model-fields'}, 'type': 'model'}, 'center_of_mass': {'cls': <class 'kittycad.models.modeling_cmd.OptionCenterOfMass'>, 'config': {'title': 'OptionCenterOfMass'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCenterOfMass'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCenterOfMass:94897790195840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'center_of_mass', 'schema': {'expected': ['center_of_mass'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCenterOfMass', 'type': 'model-fields'}, 'type': 'model'}, 'close_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionClosePath'>, 'config': {'title': 'OptionClosePath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionClosePath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionClosePath:94897783918368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'close_path', 'schema': {'expected': ['close_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionClosePath', 'type': 'model-fields'}, 'type': 'model'}, 'curve_get_control_points': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveGetControlPoints'>, 'config': {'title': 'OptionCurveGetControlPoints'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveGetControlPoints'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveGetControlPoints:94897789112896', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'curve_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_get_control_points', 'schema': {'expected': ['curve_get_control_points'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveGetControlPoints', 'type': 'model-fields'}, 'type': 'model'}, 'curve_get_end_points': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveGetEndPoints'>, 'config': {'title': 'OptionCurveGetEndPoints'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveGetEndPoints'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveGetEndPoints:94897789252368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'curve_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_get_end_points', 'schema': {'expected': ['curve_get_end_points'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveGetEndPoints', 'type': 'model-fields'}, 'type': 'model'}, 'curve_get_type': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveGetType'>, 'config': {'title': 'OptionCurveGetType'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveGetType'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveGetType:94897789105008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'curve_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_get_type', 'schema': {'expected': ['curve_get_type'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveGetType', 'type': 'model-fields'}, 'type': 'model'}, 'curve_set_constraint': {'cls': <class 'kittycad.models.modeling_cmd.OptionCurveSetConstraint'>, 'config': {'title': 'OptionCurveSetConstraint'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionCurveSetConstraint'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionCurveSetConstraint:94897789037552', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'constraint_bound': {'metadata': {}, 'schema': {'cls': <enum 'PathComponentConstraintBound'>, 'members': [PathComponentConstraintBound.UNCONSTRAINED, PathComponentConstraintBound.PARTIALLY_CONSTRAINED, PathComponentConstraintBound.FULLY_CONSTRAINED], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.path_component_constraint_bound.PathComponentConstraintBound:94897789462704', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'constraint_type': {'metadata': {}, 'schema': {'cls': <enum 'PathComponentConstraintType'>, 'members': [PathComponentConstraintType.UNCONSTRAINED, PathComponentConstraintType.VERTICAL, PathComponentConstraintType.HORIZONTAL, PathComponentConstraintType.EQUAL_LENGTH, PathComponentConstraintType.PARALLEL, PathComponentConstraintType.ANGLE_BETWEEN], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.path_component_constraint_type.PathComponentConstraintType:94897789436192', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'curve_set_constraint', 'schema': {'expected': ['curve_set_constraint'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCurveSetConstraint', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_center_to_scene': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToScene'>, 'config': {'title': 'OptionDefaultCameraCenterToScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToScene'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToScene:94897790272688', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'camera_movement': {'metadata': {}, 'schema': {'default': 'vantage', 'schema': {'cls': <enum 'CameraMovement'>, 'members': [CameraMovement.VANTAGE, CameraMovement.NONE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_movement.CameraMovement:94897785518896', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_center_to_scene', 'schema': {'expected': ['default_camera_center_to_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraCenterToScene', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_center_to_selection': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToSelection'>, 'config': {'title': 'OptionDefaultCameraCenterToSelection'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToSelection'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraCenterToSelection:94897790263232', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'camera_movement': {'metadata': {}, 'schema': {'default': 'vantage', 'schema': {'cls': <enum 'CameraMovement'>, 'members': [CameraMovement.VANTAGE, CameraMovement.NONE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.camera_movement.CameraMovement:94897785518896', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_center_to_selection', 'schema': {'expected': ['default_camera_center_to_selection'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraCenterToSelection', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_focus_on': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraFocusOn'>, 'config': {'title': 'OptionDefaultCameraFocusOn'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraFocusOn'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraFocusOn:94897790218656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_focus_on', 'schema': {'expected': ['default_camera_focus_on'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'uuid': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraFocusOn', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_get_settings': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetSettings'>, 'config': {'title': 'OptionDefaultCameraGetSettings'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetSettings'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraGetSettings:94897790033664', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_get_settings', 'schema': {'expected': ['default_camera_get_settings'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraGetSettings', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_get_view': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetView'>, 'config': {'title': 'OptionDefaultCameraGetView'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraGetView'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraGetView:94897790040016', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_get_view', 'schema': {'expected': ['default_camera_get_view'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraGetView', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_look_at': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraLookAt'>, 'config': {'title': 'OptionDefaultCameraLookAt'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraLookAt'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraLookAt:94897790054256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_look_at', 'schema': {'expected': ['default_camera_look_at'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'vantage': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraLookAt', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_perspective_settings': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraPerspectiveSettings'>, 'config': {'title': 'OptionDefaultCameraPerspectiveSettings'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraPerspectiveSettings'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraPerspectiveSettings:94897790069360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'fov_y': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_perspective_settings', 'schema': {'expected': ['default_camera_perspective_settings'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'vantage': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'z_far': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'z_near': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraPerspectiveSettings', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_set_orthographic': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetOrthographic'>, 'config': {'title': 'OptionDefaultCameraSetOrthographic'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetOrthographic'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraSetOrthographic:94897790245536', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_set_orthographic', 'schema': {'expected': ['default_camera_set_orthographic'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraSetOrthographic', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_set_perspective': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetPerspective'>, 'config': {'title': 'OptionDefaultCameraSetPerspective'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetPerspective'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraSetPerspective:94897790252976', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'parameters': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.perspective_camera_parameters.PerspectiveCameraParameters'>, 'config': {'title': 'PerspectiveCameraParameters'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.perspective_camera_parameters.PerspectiveCameraParameters'>>]}, 'ref': 'kittycad.models.perspective_camera_parameters.PerspectiveCameraParameters:94897789500400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'fov_y': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'z_far': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'z_near': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'PerspectiveCameraParameters', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_set_perspective', 'schema': {'expected': ['default_camera_set_perspective'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraSetPerspective', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_set_view': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetView'>, 'config': {'title': 'OptionDefaultCameraSetView'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraSetView'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraSetView:94897790046384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_camera_set_view', 'schema': {'expected': ['default_camera_set_view'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'view': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.camera_view_state.CameraViewState'>, 'config': {'title': 'CameraViewState'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.camera_view_state.CameraViewState'>>]}, 'ref': 'kittycad.models.camera_view_state.CameraViewState:94897785545456', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'eye_offset': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'fov_y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'is_ortho': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'ortho_scale_enabled': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'ortho_scale_factor': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'pivot_position': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'pivot_rotation': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point4d.Point4d'>, 'config': {'title': 'Point4d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point4d.Point4d'>>]}, 'ref': 'kittycad.models.point4d.Point4d:94897782027840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'w': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point4d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'world_coord_system': {'metadata': {}, 'schema': {'cls': <enum 'WorldCoordinateSystem'>, 'members': [WorldCoordinateSystem.RIGHT_HANDED_UP_Z, WorldCoordinateSystem.RIGHT_HANDED_UP_Y], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.world_coordinate_system.WorldCoordinateSystem:94897785538704', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'CameraViewState', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraSetView', 'type': 'model-fields'}, 'type': 'model'}, 'default_camera_zoom': {'cls': <class 'kittycad.models.modeling_cmd.OptionDefaultCameraZoom'>, 'config': {'title': 'OptionDefaultCameraZoom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDefaultCameraZoom'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDefaultCameraZoom:94897790095024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'magnitude': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'default_camera_zoom', 'schema': {'expected': ['default_camera_zoom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultCameraZoom', 'type': 'model-fields'}, 'type': 'model'}, 'density': {'cls': <class 'kittycad.models.modeling_cmd.OptionDensity'>, 'config': {'title': 'OptionDensity'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDensity'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDensity:94897790170304', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'material_mass': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'material_mass_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitMass'>, 'members': [UnitMass.G, UnitMass.KG, UnitMass.LB], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_mass.UnitMass:94897788671168', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitDensity'>, 'members': [UnitDensity.LB_FT3, UnitDensity.KG_M3], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_density.UnitDensity:94897788688240', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'density', 'schema': {'expected': ['density'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDensity', 'type': 'model-fields'}, 'type': 'model'}, 'disable_dry_run': {'cls': <class 'kittycad.models.modeling_cmd.OptionDisableDryRun'>, 'config': {'title': 'OptionDisableDryRun'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionDisableDryRun'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionDisableDryRun:94897789070400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'disable_dry_run', 'schema': {'expected': ['disable_dry_run'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDisableDryRun', 'type': 'model-fields'}, 'type': 'model'}, 'edge_lines_visible': {'cls': <class 'kittycad.models.modeling_cmd.OptionEdgeLinesVisible'>, 'config': {'title': 'OptionEdgeLinesVisible'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEdgeLinesVisible'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEdgeLinesVisible:94897789638464', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'hidden': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'edge_lines_visible', 'schema': {'expected': ['edge_lines_visible'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEdgeLinesVisible', 'type': 'model-fields'}, 'type': 'model'}, 'enable_dry_run': {'cls': <class 'kittycad.models.modeling_cmd.OptionEnableDryRun'>, 'config': {'title': 'OptionEnableDryRun'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEnableDryRun'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEnableDryRun:94897789064176', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'enable_dry_run', 'schema': {'expected': ['enable_dry_run'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEnableDryRun', 'type': 'model-fields'}, 'type': 'model'}, 'enable_sketch_mode': {'cls': <class 'kittycad.models.modeling_cmd.OptionEnableSketchMode'>, 'config': {'title': 'OptionEnableSketchMode'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEnableSketchMode'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEnableSketchMode:94897789049600', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'adjust_camera': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'animated': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'ortho': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'planar_normal': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'enable_sketch_mode', 'schema': {'expected': ['enable_sketch_mode'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEnableSketchMode', 'type': 'model-fields'}, 'type': 'model'}, 'engine_util_evaluate_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionEngineUtilEvaluatePath'>, 'config': {'title': 'OptionEngineUtilEvaluatePath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEngineUtilEvaluatePath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEngineUtilEvaluatePath:94897785817488', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_json': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 't': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'engine_util_evaluate_path', 'schema': {'expected': ['engine_util_evaluate_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEngineUtilEvaluatePath', 'type': 'model-fields'}, 'type': 'model'}, 'entity_circular_pattern': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityCircularPattern'>, 'config': {'title': 'OptionEntityCircularPattern'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityCircularPattern'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityCircularPattern:94897788831472', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'arc_degrees': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'num_repetitions': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'rotate_duplicates': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_circular_pattern', 'schema': {'expected': ['entity_circular_pattern'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityCircularPattern', 'type': 'model-fields'}, 'type': 'model'}, 'entity_clone': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityClone'>, 'config': {'title': 'OptionEntityClone'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityClone'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityClone:94897788791392', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_clone', 'schema': {'expected': ['entity_clone'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityClone', 'type': 'model-fields'}, 'type': 'model'}, 'entity_fade': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityFade'>, 'config': {'title': 'OptionEntityFade'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityFade'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityFade:94897788958928', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'duration_seconds': {'metadata': {}, 'schema': {'default': 0.4, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'fade_in': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_fade', 'schema': {'expected': ['entity_fade'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityFade', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_all_child_uuids': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetAllChildUuids'>, 'config': {'title': 'OptionEntityGetAllChildUuids'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetAllChildUuids'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetAllChildUuids:94897790159968', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_all_child_uuids', 'schema': {'expected': ['entity_get_all_child_uuids'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetAllChildUuids', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_child_uuid': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetChildUuid'>, 'config': {'title': 'OptionEntityGetChildUuid'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetChildUuid'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetChildUuid:94897790151200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'child_index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_child_uuid', 'schema': {'expected': ['entity_get_child_uuid'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetChildUuid', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_distance': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetDistance'>, 'config': {'title': 'OptionEntityGetDistance'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetDistance'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetDistance:94897788780496', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'distance_type': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionEuclidean, OptionOnAxis], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937782608]", 'root_model': True, 'schema': {'choices': {'euclidean': {'cls': <class 'kittycad.models.distance_type.OptionEuclidean'>, 'config': {'title': 'OptionEuclidean'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.distance_type.OptionEuclidean'>>]}, 'ref': 'kittycad.models.distance_type.OptionEuclidean:94897789348768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'euclidean', 'schema': {'expected': ['euclidean'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEuclidean', 'type': 'model-fields'}, 'type': 'model'}, 'on_axis': {'cls': <class 'kittycad.models.distance_type.OptionOnAxis'>, 'config': {'title': 'OptionOnAxis'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.distance_type.OptionOnAxis'>>]}, 'ref': 'kittycad.models.distance_type.OptionOnAxis:94897784051968', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'cls': <enum 'GlobalAxis'>, 'members': [GlobalAxis.X, GlobalAxis.Y, GlobalAxis.Z], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.global_axis.GlobalAxis:94897789391904', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'on_axis', 'schema': {'expected': ['on_axis'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionOnAxis', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'entity_id1': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'entity_id2': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_distance', 'schema': {'expected': ['entity_get_distance'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetDistance', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_num_children': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetNumChildren'>, 'config': {'title': 'OptionEntityGetNumChildren'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetNumChildren'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetNumChildren:94897790143328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_num_children', 'schema': {'expected': ['entity_get_num_children'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetNumChildren', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_parent_id': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetParentId'>, 'config': {'title': 'OptionEntityGetParentId'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetParentId'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetParentId:94897790135456', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_parent_id', 'schema': {'expected': ['entity_get_parent_id'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetParentId', 'type': 'model-fields'}, 'type': 'model'}, 'entity_get_sketch_paths': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityGetSketchPaths'>, 'config': {'title': 'OptionEntityGetSketchPaths'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityGetSketchPaths'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityGetSketchPaths:94897788772624', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_get_sketch_paths', 'schema': {'expected': ['entity_get_sketch_paths'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityGetSketchPaths', 'type': 'model-fields'}, 'type': 'model'}, 'entity_linear_pattern': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityLinearPattern'>, 'config': {'title': 'OptionEntityLinearPattern'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityLinearPattern'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityLinearPattern:94897788818992', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'num_repetitions': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'spacing': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_linear_pattern', 'schema': {'expected': ['entity_linear_pattern'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityLinearPattern', 'type': 'model-fields'}, 'type': 'model'}, 'entity_linear_pattern_transform': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityLinearPatternTransform'>, 'config': {'title': 'OptionEntityLinearPatternTransform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityLinearPatternTransform'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityLinearPatternTransform:94897789497984', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'transform': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'schema_ref': 'kittycad.models.transform.Transform:94897785816496', 'type': 'definition-ref'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'transforms': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'items_schema': {'schema_ref': 'kittycad.models.transform.Transform:94897785816496', 'type': 'definition-ref'}, 'type': 'list'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_linear_pattern_transform', 'schema': {'expected': ['entity_linear_pattern_transform'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityLinearPatternTransform', 'type': 'model-fields'}, 'type': 'model'}, 'entity_make_helix': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelix'>, 'config': {'title': 'OptionEntityMakeHelix'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelix'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMakeHelix:94897788846272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'cylinder_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'is_clockwise': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'length': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'revolutions': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 0.0}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_make_helix', 'schema': {'expected': ['entity_make_helix'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMakeHelix', 'type': 'model-fields'}, 'type': 'model'}, 'entity_make_helix_from_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromEdge'>, 'config': {'title': 'OptionEntityMakeHelixFromEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromEdge:94897788881808', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'is_clockwise': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'length': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'revolutions': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 0.0}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_make_helix_from_edge', 'schema': {'expected': ['entity_make_helix_from_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMakeHelixFromEdge', 'type': 'model-fields'}, 'type': 'model'}, 'entity_make_helix_from_params': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromParams'>, 'config': {'title': 'OptionEntityMakeHelixFromParams'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromParams'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMakeHelixFromParams:94897788860784', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'is_clockwise': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'length': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'revolutions': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 0.0}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_make_helix_from_params', 'schema': {'expected': ['entity_make_helix_from_params'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMakeHelixFromParams', 'type': 'model-fields'}, 'type': 'model'}, 'entity_mirror': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMirror'>, 'config': {'title': 'OptionEntityMirror'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMirror'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMirror:94897788899760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'point': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_mirror', 'schema': {'expected': ['entity_mirror'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMirror', 'type': 'model-fields'}, 'type': 'model'}, 'entity_mirror_across_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntityMirrorAcrossEdge'>, 'config': {'title': 'OptionEntityMirrorAcrossEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntityMirrorAcrossEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntityMirrorAcrossEdge:94897788913504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_mirror_across_edge', 'schema': {'expected': ['entity_mirror_across_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntityMirrorAcrossEdge', 'type': 'model-fields'}, 'type': 'model'}, 'entity_set_opacity': {'cls': <class 'kittycad.models.modeling_cmd.OptionEntitySetOpacity'>, 'config': {'title': 'OptionEntitySetOpacity'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionEntitySetOpacity'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionEntitySetOpacity:94897788950192', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'opacity': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'entity_set_opacity', 'schema': {'expected': ['entity_set_opacity'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEntitySetOpacity', 'type': 'model-fields'}, 'type': 'model'}, 'export': {'cls': <class 'kittycad.models.modeling_cmd.OptionExport'>, 'config': {'title': 'OptionExport'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExport'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExport:94897790124176', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141939028048]", 'root_model': True, 'schema': {'choices': {'fbx': {'cls': <class 'kittycad.models.output_format3d.OptionFbx'>, 'config': {'title': 'OptionFbx'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionFbx'>>]}, 'ref': 'kittycad.models.output_format3d.OptionFbx:94897787675632', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'FbxStorage'>, 'members': [FbxStorage.ASCII, FbxStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.fbx_storage.FbxStorage:94897787657376', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'fbx', 'schema': {'expected': ['fbx'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFbx', 'type': 'model-fields'}, 'type': 'model'}, 'gltf': {'cls': <class 'kittycad.models.output_format3d.OptionGltf'>, 'config': {'title': 'OptionGltf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionGltf'>>]}, 'ref': 'kittycad.models.output_format3d.OptionGltf:94897787658368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'presentation': {'metadata': {}, 'schema': {'cls': <enum 'GltfPresentation'>, 'members': [GltfPresentation.COMPACT, GltfPresentation.PRETTY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_presentation.GltfPresentation:94897788642112', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'GltfStorage'>, 'members': [GltfStorage.BINARY, GltfStorage.STANDARD, GltfStorage.EMBEDDED], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_storage.GltfStorage:94897788627312', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'gltf', 'schema': {'expected': ['gltf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGltf', 'type': 'model-fields'}, 'type': 'model'}, 'obj': {'cls': <class 'kittycad.models.output_format3d.OptionObj'>, 'config': {'title': 'OptionObj'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionObj'>>]}, 'ref': 'kittycad.models.output_format3d.OptionObj:94897788637376', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'obj', 'schema': {'expected': ['obj'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionObj', 'type': 'model-fields'}, 'type': 'model'}, 'ply': {'cls': <class 'kittycad.models.output_format3d.OptionPly'>, 'config': {'title': 'OptionPly'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionPly'>>]}, 'ref': 'kittycad.models.output_format3d.OptionPly:94897786164416', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'PlyStorage'>, 'members': [PlyStorage.ASCII, PlyStorage.BINARY_LITTLE_ENDIAN, PlyStorage.BINARY_BIG_ENDIAN], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.ply_storage.PlyStorage:94897772554304', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ply', 'schema': {'expected': ['ply'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionPly', 'type': 'model-fields'}, 'type': 'model'}, 'step': {'cls': <class 'kittycad.models.output_format3d.OptionStep'>, 'config': {'title': 'OptionStep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStep'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStep:94897783523728', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'step', 'schema': {'expected': ['step'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStep', 'type': 'model-fields'}, 'type': 'model'}, 'stl': {'cls': <class 'kittycad.models.output_format3d.OptionStl'>, 'config': {'title': 'OptionStl'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStl'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStl:94897785832144', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'StlStorage'>, 'members': [StlStorage.ASCII, StlStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.stl_storage.StlStorage:94897787674640', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'stl', 'schema': {'expected': ['stl'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionStl', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'export', 'schema': {'expected': ['export'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExport', 'type': 'model-fields'}, 'type': 'model'}, 'export2d': {'cls': <class 'kittycad.models.modeling_cmd.OptionExport2d'>, 'config': {'title': 'OptionExport2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExport2d'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExport2d:94897790102928', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[OptionDxf, FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141935557840]", 'root_model': True, 'schema': {'choices': {'dxf': {'cls': <class 'kittycad.models.output_format2d.OptionDxf'>, 'config': {'title': 'OptionDxf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format2d.OptionDxf'>>]}, 'ref': 'kittycad.models.output_format2d.OptionDxf:94897785736528', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'storage': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.output_format2d.DxfData'>, 'config': {'title': 'DxfData'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format2d.DxfData'>>]}, 'ref': 'kittycad.models.output_format2d.DxfData:94897789318912', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {}, 'model_name': 'DxfData', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'dxf', 'schema': {'expected': ['dxf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDxf', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'export2d', 'schema': {'expected': ['export2d'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExport2d', 'type': 'model-fields'}, 'type': 'model'}, 'export3d': {'cls': <class 'kittycad.models.modeling_cmd.OptionExport3d'>, 'config': {'title': 'OptionExport3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExport3d'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExport3d:94897790112848', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141939028048]", 'root_model': True, 'schema': {'choices': {'fbx': {'cls': <class 'kittycad.models.output_format3d.OptionFbx'>, 'config': {'title': 'OptionFbx'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionFbx'>>]}, 'ref': 'kittycad.models.output_format3d.OptionFbx:94897787675632', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'FbxStorage'>, 'members': [FbxStorage.ASCII, FbxStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.fbx_storage.FbxStorage:94897787657376', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'fbx', 'schema': {'expected': ['fbx'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFbx', 'type': 'model-fields'}, 'type': 'model'}, 'gltf': {'cls': <class 'kittycad.models.output_format3d.OptionGltf'>, 'config': {'title': 'OptionGltf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionGltf'>>]}, 'ref': 'kittycad.models.output_format3d.OptionGltf:94897787658368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'presentation': {'metadata': {}, 'schema': {'cls': <enum 'GltfPresentation'>, 'members': [GltfPresentation.COMPACT, GltfPresentation.PRETTY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_presentation.GltfPresentation:94897788642112', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'GltfStorage'>, 'members': [GltfStorage.BINARY, GltfStorage.STANDARD, GltfStorage.EMBEDDED], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.gltf_storage.GltfStorage:94897788627312', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'gltf', 'schema': {'expected': ['gltf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGltf', 'type': 'model-fields'}, 'type': 'model'}, 'obj': {'cls': <class 'kittycad.models.output_format3d.OptionObj'>, 'config': {'title': 'OptionObj'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionObj'>>]}, 'ref': 'kittycad.models.output_format3d.OptionObj:94897788637376', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'obj', 'schema': {'expected': ['obj'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionObj', 'type': 'model-fields'}, 'type': 'model'}, 'ply': {'cls': <class 'kittycad.models.output_format3d.OptionPly'>, 'config': {'title': 'OptionPly'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionPly'>>]}, 'ref': 'kittycad.models.output_format3d.OptionPly:94897786164416', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'PlyStorage'>, 'members': [PlyStorage.ASCII, PlyStorage.BINARY_LITTLE_ENDIAN, PlyStorage.BINARY_BIG_ENDIAN], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.ply_storage.PlyStorage:94897772554304', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ply', 'schema': {'expected': ['ply'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionPly', 'type': 'model-fields'}, 'type': 'model'}, 'step': {'cls': <class 'kittycad.models.output_format3d.OptionStep'>, 'config': {'title': 'OptionStep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStep'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStep:94897783523728', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'created': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'microseconds_precision': 'truncate', 'type': 'datetime'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'step', 'schema': {'expected': ['step'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStep', 'type': 'model-fields'}, 'type': 'model'}, 'stl': {'cls': <class 'kittycad.models.output_format3d.OptionStl'>, 'config': {'title': 'OptionStl'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.output_format3d.OptionStl'>>]}, 'ref': 'kittycad.models.output_format3d.OptionStl:94897785832144', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionDefaultScene, OptionSceneByIndex, OptionSceneByName, OptionMeshByIndex, OptionMeshByName], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938809936]", 'root_model': True, 'schema': {'choices': {'default_scene': {'cls': <class 'kittycad.models.selection.OptionDefaultScene'>, 'config': {'title': 'OptionDefaultScene'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionDefaultScene'>>]}, 'ref': 'kittycad.models.selection.OptionDefaultScene:94897772556768', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'default_scene', 'schema': {'expected': ['default_scene'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionDefaultScene', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_index': {'cls': <class 'kittycad.models.selection.OptionMeshByIndex'>, 'config': {'title': 'OptionMeshByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByIndex:94897783534432', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_index', 'schema': {'expected': ['mesh_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'mesh_by_name': {'cls': <class 'kittycad.models.selection.OptionMeshByName'>, 'config': {'title': 'OptionMeshByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionMeshByName'>>]}, 'ref': 'kittycad.models.selection.OptionMeshByName:94897772568400', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mesh_by_name', 'schema': {'expected': ['mesh_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMeshByName', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_index': {'cls': <class 'kittycad.models.selection.OptionSceneByIndex'>, 'config': {'title': 'OptionSceneByIndex'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByIndex'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByIndex:94897787656384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_index', 'schema': {'expected': ['scene_by_index'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByIndex', 'type': 'model-fields'}, 'type': 'model'}, 'scene_by_name': {'cls': <class 'kittycad.models.selection.OptionSceneByName'>, 'config': {'title': 'OptionSceneByName'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.selection.OptionSceneByName'>>]}, 'ref': 'kittycad.models.selection.OptionSceneByName:94897783533312', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'name': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'scene_by_name', 'schema': {'expected': ['scene_by_name'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneByName', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'storage': {'metadata': {}, 'schema': {'cls': <enum 'StlStorage'>, 'members': [StlStorage.ASCII, StlStorage.BINARY], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.stl_storage.StlStorage:94897787674640', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'stl', 'schema': {'expected': ['stl'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionStl', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'export3d', 'schema': {'expected': ['export3d'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExport3d', 'type': 'model-fields'}, 'type': 'model'}, 'extend_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionExtendPath'>, 'config': {'title': 'OptionExtendPath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExtendPath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExtendPath:94897785779872', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'segment': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLine, OptionArc, OptionBezier, OptionTangentialArc, OptionTangentialArcTo, OptionArcTo, OptionCircularInvolute, OptionEllipse, OptionConicTo], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141935315792]", 'root_model': True, 'schema': {'choices': {'arc': {'cls': <class 'kittycad.models.path_segment.OptionArc'>, 'config': {'title': 'OptionArc'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionArc'>>]}, 'ref': 'kittycad.models.path_segment.OptionArc:94897789312816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'start': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'arc', 'schema': {'expected': ['arc'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionArc', 'type': 'model-fields'}, 'type': 'model'}, 'arc_to': {'cls': <class 'kittycad.models.path_segment.OptionArcTo'>, 'config': {'title': 'OptionArcTo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionArcTo'>>]}, 'ref': 'kittycad.models.path_segment.OptionArcTo:94897787609136', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'interior': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'arc_to', 'schema': {'expected': ['arc_to'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionArcTo', 'type': 'model-fields'}, 'type': 'model'}, 'bezier': {'cls': <class 'kittycad.models.path_segment.OptionBezier'>, 'config': {'title': 'OptionBezier'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionBezier'>>]}, 'ref': 'kittycad.models.path_segment.OptionBezier:94897787642240', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'control1': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'control2': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'bezier', 'schema': {'expected': ['bezier'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionBezier', 'type': 'model-fields'}, 'type': 'model'}, 'circular_involute': {'cls': <class 'kittycad.models.path_segment.OptionCircularInvolute'>, 'config': {'title': 'OptionCircularInvolute'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionCircularInvolute'>>]}, 'ref': 'kittycad.models.path_segment.OptionCircularInvolute:94897788738336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'end_radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'reverse': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'start_radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'circular_involute', 'schema': {'expected': ['circular_involute'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCircularInvolute', 'type': 'model-fields'}, 'type': 'model'}, 'conic_to': {'cls': <class 'kittycad.models.path_segment.OptionConicTo'>, 'config': {'title': 'OptionConicTo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionConicTo'>>]}, 'ref': 'kittycad.models.path_segment.OptionConicTo:94897789470656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'end_tangent': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'interior': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'start_tangent': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'conic_to', 'schema': {'expected': ['conic_to'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionConicTo', 'type': 'model-fields'}, 'type': 'model'}, 'ellipse': {'cls': <class 'kittycad.models.path_segment.OptionEllipse'>, 'config': {'title': 'OptionEllipse'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionEllipse'>>]}, 'ref': 'kittycad.models.path_segment.OptionEllipse:94897788751504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'center': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'end_angle': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'major_axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point2d.Point2d:94897789531760', 'type': 'definition-ref'}, 'type': 'model-field'}, 'minor_radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'start_angle': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ellipse', 'schema': {'expected': ['ellipse'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionEllipse', 'type': 'model-fields'}, 'type': 'model'}, 'line': {'cls': <class 'kittycad.models.path_segment.OptionLine'>, 'config': {'title': 'OptionLine'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionLine'>>]}, 'ref': 'kittycad.models.path_segment.OptionLine:94897789522960', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'relative': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'line', 'schema': {'expected': ['line'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLine', 'type': 'model-fields'}, 'type': 'model'}, 'tangential_arc': {'cls': <class 'kittycad.models.path_segment.OptionTangentialArc'>, 'config': {'title': 'OptionTangentialArc'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionTangentialArc'>>]}, 'ref': 'kittycad.models.path_segment.OptionTangentialArc:94897787607120', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'offset': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'tangential_arc', 'schema': {'expected': ['tangential_arc'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTangentialArc', 'type': 'model-fields'}, 'type': 'model'}, 'tangential_arc_to': {'cls': <class 'kittycad.models.path_segment.OptionTangentialArcTo'>, 'config': {'title': 'OptionTangentialArcTo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.path_segment.OptionTangentialArcTo'>>]}, 'ref': 'kittycad.models.path_segment.OptionTangentialArcTo:94897787640048', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle_snap_increment': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'to': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'tangential_arc_to', 'schema': {'expected': ['tangential_arc_to'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTangentialArcTo', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'extend_path', 'schema': {'expected': ['extend_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExtendPath', 'type': 'model-fields'}, 'type': 'model'}, 'extrude': {'cls': <class 'kittycad.models.modeling_cmd.OptionExtrude'>, 'config': {'title': 'OptionExtrude'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionExtrude'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionExtrude:94897789496992', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'distance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'extrude_method': {'metadata': {}, 'schema': {'default': 'merge', 'schema': {'cls': <enum 'ExtrudeMethod'>, 'members': [ExtrudeMethod.NEW, ExtrudeMethod.MERGE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.extrude_method.ExtrudeMethod:94897784453824', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'faces': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>, 'config': {'title': 'ExtrudedFaceInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>>]}, 'ref': 'kittycad.models.extruded_face_info.ExtrudedFaceInfo:94897784387264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'bottom': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'sides': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.side_face.SideFace'>, 'config': {'title': 'SideFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.side_face.SideFace'>>]}, 'ref': 'kittycad.models.side_face.SideFace:94897785353152', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'SideFace', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'top': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'ExtrudedFaceInfo', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'opposite': {'metadata': {}, 'schema': {'default': 'None', 'schema': {'function': {'function': <class 'kittycad.models.opposite_for_length_unit.OppositeForLengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'default'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'extrude', 'schema': {'expected': ['extrude'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionExtrude', 'type': 'model-fields'}, 'type': 'model'}, 'face_get_center': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceGetCenter'>, 'config': {'title': 'OptionFaceGetCenter'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceGetCenter'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceGetCenter:94897789798320', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_get_center', 'schema': {'expected': ['face_get_center'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceGetCenter', 'type': 'model-fields'}, 'type': 'model'}, 'face_get_gradient': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceGetGradient'>, 'config': {'title': 'OptionFaceGetGradient'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceGetGradient'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceGetGradient:94897789806208', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_get_gradient', 'schema': {'expected': ['face_get_gradient'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'uv': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceGetGradient', 'type': 'model-fields'}, 'type': 'model'}, 'face_get_position': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceGetPosition'>, 'config': {'title': 'OptionFaceGetPosition'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceGetPosition'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceGetPosition:94897789789600', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_get_position', 'schema': {'expected': ['face_get_position'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'uv': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceGetPosition', 'type': 'model-fields'}, 'type': 'model'}, 'face_is_planar': {'cls': <class 'kittycad.models.modeling_cmd.OptionFaceIsPlanar'>, 'config': {'title': 'OptionFaceIsPlanar'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionFaceIsPlanar'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionFaceIsPlanar:94897789782336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'face_is_planar', 'schema': {'expected': ['face_is_planar'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFaceIsPlanar', 'type': 'model-fields'}, 'type': 'model'}, 'get_entity_type': {'cls': <class 'kittycad.models.modeling_cmd.OptionGetEntityType'>, 'config': {'title': 'OptionGetEntityType'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionGetEntityType'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionGetEntityType:94897789675648', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'get_entity_type', 'schema': {'expected': ['get_entity_type'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGetEntityType', 'type': 'model-fields'}, 'type': 'model'}, 'get_num_objects': {'cls': <class 'kittycad.models.modeling_cmd.OptionGetNumObjects'>, 'config': {'title': 'OptionGetNumObjects'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionGetNumObjects'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionGetNumObjects:94897790357216', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'get_num_objects', 'schema': {'expected': ['get_num_objects'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGetNumObjects', 'type': 'model-fields'}, 'type': 'model'}, 'get_sketch_mode_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionGetSketchModePlane'>, 'config': {'title': 'OptionGetSketchModePlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionGetSketchModePlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionGetSketchModePlane:94897789031296', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'get_sketch_mode_plane', 'schema': {'expected': ['get_sketch_mode_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGetSketchModePlane', 'type': 'model-fields'}, 'type': 'model'}, 'handle_mouse_drag_end': {'cls': <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragEnd'>, 'config': {'title': 'OptionHandleMouseDragEnd'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragEnd'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHandleMouseDragEnd:94897789226624', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'handle_mouse_drag_end', 'schema': {'expected': ['handle_mouse_drag_end'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionHandleMouseDragEnd', 'type': 'model-fields'}, 'type': 'model'}, 'handle_mouse_drag_move': {'cls': <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragMove'>, 'config': {'title': 'OptionHandleMouseDragMove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragMove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHandleMouseDragMove:94897789215872', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'handle_mouse_drag_move', 'schema': {'expected': ['handle_mouse_drag_move'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionHandleMouseDragMove', 'type': 'model-fields'}, 'type': 'model'}, 'handle_mouse_drag_start': {'cls': <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragStart'>, 'config': {'title': 'OptionHandleMouseDragStart'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHandleMouseDragStart'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHandleMouseDragStart:94897789207936', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'handle_mouse_drag_start', 'schema': {'expected': ['handle_mouse_drag_start'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionHandleMouseDragStart', 'type': 'model-fields'}, 'type': 'model'}, 'highlight_set_entities': {'cls': <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntities'>, 'config': {'title': 'OptionHighlightSetEntities'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntities'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHighlightSetEntities:94897789605568', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'highlight_set_entities', 'schema': {'expected': ['highlight_set_entities'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionHighlightSetEntities', 'type': 'model-fields'}, 'type': 'model'}, 'highlight_set_entity': {'cls': <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntity'>, 'config': {'title': 'OptionHighlightSetEntity'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionHighlightSetEntity'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionHighlightSetEntity:94897789570224', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'selected_at_window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'highlight_set_entity', 'schema': {'expected': ['highlight_set_entity'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionHighlightSetEntity', 'type': 'model-fields'}, 'type': 'model'}, 'import_files': {'cls': <class 'kittycad.models.modeling_cmd.OptionImportFiles'>, 'config': {'title': 'OptionImportFiles'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionImportFiles'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionImportFiles:94897789283248', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'files': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.import_file.ImportFile'>, 'config': {'title': 'ImportFile'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.import_file.ImportFile'>>]}, 'ref': 'kittycad.models.import_file.ImportFile:94897787791824', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'data': {'metadata': {}, 'schema': {'type': 'bytes'}, 'type': 'model-field'}, 'path': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'ImportFile', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'format': {'metadata': {}, 'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionFbx, OptionGltf, OptionObj, OptionPly, OptionSldprt, OptionStep, OptionStl], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141938745040]", 'root_model': True, 'schema': {'choices': {'fbx': {'cls': <class 'kittycad.models.input_format3d.OptionFbx'>, 'config': {'title': 'OptionFbx'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionFbx'>>]}, 'ref': 'kittycad.models.input_format3d.OptionFbx:94897784204272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'fbx', 'schema': {'expected': ['fbx'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionFbx', 'type': 'model-fields'}, 'type': 'model'}, 'gltf': {'cls': <class 'kittycad.models.input_format3d.OptionGltf'>, 'config': {'title': 'OptionGltf'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionGltf'>>]}, 'ref': 'kittycad.models.input_format3d.OptionGltf:94897784205264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'gltf', 'schema': {'expected': ['gltf'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGltf', 'type': 'model-fields'}, 'type': 'model'}, 'obj': {'cls': <class 'kittycad.models.input_format3d.OptionObj'>, 'config': {'title': 'OptionObj'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionObj'>>]}, 'ref': 'kittycad.models.input_format3d.OptionObj:94897782241840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'obj', 'schema': {'expected': ['obj'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionObj', 'type': 'model-fields'}, 'type': 'model'}, 'ply': {'cls': <class 'kittycad.models.input_format3d.OptionPly'>, 'config': {'title': 'OptionPly'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionPly'>>]}, 'ref': 'kittycad.models.input_format3d.OptionPly:94897782235440', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'ply', 'schema': {'expected': ['ply'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionPly', 'type': 'model-fields'}, 'type': 'model'}, 'sldprt': {'cls': <class 'kittycad.models.input_format3d.OptionSldprt'>, 'config': {'title': 'OptionSldprt'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionSldprt'>>]}, 'ref': 'kittycad.models.input_format3d.OptionSldprt:94897782234448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'split_closed_faces': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'sldprt', 'schema': {'expected': ['sldprt'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSldprt', 'type': 'model-fields'}, 'type': 'model'}, 'step': {'cls': <class 'kittycad.models.input_format3d.OptionStep'>, 'config': {'title': 'OptionStep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionStep'>>]}, 'ref': 'kittycad.models.input_format3d.OptionStep:94897782081824', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'split_closed_faces': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'step', 'schema': {'expected': ['step'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStep', 'type': 'model-fields'}, 'type': 'model'}, 'stl': {'cls': <class 'kittycad.models.input_format3d.OptionStl'>, 'config': {'title': 'OptionStl'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.input_format3d.OptionStl'>>]}, 'ref': 'kittycad.models.input_format3d.OptionStl:94897786143792', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'coords': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.system.System'>, 'config': {'title': 'System'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.system.System'>>]}, 'ref': 'kittycad.models.system.System:94897787463360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'forward': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}, 'up': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.axis_direction_pair.AxisDirectionPair:94897786141936', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'System', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'stl', 'schema': {'expected': ['stl'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionStl', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'import_files', 'schema': {'expected': ['import_files'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionImportFiles', 'type': 'model-fields'}, 'type': 'model'}, 'loft': {'cls': <class 'kittycad.models.modeling_cmd.OptionLoft'>, 'config': {'title': 'OptionLoft'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionLoft'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionLoft:94897783902016', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'base_curve_index': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'bez_approximate_rational': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'section_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'loft', 'schema': {'expected': ['loft'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'v_degree': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}}, 'model_name': 'OptionLoft', 'type': 'model-fields'}, 'type': 'model'}, 'make_axes_gizmo': {'cls': <class 'kittycad.models.modeling_cmd.OptionMakeAxesGizmo'>, 'config': {'title': 'OptionMakeAxesGizmo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMakeAxesGizmo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMakeAxesGizmo:94897789152480', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'clobber': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'gizmo_mode': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'make_axes_gizmo', 'schema': {'expected': ['make_axes_gizmo'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMakeAxesGizmo', 'type': 'model-fields'}, 'type': 'model'}, 'make_offset_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionMakeOffsetPath'>, 'config': {'title': 'OptionMakeOffsetPath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMakeOffsetPath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMakeOffsetPath:94897790412560', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_id': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'offset': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'make_offset_path', 'schema': {'expected': ['make_offset_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMakeOffsetPath', 'type': 'model-fields'}, 'type': 'model'}, 'make_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionMakePlane'>, 'config': {'title': 'OptionMakePlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMakePlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMakePlane:94897788971280', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'clobber': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'hide': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'bool'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'size': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'make_plane', 'schema': {'expected': ['make_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'x_axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'y_axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'OptionMakePlane', 'type': 'model-fields'}, 'type': 'model'}, 'mass': {'cls': <class 'kittycad.models.modeling_cmd.OptionMass'>, 'config': {'title': 'OptionMass'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMass'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMass:94897789303024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'material_density': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'material_density_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitDensity'>, 'members': [UnitDensity.LB_FT3, UnitDensity.KG_M3], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_density.UnitDensity:94897788688240', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitMass'>, 'members': [UnitMass.G, UnitMass.KG, UnitMass.LB], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_mass.UnitMass:94897788671168', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mass', 'schema': {'expected': ['mass'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMass', 'type': 'model-fields'}, 'type': 'model'}, 'mouse_click': {'cls': <class 'kittycad.models.modeling_cmd.OptionMouseClick'>, 'config': {'title': 'OptionMouseClick'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMouseClick'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMouseClick:94897789017120', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'mouse_click', 'schema': {'expected': ['mouse_click'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionMouseClick', 'type': 'model-fields'}, 'type': 'model'}, 'mouse_move': {'cls': <class 'kittycad.models.modeling_cmd.OptionMouseMove'>, 'config': {'title': 'OptionMouseMove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMouseMove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMouseMove:94897789006464', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'sequence': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'mouse_move', 'schema': {'expected': ['mouse_move'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionMouseMove', 'type': 'model-fields'}, 'type': 'model'}, 'move_path_pen': {'cls': <class 'kittycad.models.modeling_cmd.OptionMovePathPen'>, 'config': {'title': 'OptionMovePathPen'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionMovePathPen'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionMovePathPen:94897785824448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'to': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'move_path_pen', 'schema': {'expected': ['move_path_pen'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionMovePathPen', 'type': 'model-fields'}, 'type': 'model'}, 'new_annotation': {'cls': <class 'kittycad.models.modeling_cmd.OptionNewAnnotation'>, 'config': {'title': 'OptionNewAnnotation'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionNewAnnotation'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionNewAnnotation:94897789614816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'annotation_type': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationType'>, 'members': [AnnotationType.T2D, AnnotationType.T3D], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_type.AnnotationType:94897786530016', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'clobber': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'options': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.annotation_options.AnnotationOptions'>, 'config': {'title': 'AnnotationOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_options.AnnotationOptions'>>]}, 'ref': 'kittycad.models.annotation_options.AnnotationOptions:94897787297776', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_ends': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>, 'config': {'title': 'AnnotationLineEndOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>>]}, 'ref': 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions:94897785622816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}, 'start': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'AnnotationLineEndOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_width': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'position': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>, 'config': {'title': 'AnnotationTextOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>>]}, 'ref': 'kittycad.models.annotation_text_options.AnnotationTextOptions:94897781549536', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'point_size': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentX'>, 'members': [AnnotationTextAlignmentX.LEFT, AnnotationTextAlignmentX.CENTER, AnnotationTextAlignmentX.RIGHT], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_x.AnnotationTextAlignmentX:94897785629456', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentY'>, 'members': [AnnotationTextAlignmentY.BOTTOM, AnnotationTextAlignmentY.CENTER, AnnotationTextAlignmentY.TOP], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_y.AnnotationTextAlignmentY:94897785621552', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'AnnotationTextOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'AnnotationOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'new_annotation', 'schema': {'expected': ['new_annotation'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionNewAnnotation', 'type': 'model-fields'}, 'type': 'model'}, 'object_bring_to_front': {'cls': <class 'kittycad.models.modeling_cmd.OptionObjectBringToFront'>, 'config': {'title': 'OptionObjectBringToFront'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionObjectBringToFront'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionObjectBringToFront:94897789655056', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'object_bring_to_front', 'schema': {'expected': ['object_bring_to_front'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionObjectBringToFront', 'type': 'model-fields'}, 'type': 'model'}, 'object_set_material_params_pbr': {'cls': <class 'kittycad.models.modeling_cmd.OptionObjectSetMaterialParamsPbr'>, 'config': {'title': 'OptionObjectSetMaterialParamsPbr'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionObjectSetMaterialParamsPbr'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionObjectSetMaterialParamsPbr:94897789663024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'ambient_occlusion': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'color': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'metalness': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'roughness': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'object_set_material_params_pbr', 'schema': {'expected': ['object_set_material_params_pbr'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionObjectSetMaterialParamsPbr', 'type': 'model-fields'}, 'type': 'model'}, 'object_visible': {'cls': <class 'kittycad.models.modeling_cmd.OptionObjectVisible'>, 'config': {'title': 'OptionObjectVisible'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionObjectVisible'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionObjectVisible:94897789646336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'hidden': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'object_visible', 'schema': {'expected': ['object_visible'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionObjectVisible', 'type': 'model-fields'}, 'type': 'model'}, 'orient_to_face': {'cls': <class 'kittycad.models.modeling_cmd.OptionOrientToFace'>, 'config': {'title': 'OptionOrientToFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionOrientToFace'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionOrientToFace:94897790296896', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'animated': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'padding': {'metadata': {}, 'schema': {'default': 0.0, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'orient_to_face', 'schema': {'expected': ['orient_to_face'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionOrientToFace', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_curve_uuid': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuid'>, 'config': {'title': 'OptionPathGetCurveUuid'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuid'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetCurveUuid:94897783807520', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'index': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_curve_uuid', 'schema': {'expected': ['path_get_curve_uuid'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetCurveUuid', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_curve_uuids_for_vertices': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuidsForVertices'>, 'config': {'title': 'OptionPathGetCurveUuidsForVertices'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetCurveUuidsForVertices'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetCurveUuidsForVertices:94897789169056', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_curve_uuids_for_vertices', 'schema': {'expected': ['path_get_curve_uuids_for_vertices'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'vertex_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetCurveUuidsForVertices', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_info': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetInfo'>, 'config': {'title': 'OptionPathGetInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetInfo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetInfo:94897789161200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_info', 'schema': {'expected': ['path_get_info'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetInfo', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_sketch_target_uuid': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetSketchTargetUuid'>, 'config': {'title': 'OptionPathGetSketchTargetUuid'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetSketchTargetUuid'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetSketchTargetUuid:94897789200048', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_sketch_target_uuid', 'schema': {'expected': ['path_get_sketch_target_uuid'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetSketchTargetUuid', 'type': 'model-fields'}, 'type': 'model'}, 'path_get_vertex_uuids': {'cls': <class 'kittycad.models.modeling_cmd.OptionPathGetVertexUuids'>, 'config': {'title': 'OptionPathGetVertexUuids'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPathGetVertexUuids'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPathGetVertexUuids:94897789192176', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'path_get_vertex_uuids', 'schema': {'expected': ['path_get_vertex_uuids'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPathGetVertexUuids', 'type': 'model-fields'}, 'type': 'model'}, 'plane_intersect_and_project': {'cls': <class 'kittycad.models.modeling_cmd.OptionPlaneIntersectAndProject'>, 'config': {'title': 'OptionPlaneIntersectAndProject'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPlaneIntersectAndProject'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPlaneIntersectAndProject:94897789243616', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'plane_intersect_and_project', 'schema': {'expected': ['plane_intersect_and_project'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}}, 'model_name': 'OptionPlaneIntersectAndProject', 'type': 'model-fields'}, 'type': 'model'}, 'plane_set_color': {'cls': <class 'kittycad.models.modeling_cmd.OptionPlaneSetColor'>, 'config': {'title': 'OptionPlaneSetColor'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionPlaneSetColor'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionPlaneSetColor:94897788988848', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'plane_set_color', 'schema': {'expected': ['plane_set_color'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPlaneSetColor', 'type': 'model-fields'}, 'type': 'model'}, 'project_entity_to_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionProjectEntityToPlane'>, 'config': {'title': 'OptionProjectEntityToPlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionProjectEntityToPlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionProjectEntityToPlane:94897789120816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'project_entity_to_plane', 'schema': {'expected': ['project_entity_to_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'use_plane_coords': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'OptionProjectEntityToPlane', 'type': 'model-fields'}, 'type': 'model'}, 'project_points_to_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionProjectPointsToPlane'>, 'config': {'title': 'OptionProjectPointsToPlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionProjectPointsToPlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionProjectPointsToPlane:94897789131744', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'plane_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'points': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'project_points_to_plane', 'schema': {'expected': ['project_points_to_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'use_plane_coords': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'OptionProjectPointsToPlane', 'type': 'model-fields'}, 'type': 'model'}, 'reconfigure_stream': {'cls': <class 'kittycad.models.modeling_cmd.OptionReconfigureStream'>, 'config': {'title': 'OptionReconfigureStream'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionReconfigureStream'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionReconfigureStream:94897783687200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'bitrate': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'fps': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'height': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'reconfigure_stream', 'schema': {'expected': ['reconfigure_stream'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'width': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}}, 'model_name': 'OptionReconfigureStream', 'type': 'model-fields'}, 'type': 'model'}, 'remove_scene_objects': {'cls': <class 'kittycad.models.modeling_cmd.OptionRemoveSceneObjects'>, 'config': {'title': 'OptionRemoveSceneObjects'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionRemoveSceneObjects'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionRemoveSceneObjects:94897789234528', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'remove_scene_objects', 'schema': {'expected': ['remove_scene_objects'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionRemoveSceneObjects', 'type': 'model-fields'}, 'type': 'model'}, 'revolve': {'cls': <class 'kittycad.models.modeling_cmd.OptionRevolve'>, 'config': {'title': 'OptionRevolve'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionRevolve'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionRevolve:94897783850384', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'axis': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'axis_is_2d': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'opposite': {'metadata': {}, 'schema': {'default': 'None', 'schema': {'function': {'function': <class 'kittycad.models.opposite_for_angle.OppositeForAngle'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'default'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.point3d.Point3d:94897781544448', 'type': 'definition-ref'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'revolve', 'schema': {'expected': ['revolve'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionRevolve', 'type': 'model-fields'}, 'type': 'model'}, 'revolve_about_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionRevolveAboutEdge'>, 'config': {'title': 'OptionRevolveAboutEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionRevolveAboutEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionRevolveAboutEdge:94897783886368', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.angle.Angle'>, 'config': {'title': 'Angle'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.angle.Angle'>>]}, 'ref': 'kittycad.models.angle.Angle:94897783608256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitAngle'>, 'members': [UnitAngle.DEGREES, UnitAngle.RADIANS], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_angle.UnitAngle:94897782236432', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Angle', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'opposite': {'metadata': {}, 'schema': {'default': 'None', 'schema': {'function': {'function': <class 'kittycad.models.opposite_for_angle.OppositeForAngle'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'default'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'revolve_about_edge', 'schema': {'expected': ['revolve_about_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionRevolveAboutEdge', 'type': 'model-fields'}, 'type': 'model'}, 'scene_clear_all': {'cls': <class 'kittycad.models.modeling_cmd.OptionSceneClearAll'>, 'config': {'title': 'OptionSceneClearAll'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSceneClearAll'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSceneClearAll:94897789554864', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'scene_clear_all', 'schema': {'expected': ['scene_clear_all'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSceneClearAll', 'type': 'model-fields'}, 'type': 'model'}, 'select_add': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectAdd'>, 'config': {'title': 'OptionSelectAdd'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectAdd'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectAdd:94897788933008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_add', 'schema': {'expected': ['select_add'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectAdd', 'type': 'model-fields'}, 'type': 'model'}, 'select_clear': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectClear'>, 'config': {'title': 'OptionSelectClear'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectClear'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectClear:94897790341808', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'select_clear', 'schema': {'expected': ['select_clear'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectClear', 'type': 'model-fields'}, 'type': 'model'}, 'select_get': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectGet'>, 'config': {'title': 'OptionSelectGet'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectGet'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectGet:94897790349520', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'select_get', 'schema': {'expected': ['select_get'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectGet', 'type': 'model-fields'}, 'type': 'model'}, 'select_remove': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectRemove'>, 'config': {'title': 'OptionSelectRemove'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectRemove'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectRemove:94897789545728', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_remove', 'schema': {'expected': ['select_remove'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectRemove', 'type': 'model-fields'}, 'type': 'model'}, 'select_replace': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectReplace'>, 'config': {'title': 'OptionSelectReplace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectReplace'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectReplace:94897789561088', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entities': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_replace', 'schema': {'expected': ['select_replace'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectReplace', 'type': 'model-fields'}, 'type': 'model'}, 'select_with_point': {'cls': <class 'kittycad.models.modeling_cmd.OptionSelectWithPoint'>, 'config': {'title': 'OptionSelectWithPoint'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSelectWithPoint'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSelectWithPoint:94897788923648', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'selected_at_window': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'selection_type': {'metadata': {}, 'schema': {'cls': <enum 'SceneSelectionType'>, 'members': [SceneSelectionType.REPLACE, SceneSelectionType.ADD, SceneSelectionType.REMOVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.scene_selection_type.SceneSelectionType:94897785815504', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'select_with_point', 'schema': {'expected': ['select_with_point'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSelectWithPoint', 'type': 'model-fields'}, 'type': 'model'}, 'send_object': {'cls': <class 'kittycad.models.modeling_cmd.OptionSendObject'>, 'config': {'title': 'OptionSendObject'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSendObject'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSendObject:94897788941440', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'front': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'send_object', 'schema': {'expected': ['send_object'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSendObject', 'type': 'model-fields'}, 'type': 'model'}, 'set_background_color': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetBackgroundColor'>, 'config': {'title': 'OptionSetBackgroundColor'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetBackgroundColor'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetBackgroundColor:94897789077504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_background_color', 'schema': {'expected': ['set_background_color'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetBackgroundColor', 'type': 'model-fields'}, 'type': 'model'}, 'set_current_tool_properties': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetCurrentToolProperties'>, 'config': {'title': 'OptionSetCurrentToolProperties'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetCurrentToolProperties'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetCurrentToolProperties:94897789085376', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_current_tool_properties', 'schema': {'expected': ['set_current_tool_properties'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetCurrentToolProperties', 'type': 'model-fields'}, 'type': 'model'}, 'set_default_system_properties': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetDefaultSystemProperties'>, 'config': {'title': 'OptionSetDefaultSystemProperties'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetDefaultSystemProperties'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetDefaultSystemProperties:94897789095088', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_default_system_properties', 'schema': {'expected': ['set_default_system_properties'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetDefaultSystemProperties', 'type': 'model-fields'}, 'type': 'model'}, 'set_grid_auto_scale': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetGridAutoScale'>, 'config': {'title': 'OptionSetGridAutoScale'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetGridAutoScale'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetGridAutoScale:94897790457360', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'set_grid_auto_scale', 'schema': {'expected': ['set_grid_auto_scale'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetGridAutoScale', 'type': 'model-fields'}, 'type': 'model'}, 'set_grid_reference_plane': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetGridReferencePlane'>, 'config': {'title': 'OptionSetGridReferencePlane'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetGridReferencePlane'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetGridReferencePlane:94897790436912', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'grid_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'reference_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_grid_reference_plane', 'schema': {'expected': ['set_grid_reference_plane'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetGridReferencePlane', 'type': 'model-fields'}, 'type': 'model'}, 'set_grid_scale': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetGridScale'>, 'config': {'title': 'OptionSetGridScale'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetGridScale'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetGridScale:94897790446704', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'set_grid_scale', 'schema': {'expected': ['set_grid_scale'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'units': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'value': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'OptionSetGridScale', 'type': 'model-fields'}, 'type': 'model'}, 'set_object_transform': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetObjectTransform'>, 'config': {'title': 'OptionSetObjectTransform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetObjectTransform'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetObjectTransform:94897790364944', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'transforms': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.component_transform.ComponentTransform'>, 'config': {'title': 'ComponentTransform'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.component_transform.ComponentTransform'>>]}, 'ref': 'kittycad.models.component_transform.ComponentTransform:94897781887696', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'rotate_angle_axis': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.transform_by_for_point4d.TransformByForPoint4d'>, 'config': {'title': 'TransformByForPoint4d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.transform_by_for_point4d.TransformByForPoint4d'>>]}, 'ref': 'kittycad.models.transform_by_for_point4d.TransformByForPoint4d:94897781886704', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'is_local': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'origin': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>, 'config': {'title': "RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]"}, 'custom_init': False, 'generic_origin': <class 'pydantic.root_model.RootModel'>, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'pydantic.root_model.RootModel[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]]'>>]}, 'ref': "pydantic.root_model.RootModel:94897787678944[Annotated[Union[OptionLocal, OptionGlobal, OptionCustom], FieldInfo(annotation=NoneType, required=True, discriminator='type')]:140141937245008]", 'root_model': True, 'schema': {'choices': {'custom': {'cls': <class 'kittycad.models.origin_type.OptionCustom'>, 'config': {'title': 'OptionCustom'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionCustom'>>]}, 'ref': 'kittycad.models.origin_type.OptionCustom:94897785526736', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'origin': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'custom', 'schema': {'expected': ['custom'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionCustom', 'type': 'model-fields'}, 'type': 'model'}, 'global': {'cls': <class 'kittycad.models.origin_type.OptionGlobal'>, 'config': {'title': 'OptionGlobal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionGlobal'>>]}, 'ref': 'kittycad.models.origin_type.OptionGlobal:94897781840752', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'global', 'schema': {'expected': ['global'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionGlobal', 'type': 'model-fields'}, 'type': 'model'}, 'local': {'cls': <class 'kittycad.models.origin_type.OptionLocal'>, 'config': {'title': 'OptionLocal'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.origin_type.OptionLocal'>>]}, 'ref': 'kittycad.models.origin_type.OptionLocal:94897781837328', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'local', 'schema': {'expected': ['local'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionLocal', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'property': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.point4d.Point4d'>, 'config': {'title': 'Point4d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point4d.Point4d'>>]}, 'ref': 'kittycad.models.point4d.Point4d:94897782027840', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'w': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point4d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'set': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}}, 'model_name': 'TransformByForPoint4d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'rotate_rpy': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'schema_ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'type': 'definition-ref'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'scale': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'schema_ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'type': 'definition-ref'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'translate': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'schema_ref': 'kittycad.models.transform_by_for_point3d.TransformByForPoint3d:94897781863568', 'type': 'definition-ref'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'ComponentTransform', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_object_transform', 'schema': {'expected': ['set_object_transform'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetObjectTransform', 'type': 'model-fields'}, 'type': 'model'}, 'set_scene_units': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetSceneUnits'>, 'config': {'title': 'OptionSetSceneUnits'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetSceneUnits'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetSceneUnits:94897789294480', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'set_scene_units', 'schema': {'expected': ['set_scene_units'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}, 'unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitLength'>, 'members': [UnitLength.CM, UnitLength.FT, UnitLength.IN, UnitLength.M, UnitLength.MM, UnitLength.YD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_length.UnitLength:94897786140944', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'OptionSetSceneUnits', 'type': 'model-fields'}, 'type': 'model'}, 'set_selection_filter': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetSelectionFilter'>, 'config': {'title': 'OptionSetSelectionFilter'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetSelectionFilter'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetSelectionFilter:94897790235008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'filter': {'metadata': {}, 'schema': {'items_schema': {'cls': <enum 'EntityType'>, 'members': [EntityType.ENTITY, EntityType.OBJECT, EntityType.PATH, EntityType.CURVE, EntityType.SOLID2D, EntityType.SOLID3D, EntityType.EDGE, EntityType.FACE, EntityType.PLANE, EntityType.VERTEX], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.entity_type.EntityType:94897785025168', 'sub_type': 'str', 'type': 'enum'}, 'type': 'list'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_selection_filter', 'schema': {'expected': ['set_selection_filter'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetSelectionFilter', 'type': 'model-fields'}, 'type': 'model'}, 'set_selection_type': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetSelectionType'>, 'config': {'title': 'OptionSetSelectionType'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetSelectionType'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetSelectionType:94897790226560', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'selection_type': {'metadata': {}, 'schema': {'cls': <enum 'SceneSelectionType'>, 'members': [SceneSelectionType.REPLACE, SceneSelectionType.ADD, SceneSelectionType.REMOVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.scene_selection_type.SceneSelectionType:94897785815504', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_selection_type', 'schema': {'expected': ['set_selection_type'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetSelectionType', 'type': 'model-fields'}, 'type': 'model'}, 'set_tool': {'cls': <class 'kittycad.models.modeling_cmd.OptionSetTool'>, 'config': {'title': 'OptionSetTool'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSetTool'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSetTool:94897788997600', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'tool': {'metadata': {}, 'schema': {'cls': <enum 'SceneToolType'>, 'members': [SceneToolType.CAMERA_REVOLVE, SceneToolType.SELECT, SceneToolType.MOVE, SceneToolType.SKETCH_LINE, SceneToolType.SKETCH_TANGENTIAL_ARC, SceneToolType.SKETCH_CURVE, SceneToolType.SKETCH_CURVE_MOD], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.scene_tool_type.SceneToolType:94897785798928', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'set_tool', 'schema': {'expected': ['set_tool'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSetTool', 'type': 'model-fields'}, 'type': 'model'}, 'sketch_mode_disable': {'cls': <class 'kittycad.models.modeling_cmd.OptionSketchModeDisable'>, 'config': {'title': 'OptionSketchModeDisable'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSketchModeDisable'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSketchModeDisable:94897789025008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'sketch_mode_disable', 'schema': {'expected': ['sketch_mode_disable'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSketchModeDisable', 'type': 'model-fields'}, 'type': 'model'}, 'solid2d_add_hole': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid2dAddHole'>, 'config': {'title': 'OptionSolid2dAddHole'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid2dAddHole'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid2dAddHole:94897789692256', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'hole_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid2d_add_hole', 'schema': {'expected': ['solid2d_add_hole'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid2dAddHole', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_fillet_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dFilletEdge'>, 'config': {'title': 'OptionSolid3dFilletEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dFilletEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dFilletEdge:94897789755264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'cut_type': {'metadata': {}, 'schema': {'default': 'fillet', 'schema': {'cls': <enum 'CutType'>, 'members': [CutType.FILLET, CutType.CHAMFER], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.cut_type.CutType:94897784048544', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'edge_id': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'edge_ids': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'extra_face_ids': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'radius': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'strategy': {'metadata': {}, 'schema': {'default': 'automatic', 'schema': {'cls': <enum 'CutStrategy'>, 'members': [CutStrategy.BASIC, CutStrategy.CSG, CutStrategy.AUTOMATIC], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.cut_strategy.CutStrategy:94897784041152', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_fillet_edge', 'schema': {'expected': ['solid3d_fillet_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dFilletEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_adjacency_info': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAdjacencyInfo'>, 'config': {'title': 'OptionSolid3dGetAdjacencyInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAdjacencyInfo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetAdjacencyInfo:94897790331984', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_adjacency_info', 'schema': {'expected': ['solid3d_get_adjacency_info'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetAdjacencyInfo', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_all_edge_faces': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllEdgeFaces'>, 'config': {'title': 'OptionSolid3dGetAllEdgeFaces'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllEdgeFaces'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetAllEdgeFaces:94897789683504', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_all_edge_faces', 'schema': {'expected': ['solid3d_get_all_edge_faces'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetAllEdgeFaces', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_all_opposite_edges': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllOppositeEdges'>, 'config': {'title': 'OptionSolid3dGetAllOppositeEdges'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetAllOppositeEdges'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetAllOppositeEdges:94897789701008', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'along_vector': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_all_opposite_edges', 'schema': {'expected': ['solid3d_get_all_opposite_edges'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetAllOppositeEdges', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_common_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetCommonEdge'>, 'config': {'title': 'OptionSolid3dGetCommonEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetCommonEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetCommonEdge:94897789745184', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_common_edge', 'schema': {'expected': ['solid3d_get_common_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetCommonEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_extrusion_face_info': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetExtrusionFaceInfo'>, 'config': {'title': 'OptionSolid3dGetExtrusionFaceInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetExtrusionFaceInfo'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetExtrusionFaceInfo:94897790322448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_extrusion_face_info', 'schema': {'expected': ['solid3d_get_extrusion_face_info'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetExtrusionFaceInfo', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_next_adjacent_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetNextAdjacentEdge'>, 'config': {'title': 'OptionSolid3dGetNextAdjacentEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetNextAdjacentEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetNextAdjacentEdge:94897785928272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_next_adjacent_edge', 'schema': {'expected': ['solid3d_get_next_adjacent_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetNextAdjacentEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_opposite_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetOppositeEdge'>, 'config': {'title': 'OptionSolid3dGetOppositeEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetOppositeEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetOppositeEdge:94897789714000', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_opposite_edge', 'schema': {'expected': ['solid3d_get_opposite_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetOppositeEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_get_prev_adjacent_edge': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dGetPrevAdjacentEdge'>, 'config': {'title': 'OptionSolid3dGetPrevAdjacentEdge'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dGetPrevAdjacentEdge'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dGetPrevAdjacentEdge:94897789734272', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'edge_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_get_prev_adjacent_edge', 'schema': {'expected': ['solid3d_get_prev_adjacent_edge'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dGetPrevAdjacentEdge', 'type': 'model-fields'}, 'type': 'model'}, 'solid3d_shell_face': {'cls': <class 'kittycad.models.modeling_cmd.OptionSolid3dShellFace'>, 'config': {'title': 'OptionSolid3dShellFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSolid3dShellFace'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSolid3dShellFace:94897783871712', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'hollow': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'object_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'shell_thickness': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'solid3d_shell_face', 'schema': {'expected': ['solid3d_shell_face'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSolid3dShellFace', 'type': 'model-fields'}, 'type': 'model'}, 'start_path': {'cls': <class 'kittycad.models.modeling_cmd.OptionStartPath'>, 'config': {'title': 'OptionStartPath'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionStartPath'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionStartPath:94897785819040', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'start_path', 'schema': {'expected': ['start_path'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionStartPath', 'type': 'model-fields'}, 'type': 'model'}, 'surface_area': {'cls': <class 'kittycad.models.modeling_cmd.OptionSurfaceArea'>, 'config': {'title': 'OptionSurfaceArea'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSurfaceArea'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSurfaceArea:94897790206720', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitArea'>, 'members': [UnitArea.CM2, UnitArea.DM2, UnitArea.FT2, UnitArea.IN2, UnitArea.KM2, UnitArea.M2, UnitArea.MM2, UnitArea.YD2], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_area.UnitArea:94897788674592', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'surface_area', 'schema': {'expected': ['surface_area'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSurfaceArea', 'type': 'model-fields'}, 'type': 'model'}, 'sweep': {'cls': <class 'kittycad.models.modeling_cmd.OptionSweep'>, 'config': {'title': 'OptionSweep'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionSweep'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionSweep:94897783834336', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'relative_to': {'metadata': {}, 'schema': {'default': 'sketch_plane', 'schema': {'cls': <enum 'RelativeTo'>, 'members': [RelativeTo.SKETCH_PLANE, RelativeTo.TRAJECTORY_CURVE], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.relative_to.RelativeTo:94897785778368', 'sub_type': 'str', 'type': 'enum'}, 'type': 'default'}, 'type': 'model-field'}, 'sectional': {'metadata': {}, 'schema': {'type': 'bool'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'trajectory': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'sweep', 'schema': {'expected': ['sweep'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSweep', 'type': 'model-fields'}, 'type': 'model'}, 'take_snapshot': {'cls': <class 'kittycad.models.modeling_cmd.OptionTakeSnapshot'>, 'config': {'title': 'OptionTakeSnapshot'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionTakeSnapshot'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionTakeSnapshot:94897789144048', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'format': {'metadata': {}, 'schema': {'cls': <enum 'ImageFormat'>, 'members': [ImageFormat.PNG, ImageFormat.JPEG], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.image_format.ImageFormat:94897787789840', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'take_snapshot', 'schema': {'expected': ['take_snapshot'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTakeSnapshot', 'type': 'model-fields'}, 'type': 'model'}, 'twist_extrude': {'cls': <class 'kittycad.models.modeling_cmd.OptionTwistExtrude'>, 'config': {'title': 'OptionTwistExtrude'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionTwistExtrude'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionTwistExtrude:94897783935904', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'angle_step_size': {'metadata': {}, 'schema': {'default': {'unit': 'degrees', 'value': 15.0}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'default'}, 'type': 'model-field'}, 'center_2d': {'metadata': {}, 'schema': {'default': {'x': 0.0, 'y': 0.0}, 'schema': {'cls': <class 'kittycad.models.point2d.Point2d'>, 'config': {'title': 'Point2d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point2d.Point2d'>>]}, 'ref': 'kittycad.models.point2d.Point2d:94897789531760', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}}, 'model_name': 'Point2d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'default'}, 'type': 'model-field'}, 'distance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'faces': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>, 'config': {'title': 'ExtrudedFaceInfo'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.extruded_face_info.ExtrudedFaceInfo'>>]}, 'ref': 'kittycad.models.extruded_face_info.ExtrudedFaceInfo:94897784387264', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'bottom': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'sides': {'metadata': {}, 'schema': {'items_schema': {'cls': <class 'kittycad.models.side_face.SideFace'>, 'config': {'title': 'SideFace'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.side_face.SideFace'>>]}, 'ref': 'kittycad.models.side_face.SideFace:94897785353152', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'face_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'path_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'SideFace', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'list'}, 'type': 'model-field'}, 'top': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}}, 'model_name': 'ExtrudedFaceInfo', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'target': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'tolerance': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.length_unit.LengthUnit'>, 'type': 'no-info'}, 'schema': {'type': 'float'}, 'type': 'function-after'}, 'type': 'model-field'}, 'total_rotation_angle': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.angle.Angle:94897783608256', 'type': 'definition-ref'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'twist_extrude', 'schema': {'expected': ['twist_extrude'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTwistExtrude', 'type': 'model-fields'}, 'type': 'model'}, 'update_annotation': {'cls': <class 'kittycad.models.modeling_cmd.OptionUpdateAnnotation'>, 'config': {'title': 'OptionUpdateAnnotation'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionUpdateAnnotation'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionUpdateAnnotation:94897789627984', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'annotation_id': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'options': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.annotation_options.AnnotationOptions'>, 'config': {'title': 'AnnotationOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_options.AnnotationOptions'>>]}, 'ref': 'kittycad.models.annotation_options.AnnotationOptions:94897787297776', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'color': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.color.Color'>, 'config': {'title': 'Color'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.color.Color'>>]}, 'ref': 'kittycad.models.color.Color:94897781546656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'a': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'b': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'g': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'r': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Color', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_ends': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>, 'config': {'title': 'AnnotationLineEndOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions'>>]}, 'ref': 'kittycad.models.annotation_line_end_options.AnnotationLineEndOptions:94897785622816', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'end': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}, 'start': {'metadata': {}, 'schema': {'schema_ref': 'kittycad.models.annotation_line_end.AnnotationLineEnd:94897781548544', 'type': 'definition-ref'}, 'type': 'model-field'}}, 'model_name': 'AnnotationLineEndOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'line_width': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'float'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'position': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.point3d.Point3d'>, 'config': {'title': 'Point3d'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.point3d.Point3d'>>]}, 'ref': 'kittycad.models.point3d.Point3d:94897781544448', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'x': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}, 'z': {'metadata': {}, 'schema': {'type': 'float'}, 'type': 'model-field'}}, 'model_name': 'Point3d', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'cls': <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>, 'config': {'title': 'AnnotationTextOptions'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.annotation_text_options.AnnotationTextOptions'>>]}, 'ref': 'kittycad.models.annotation_text_options.AnnotationTextOptions:94897781549536', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'point_size': {'metadata': {}, 'schema': {'type': 'int'}, 'type': 'model-field'}, 'text': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'x': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentX'>, 'members': [AnnotationTextAlignmentX.LEFT, AnnotationTextAlignmentX.CENTER, AnnotationTextAlignmentX.RIGHT], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_x.AnnotationTextAlignmentX:94897785629456', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'y': {'metadata': {}, 'schema': {'cls': <enum 'AnnotationTextAlignmentY'>, 'members': [AnnotationTextAlignmentY.BOTTOM, AnnotationTextAlignmentY.CENTER, AnnotationTextAlignmentY.TOP], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.annotation_text_alignment_y.AnnotationTextAlignmentY:94897785621552', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'AnnotationTextOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'AnnotationOptions', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'update_annotation', 'schema': {'expected': ['update_annotation'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionUpdateAnnotation', 'type': 'model-fields'}, 'type': 'model'}, 'view_isometric': {'cls': <class 'kittycad.models.modeling_cmd.OptionViewIsometric'>, 'config': {'title': 'OptionViewIsometric'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionViewIsometric'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionViewIsometric:94897788799248', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'padding': {'metadata': {}, 'schema': {'default': 0.0, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'view_isometric', 'schema': {'expected': ['view_isometric'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionViewIsometric', 'type': 'model-fields'}, 'type': 'model'}, 'volume': {'cls': <class 'kittycad.models.modeling_cmd.OptionVolume'>, 'config': {'title': 'OptionVolume'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionVolume'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionVolume:94897790184656', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'entity_ids': {'metadata': {}, 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'model-field'}, 'output_unit': {'metadata': {}, 'schema': {'cls': <enum 'UnitVolume'>, 'members': [UnitVolume.CM3, UnitVolume.FT3, UnitVolume.IN3, UnitVolume.M3, UnitVolume.YD3, UnitVolume.USFLOZ, UnitVolume.USGAL, UnitVolume.L, UnitVolume.ML], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.unit_volume.UnitVolume:94897788685216', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'volume', 'schema': {'expected': ['volume'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionVolume', 'type': 'model-fields'}, 'type': 'model'}, 'zoom_to_fit': {'cls': <class 'kittycad.models.modeling_cmd.OptionZoomToFit'>, 'config': {'title': 'OptionZoomToFit'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.modeling_cmd.OptionZoomToFit'>>]}, 'ref': 'kittycad.models.modeling_cmd.OptionZoomToFit:94897790282128', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'animated': {'metadata': {}, 'schema': {'default': False, 'schema': {'type': 'bool'}, 'type': 'default'}, 'type': 'model-field'}, 'object_ids': {'metadata': {}, 'schema': {'default': [], 'schema': {'items_schema': {'type': 'str'}, 'type': 'list'}, 'type': 'default'}, 'type': 'model-field'}, 'padding': {'metadata': {}, 'schema': {'default': 0.0, 'schema': {'type': 'float'}, 'type': 'default'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'zoom_to_fit', 'schema': {'expected': ['zoom_to_fit'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionZoomToFit', 'type': 'model-fields'}, 'type': 'model'}}, 'discriminator': 'type', 'from_attributes': True, 'metadata': {}, 'strict': False, 'type': 'tagged-union'}, 'type': 'model'}, 'type': 'model-field'}, 'cmd_id': {'metadata': {}, 'schema': {'function': {'function': <class 'kittycad.models.modeling_cmd_id.ModelingCmdId'>, 'type': 'no-info'}, 'schema': {'type': 'str'}, 'type': 'function-after'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'modeling_cmd_req', 'schema': {'expected': ['modeling_cmd_req'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionModelingCmdReq', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'definitions'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'cmd': FieldInfo(annotation=RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]], required=True), 'cmd_id': FieldInfo(annotation=ModelingCmdId, required=True), 'type': FieldInfo(annotation=Literal['modeling_cmd_req'], required=False, default='modeling_cmd_req')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d3d1b50,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f75574d41b0,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "modeling_cmd_req",                                             },                                             expected_py: None,                                             name: "literal['modeling_cmd_req']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "cmd": SerField {                         key_py: Py(                             0x00007f755a34ca50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             Prebuilt(                                 PrebuiltSerializer {                                     schema_serializer: Py(                                         0x00007f7556357120,                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "cmd_id": SerField {                         key_py: Py(                             0x00007f7556dd3b40,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             Str(                                 StrSerializer,                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 3,             },         ),         has_extra: false,         root_model: false,         name: "OptionModelingCmdReq",     }, ), definitions=[Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f75567601b0) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f7556761180) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f7556f1fb30) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f75565e3120) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f75565e1e70) }), Enum(EnumSerializer { class: Py(0x564f1c8f2600), serializer: Some(Str(StrSerializer)) }), Prebuilt(PrebuiltSerializer { schema_serializer: Py(0x7f7556712e40) })])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionModelingCmdReq", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "cmd",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "cmd",                                         py_key: Py(                                             0x00007f7556fa19b0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755a34ca50,                         ),                         validator: Prebuilt(                             PrebuiltValidator {                                 schema_validator: Py(                                     0x0000564f1d17c170,                                 ),                             },                         ),                         frozen: false,                     },                     Field {                         name: "cmd_id",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "cmd_id",                                         py_key: Py(                                             0x00007f7556fa1680,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f7556dd3b40,                         ),                         validator: FunctionAfter(                             FunctionAfterValidator {                                 validator: Str(                                     StrValidator {                                         strict: false,                                         coerce_numbers_to_str: false,                                     },                                 ),                                 func: Py(                                     0x0000564f1cd071d0,                                 ),                                 config: Py(                                     0x00007f755605a600,                                 ),                                 name: "function-after[ModelingCmdId(), str]",                                 field_name: None,                                 info_arg: false,                             },                         ),                         frozen: false,                     },                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa17d0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f75574d41b0,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "modeling_cmd_req": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f7556059fc0,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f75574d41b0,                                                 ),                                             ],                                         },                                         expected_repr: "'modeling_cmd_req'",                                         name: "literal['modeling_cmd_req']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['modeling_cmd_req']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionModelingCmdReq",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d3d1b50,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionModelingCmdReq",     }, ), definitions=[StrEnum(EnumValidator { phantom: PhantomData<_pydantic_core::validators::enum_::StrEnumValidator>, class: Py(0x564f1c8f2600), lookup: LiteralLookup { expected_bool: None, expected_int: None, expected_str: Some({"none": 0, "arrow": 1}), expected_py_dict: None, expected_py_values: None, expected_py_primitives: Some(Py(0x7f755605a580)), values: [Py(0x7f7556749a30), Py(0x7f7556749d30)] }, missing: None, expected_repr: "'none' or 'arrow'", strict: false, class_repr: "AnnotationLineEnd", name: "str-enum[AnnotationLineEnd]" }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1c93d9d0) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cc86ec0) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cdb8500) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1d08fe90) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cda5a20) }), Prebuilt(PrebuiltValidator { schema_validator: Py(0x564f1cd02920) })], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, cmd: pydantic.root_model.RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]], cmd_id: kittycad.models.modeling_cmd_id.ModelingCmdId, type: Literal['modeling_cmd_req'] = 'modeling_cmd_req') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

cmd: RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]][source]
cmd_id: ModelingCmdId[source]
classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'cmd': FieldInfo(annotation=RootModel[Annotated[Union[OptionEngineUtilEvaluatePath, OptionStartPath, OptionMovePathPen, OptionExtendPath, OptionExtrude, OptionTwistExtrude, OptionSweep, OptionRevolve, OptionSolid3dShellFace, OptionRevolveAboutEdge, OptionLoft, OptionClosePath, OptionCameraDragStart, OptionCameraDragMove, OptionCameraDragEnd, OptionDefaultCameraGetSettings, OptionDefaultCameraGetView, OptionDefaultCameraSetView, OptionDefaultCameraLookAt, OptionDefaultCameraPerspectiveSettings, OptionDefaultCameraZoom, OptionExport2d, OptionExport3d, OptionExport, OptionEntityGetParentId, OptionEntityGetNumChildren, OptionEntityGetChildUuid, OptionEntityGetAllChildUuids, OptionEntityGetSketchPaths, OptionEntityGetDistance, OptionEntityClone, OptionEntityLinearPatternTransform, OptionEntityLinearPattern, OptionEntityCircularPattern, OptionEntityMakeHelix, OptionEntityMakeHelixFromParams, OptionEntityMakeHelixFromEdge, OptionEntityMirror, OptionEntityMirrorAcrossEdge, OptionSelectWithPoint, OptionSelectAdd, OptionSelectRemove, OptionSceneClearAll, OptionSelectReplace, OptionHighlightSetEntity, OptionHighlightSetEntities, OptionNewAnnotation, OptionUpdateAnnotation, OptionEdgeLinesVisible, OptionObjectVisible, OptionObjectBringToFront, OptionObjectSetMaterialParamsPbr, OptionGetEntityType, OptionSolid3dGetAllEdgeFaces, OptionSolid2dAddHole, OptionSolid3dGetAllOppositeEdges, OptionSolid3dGetOppositeEdge, OptionSolid3dGetNextAdjacentEdge, OptionSolid3dGetPrevAdjacentEdge, OptionSolid3dGetCommonEdge, OptionSolid3dFilletEdge, OptionFaceIsPlanar, OptionFaceGetPosition, OptionFaceGetCenter, OptionFaceGetGradient, OptionSendObject, OptionEntitySetOpacity, OptionEntityFade, OptionMakePlane, OptionPlaneSetColor, OptionSetTool, OptionMouseMove, OptionMouseClick, OptionSketchModeDisable, OptionGetSketchModePlane, OptionCurveSetConstraint, OptionEnableSketchMode, OptionEnableDryRun, OptionDisableDryRun, OptionSetBackgroundColor, OptionSetCurrentToolProperties, OptionSetDefaultSystemProperties, OptionCurveGetType, OptionCurveGetControlPoints, OptionProjectEntityToPlane, OptionProjectPointsToPlane, OptionTakeSnapshot, OptionMakeAxesGizmo, OptionPathGetInfo, OptionPathGetCurveUuidsForVertices, OptionPathGetCurveUuid, OptionPathGetVertexUuids, OptionPathGetSketchTargetUuid, OptionHandleMouseDragStart, OptionHandleMouseDragMove, OptionHandleMouseDragEnd, OptionRemoveSceneObjects, OptionPlaneIntersectAndProject, OptionCurveGetEndPoints, OptionReconfigureStream, OptionImportFiles, OptionSetSceneUnits, OptionMass, OptionDensity, OptionVolume, OptionCenterOfMass, OptionSurfaceArea, OptionDefaultCameraFocusOn, OptionSetSelectionType, OptionSetSelectionFilter, OptionDefaultCameraSetOrthographic, OptionDefaultCameraSetPerspective, OptionDefaultCameraCenterToSelection, OptionDefaultCameraCenterToScene, OptionZoomToFit, OptionOrientToFace, OptionViewIsometric, OptionSolid3dGetExtrusionFaceInfo, OptionSolid3dGetAdjacencyInfo, OptionSelectClear, OptionSelectGet, OptionGetNumObjects, OptionSetObjectTransform, OptionBooleanUnion, OptionBooleanIntersection, OptionBooleanSubtract, OptionMakeOffsetPath, OptionAddHoleFromOffset, OptionSetGridReferencePlane, OptionSetGridScale, OptionSetGridAutoScale], FieldInfo(annotation=NoneType, required=True, discriminator='type')]], required=True), 'cmd_id': FieldInfo(annotation=ModelingCmdId, required=True), 'type': FieldInfo(annotation=Literal['modeling_cmd_req'], required=False, default='modeling_cmd_req')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['modeling_cmd_req'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self

class kittycad.models.web_socket_request.OptionPing(**data)[source][source]

The client-to-server Ping to ensure the WebSocket stays alive.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'model_config': 'ClassVar[ConfigDict]', 'type': typing.Literal['ping']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 60[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'cls': <class 'kittycad.models.web_socket_request.OptionPing'>, 'config': {'title': 'OptionPing'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionPing'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionPing:94897792939200', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'type': {'metadata': {}, 'schema': {'default': 'ping', 'schema': {'expected': ['ping'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionPing', 'type': 'model-fields'}, 'type': 'model'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'type': FieldInfo(annotation=Literal['ping'], required=False, default='ping')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d3cf4c0,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f75576c2040,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "ping",                                             },                                             expected_py: None,                                             name: "literal['ping']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 1,             },         ),         has_extra: false,         root_model: false,         name: "OptionPing",     }, ), definitions=[])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionPing", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa1a70,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f75576c2040,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "ping": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f7556058900,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f75576c2040,                                                 ),                                             ],                                         },                                         expected_repr: "'ping'",                                         name: "literal['ping']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['ping']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionPing",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d3cf4c0,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionPing",     }, ), definitions=[], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, type: Literal['ping'] = 'ping') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'type': FieldInfo(annotation=Literal['ping'], required=False, default='ping')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['ping'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self

class kittycad.models.web_socket_request.OptionSdpOffer(**data)[source][source]

The SDP offer request.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'model_config': 'ClassVar[ConfigDict]', 'offer': <class 'kittycad.models.rtc_session_description.RtcSessionDescription'>, 'type': typing.Literal['sdp_offer']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 24[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'cls': <class 'kittycad.models.web_socket_request.OptionSdpOffer'>, 'config': {'title': 'OptionSdpOffer'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionSdpOffer'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionSdpOffer:94897793169488', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'offer': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.rtc_session_description.RtcSessionDescription'>, 'config': {'title': 'RtcSessionDescription'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.rtc_session_description.RtcSessionDescription'>>]}, 'ref': 'kittycad.models.rtc_session_description.RtcSessionDescription:94897792489248', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'sdp': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'cls': <enum 'RtcSdpType'>, 'members': [RtcSdpType.UNSPECIFIED, RtcSdpType.OFFER, RtcSdpType.PRANSWER, RtcSdpType.ANSWER, RtcSdpType.ROLLBACK], 'metadata': {'pydantic_js_functions': [<function GenerateSchema._enum_schema.<locals>.get_json_schema>]}, 'ref': 'kittycad.models.rtc_sdp_type.RtcSdpType:94897790868144', 'sub_type': 'str', 'type': 'enum'}, 'type': 'model-field'}}, 'model_name': 'RtcSessionDescription', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'sdp_offer', 'schema': {'expected': ['sdp_offer'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionSdpOffer', 'type': 'model-fields'}, 'type': 'model'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'offer': FieldInfo(annotation=RtcSessionDescription, required=True), 'type': FieldInfo(annotation=Literal['sdp_offer'], required=False, default='sdp_offer')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d407850,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "offer": SerField {                         key_py: Py(                             0x00007f7556de0120,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             Prebuilt(                                 PrebuiltSerializer {                                     schema_serializer: Py(                                         0x00007f7556115d00,                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f7556057f30,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "sdp_offer",                                             },                                             expected_py: None,                                             name: "literal['sdp_offer']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 2,             },         ),         has_extra: false,         root_model: false,         name: "OptionSdpOffer",     }, ), definitions=[])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionSdpOffer", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "offer",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "offer",                                         py_key: Py(                                             0x00007f7556fa1740,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f7556de0120,                         ),                         validator: Prebuilt(                             PrebuiltValidator {                                 schema_validator: Py(                                     0x0000564f1d1d5360,                                 ),                             },                         ),                         frozen: false,                     },                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa18c0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f7556057f30,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "sdp_offer": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f755605b000,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f7556057f30,                                                 ),                                             ],                                         },                                         expected_repr: "'sdp_offer'",                                         name: "literal['sdp_offer']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['sdp_offer']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionSdpOffer",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d407850,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionSdpOffer",     }, ), definitions=[], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, offer: kittycad.models.rtc_session_description.RtcSessionDescription, type: Literal['sdp_offer'] = 'sdp_offer') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'offer': FieldInfo(annotation=RtcSessionDescription, required=True), 'type': FieldInfo(annotation=Literal['sdp_offer'], required=False, default='sdp_offer')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

offer: RtcSessionDescription[source]
classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['sdp_offer'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self

class kittycad.models.web_socket_request.OptionTrickleIce(**data)[source][source]

The trickle ICE candidate request.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__abstractmethods__ = frozenset({})[source]
__annotations__ = {'__class_vars__': 'ClassVar[set[str]]', '__private_attributes__': 'ClassVar[Dict[str, ModelPrivateAttr]]', '__pydantic_complete__': 'ClassVar[bool]', '__pydantic_computed_fields__': 'ClassVar[Dict[str, ComputedFieldInfo]]', '__pydantic_core_schema__': 'ClassVar[CoreSchema]', '__pydantic_custom_init__': 'ClassVar[bool]', '__pydantic_decorators__': 'ClassVar[_decorators.DecoratorInfos]', '__pydantic_extra__': 'dict[str, Any] | None', '__pydantic_fields__': 'ClassVar[Dict[str, FieldInfo]]', '__pydantic_fields_set__': 'set[str]', '__pydantic_generic_metadata__': 'ClassVar[_generics.PydanticGenericMetadata]', '__pydantic_parent_namespace__': 'ClassVar[Dict[str, Any] | None]', '__pydantic_post_init__': "ClassVar[None | Literal['model_post_init']]", '__pydantic_private__': 'dict[str, Any] | None', '__pydantic_root_model__': 'ClassVar[bool]', '__pydantic_serializer__': 'ClassVar[SchemaSerializer]', '__pydantic_setattr_handlers__': 'ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]]', '__pydantic_validator__': 'ClassVar[SchemaValidator | PluggableSchemaValidator]', '__signature__': 'ClassVar[Signature]', 'candidate': <class 'kittycad.models.rtc_ice_candidate_init.RtcIceCandidateInit'>, 'model_config': 'ClassVar[ConfigDict]', 'type': typing.Literal['trickle_ice']}[source]
classmethod __class_getitem__(typevar_values)[source]
Return type:

type[BaseModel] | PydanticRecursiveRef

__class_vars__: ClassVar[set[str]] = {}[source]

The names of the class variables defined on the model.

__copy__()[source]

Returns a shallow copy of the model.

Return type:

Self

__deepcopy__(memo=None)[source]

Returns a deep copy of the model.

Return type:

Self

__delattr__(item)[source]

Implement delattr(self, name).

Return type:

Any

__dict__[source]
__eq__(other)[source]

Return self==value.

Return type:

bool

property __fields_set__: set[str][source]
__firstlineno__ = 14[source]
classmethod __get_pydantic_core_schema__(source, handler, /)[source]
Return type:

Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]

classmethod __get_pydantic_json_schema__(core_schema, handler, /)[source]

Hook into generating the model’s JSON schema.

Parameters:
  • core_schema (Union[InvalidSchema, AnySchema, NoneSchema, BoolSchema, IntSchema, FloatSchema, DecimalSchema, StringSchema, BytesSchema, DateSchema, TimeSchema, DatetimeSchema, TimedeltaSchema, LiteralSchema, EnumSchema, IsInstanceSchema, IsSubclassSchema, CallableSchema, ListSchema, TupleSchema, SetSchema, FrozenSetSchema, GeneratorSchema, DictSchema, AfterValidatorFunctionSchema, BeforeValidatorFunctionSchema, WrapValidatorFunctionSchema, PlainValidatorFunctionSchema, WithDefaultSchema, NullableSchema, UnionSchema, TaggedUnionSchema, ChainSchema, LaxOrStrictSchema, JsonOrPythonSchema, TypedDictSchema, ModelFieldsSchema, ModelSchema, DataclassArgsSchema, DataclassSchema, ArgumentsSchema, ArgumentsV3Schema, CallSchema, CustomErrorSchema, JsonSchema, UrlSchema, MultiHostUrlSchema, DefinitionsSchema, DefinitionReferenceSchema, UuidSchema, ComplexSchema]) – A pydantic-core CoreSchema. You can ignore this argument and call the handler with a new CoreSchema, wrap this CoreSchema ({'type': 'nullable', 'schema': current_schema}), or just call the handler with the original schema.

  • handler (GetJsonSchemaHandler) – Call into Pydantic’s internal JSON schema generation. This will raise a pydantic.errors.PydanticInvalidForJsonSchema if JSON schema generation fails. Since this gets called by BaseModel.model_json_schema you can override the schema_generator argument to that function to change JSON schema generation globally for a type.

Return type:

dict[str, Any]

Returns:

A JSON schema, as a Python object.

__getattr__(item)[source]
Return type:

Any

__getstate__()[source]

Helper for pickle.

Return type:

dict[Any, Any]

__hash__ = None[source]
__init__(**data)[source]

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

__iter__()[source]

So dict(model) works.

Return type:

Generator[tuple[str, Any], None, None]

__module__ = 'kittycad.models.web_socket_request'[source]
__pretty__(fmt, **kwargs)[source]

Used by devtools (https://python-devtools.helpmanual.io/) to pretty print objects.

Return type:

Generator[Any, None, None]

__private_attributes__: ClassVar[Dict[str, ModelPrivateAttr]] = {}[source]

Metadata about the private attributes of the model.

__pydantic_complete__: ClassVar[bool] = True[source]

Whether model building is completed, or if there are still undefined fields.

__pydantic_computed_fields__: ClassVar[Dict[str, ComputedFieldInfo]] = {}[source]

A dictionary of computed field names and their corresponding [ComputedFieldInfo][pydantic.fields.ComputedFieldInfo] objects.

__pydantic_core_schema__: ClassVar[CoreSchema] = {'cls': <class 'kittycad.models.web_socket_request.OptionTrickleIce'>, 'config': {'title': 'OptionTrickleIce'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.web_socket_request.OptionTrickleIce'>>]}, 'ref': 'kittycad.models.web_socket_request.OptionTrickleIce:94897794160416', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'candidate': {'metadata': {}, 'schema': {'cls': <class 'kittycad.models.rtc_ice_candidate_init.RtcIceCandidateInit'>, 'config': {'title': 'RtcIceCandidateInit'}, 'custom_init': False, 'metadata': {'pydantic_js_functions': [<bound method BaseModel.__get_pydantic_json_schema__ of <class 'kittycad.models.rtc_ice_candidate_init.RtcIceCandidateInit'>>]}, 'ref': 'kittycad.models.rtc_ice_candidate_init.RtcIceCandidateInit:94897791363024', 'root_model': False, 'schema': {'computed_fields': [], 'fields': {'candidate': {'metadata': {}, 'schema': {'type': 'str'}, 'type': 'model-field'}, 'sdpMLineIndex': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'int'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'sdpMid': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}, 'usernameFragment': {'metadata': {}, 'schema': {'default': None, 'schema': {'schema': {'type': 'str'}, 'type': 'nullable'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'RtcIceCandidateInit', 'type': 'model-fields'}, 'type': 'model'}, 'type': 'model-field'}, 'type': {'metadata': {}, 'schema': {'default': 'trickle_ice', 'schema': {'expected': ['trickle_ice'], 'type': 'literal'}, 'type': 'default'}, 'type': 'model-field'}}, 'model_name': 'OptionTrickleIce', 'type': 'model-fields'}, 'type': 'model'}[source]

The core schema of the model.

__pydantic_custom_init__: ClassVar[bool] = False[source]

Whether the model has a custom __init__ method.

__pydantic_decorators__: ClassVar[_decorators.DecoratorInfos] = DecoratorInfos(validators={}, field_validators={}, root_validators={}, field_serializers={}, model_serializers={}, model_validators={}, computed_fields={})[source]

Metadata containing the decorators defined on the model. This replaces Model.__validators__ and Model.__root_validators__ from Pydantic V1.

__pydantic_extra__: dict[str, Any] | None[source]

A dictionary containing extra values, if [extra][pydantic.config.ConfigDict.extra] is set to 'allow'.

__pydantic_fields__: ClassVar[Dict[str, FieldInfo]] = {'candidate': FieldInfo(annotation=RtcIceCandidateInit, required=True), 'type': FieldInfo(annotation=Literal['trickle_ice'], required=False, default='trickle_ice')}[source]

A dictionary of field names and their corresponding [FieldInfo][pydantic.fields.FieldInfo] objects. This replaces Model.__fields__ from Pydantic V1.

__pydantic_fields_set__: set[str][source]

The names of fields explicitly set during instantiation.

__pydantic_generic_metadata__: ClassVar[_generics.PydanticGenericMetadata] = {'args': (), 'origin': None, 'parameters': ()}[source]

Metadata for generic models; contains data used for a similar purpose to __args__, __origin__, __parameters__ in typing-module generics. May eventually be replaced by these.

classmethod __pydantic_init_subclass__(**kwargs)[source]

This is intended to behave just like __init_subclass__, but is called by ModelMetaclass only after the class is actually fully initialized. In particular, attributes like model_fields will be present when this is called.

This is necessary because __init_subclass__ will always be called by type.__new__, and it would require a prohibitively large refactor to the ModelMetaclass to ensure that type.__new__ was called in such a manner that the class would already be sufficiently initialized.

This will receive the same kwargs that would be passed to the standard __init_subclass__, namely, any kwargs passed to the class definition that aren’t used internally by pydantic.

Parameters:

**kwargs (Any) – Any keyword arguments passed to the class definition that aren’t used internally by pydantic.

Return type:

None

__pydantic_parent_namespace__: ClassVar[Dict[str, Any] | None] = None[source]

Parent namespace of the model, used for automatic rebuilding of models.

__pydantic_post_init__: ClassVar[None | Literal['model_post_init']] = None[source]

The name of the post-init method for the model, if defined.

__pydantic_private__: dict[str, Any] | None[source]

Values of private attributes set on the model instance.

__pydantic_root_model__: ClassVar[bool] = False[source]

Whether the model is a [RootModel][pydantic.root_model.RootModel].

__pydantic_serializer__: ClassVar[SchemaSerializer] = SchemaSerializer(serializer=Model(     ModelSerializer {         class: Py(             0x0000564f1d4f9720,         ),         serializer: Fields(             GeneralFieldsSerializer {                 fields: {                     "type": SerField {                         key_py: Py(                             0x00007f755b111b50,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             WithDefault(                                 WithDefaultSerializer {                                     default: Default(                                         Py(                                             0x00007f75563e5170,                                         ),                                     ),                                     serializer: Literal(                                         LiteralSerializer {                                             expected_int: {},                                             expected_str: {                                                 "trickle_ice",                                             },                                             expected_py: None,                                             name: "literal['trickle_ice']",                                         },                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                     "candidate": SerField {                         key_py: Py(                             0x00007f755a7d4270,                         ),                         alias: None,                         alias_py: None,                         serializer: Some(                             Prebuilt(                                 PrebuiltSerializer {                                     schema_serializer: Py(                                         0x00007f7556115b90,                                     ),                                 },                             ),                         ),                         required: true,                         serialize_by_alias: None,                     },                 },                 computed_fields: Some(                     ComputedFields(                         [],                     ),                 ),                 mode: SimpleDict,                 extra_serializer: None,                 filter: SchemaFilter {                     include: None,                     exclude: None,                 },                 required_fields: 2,             },         ),         has_extra: false,         root_model: false,         name: "OptionTrickleIce",     }, ), definitions=[])[source]

The pydantic-core SchemaSerializer used to dump instances of the model.

__pydantic_setattr_handlers__: ClassVar[Dict[str, Callable[[BaseModel, str, Any], None]]] = {}[source]

__setattr__ handlers. Memoizing the handlers leads to a dramatic performance improvement in __setattr__

__pydantic_validator__: ClassVar[SchemaValidator | PluggableSchemaValidator] = SchemaValidator(title="OptionTrickleIce", validator=Model(     ModelValidator {         revalidate: Never,         validator: ModelFields(             ModelFieldsValidator {                 fields: [                     Field {                         name: "candidate",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "candidate",                                         py_key: Py(                                             0x00007f755605b6f0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755a7d4270,                         ),                         validator: Prebuilt(                             PrebuiltValidator {                                 schema_validator: Py(                                     0x0000564f1d26d980,                                 ),                             },                         ),                         frozen: false,                     },                     Field {                         name: "type",                         lookup_key_collection: LookupKeyCollection {                             by_name: Simple(                                 LookupPath {                                     first_item: PathItemString {                                         key: "type",                                         py_key: Py(                                             0x00007f7556fa13b0,                                         ),                                     },                                     rest: [],                                 },                             ),                             by_alias: None,                             by_alias_then_name: None,                         },                         name_py: Py(                             0x00007f755b111b50,                         ),                         validator: WithDefault(                             WithDefaultValidator {                                 default: Default(                                     Py(                                         0x00007f75563e5170,                                     ),                                 ),                                 on_error: Raise,                                 validator: Literal(                                     LiteralValidator {                                         lookup: LiteralLookup {                                             expected_bool: None,                                             expected_int: None,                                             expected_str: Some(                                                 {                                                     "trickle_ice": 0,                                                 },                                             ),                                             expected_py_dict: None,                                             expected_py_values: None,                                             expected_py_primitives: Some(                                                 Py(                                                     0x00007f755605bd00,                                                 ),                                             ),                                             values: [                                                 Py(                                                     0x00007f75563e5170,                                                 ),                                             ],                                         },                                         expected_repr: "'trickle_ice'",                                         name: "literal['trickle_ice']",                                     },                                 ),                                 validate_default: false,                                 copy_default: false,                                 name: "default[literal['trickle_ice']]",                                 undefined: Py(                                     0x00007f7558d6e410,                                 ),                             },                         ),                         frozen: false,                     },                 ],                 model_name: "OptionTrickleIce",                 extra_behavior: Ignore,                 extras_validator: None,                 extras_keys_validator: None,                 strict: false,                 from_attributes: false,                 loc_by_alias: true,                 validate_by_alias: None,                 validate_by_name: None,             },         ),         class: Py(             0x0000564f1d4f9720,         ),         generic_origin: None,         post_init: None,         frozen: false,         custom_init: false,         root_model: false,         undefined: Py(             0x00007f7558d6e410,         ),         name: "OptionTrickleIce",     }, ), definitions=[], cache_strings=True)[source]

The pydantic-core SchemaValidator used to validate instances of the model.

__replace__(**changes)[source]
Return type:

Self

__repr__()[source]

Return repr(self).

Return type:

str

__repr_args__()[source]
Return type:

Iterable[tuple[str | None, Any]]

__repr_name__()[source]

Name of the instance’s class, used in __repr__.

Return type:

str

__repr_recursion__(object)[source]

Returns the string representation of a recursive object.

Return type:

str

__repr_str__(join_str)[source]
Return type:

str

__rich_repr__()[source]

Used by Rich (https://rich.readthedocs.io/en/stable/pretty.html) to pretty print objects.

Return type:

Iterable[Any | tuple[Any] | tuple[str, Any] | tuple[str, Any, Any]]

__setattr__(name, value)[source]

Implement setattr(self, name, value).

Return type:

None

__setstate__(state)[source]
Return type:

None

__signature__: ClassVar[Signature] = <Signature (*, candidate: kittycad.models.rtc_ice_candidate_init.RtcIceCandidateInit, type: Literal['trickle_ice'] = 'trickle_ice') -> None>[source]

The synthesized __init__ [Signature][inspect.Signature] of the model.

__slots__ = ('__dict__', '__pydantic_fields_set__', '__pydantic_extra__', '__pydantic_private__')[source]
__static_attributes__ = ()[source]
__str__()[source]

Return str(self).

Return type:

str

_abc_impl = <_abc._abc_data object>[source]
_calculate_keys(*args, **kwargs)[source]
Return type:

Any

_copy_and_set_values(*args, **kwargs)[source]
Return type:

Any

classmethod _get_value(*args, **kwargs)[source]
Return type:

Any

_iter(*args, **kwargs)[source]
Return type:

Any

_setattr_handler(name, value)[source]

Get a handler for setting an attribute on the model instance.

Return type:

Optional[Callable[[BaseModel, str, Any], None]]

Returns:

A handler for setting an attribute on the model instance. Used for memoization of the handler. Memoizing the handlers leads to a dramatic performance improvement in __setattr__ Returns None when memoization is not safe, then the attribute is set directly.

candidate: RtcIceCandidateInit[source]
classmethod construct(_fields_set=None, **values)[source]
Return type:

Self

copy(*, include=None, exclude=None, update=None, deep=False)[source]

Returns a copy of the model.

!!! warning “Deprecated”

This method is now deprecated; use model_copy instead.

If you need include or exclude, use:

`python {test="skip" lint="skip"} data = self.model_dump(include=include, exclude=exclude, round_trip=True) data = {**data, **(update or {})} copied = self.model_validate(data) `

Parameters:
  • include – Optional set or mapping specifying which fields to include in the copied model.

  • exclude – Optional set or mapping specifying which fields to exclude in the copied model.

  • update – Optional dictionary of field-value pairs to override field values in the copied model.

  • deep – If True, the values of fields that are Pydantic models will be deep-copied.

Returns:

A copy of the model with included, excluded and updated fields as specified.

dict(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False)[source]
Return type:

Dict[str, Any]

classmethod from_orm(obj)[source]
Return type:

Self

json(*, include=None, exclude=None, by_alias=False, exclude_unset=False, exclude_defaults=False, exclude_none=False, encoder=PydanticUndefined, models_as_dict=PydanticUndefined, **dumps_kwargs)[source]
Return type:

str

model_computed_fields = {}[source]
model_config: ClassVar[ConfigDict] = {'protected_namespaces': ()}[source]

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

classmethod model_construct(_fields_set=None, **values)[source]

Creates a new instance of the Model class with validated data.

Creates a new model setting __dict__ and __pydantic_fields_set__ from trusted or pre-validated data. Default values are respected, but no other validation is performed.

!!! note

model_construct() generally respects the model_config.extra setting on the provided model. That is, if model_config.extra == 'allow', then all extra passed values are added to the model instance’s __dict__ and __pydantic_extra__ fields. If model_config.extra == 'ignore' (the default), then all extra passed values are ignored. Because no validation is performed with a call to model_construct(), having model_config.extra == 'forbid' does not result in an error if extra values are passed, but they will be ignored.

Parameters:
  • _fields_set (set[str] | None) – A set of field names that were originally explicitly set during instantiation. If provided, this is directly used for the [model_fields_set][pydantic.BaseModel.model_fields_set] attribute. Otherwise, the field names from the values argument will be used.

  • values (Any) – Trusted or pre-validated data dictionary.

Return type:

Self

Returns:

A new instance of the Model class with validated data.

model_copy(*, update=None, deep=False)[source]
!!! abstract “Usage Documentation”

[model_copy](../concepts/serialization.md#model_copy)

Returns a copy of the model.

!!! note

The underlying instance’s [__dict__][object.__dict__] attribute is copied. This might have unexpected side effects if you store anything in it, on top of the model fields (e.g. the value of [cached properties][functools.cached_property]).

Parameters:
  • update (Mapping[str, Any] | None) – Values to change/add in the new model. Note: the data is not validated before creating the new model. You should trust this data.

  • deep (bool) – Set to True to make a deep copy of the model.

Return type:

Self

Returns:

New model instance.

model_dump(*, mode='python', include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump](../concepts/serialization.md#modelmodel_dump)

Generate a dictionary representation of the model, optionally specifying which fields to include or exclude.

Parameters:
Return type:

dict[str, Any]

Returns:

A dictionary representation of the model.

model_dump_json(*, indent=None, include=None, exclude=None, context=None, by_alias=None, exclude_unset=False, exclude_defaults=False, exclude_none=False, round_trip=False, warnings=True, fallback=None, serialize_as_any=False)[source]
!!! abstract “Usage Documentation”

[model_dump_json](../concepts/serialization.md#modelmodel_dump_json)

Generates a JSON representation of the model using Pydantic’s to_json method.

Parameters:
Return type:

str

Returns:

A JSON string representation of the model.

property model_extra: dict[str, Any] | None[source]

Get extra fields set during validation.

Returns:

A dictionary of extra fields, or None if config.extra is not set to "allow".

model_fields = {'candidate': FieldInfo(annotation=RtcIceCandidateInit, required=True), 'type': FieldInfo(annotation=Literal['trickle_ice'], required=False, default='trickle_ice')}[source]
property model_fields_set: set[str][source]

Returns the set of fields that have been explicitly set on this model instance.

Returns:

A set of strings representing the fields that have been set,

i.e. that were not filled from defaults.

classmethod model_json_schema(by_alias=True, ref_template='#/$defs/{model}', schema_generator=<class 'pydantic.json_schema.GenerateJsonSchema'>, mode='validation')[source]

Generates a JSON schema for a model class.

Parameters:
  • by_alias (bool) – Whether to use attribute aliases or not.

  • ref_template (str) – The reference template.

  • schema_generator (type[GenerateJsonSchema]) – To override the logic used to generate the JSON schema, as a subclass of GenerateJsonSchema with your desired modifications

  • mode (Literal['validation', 'serialization']) – The mode in which to generate the schema.

Return type:

dict[str, Any]

Returns:

The JSON schema for the given model class.

classmethod model_parametrized_name(params)[source]

Compute the class name for parametrizations of generic classes.

This method can be overridden to achieve a custom naming scheme for generic BaseModels.

Parameters:

params (tuple[type[Any], ...]) – Tuple of types of the class. Given a generic class Model with 2 type variables and a concrete model Model[str, int], the value (str, int) would be passed to params.

Return type:

str

Returns:

String representing the new class where params are passed to cls as type variables.

Raises:

TypeError – Raised when trying to generate concrete names for non-generic models.

model_post_init(context, /)[source]

Override this method to perform additional initialization after __init__ and model_construct. This is useful if you want to do some validation that requires the entire model to be initialized.

Return type:

None

classmethod model_rebuild(*, force=False, raise_errors=True, _parent_namespace_depth=2, _types_namespace=None)[source]

Try to rebuild the pydantic-core schema for the model.

This may be necessary when one of the annotations is a ForwardRef which could not be resolved during the initial attempt to build the schema, and automatic rebuilding fails.

Parameters:
  • force (bool) – Whether to force the rebuilding of the model schema, defaults to False.

  • raise_errors (bool) – Whether to raise errors, defaults to True.

  • _parent_namespace_depth (int) – The depth level of the parent namespace, defaults to 2.

  • _types_namespace (Mapping[str, Any] | None) – The types namespace, defaults to None.

Return type:

bool | None

Returns:

Returns None if the schema is already “complete” and rebuilding was not required. If rebuilding _was_ required, returns True if rebuilding was successful, otherwise False.

classmethod model_validate(obj, *, strict=None, from_attributes=None, context=None, by_alias=None, by_name=None)[source]

Validate a pydantic model instance.

Parameters:
  • obj (Any) – The object to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • from_attributes (bool | None) – Whether to extract data from object attributes.

  • context (Any | None) – Additional context to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Raises:

ValidationError – If the object could not be validated.

Return type:

Self

Returns:

The validated model instance.

classmethod model_validate_json(json_data, *, strict=None, context=None, by_alias=None, by_name=None)[source]
!!! abstract “Usage Documentation”

[JSON Parsing](../concepts/json.md#json-parsing)

Validate the given JSON data against the Pydantic model.

Parameters:
  • json_data (str | bytes | bytearray) – The JSON data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

Raises:

ValidationError – If json_data is not a JSON string or the object could not be validated.

classmethod model_validate_strings(obj, *, strict=None, context=None, by_alias=None, by_name=None)[source]

Validate the given object with string data against the Pydantic model.

Parameters:
  • obj (Any) – The object containing string data to validate.

  • strict (bool | None) – Whether to enforce types strictly.

  • context (Any | None) – Extra variables to pass to the validator.

  • by_alias (bool | None) – Whether to use the field’s alias when validating against the provided input data.

  • by_name (bool | None) – Whether to use the field’s name when validating against the provided input data.

Return type:

Self

Returns:

The validated Pydantic model.

classmethod parse_file(path, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod parse_obj(obj)[source]
Return type:

Self

classmethod parse_raw(b, *, content_type=None, encoding='utf8', proto=None, allow_pickle=False)[source]
Return type:

Self

classmethod schema(by_alias=True, ref_template='#/$defs/{model}')[source]
Return type:

Dict[str, Any]

classmethod schema_json(*, by_alias=True, ref_template='#/$defs/{model}', **dumps_kwargs)[source]
Return type:

str

type: Literal['trickle_ice'][source]
classmethod update_forward_refs(**localns)[source]
Return type:

None

classmethod validate(value)[source]
Return type:

Self