# {py:mod}`labthings_fastapi.thing` ```{py:module} labthings_fastapi.thing ``` ```{autodoc2-docstring} labthings_fastapi.thing :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`Thing ` - ```{autodoc2-docstring} labthings_fastapi.thing.Thing :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`_LOGGER ` - ```{autodoc2-docstring} labthings_fastapi.thing._LOGGER :summary: ``` ```` ### API ````{py:data} _LOGGER :canonical: labthings_fastapi.thing._LOGGER :value: > 'getLogger(...)' ```{autodoc2-docstring} labthings_fastapi.thing._LOGGER ``` ```` `````{py:class} Thing :canonical: labthings_fastapi.thing.Thing ```{autodoc2-docstring} labthings_fastapi.thing.Thing ``` ````{py:attribute} title :canonical: labthings_fastapi.thing.Thing.title :type: str :value: > None ```{autodoc2-docstring} labthings_fastapi.thing.Thing.title ``` ```` ````{py:attribute} _labthings_blocking_portal :canonical: labthings_fastapi.thing.Thing._labthings_blocking_portal :type: typing.Optional[anyio.from_thread.BlockingPortal] :value: > None ```{autodoc2-docstring} labthings_fastapi.thing.Thing._labthings_blocking_portal ``` ```` ````{py:attribute} path :canonical: labthings_fastapi.thing.Thing.path :type: typing.Optional[str] :value: > None ```{autodoc2-docstring} labthings_fastapi.thing.Thing.path ``` ```` ````{py:method} __aenter__() :canonical: labthings_fastapi.thing.Thing.__aenter__ :async: ```{autodoc2-docstring} labthings_fastapi.thing.Thing.__aenter__ ``` ```` ````{py:method} __aexit__(exc_t, exc_v, exc_tb) :canonical: labthings_fastapi.thing.Thing.__aexit__ :async: ```{autodoc2-docstring} labthings_fastapi.thing.Thing.__aexit__ ``` ```` ````{py:method} attach_to_server(server: labthings_fastapi.server.ThingServer, path: str, setting_storage_path: str) :canonical: labthings_fastapi.thing.Thing.attach_to_server ```{autodoc2-docstring} labthings_fastapi.thing.Thing.attach_to_server ``` ```` ````{py:attribute} _settings_store :canonical: labthings_fastapi.thing.Thing._settings_store :type: typing.Optional[dict[str, labthings_fastapi.descriptors.ThingSetting]] :value: > None ```{autodoc2-docstring} labthings_fastapi.thing.Thing._settings_store ``` ```` ````{py:property} _settings :canonical: labthings_fastapi.thing.Thing._settings :type: typing.Optional[dict[str, labthings_fastapi.descriptors.ThingSetting]] ```{autodoc2-docstring} labthings_fastapi.thing.Thing._settings ``` ```` ````{py:attribute} _setting_storage_path :canonical: labthings_fastapi.thing.Thing._setting_storage_path :type: typing.Optional[str] :value: > None ```{autodoc2-docstring} labthings_fastapi.thing.Thing._setting_storage_path ``` ```` ````{py:property} setting_storage_path :canonical: labthings_fastapi.thing.Thing.setting_storage_path :type: typing.Optional[str] ```{autodoc2-docstring} labthings_fastapi.thing.Thing.setting_storage_path ``` ```` ````{py:method} load_settings(setting_storage_path) :canonical: labthings_fastapi.thing.Thing.load_settings ```{autodoc2-docstring} labthings_fastapi.thing.Thing.load_settings ``` ```` ````{py:method} save_settings() :canonical: labthings_fastapi.thing.Thing.save_settings ```{autodoc2-docstring} labthings_fastapi.thing.Thing.save_settings ``` ```` ````{py:attribute} _labthings_thing_state :canonical: labthings_fastapi.thing.Thing._labthings_thing_state :type: typing.Optional[dict] :value: > None ```{autodoc2-docstring} labthings_fastapi.thing.Thing._labthings_thing_state ``` ```` ````{py:property} thing_state :canonical: labthings_fastapi.thing.Thing.thing_state :type: collections.abc.Mapping ```{autodoc2-docstring} labthings_fastapi.thing.Thing.thing_state ``` ```` ````{py:method} validate_thing_description() :canonical: labthings_fastapi.thing.Thing.validate_thing_description ```{autodoc2-docstring} labthings_fastapi.thing.Thing.validate_thing_description ``` ```` ````{py:attribute} _cached_thing_description :canonical: labthings_fastapi.thing.Thing._cached_thing_description :type: typing.Optional[tuple[typing.Optional[str], typing.Optional[str], labthings_fastapi.thing_description.model.ThingDescription]] :value: > None ```{autodoc2-docstring} labthings_fastapi.thing.Thing._cached_thing_description ``` ```` ````{py:method} thing_description(path: typing.Optional[str] = None, base: typing.Optional[str] = None) -> labthings_fastapi.thing_description.model.ThingDescription :canonical: labthings_fastapi.thing.Thing.thing_description ```{autodoc2-docstring} labthings_fastapi.thing.Thing.thing_description ``` ```` ````{py:method} thing_description_dict(path: typing.Optional[str] = None, base: typing.Optional[str] = None) -> dict :canonical: labthings_fastapi.thing.Thing.thing_description_dict ```{autodoc2-docstring} labthings_fastapi.thing.Thing.thing_description_dict ``` ```` ````{py:method} observe_property(property_name: str, stream: anyio.abc.ObjectSendStream) :canonical: labthings_fastapi.thing.Thing.observe_property ```{autodoc2-docstring} labthings_fastapi.thing.Thing.observe_property ``` ```` ````{py:method} observe_action(action_name: str, stream: anyio.abc.ObjectSendStream) :canonical: labthings_fastapi.thing.Thing.observe_action ```{autodoc2-docstring} labthings_fastapi.thing.Thing.observe_action ``` ```` `````