Loading openflexure_microscope/api/app.py +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ from labthings.extensions import find_extensions from openflexure_microscope.api.microscope import default_microscope as api_microscope from openflexure_microscope.api.utilities import init_default_extensions, list_routes from openflexure_microscope.api.v2 import views from openflexure_microscope.config import JSONEncoder from openflexure_microscope.json import JSONEncoder from openflexure_microscope.paths import ( OPENFLEXURE_EXTENSIONS_PATH, OPENFLEXURE_VAR_PATH, Loading openflexure_microscope/captures/capture.py +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ import dateutil.parser from openflexure_microscope.camera import piexif from openflexure_microscope.camera.piexif._exceptions import InvalidImageDataError from openflexure_microscope.config import JSONEncoder from openflexure_microscope.json import JSONEncoder EXIF_FORMATS = ["JPG", "JPEG", "TIF", "TIFF"] THUMBNAIL_SIZE = (200, 150) Loading openflexure_microscope/config.py +14 −51 Original line number Diff line number Diff line Loading @@ -3,18 +3,9 @@ import json import logging import os import shutil from fractions import Fraction from uuid import UUID import numpy as np from labthings.json import LabThingsJSONEncoder from .paths import ( CONFIGURATION_FILE_PATH, DEFAULT_CONFIGURATION_FILE_PATH, DEFAULT_SETTINGS_FILE_PATH, SETTINGS_FILE_PATH, ) from .json import JSONEncoder from .paths import CONFIGURATION_FILE_PATH, SETTINGS_FILE_PATH class OpenflexureSettingsFile: Loading @@ -33,7 +24,12 @@ class OpenflexureSettingsFile: self.path = path # Initialise basic config file with defaults if it doesn't exist initialise_file(self.path, populate=defaults) initialise_file( self.path, # Populate with default dictionary, or empty JSON if empty populate=json.dumps(defaults, cls=JSONEncoder, indent=2, sort_keys=True) or "{}\n", ) def load(self) -> dict: """ Loading Loading @@ -78,32 +74,6 @@ class OpenflexureSettingsFile: return settings class JSONEncoder(LabThingsJSONEncoder): """ A custom JSON encoder, with type conversions for PiCamera fractions, Numpy integers, and Numpy arrays """ def default(self, o): if isinstance(o, UUID): return str(o) # PiCamera fractions elif isinstance(o, Fraction): return float(o) # Numpy integers elif isinstance(o, np.integer): return int(o) # Numpy arrays elif isinstance(o, np.ndarray): return o.tolist() # UUIDs elif isinstance(o, UUID): return str(o) else: # call base class implementation which takes care of # raising exceptions for unsupported types return LabThingsJSONEncoder.default(self, o) # HANDLE BASIC LOADING AND SAVING OF SETTINGS FILES Loading Loading @@ -184,21 +154,14 @@ def initialise_file(config_path, populate: str = "{}\n"): outfile.write(populate) # Load the default settings with open(DEFAULT_SETTINGS_FILE_PATH, "r") as default_settings: DEFAULT_SETTINGS = default_settings.read() #: Default user settings object user_settings = OpenflexureSettingsFile( path=SETTINGS_FILE_PATH, defaults=DEFAULT_SETTINGS ) # Load the default configuration with open(DEFAULT_CONFIGURATION_FILE_PATH, "r") as default_configuration: DEFAULT_CONFIGURATION = default_configuration.read() user_settings = OpenflexureSettingsFile(path=SETTINGS_FILE_PATH) #: Default user settings object user_configuration = OpenflexureSettingsFile( path=CONFIGURATION_FILE_PATH, defaults=DEFAULT_CONFIGURATION path=CONFIGURATION_FILE_PATH, defaults={ "camera": {"type": "PiCamera"}, "stage": {"type": "SangaStage", "port": None}, }, ) openflexure_microscope/json.py 0 → 100644 +31 −0 Original line number Diff line number Diff line from fractions import Fraction from uuid import UUID import numpy as np from labthings.json import LabThingsJSONEncoder class JSONEncoder(LabThingsJSONEncoder): """ A custom JSON encoder, with type conversions for PiCamera fractions, Numpy integers, and Numpy arrays """ def default(self, o): if isinstance(o, UUID): return str(o) # PiCamera fractions elif isinstance(o, Fraction): return float(o) # Numpy integers elif isinstance(o, np.integer): return int(o) # Numpy arrays elif isinstance(o, np.ndarray): return o.tolist() # UUIDs elif isinstance(o, UUID): return str(o) else: # call base class implementation which takes care of # raising exceptions for unsupported types return LabThingsJSONEncoder.default(self, o) openflexure_microscope/microscope_configuration.default.jsondeleted 100644 → 0 +0 −9 Original line number Diff line number Diff line { "camera": { "type": "PiCamera" }, "stage": { "type": "SangaStage", "port": null } } No newline at end of file Loading
openflexure_microscope/api/app.py +1 −1 Original line number Diff line number Diff line Loading @@ -30,7 +30,7 @@ from labthings.extensions import find_extensions from openflexure_microscope.api.microscope import default_microscope as api_microscope from openflexure_microscope.api.utilities import init_default_extensions, list_routes from openflexure_microscope.api.v2 import views from openflexure_microscope.config import JSONEncoder from openflexure_microscope.json import JSONEncoder from openflexure_microscope.paths import ( OPENFLEXURE_EXTENSIONS_PATH, OPENFLEXURE_VAR_PATH, Loading
openflexure_microscope/captures/capture.py +1 −1 Original line number Diff line number Diff line Loading @@ -12,7 +12,7 @@ import dateutil.parser from openflexure_microscope.camera import piexif from openflexure_microscope.camera.piexif._exceptions import InvalidImageDataError from openflexure_microscope.config import JSONEncoder from openflexure_microscope.json import JSONEncoder EXIF_FORMATS = ["JPG", "JPEG", "TIF", "TIFF"] THUMBNAIL_SIZE = (200, 150) Loading
openflexure_microscope/config.py +14 −51 Original line number Diff line number Diff line Loading @@ -3,18 +3,9 @@ import json import logging import os import shutil from fractions import Fraction from uuid import UUID import numpy as np from labthings.json import LabThingsJSONEncoder from .paths import ( CONFIGURATION_FILE_PATH, DEFAULT_CONFIGURATION_FILE_PATH, DEFAULT_SETTINGS_FILE_PATH, SETTINGS_FILE_PATH, ) from .json import JSONEncoder from .paths import CONFIGURATION_FILE_PATH, SETTINGS_FILE_PATH class OpenflexureSettingsFile: Loading @@ -33,7 +24,12 @@ class OpenflexureSettingsFile: self.path = path # Initialise basic config file with defaults if it doesn't exist initialise_file(self.path, populate=defaults) initialise_file( self.path, # Populate with default dictionary, or empty JSON if empty populate=json.dumps(defaults, cls=JSONEncoder, indent=2, sort_keys=True) or "{}\n", ) def load(self) -> dict: """ Loading Loading @@ -78,32 +74,6 @@ class OpenflexureSettingsFile: return settings class JSONEncoder(LabThingsJSONEncoder): """ A custom JSON encoder, with type conversions for PiCamera fractions, Numpy integers, and Numpy arrays """ def default(self, o): if isinstance(o, UUID): return str(o) # PiCamera fractions elif isinstance(o, Fraction): return float(o) # Numpy integers elif isinstance(o, np.integer): return int(o) # Numpy arrays elif isinstance(o, np.ndarray): return o.tolist() # UUIDs elif isinstance(o, UUID): return str(o) else: # call base class implementation which takes care of # raising exceptions for unsupported types return LabThingsJSONEncoder.default(self, o) # HANDLE BASIC LOADING AND SAVING OF SETTINGS FILES Loading Loading @@ -184,21 +154,14 @@ def initialise_file(config_path, populate: str = "{}\n"): outfile.write(populate) # Load the default settings with open(DEFAULT_SETTINGS_FILE_PATH, "r") as default_settings: DEFAULT_SETTINGS = default_settings.read() #: Default user settings object user_settings = OpenflexureSettingsFile( path=SETTINGS_FILE_PATH, defaults=DEFAULT_SETTINGS ) # Load the default configuration with open(DEFAULT_CONFIGURATION_FILE_PATH, "r") as default_configuration: DEFAULT_CONFIGURATION = default_configuration.read() user_settings = OpenflexureSettingsFile(path=SETTINGS_FILE_PATH) #: Default user settings object user_configuration = OpenflexureSettingsFile( path=CONFIGURATION_FILE_PATH, defaults=DEFAULT_CONFIGURATION path=CONFIGURATION_FILE_PATH, defaults={ "camera": {"type": "PiCamera"}, "stage": {"type": "SangaStage", "port": None}, }, )
openflexure_microscope/json.py 0 → 100644 +31 −0 Original line number Diff line number Diff line from fractions import Fraction from uuid import UUID import numpy as np from labthings.json import LabThingsJSONEncoder class JSONEncoder(LabThingsJSONEncoder): """ A custom JSON encoder, with type conversions for PiCamera fractions, Numpy integers, and Numpy arrays """ def default(self, o): if isinstance(o, UUID): return str(o) # PiCamera fractions elif isinstance(o, Fraction): return float(o) # Numpy integers elif isinstance(o, np.integer): return int(o) # Numpy arrays elif isinstance(o, np.ndarray): return o.tolist() # UUIDs elif isinstance(o, UUID): return str(o) else: # call base class implementation which takes care of # raising exceptions for unsupported types return LabThingsJSONEncoder.default(self, o)
openflexure_microscope/microscope_configuration.default.jsondeleted 100644 → 0 +0 −9 Original line number Diff line number Diff line { "camera": { "type": "PiCamera" }, "stage": { "type": "SangaStage", "port": null } } No newline at end of file