Source code for sleap.prefs
"""
Handles SLEAP preferences.
Importing this module creates `prefs`, instance of `Preferences` class.
"""
from sleap import util
[docs]class Preferences(object):
"""Class for accessing SLEAP preferences."""
_prefs = None
_defaults = {
"medium step size": 4,
"large step size": 100,
"color predicted": False,
"palette": "standard",
"bold lines": False,
"trail length": 0,
"trail width": 4.0,
"trail node count": 1,
"hide videos dock": False,
"hide skeleton dock": False,
"hide instances dock": False,
"hide labeling suggestions dock": False,
}
_filename = "preferences.yaml"
def __init__(self):
self.load()
[docs] def load(self):
"""Load preferences from file, if not already loaded."""
if self._prefs is None:
self.load_()
[docs] def load_(self):
"""Load preferences from file (regardless of whether loaded already)."""
try:
self._prefs = util.get_config_yaml(self._filename)
if not hasattr(self._prefs, "get"):
self._prefs = self._defaults
except FileNotFoundError:
self._prefs = self._defaults
[docs] def save(self):
"""Save preferences to file."""
util.save_config_yaml(self._filename, self._prefs)
def _validate_key(self, key):
if key not in self._defaults:
raise KeyError(f"No preference matching '{key}'")
def __contains__(self, item) -> bool:
return item in self._defaults
def __getitem__(self, key):
self.load()
self._validate_key(key)
return self._prefs.get(key, self._defaults[key])
def __setitem__(self, key, value):
self.load()
self._validate_key(key)
self._prefs[key] = value
prefs = Preferences()
# save preference so that user editable file is created if it doesn't exist
prefs.save()