magscope.settings
=================

.. py:module:: magscope.settings


Classes
-------

.. autoapisummary::

   magscope.settings.SettingSpec
   magscope.settings.MagScopeSettings


Module Contents
---------------

.. py:class:: SettingSpec

   .. py:attribute:: key
      :type:  str


   .. py:attribute:: value_type
      :type:  type | tuple[type, Ellipsis]


   .. py:attribute:: default
      :type:  Any | None
      :value: None



   .. py:attribute:: display_name
      :type:  str | None
      :value: None



   .. py:attribute:: minimum
      :type:  float | None
      :value: None



   .. py:attribute:: maximum
      :type:  float | None
      :value: None



   .. py:attribute:: must_be_even
      :type:  bool
      :value: False



   .. py:method:: coerce(value: Any) -> Any


   .. py:method:: default_value() -> Any


   .. py:property:: _candidate_types
      :type: tuple[type, Ellipsis]



   .. py:property:: label
      :type: str



.. py:class:: MagScopeSettings(values: Mapping[str, Any] | None = None, *, persistence_available: bool = True, persistence_enabled: bool = False)

   Bases: :py:obj:`MutableMapping`\ [\ :py:obj:`str`\ , :py:obj:`Any`\ ]


   A MutableMapping is a generic container for associating
   key/value pairs.

   This class provides concrete generic implementations of all
   methods except for __getitem__, __setitem__, __delitem__,
   __iter__, and __len__.


   .. py:attribute:: _QSETTINGS_ORGANIZATION
      :value: 'MagScope'



   .. py:attribute:: _QSETTINGS_APPLICATION
      :value: 'MagScope'



   .. py:attribute:: _QSETTINGS_GROUP
      :value: 'MagScopeSettings'



   .. py:attribute:: _SETTING_SPECS
      :type:  dict[str, SettingSpec]


   .. py:attribute:: _persistence_enabled
      :value: False



   .. py:attribute:: _persistence_listeners
      :type:  list[Callable[[MagScopeSettings], None]]
      :value: []



   .. py:attribute:: persistence_available
      :value: True



   .. py:attribute:: _values
      :type:  dict[str, Any]


   .. py:method:: _load_defaults() -> dict[str, Any]
      :classmethod:



   .. py:method:: _qsettings() -> PyQt6.QtCore.QSettings
      :classmethod:



   .. py:method:: _load_qsettings_values() -> dict[str, Any]


   .. py:method:: _update_persistence_availability(available: bool) -> None


   .. py:method:: add_persistence_listener(callback: Callable[[MagScopeSettings], None]) -> None


   .. py:method:: from_qsettings(values: Mapping[str, Any] | None = None) -> MagScopeSettings
      :classmethod:



   .. py:method:: save_to_qsettings() -> None


   .. py:method:: reset_to_defaults() -> None


   .. py:method:: to_dict() -> dict[str, Any]


   .. py:method:: clone() -> MagScopeSettings


   .. py:method:: persistent_copy() -> MagScopeSettings


   .. py:method:: _coerce_setting(key: str, value: Any) -> Any


   .. py:method:: update(mapping: Mapping[str, Any] | Iterable[tuple[str, Any]] = (), **kwargs: Any) -> None

      D.update([E, ]**F) -> None.  Update D from mapping/iterable E and F.
      If E present and has a .keys() method, does:     for k in E.keys(): D[k] = E[k]
      If E present and lacks .keys() method, does:     for (k, v) in E: D[k] = v
      In either case, this is followed by: for k, v in F.items(): D[k] = v



   .. py:method:: __getitem__(key: str) -> Any


   .. py:method:: __setitem__(key: str, value: Any) -> None


   .. py:method:: __delitem__(key: str) -> None


   .. py:method:: __iter__()


   .. py:method:: __len__()


   .. py:method:: export_yaml(path: str | os.PathLike[str]) -> None


   .. py:method:: import_yaml(path: str | os.PathLike[str]) -> MagScopeSettings
      :classmethod:



   .. py:method:: spec_for(key: str) -> SettingSpec
      :classmethod:



   .. py:method:: defined_keys() -> Iterable[str]
      :classmethod:



