Blackened

This commit is contained in:
jtc42 2019-12-21 17:40:04 +00:00
parent 2574e38b47
commit c85bdcc91d
10 changed files with 49 additions and 30 deletions

View file

@ -82,17 +82,10 @@ for plugin in find_plugins(USER_PLUGINS_PATH):
# Attach captures resources # Attach captures resources
labthing.add_resource(views.CaptureList, f"/captures") labthing.add_resource(views.CaptureList, f"/captures")
labthing.register_property(views.CaptureList) labthing.register_property(views.CaptureList)
labthing.add_resource( labthing.add_resource(views.CaptureResource, f"/captures/<id>")
views.CaptureResource, f"/captures/<id>" labthing.add_resource(views.CaptureDownload, f"/captures/<id>/download/<filename>")
)
labthing.add_resource(
views.CaptureDownload,
f"/captures/<id>/download/<filename>",
)
labthing.add_resource(views.CaptureTags, f"/captures/<id>/tags") labthing.add_resource(views.CaptureTags, f"/captures/<id>/tags")
labthing.add_resource( labthing.add_resource(views.CaptureMetadata, f"/captures/<id>/metadata")
views.CaptureMetadata, f"/captures/<id>/metadata"
)
# Attach settings and status resources # Attach settings and status resources
labthing.add_resource(views.SettingsProperty, f"/settings") labthing.add_resource(views.SettingsProperty, f"/settings")

View file

@ -124,4 +124,4 @@ def init_default_plugins(plugin_path):
_DEFAULT_PLUGIN_INIT = """from openflexure_microscope.plugins.v2.autofocus import autofocus_plugin_v2 _DEFAULT_PLUGIN_INIT = """from openflexure_microscope.plugins.v2.autofocus import autofocus_plugin_v2
from openflexure_microscope.plugins.v2.scan import scan_plugin_v2 from openflexure_microscope.plugins.v2.scan import scan_plugin_v2
__plugins__ = [autofocus_plugin_v2, scan_plugin_v2]""" __plugins__ = [autofocus_plugin_v2, scan_plugin_v2]"""

View file

@ -61,6 +61,7 @@ class GPUPreviewStartAPI(Resource):
Optional "window" parameter can be passed to control the position and size of the preview window, Optional "window" parameter can be passed to control the position and size of the preview window,
in the format ``[x, y, width, height]``. in the format ``[x, y, width, height]``.
""" """
def post(self): def post(self):
microscope = find_device("openflexure_microscope") microscope = find_device("openflexure_microscope")
payload = JsonResponse(request) payload = JsonResponse(request)
@ -84,6 +85,7 @@ class GPUPreviewStopAPI(Resource):
""" """
Start the onboard GPU preview. Start the onboard GPU preview.
""" """
def post(self): def post(self):
microscope = find_device("openflexure_microscope") microscope = find_device("openflexure_microscope")
microscope.camera.stop_preview() microscope.camera.stop_preview()

View file

@ -6,7 +6,9 @@ from openflexure_microscope.api.utilities import get_bool, JsonResponse
from openflexure_microscope.common.flask_labthings.schema import Schema from openflexure_microscope.common.flask_labthings.schema import Schema
from openflexure_microscope.common.flask_labthings import fields from openflexure_microscope.common.flask_labthings import fields
from openflexure_microscope.common.flask_labthings.resource import Resource from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.utilities import description_from_view from openflexure_microscope.common.flask_labthings.utilities import (
description_from_view,
)
from openflexure_microscope.common.flask_labthings.decorators import marshal_with from openflexure_microscope.common.flask_labthings.decorators import marshal_with
from openflexure_microscope.common.flask_labthings.find import find_device from openflexure_microscope.common.flask_labthings.find import find_device
@ -30,24 +32,27 @@ class CaptureSchema(Schema):
"self": { "self": {
"href": url_for(CaptureResource.endpoint, id=data.id, _external=True), "href": url_for(CaptureResource.endpoint, id=data.id, _external=True),
"mimetype": "application/json", "mimetype": "application/json",
**description_from_view(CaptureResource) **description_from_view(CaptureResource),
}, },
"tags": { "tags": {
"href": url_for(CaptureTags.endpoint, id=data.id, _external=True), "href": url_for(CaptureTags.endpoint, id=data.id, _external=True),
"mimetype": "application/json", "mimetype": "application/json",
**description_from_view(CaptureTags) **description_from_view(CaptureTags),
}, },
"metadata": { "metadata": {
"href": url_for(CaptureMetadata.endpoint, id=data.id, _external=True), "href": url_for(CaptureMetadata.endpoint, id=data.id, _external=True),
"mimetype": "application/json", "mimetype": "application/json",
**description_from_view(CaptureMetadata) **description_from_view(CaptureMetadata),
}, },
"download": { "download": {
"href": url_for( "href": url_for(
CaptureDownload.endpoint, id=data.id, filename=data.filename, _external=True CaptureDownload.endpoint,
id=data.id,
filename=data.filename,
_external=True,
), ),
"mimetype": "image/jpeg", "mimetype": "image/jpeg",
**description_from_view(CaptureDownload) **description_from_view(CaptureDownload),
}, },
} }
return data return data
@ -61,6 +66,7 @@ class CaptureList(Resource):
""" """
List all image captures List all image captures
""" """
@marshal_with(CaptureSchema(many=True)) @marshal_with(CaptureSchema(many=True))
def get(self): def get(self):
microscope = find_device("openflexure_microscope") microscope = find_device("openflexure_microscope")
@ -99,6 +105,7 @@ class CaptureDownload(Resource):
""" """
Image data for a single image capture Image data for a single image capture
""" """
def get(self, id, filename): def get(self, id, filename):
microscope = find_device("openflexure_microscope") microscope = find_device("openflexure_microscope")
@ -134,6 +141,7 @@ class CaptureTags(Resource):
""" """
Tags associated with a single image capture Tags associated with a single image capture
""" """
def get(self, id): def get(self, id):
microscope = find_device("openflexure_microscope") microscope = find_device("openflexure_microscope")
@ -184,6 +192,7 @@ class CaptureMetadata(Resource):
""" """
All metadata associated with a single image capture All metadata associated with a single image capture
""" """
def get(self, id): def get(self, id):
microscope = find_device("openflexure_microscope") microscope = find_device("openflexure_microscope")
capture_obj = microscope.camera.image_from_id(id) capture_obj = microscope.camera.image_from_id(id)

View file

@ -41,4 +41,5 @@ class marshal_with(object):
return make_response(self.schema.jsonify(data), code, headers) return make_response(self.schema.jsonify(data), code, headers)
else: else:
return make_response(self.schema.jsonify(resp)) return make_response(self.schema.jsonify(resp))
return wrapper return wrapper

View file

@ -72,7 +72,9 @@ class URLFor(Field):
self.view_class = None self.view_class = None
self.endpoint = endpoint self.endpoint = endpoint
else: else:
raise RuntimeError(f"Endpoint {endpoint} is not a valid Flask view or endpoint string.") raise RuntimeError(
f"Endpoint {endpoint} is not a valid Flask view or endpoint string."
)
self.params = kwargs self.params = kwargs
Field.__init__(self, **kwargs) Field.__init__(self, **kwargs)
@ -85,7 +87,9 @@ class URLFor(Field):
if hasattr(self.view_class, "endpoint"): if hasattr(self.view_class, "endpoint"):
self.endpoint = self.view_class.endpoint self.endpoint = self.view_class.endpoint
else: else:
raise RuntimeError(f"Resource {self.endpoint} has not been added to a LabThing application. Unable to generate URL.") raise RuntimeError(
f"Resource {self.endpoint} has not been added to a LabThing application. Unable to generate URL."
)
# Generate URL for # Generate URL for
param_values = {} param_values = {}

View file

@ -11,7 +11,14 @@ from . import EXTENSION_NAME
class LabThing(object): class LabThing(object):
def __init__(self, app=None, prefix: str = "", title: str = "", description: str = "", handle_errors: bool = True): def __init__(
self,
app=None,
prefix: str = "",
title: str = "",
description: str = "",
handle_errors: bool = True,
):
self.app = app self.app = app
self.devices = {} self.devices = {}
@ -219,7 +226,7 @@ class LabThing(object):
if self.blueprint: if self.blueprint:
if endpoint.startswith(self.blueprint.name): if endpoint.startswith(self.blueprint.name):
endpoint = endpoint.split(self.blueprint.name + '.', 1)[-1] endpoint = endpoint.split(self.blueprint.name + ".", 1)[-1]
else: else:
return False return False
return endpoint in self.endpoints return endpoint in self.endpoints
@ -254,4 +261,4 @@ class LabThing(object):
return jsonify(td) return jsonify(td)
# TODO: Add a nicer root resource like the old self-documenting system # TODO: Add a nicer root resource like the old self-documenting system

View file

@ -5,10 +5,7 @@ import copy
from importlib import util from importlib import util
import sys import sys
from openflexure_microscope.utilities import ( from openflexure_microscope.utilities import camel_to_snake, snake_to_spine
camel_to_snake,
snake_to_spine,
)
class BasePlugin: class BasePlugin:

View file

@ -36,7 +36,11 @@ def plugins_representation(plugin_dict):
} }
for view_id, view_data in plugin.views.items(): for view_id, view_data in plugin.views.items():
uri = url_for(f"PluginListResource", _external=True) + "/" + view_data["rule"][1:] uri = (
url_for(f"PluginListResource", _external=True)
+ "/"
+ view_data["rule"][1:]
)
# Make links dictionary if it doesn't yet exist # Make links dictionary if it doesn't yet exist
view_d = {"href": uri, **description_from_view(view_data["view"])} view_d = {"href": uri, **description_from_view(view_data["view"])}

View file

@ -4,7 +4,9 @@ from openflexure_microscope.common.flask_labthings.schema import Schema
from openflexure_microscope.common.flask_labthings import fields from openflexure_microscope.common.flask_labthings import fields
from openflexure_microscope.common.labthings_core import tasks from openflexure_microscope.common.labthings_core import tasks
from openflexure_microscope.common.flask_labthings.resource import Resource from openflexure_microscope.common.flask_labthings.resource import Resource
from openflexure_microscope.common.flask_labthings.utilities import description_from_view from openflexure_microscope.common.flask_labthings.utilities import (
description_from_view,
)
from marshmallow import pre_dump from marshmallow import pre_dump
@ -52,8 +54,8 @@ class TaskSchema(Schema):
"self": { "self": {
"href": url_for(TaskResource.endpoint, id=data.id, _external=True), "href": url_for(TaskResource.endpoint, id=data.id, _external=True),
"mimetype": "application/json", "mimetype": "application/json",
**description_from_view(TaskResource) **description_from_view(TaskResource),
}, }
} }
return data return data