v1.3.2 (2021-08-23)
This is a bugfix release, fixing the behavour of StrictLock
and CompositeLock
objects when
used in with
statements (#275).
- Bump pylint from 2.9.5 to 2.10.2 (655a583)
- Locks release on exception (ed7855e)
- Test lock releases with/without arguments (7151372)
- Test to ensure locks are released on error (8bdc522)
v1.3.1 (2021-08-04)
This is a bugfix release, fixing errors that occurred if any fields had allow_none
set to True
:
- Add readme and tidy up marshmallow_jsonschema (49ea82d)
- Fix field2property for nullable values (dc696dd)
- Handle nullable fields properly (3174367)
v1.3.0 (2021-07-25)
- ✏️ Fix typo in README.md (3ab2d12)
- [Security] Bump py from 1.9.0 to 1.10.0 (f1eb043)
- [Security] Bump urllib3 from 1.26.3 to 1.26.4 (215fa94)
- Bump apispec from 4.6.0 to 4.7.1 (e62c570)
- Bump marshmallow from 3.10.0 to 3.12.1 (131f9d4)
- Bump marshmallow from 3.12.1 to 3.12.2 (8333b65)
- Bump pylint from 2.8.3 to 2.9.3 (93eba68)
- Bump pylint from 2.9.3 to 2.9.4 (f43ead9)
- Bump pytest from 6.2.2 to 6.2.4 (7fa0983)
- Bump pytest from 6.2.2 to 6.2.4 (a4516d5)
- Bump sphinx from 3.5.4 to 4.1.0 (cc15230)
- Bump sphinx from 4.1.0 to 4.1.1 (2297f79)
- Bump sphinx-autoapi from 1.7.0 to 1.8.1 (6c0feea)
- Bump sphinx-rtd-theme from 0.5.1 to 0.5.2 (baa5c8b)
- Bump webargs from 7.0.1 to 8.0.0 (6bcc454)
- Bump zeroconf from 0.28.8 to 0.31.0 (219b0a3)
- Bump zeroconf from 0.31.0 to 0.32.1 (0e511f5)
- Bump zeroconf from 0.32.1 to 0.33.0 (6903b18)
- Bump zeroconf from 0.33.0 to 0.33.1 (bd6d804)
- Upgrade to GitHub-native Dependabot (4061871)
Exceptions in Action threads end up quietly reported in the Action description. This was preventing
Marshmallow from validating Action arguments, which was a problem. This release changes the behaviour slightly
so that if arguments are invalid, or if flask.abort()
is called at the start of an action, it responds
with an HTTP error code rather than a 201 Created
response.
Commits that support this:
- added a docstring (850592f)
- added read-only property for _exception (e87152d)
- Added tests for action errors -> HTTP codes (1a7a93b)
- Fix assertion for duplicate actions (75c75b9)
- Fix a comment (23c720a)
- fix typo (f816354)
- Linting fixes (1c97565)
- Only propagate HTTP exceptions (50f9936)
- Propagate exceptions from action threads (e26663f)
- Properly handle late HTTPExceptions (671d403)
- Tidied API test code (bbb08b8)
- Whitespace/isort fixes (89c1ddf)
This release changes the way documentation propagates through LabThings and Flask to the OpenAPI description. The current release doesn't change the contents of the Thing Description, but it does mean that the OpenAPI output is valid, and that's now tested for some common cases in the CI.
Important things to note are:
View
classes can now attach properties either to the class, or to individual methods.summary
anddescription
properties will be used if present, or the docstring will be used if not.responses
andparameters
properties set the method's responses and parameters. If set on the class, they will be used for all methods.
Attributes have been added to built-in views as needed to produce valid OpenAPI documentation, though there
is always room to add more meaningful descriptions. Documentation is now much more thoroughly tested,
including using apispec
and prance
to check the OpenAPI description is valid.
Commits that form a part of this effort:
- Add YAML version of openapi docs (39d91e7)
- Added a test for OpenAPI serialisation (52851f4)
- Added APISpec utilities (f49aedb)
- Added APISpec validation to dependencies (1935f25)
- Added more unit tests (8490acb)
- Added OpenAPI validation to tests (a100fa9)
- added remove_summary option to get_docstring (cd4a994)
- Added some more tests of thing description (54d5df9)
- Added the "YAML" extra to apispec (345d544)
- Allow per-Operation docstrings (05b2747)
- Avoid premature serialisation (9ec6fa2)
- Better response descriptions for builtin endpoints (f161213)
- blackened (c52a66d)
- Blackened (e21c6e2)
- Check duplicate action names (f39851c)
- Cope with missing input/output schemas (8f1cc14)
- Documented parameters for actions & static (38fb5ca)
- Eliminate built action schemas (67a9257)
- Exhaustive testing for docstring additions (704cba9)
- Fix OneOf and tidy up build_action_schema (c6c0b5b)
- Fix OpenAPI route registration (7ba0950)
- Fix whitespace in docstring test (af6a8d3)
- Fixed remove_summary and remove_newlines (f6ba74e)
- Fixed typing in ensure_schema (9b51698)
- Fixes from unit testing (b9f9fc9)
- Format fixes (a5a9ed9)
- Format fixes (001d6bb)
- formatting fixes (e27e904)
- linter fixes (8ddfaec)
- Linting and typing fixes (8353bcb)
- Manage indentation better in docstrings (559b769)
- More helpful docstring for ActionView.get (6819f23)
- propagate parameters and responses per-operation (9ea10f5)
- Provide names for generated schemas (8654d02)
- Removed unused function (674d09f)
- Removed unused import (5f9d284)
- Swap MethodView for View in builder.static_from (2f12098)
- Use deepcopy to avoid modifying responses (bfc6fc4)
- Whitespace fixes (a27e16a)
v1.2.4 (2021-03-22)
- [Security] Bump jinja2 from 2.11.2 to 2.11.3 (16ec89b)
- [Security] Bump urllib3 from 1.26.2 to 1.26.3 (05af37c)
- Bump apispec from 4.0.0 to 4.2.0 (e3e1d81)
- Bump apispec from 4.2.0 to 4.3.0 (1e6743b)
- Bump flask-cors from 3.0.9 to 3.0.10 (72ef6b7)
- Bump mypy from 0.790 to 0.800 (81df983)
- Bump mypy from 0.800 to 0.812 (c96f660)
- Bump pylint from 2.6.0 to 2.7.2 (44a6973)
- Bump pytest from 6.2.1 to 6.2.2 (6c75aec)
- Bump pytest-cov from 2.10.1 to 2.11.0 (921eb47)
- Bump pytest-cov from 2.11.0 to 2.11.1 (86572bf)
- Bump sphinx from 3.4.2 to 3.4.3 (3458f95)
- Bump sphinx from 3.4.3 to 3.5.3 (64e5e07)
- Bump sphinx-autoapi from 1.5.1 to 1.6.0 (30ead18)
- Bump sphinx-autoapi from 1.6.0 to 1.7.0 (cb93348)
- v1.2.3 (c0cf4a7)
v1.2.3 (2021-01-05)
- Added basic marshalling tests (0b2cbbb)
- Bump marshmallow from 3.9.1 to 3.10.0 (4973071)
- Bump pytest from 6.1.2 to 6.2.1 (76f6017)
- Bump sphinx from 3.3.1 to 3.4.2 (deab86c)
- Bump sphinx-rtd-theme from 0.5.0 to 0.5.1 (ddca13c)
- Bump webargs from 6.1.1 to 7.0.1 (aeba41b)
- Bump zeroconf from 0.28.6 to 0.28.8 (78f78eb)
- Converted use_body to nested functions (37919b1)
- Formatting (0900cbd)
- Improved type annotations (6e8b47e)
- Tidied imports (4ddc120)
v1.2.2 (2020-12-04)
- MyPy fixes (dc7547a)
v1.2.1 (2020-11-30)
- Allow Fields in OptionalSchema type (c22927e)
v1.2.0 (2020-11-30)
- Add extension property to views and added LABTHINGS_EXTENSIONS class list loader (15c364a)
- Added set_extension method to View class (427b12e)
- Allow (but warn) instances in LABTHINGS_EXTENSIONS list (0165bc7)
- Switch away from dunder to LABTHINGS_EXTENSIONS (3b6e9af)
v1.1.6 (2020-11-30)
- Added extra type defs (d90e9c1)
- Added public rules property (bd58673)
- Bump apispec from 3.3.2 to 4.0.0 (5ed03fe)
- Fixed get_by_path to allow returning Any type value (e9ed244)
- Fixed mypy ignore (cf33d1e)
- Fixed view schema type annotations (6ef3f4a)
- Global mypy ignore_missing_imports = True (53e077c)
v1.1.5 (2020-11-24)
- Added py.typed (5a59ce7)
- Added PyLint analysis (4c14e35)
- Fixed dump method signature (0ec347c)
- Fixed Poetry install in publish stage (63b4c1f)
- Fixed pylint workflow path (8440f9d)
- Formatting (62ba495)
v1.1.4 (2020-11-24)
- Added a bunch of type definitions (3104d86, a767205)
- Fixed all in root (0568b48)
- Updated CI to use snok/install-poetry (be14a44)
- Added mypy to CI (fa1ff0b)
v1.1.3 (2020-11-12)
- Attempt JSON parsing in use_body (7602317)
v1.1.2 (2020-10-28)
- Fixed ActionView deque being common to all subclasses (37cc448)
v1.1.1 (2020-10-16)
- Added alias of "stopped" (d524fd8)
- Fix #152 (564ec1b), closes #152
- Updated dependencies (abc732c)
- Updated Events to new spec (379bf9a)
v1.1.0 (2020-09-21)
- Added "action" key to action objects (9478f82)
v1.0.0 (2020-09-18)
- Bump webargs from 6.1.0 to 6.1.1 (3a64b22)
v1.0.0-beta.1 (2020-09-09)
- 1.0.0-beta.1 (b67406f)
- Add crude example of watching property for changes (2605d7c)
- Add views with websocket methods to LabThing.sockets (e51b2e0)
- Added Events support (bf41b50)
- Added invokeaction (89ce0e9)
- Added missing apispec_webframeworks dependency (4d91724)
- Added observeproperty and unobserveproperty (9d3b759)
- Added op annotations to example (29ca056)
- Added type check to LogRecordSchema.preprocess (c885f5d)
- Added unit tests (d4b38a1)
- Added websocket view example (5ca0295)
- Autofix issues in 5 files (41d09da)
- Base on common _opannotation (572df0e)
- Bump apispec from 3.3.1 to 3.3.2 (690c5c0)
- Bump black from 19.10b0 to 20.8b1 (1ec8ad6)
- Bump flask-cors from 3.0.8 to 3.0.9 (8211003)
- Bump numpy from 1.19.0 to 1.19.1 (252263f)
- Bump pylint from 2.5.3 to 2.6.0 (cdac9be)
- Bump pytest from 5.4.3 to 6.0.1 (34dcd22)
- Bump pytest-cov from 2.10.0 to 2.10.1 (0f8a6ae)
- Bump sphinx from 3.1.2 to 3.2.1 (3eb7250)
- Bump zeroconf from 0.28.0 to 0.28.3 (39193a4)
- Bump zeroconf from 0.28.3 to 0.28.4 (c3fd78b)
- Changed action status messages (99655eb)
- Code formatting (cac9add)
- Create CODE_OF_CONDUCT.md (bfe5551)
- Fix duplicated test (e5d6185)
- Fixed server app context (9d85ea5)
- Fixes and removed unused code (446f282)
- Formatting (3dc2c05)
- Generic form builder based on view _opmap (fc91f04)
- Hash zeroconf names that are too long (47e56e6)
- Improved Action schema and removed old Task schema (ed4ef9d)
- Improved black-isort compatibility (1912de7)
- Introduced op decorators to map Thing op to methods (4251406)
- Moved marshalling into a submodule (1935756)
- Ran Isort (264474b)
- Read input JSON directly where available (ccf6f86)
- Reformatted (ee5de18)
- Remove old Task schema test (4e9c120)
- Remove websocket support (8b46960)
- Removed deprecated code (61132d5)
- Removed links from TD interactions (62bbff7)
- Removed semantics submodule (9716f79)
- Removed tests for deprecated code (cd85859)
- Removed TODO (6af1442)
- Removed TODOs (eac0cea)
- Removed unused Event class (279eef8)
- Removed unused Event import (160cbd8)
- Removed unused examples (04af64c)
- Removed unused import (1eb15d1)
- Removed unused interaction builders (644361d)
- Removed websocket support (fde6181)
- Revert static view builder to old submodule (1610d97)
- Show full Action schema in TD (31e27f6)
- Support generic LabThings Views (e5cf97e)
- Support overriding protocol in ResourceURL (baf2c1b)
- Support websocket methods in View class (cf12312)
- Update README.md (6a0dc42)
- Updated dependencies (fce1411)
- Updated dependencies (07157c2)
- Updated docs (21c6f76)
- Updated example and docs (9b0c61f)
- Updated flask-threaded-sockets to 0.3.0 (a219201)
- Updated tests (d7ea902)
- Updated tests (97f0c47)
- Updated tests for new import structure (e01c4c9)
- Use Deque for thread pool (ccc07ab)
0.8.0 (2020-07-22)
- Support View class stop timeout from /tasks resources (375ed71)
0.8.0-rc.2 (2020-07-22)
- Added ActionView class attribute to override thread default_stop_timeout (4e103eb)
- Added get(id) method to action pool (d0ded32)
- Added support for Thing-wide external links (0ef460d)
- Fixed ActionKilledException in docstrings (0031dc3)
- Fixed example integration_time descriptions (574c932)
- Fixed legacy /tasks view tests (3117b74)
- Fixed typo (3ece5e7)
- Handle ResourceURL class in TD validator (34ebb4c)
- Improved ExtendedOpenAPIConverter coverage (1bf0c27)
- Improved thread coverage (d6ad47e)
- Made ActionView.get a classmethod (fe1f088)
- Moved TaskView deprecation warning to be less annoying (b4d4972)
- Simplified thread run method (0656200)
- Support UserString type in LabThingsJSONEncoder (0f1e15b)
- Updated thread logging test (2cb8260)
0.8.0-rc.1 (2020-07-21)
- Expanded documentation (17d4f23 a4f3949 9d1aa13 f57f513)
- Fixed broken zeroconf registration (1af31b4)
- Fixed legacy task view URL (2e96bba)
- Fixed typo in all (3620a1e)
- Log caught werkzeug errors (d1c28b2)
- Refactored tasks.TaskThread to actions.ActionThread (4325806)
0.8.0-beta.3 (2020-07-20)
- Started API documentation
- Added automatic URL generation for interaction builders (5a33d71)
- Added create_app to top level import (070bfcd)
- Added root import of LabThing class (4bf8412)
- Added tests for LabThing view builders (d039874)
- Deprecate monkey patch (9f7f905)
- Fix conversion from None lock timeout to -1 (ea4ccba)
- Fixed ThreadedWebsocketServer (70342ff)
- Let LabThing object handle choice of JSON encoder (470b4f6)
- Moved json.paths functions into json.schemas (58d9318)
- Removed default schema for built properties (096eb99)
- Removed LabThing.owns_endpoint (af56b80)
- Removed get_class_that_defined_method function (19d80ce)
- Renamed labthings.view to labthings.views (ec15b10)
- Reverted current_thing proxy back to current_labthing function (6b79698)
- Switched action builder to the same API as property builder (cb4d1a3)
- Switched all docstrings to common format (dedebb9)
- Updated flask_threaded_sockets (286cdb6)
- Updated to simplified imports (6e4465f)
0.8.0-beta.2 (2020-07-15)
- 0.8.0-beta.2 (bf1e7b4)
- Native threaded concurrency (#120) (506a026), closes #120
- Removed gevent from socket handler and monkey patcher (5f2da89)
- Updated changelog (15bd901)
v0.8.0-beta.1 (2020-07-09)
This release introduces a massively simplified API, at the expense of being more opinionated about how we marshal View responses.
By being stricter about what ActionView
and PropertyView
derivatives can do, we're able to greatly simplify the internal code.
-
The Tasks view (
/tasks
) is now deprecated, and has been replaced with a root/actions
view.- These are functionally identical, however some keys are named differently (e.g.
return
is nowoutput
)
- These are functionally identical, however some keys are named differently (e.g.
-
The
tasks
submodule no longer includes a global task list.- This has been replaced with a
labthing
attributeactions
. To access the full list of action tasks, usecurrent_thing.actions
- To spawn a new action task, use
current_thing.actions.spawn(function, *args, **kwargs)
- This has been replaced with a
-
Thing Descriptions no longer rely on the
apispec
module. They are now generated using a built-in json schema converter module, forked from marshmallow_jsonschema -
apispec
information is now built by the View class method, usingmarshmallow_jsonschema
. This greatly simplifies the internal code, however note that schemas in the OpenAPI spec will now always be inline, rather than referenced.
-
Action views now automatically include a
GET
method, which returns a list of actions of that type -
Action wait time can now be changed, allowing developers to guarantee an Action will return when completed, rather than returning a
running
status, or always returnrunning
immediately without any waiting. -
Introduces the
current_thing
proxy, which gives you a proxy to the current app's attached LabThing object
- Added 0.7 compatibility layer (334539b)
- Added Action queue method (08ed9ce)
- Added basic deque submodule (cb0df6f)
- Added default error schema to API spec (48196ec)
- Added init file (47458cc)
- Added input content_type attribute (5ec94ee)
- Allow calling abstract Semantics (d4fe57e)
- Allow mock WS client to close after a specific response (df0062e)
- Allow OpenAPIConverter to use _jsonschema_type_mapping (cae8e10)
- Allow overriding Action wait time (87adad5)
- Changed views to be more opinionated (9fa713e)
- Created a current_thing LocalProxy (2b421b8)
- Fix HTTP method check (8ae6060)
- Fix OpenAPI formatting (c90a646)
- Fixed applying semtype string (d84ae58)
- Fixed arg handling in request handlers (93cd2ff)
- Fixed automatic marshalling (d467463)
- Fixed builder (00fe6dc)
- Fixed comments (d5853ba)
- Fixed default View arguments (881ee3f)
- Fixed how _register_view looks for view tags (82648f5)
- Fixed internal imports (bca418e)
- Fixed OpenAPI spec with missing schemas (2394d81)
- Fixed reading content type (f5e7e35)
- Fixed switched arg_methods and marshal_methods (4641e66)
- Fixed TaskList description (a5d6ea6)
- Fixed view class scope (80410f1)
- Got basic simpler spec working (caa983b)
- Handle different request and response types in TD (8427445)
- Handle missing semantic type (19dbb37)
- Handle passing None to schema_to_json (8c1068d)
- Improved HTTP form builder (56a22bf)
- Inherit basic OpenAPI spec from superclass (2371bd6)
- Initial reorganisation (33b6dc7)
- Manually marshal tasks view (ae2192a)
- Migrated OpenAPI away from APISpec library (2e28d14)
- Moved APISpec to a class method (3a82dba)
- Properly marshal extensions list (82124c9)
- Re-added compatibility import (0582e77)
- Remove reliance on OpenAPI spec for Thing Description (45bb9df)
- Remove unused imports (fd2144b)
- Remove unused imports (3c6a628)
- Removed APISpec module dependence from TD (a4aab52)
- Removed default task pool (d67b5b0)
- Renamed to jsonschema_type_mapping (9bc663d)
- Renamed to SerializedExceptionHandler (3671552)
- Simplified class attributes (5bb0cc6)
- Simplified class attributes (6c0460d)
- SImplified interaction contentType definitions (bc8ddc5)
- Split general JSON schema formatting away from APIspec (b718258)
- Switch to gevent Event (4297910)
- Switched action tasks to use LabThing-level pool (53ea2bf)
- Temporarily removed CBOR encoding support (26cb16a)
- Tidied up comments (c2c0085)
- Updated ActionSchema links to new /actions view (2f1b117)
- Updated TD to use new apispec methods (445aa8f)
- Use data_key for field schemas where given (9b47bff)
v0.7.0 (2020-06-30)
- Introduced simpler API view spec declerations (caa983b)
- Added alias to Flask Response class (c9d693c)
- Added alias to Marshmallow pre_dump and pre_load (c80e45f)
- Handle missing schema better (31a7a04)
- Improved coverage (1c6a019)
- Improved coverage (a0ec226)
- Improved coverage for lock call context (8d37bd8)
- Improved tag test (d7889d0)
- Improved WS response checker (d6c69eb)
- Loostened codecov failure conditions (c4fc243)
- Made class-tags non-removable by default (6b41db8)
- Move content_type into class responses dictionary (a2302fe)
- Only marshal for "get", "put", "post", "patch" (e606d35)
- Removed decorators entirely (c9f7dbc)
- Removed docs view property (d5565cd)
- Removed legacy property mode and raise invalid semtypes (f363982)
- Removed marshal_task (80ef05b)
- Removed old debug prints (b0e17dc)
- Removed old doc_response decorator (959ef15)
- Removed unnecesarry get_semantic_type function (5eccd7c)
- Removed unused function (945062d 6da51b7)
- Removed unused variable (59ca394)
- Removed URL prefix (cdf151c)
- Removed uses of old apispec (833229f)
- Specified marshal_methods (3020d31)
- Started testing class-attribute spec definitions (f130d66)
- Switched to PUT for properties (376db07)
- Tidied up view descriptions (48e34d9)
- Updated APIspec tests (097f506)
- Updated default server view tests (e1f4ca8)
- Updated examples (2d30c12)
- Updated TD tests (5d2be38)
- Updated version and dependencies (6d4c873)
- Updated view builder tests (a455797)
0.6.7 (2020-06-25)
- Added acquire_timeout context manager (1a7ba4f)
- Added test for acquire_timeout (e6a313d)
- Changed acquire_timeout to class call method (b7d1594)
- Updated changelog (b62879e)
- Updated for context acquire with timeout (cb822bb)
- Updated version and dependencies (e021369)
0.6.6 (2020-06-23)
- Added docstrings (8aa75f2)
- Added Flask config for custom JSON encoder (395ffb6)
- Added Flask responses proxy (eeac929)
- Added proxy to flask current_app (02e8773)
- Added proxy to flask url_for (4c4390b)
- Added semantic annotation support to view builder (d4ecd46)
- Added W3C schema (4119de5)
- Allow boolean values for "required". May be reverted at some point (5c0ca64)
- Bump gevent from 20.6.1 to 20.6.2 (10262d8)
- Bump numpy from 1.18.5 to 1.19.0 (5c443a9)
- Changed fast action message to debug (d433092)
- Code formatting (49e2f82)
- Code style (34cb6a7)
- Create codeql-analysis.yml (03d1fd6)
- Deleted unused consumer submodule (d7301cb)
- Fixed imports (9328ea9)
- Fixed missing poetry install step (c73d0a4)
- Re-added semtype for 0.6.X compatibility (7ad7b1b)
- Rearranged socket handler (ed4b8fe)
- Removed automatic schema generator (e948993)
- Removed webthing mDNS record (41fae69)
- Restored W3C TD compatibility (e173b61)
- Stop using tox for testing (7fbd93f)
- Updated CI to use pytest.ini (8e2815c)
- Updated examples (899f055)
- Updated version and changelog (0541dc8)
0.6.5 (2020-06-15)
- Added decorator for including semantic @type in Thing Description (44ef329)
- Added note on the purpose of build_action_schema (752fd97)
- Bump apispec from 3.3.0 to 3.3.1 (9bcea26)
- Bump gevent from 20.5.1 to 20.5.2 (f075827)
- Bump gevent from 20.5.2 to 20.6.0 (0b7dd18)
- Bump gevent from 20.6.0 to 20.6.1 (5d25da2)
- Bump marshmallow from 3.6.0 to 3.6.1 (f943d21)
- Bump numpy from 1.18.4 to 1.18.5 (1bb300f)
- Bump pytest from 5.4.2 to 5.4.3 (dc52e87)
- Bump pytest-cov from 2.9.0 to 2.10.0 (5d6dce6)
- Bump zeroconf from 0.26.2 to 0.27.0 (a10851b)
- Bump zeroconf from 0.27.0 to 0.27.1 (2bbff35)
- Default to infinitely blocking locks (1ee6afe)
- Started adding Mozilla semantic classes (797388d)
- Support semantic types in view builder (84f1fd1)
- Updated version, dependencies, and changelog (5bd5e98)
0.6.4 (2020-05-28)
- Added input and output to default Action schema (52a5116)
- Added more deprecation warnings (76831e2)
- Assert unbound argument skipping (8ae655d)
- Bump pytest-cov from 2.8.1 to 2.9.0 (a832b11)
- Bump zeroconf from 0.26.1 to 0.26.2 (64c68f5)
- Code formatting (eaaa962)
- Fixed Action output formatting (05b48ac)
- Force "required" field in TD schemas (bfd5671)
- Formatted code (1db71f0)
- Improved docstrings (78ac575)
- Made first example argument required (57e33ae)
- Only show required parameter if its true (ec84e9c)
- Skeleton for handling unbound arguments (a03f1b5)
- Skip unbound arguments when generating signature schemas (b8ed956)
- Updated changelog (326d509)
- Updated changelog (a31ca64)
- Updated version and dependencies (f221f1d)
0.6.3 (2020-05-20)
- Properly handle access log handlers (f0f02ae)
- Switched SIGTERM handler to gevent.signal_handler (4810247)
- Updated version and changelog (d5a2efc)
0.6.2 (2020-05-18)
- Updated changelog (5c617f8)
- Updated version and dependencies (245d1ed)
- Use cleaned_urls for extension rule expansion map (2e649d7)
0.6.1 (2020-05-15)
- Reintroduced Action response "links" (5b8401d)
- Updated changelog (0dd7c50)
- Updated version and dependencies (ee861ea)
- Use PUT for writing properties in built views (e241c96)
0.6.0 (2020-05-12)
- Add Event coverage (8c9b9ef)
- Added basic Mozilla _webthing service to mDNS (038855a)
- Added Bytes field type and removed Schema jsonify (2559019)
- Added cbor dependency (6ebdc64)
- Added CBOR fixtures (c6cccdd)
- Added CBOR representation (783e4e5)
- Added CBOR representation tests (efcc038)
- Added deserializer for Bytes field (2d0748e)
- Added LabThing-level property and action builders (fe61a29)
- Added some bytes to the example (db1e6bf)
- Added specific error-log handler to server (ffe7952)
- Added type annotations (66e6731)
- Allow codecov upload failures (eb9025d)
- Better handle top level messages (dd8f67c)
- Bump gevent from 20.4.0 to 20.5.0 (31fad3c)
- Bump marshmallow from 3.5.2 to 3.6.0 (41af82b)
- Bump pytest from 5.4.1 to 5.4.2 (64d2592)
- Bump webargs from 6.0.0 to 6.1.0 (039d083)
- Bump zeroconf from 0.26.0 to 0.26.1 (a3d7410)
- Code format (48d2886)
- Created proper Event class (463ce8c)
- Custom Marshmallow APISpec plugin to handle Bytes field (66f1617)
- Draft testing with Tox (29db7b5)
- Enable multiple URLs in extension views (685285a)
- Fix argument name (f554a03)
- Fix coverage source (33e786e)
- Fixed bytes encoding tests (6926cdb)
- Fixed changelog format (4f87c33)
- Fixed mDNS service list (f473c69)
- Further reduced change of dictionary size change during loop (2d9f9ce)
- Handle top-level event types (bb35494)
- Map Bytes to Bytes field (b516110)
- Mozilla Web Things format and structure (#81) (21ef3f8), closes #81
- Only iteratively rapply on actual lists (97c5024)
- Patched up property responses that are a generator (needs proper fix) (4c7cef4)
- Rapple iteratively to tuples and ranges (aaf25c9)
- Rearrange PropertyView dispatch_request (2fafff8)
- Remove unused imports (#83) (d08d42b), closes #83
- Removed sketchy static file tests (c0024bb)
- Simplified service constructors (6b0d372)
- Started allowing more general event notifications (282d6c0)
- Support index pages in static folder (66be1d7)
- Switched to /src structure (f8b1b71)
- Test b64 decoding (6b29de8)
- Updated changelog (9860fef)
- Updated changelog (478f121)
- Updated changelog (4b3afc0)
- Updated test_get_value_response_text (fdba1fa)
- Updated version and dependencies (3e0b3df)
- Updated version and dependencies (d051430)
- Use custom Marshmallow APISpec plugin (d0ab02c)
0.5.2 (2020-04-27)
- Added changelog (c2232ca)
- Added changelog notes to readme (0ee591b)
- Bump zeroconf from 0.25.1 to 0.26.0 (3bff1d0)
- Code style (e7a53d2)
- Fixed ClientEvent to use BoundedSemaphore for set lock (8d64364)
- Fixed missing import (ac9cb0a)
- Removed unused f-string (8fa1ff3)
- Replaced default port with 7485 (7d6e70e)
- Updated version and dependencies (9f9b0b9)
0.5.1 (2020-04-24)
- Added a lock when setting ClientEvent (30df884)
- Added explicit all (715d113)
- Added tests and simplified publish workflow (37502fa)
- Apply request context to task target in correct thread (ea68ea7)
- Bumped coverage back up (7dbed81)
- Changed rupdate to merge (76966a0)
- Code formatting (696d5aa)
- Code formatting (a0c8550)
- continue-on-error for code quality check (5b0ea37)
- Create codecov.yml (1bfc966)
- Explicit Fields imports (282ddb2)
- Explicit project target (532be56)
- Fix ClientEvent key removal (b89b8ec)
- Fix dangerous default argument (520fdb8)
- Fixed bad comparison tests (eec11cf)
- Generate target string before applying request context (dbaff52)
- Remove explicit fetch-depth (7efd30b)
- Remove unnecessary comprehension (19a678e)
- Remove unnecessary f-string (5d50c3c)
- Remove unused imports (f07e005)
- Remove unused variables (ec4a3bf)
- Removed unnecessary literals (06dcd1f)
- Revert continue-on-error for code quality check (074fa28)
- Simpler comparison (da49cfd)
- Updated and iterated version to 0.5.1 (550160b)
- Use literal syntax to create data structure (5f1ef86)
- Use set comprehension (906a308)
0.5.0 (2020-04-23)
- Added extra project info (d279815)
- Fixed ws test accounting for INFO logging level (217b87e)
- Improved spec utilities coverage (9c723c3)
- Iterated version to 0.5.0 (c04155a)
- Remove Poetry cache from workflow (807aec7)
- Test on release drafts (b9f0bfc)
- Updated task management to better match Gevent pool interface (de13ab8)
0.4.0 (2020-04-23)
- ignore generated setup.py (edc79e8)
- Actually fixed response encoding (8cb6f6f)
- Add codecov (a9d7c67)
- Add poetry scripts to CI (8558dee)
- Add Publish stage to Actions (373f4ca)
- Add schema param to test schema (d17e226)
- Added "dump" method to FieldSchema (eb51204)
- Added action builder and function signature to schema builder (85d7f25)
- Added action inputs to thing description (b73a19d)
- Added an assertion to actions (d802882)
- Added APISpec to conftest (8e2912a)
- Added basic fake websocket client (3a2aef8)
- Added clean_url_string utility (f96ba90)
- Added coverage config (9e1d429)
- Added coverage to dev dependencies (3df1f00)
- Added Coveralls (fbb2231)
- Added extensions tag to extensions list view (0ec6f59)
- Added fake websocket client (5389c6b)
- Added fixed socket add_view interface (1771be1)
- Added flake8 config (913a7b4)
- Added jsonschema for validation (8924551)
- Added LabThing client fixture (968170e)
- Added LabThing fixtures (bab208a)
- Added log to task schema (a3903eb)
- Added make_primitive import (ad42b4d)
- added more keys to the records, (8ecb756)
- Added note about testing exclusion (3858889)
- Added safe_title property (7ffb305)
- Added sets to JSON encoder (9a0f178)
- Added static text file (35be7d4)
- Added static_path fixture (923e8f4)
- Added task started event (aa3bf3b)
- Added taskification to action builder (62729ea)
- Added TD schema for tests (3affcba)
- Added type checking to tag_spec (c37e7b3)
- Assume application/json by default on LabThing views (a5706b6)
- Base LabThingsJSONEncoder on flask JSONEncoder (8f212fc)
- Better handle available view methods (dc58e20)
- Better handle missing labthing in extensions lookup (7894eda)
- blackened (702ef8a)
- Blackened (42377cb)
- Blackened (01e54c5)
- Blackened (5902704)
- Bug fixes and coverage improvements (1d08d77)
- Bump flask from 1.1.1 to 1.1.2 (75f71be)
- Bump gevent from 1.4.0 to 1.5.0 (4ed690b)
- Bump gevent from 1.5.0 to 20.4.0 (cab9367)
- Bump webargs from 5.5.3 to 6.0.0 (436f4f5)
- Bump zeroconf from 0.24.5 to 0.25.0 (0cc750b)
- Bump zeroconf from 0.25.0 to 0.25.1 (c7c6cee)
- Change default loglevel (ee3c052)
- Changed default ThreadLogHandler level back to INFO (6ae5f93)
- ClientEvent coverage (298fa92)
- Code formatting (d315730)
- Code formatting (203b887)
- Converted view class tags to set() (439d999)
- Coverage for core tasks pool (f425e7b)
- Coverage for documentation default views (95ea6b3)
- Coverage for new socket_handler (689d3c3)
- Coverage for server representations (fbb7a0c)
- Coverage for server spec paths (1739da9)
- Coverage for sockets base (87c27ec)
- Default dictionary keys as not required (8be06af)
- Default run pytest with coverage and reports (c2e0a9c)
- Default task view coverage (ad654b4)
- Delete old exception test file (1d3d846)
- deleted a vestigial print statement (85d7e40)
- Edited testing ports (d5124ea)
- Emit logging records to websocket subscribers (c981306)
- Enable loading module-style extensions from extensions folders (4a8e0f7)
- Enable parallel pytest (08fb9c4)
- Exclude profiler information (cd71fc4)
- Exclude WSGI server from tests (1af93ea)
- Excluded monkey from tests (cecd8e8)
- Finished builder coverage (b6bfad0)
- Finished extensions coverage (91d887c)
- Finished spec TD coverage (16d66b6)
- First attempt at logging task threads (f1c19cb)
- Fix ClientEvent timeouts (f84f059)
- Fix generated class methods not updating (c468876)
- Fix method names returning in uppercase (e00f12d)
- Fix overriding view methods (e01dff8)
- Fixed blueprint interface (b7150ee)
- Fixed camel to spine test (b4255f8)
- Fixed cleanup and context bugs (f53de6d)
- Fixed code formatting (ffc0b10)
- Fixed comment (1a68c75)
- Fixed default group type (6d8e351)
- Fixed deprecated ABC import (9a2a8a1)
- Fixed deprecated import (8c183f9)
- Fixed doc_response mimetype update (cf7ae41)
- Fixed empty view class name (d63e08c)
- Fixed finding uriVariables type (3267fc6)
- Fixed http_method_funcs (5542779)
- Fixed manky slashes (2ca5c51)
- Fixed missing import (4e90707)
- Fixed monkey patch exclusion (f7544e3)
- Fixed pytest action (5b7e2b6)
- Fixed response encoding in tests (0636715)
- Fixed root view path (25bb4f1)
- Fixed rupdate bug merging list into value (7b8c5b8)
- Fixed secrets variable (2499d22)
- Fixed server signal handler (e7fd2a7)
- Fixed Set Poetry config (42f2083)
- Fixed task list test (32669d5)
- Fixed task logging with greenlets (640e446)
- Fixed test encoding (1e01340)
- Fixed test extension file names (b00359c)
- Fixed test socket response property (46633ff)
- Fixed test_tasks_list (4240fbf)
- Fixed up code issues highlighed by deepsource (97c3e53)
- Fixed ws test accounting for INFO logging level (e99d259)
- Greenlet concurrency (323a709)
- Handle missing endpoint in view_class_from_endpoint (841d392)
- Handle missing endpoint when building URLs (3e89850)
- Handle missing Flask extension in current_labthing (9bd34e1)
- Handle missing route endpoints (0eb7930)
- Ignore HTML coverage report (5843b74)
- Ignore HTML reports (fa9041a)
- Ignore PYL-E0202 (5e0c773)
- Ignore WSGI server in test coverage (abd3d75)
- Improve LabThing coverage (7992de4)
- Improved annotation converter coverage (06c5404)
- Improved core exceptions coverage (94a0973)
- Improved core utilities coverage (d79f66b)
- Improved decorators coverage (0b37272)
- Improved LabThing coverage (5f2eaa2)
- Improved LabThing coverage (e864413)
- Improved registry coverage (fa57eb9)
- Improved server spec utilities coverage (21e18f3)
- Improved socket coverage (c7a79a5)
- Improved Task thread coverage (29f4002)
- Improved test_rupdate_granular coverage (0cf9a9d)
- Improved type preprocess coverage (861b8ed)
- Label actions as safe and/or idempotent (814bbec)
- Let Flask handle endpoint collisions (5b7a96c)
- Lock bug fixes (28ce165)
- Marshal tests (59a1d8b)
- Minor fixes (65d3b0e)
- More helpful exception (7dc0e19)
- Moved common fixtures into conftest.py (c65aa71)
- Moved empty view_cls to conftest (5935f77)
- Moved EXTENSION_NAME into .names (847936e)
- Project-level Black exclusions (5c05be4)
- Property builder coverage (a342042)
- Quick create app coverage (a84727b)
- Remove coveralls (47dbbcd)
- Removed circular references to LabThing (804132e)
- Removed explicit jsonify (f895117)
- Removed old tests (118029d)
- Removed pytest-xdist (2aa30f4)
- Removed redundant code (8e0447f)
- Removed redundant condition (c0cc537)
- Removed redundant function (b9e69c8)
- Removed redundant if condition (8eef6ac)
- Removed unused context manager (8dee595)
- Removed unused imports (ebaef37)
- Renamed server.views to server.default_views (66c2586)
- Replaced RLock reimplementation with Gevent RLock (e9f9291)
- Server schema coverage (c4ed416)
- Server utilities coverage (72bb4b0)
- Server View class tests (37b4703)
- set loglevel to info for test (b570f16)
- Spec apispec coverage (48befec)
- Started spec utilities tests (0b732fa)
- Started thing description coverage (ad150c1)
- Switch to using pytest-cov for coverage (78e6fe8)
- Test default extensions view (9e013e5)
- Test GH Action workflow (e3b27f2)
- test logging better (24df9b5)
- Test safe_title (aa9fb12)
- Test server exception handler (f61b29e)
- Test SocketMiddleware (8e5fb0d)
- Tests for basic tagging (97d064d)
- ThingDescription stores APISpec instance as a weakref (f3d7555)
- threadname isn't helpful (0cf548b)
- Tidied up (1f3ef46)
- Tidied up (3e1a051)
- Tidied up client fixtures (7d7d679)
- Tidied up marshal responses (cc1f98d)
- Tidied up server management (9399b90)
- Unit test for core exceptions (9f8e635)
- unit test for logging (a39f65e)
- Unit tests for core locks (ceb227f)
- Update lockfile (924521c)
- Updated badges (7e32b72)
- Updated lockfile (81addd3)
- Updated test_socket_handler expected responses (9be22f0)
- Updated tests for view tags as sets (69bee24)
- WSGI coverage (95327a5)
0.4.0 (2020-03-31)
- Added a zeroconf server to the LabThings server (6f345e4)
- Added ClientEvent class (407121d)
- Added docstring to Task view class (30f04c6)
- Added example Thing type (53ff321)
- Added extra properties to zeroconf service info (5f33b9c)
- Added static file directories to extensions (19984ee)
- Added Thing types to mDNS TXT records (273dec1)
- Added zeroconf dependency (812baa1)
- Always show server startup info (cdc8446)
- Base StrictLocks on Gevent 1.5 RLock (532de8c)
- Better handle missing LabThings Flask extension (96d9a1a)
- Easy function to get URL of static files (f5583bd)
- Fixed #25. Lets never speak of this again. (66c5de0), closes #25
- Fixed URL base to host_url (1029a2d)
- Force system threads for tasks (68fafaa)
- Handle task kill status in try-except block (8ca9c94)
- Improved handling marshal_task when none-TaskThread is returned (c6fe714)
- Improved Python exception handling (960161f)
- Improved TD JSON validity (3237226)
- More useful debug output (a7b179b)
- Only add GET method if static path is given (44bcb2a)
- Protect type values against semicolons (5616291)
- Reimplemented tasks to use greenlets (c607067)
- Removed eventlet support (ae099a2)
- Removed module-level monkey patch (85a1cd0)
- Tidied up static path generation (4488ee0)
- Updated dependencies (7946dec)
- Updated version and deps (55c8348)
- Use new server (71dfcc1)
0.2.0 (2020-03-13)
- Add description to property builder (a256ed1)
- Add gevent and iterate version (8c9fe20)
- Add werkzeug debugger (e7ea853)
- Added Acknowledgements (ea5142a)
- Added back app run (82ff5e3)
- Added basic schema documentation to Thing Descriptions (0adb401)
- Added basic support for dictionary PUT generation (ddb130b)
- Added Black shield (1f88a8a)
- Added description (11bc600)
- Added example atexit code (ef4a1d5)
- Added flask-sockets module (b29b373)
- Added functions to convert data dictionary into schema (3f5e6cd)
- Added gevent worker (536cb5d)
- Added Gitter badge (f45ef15)
- Added missing docstrings (669d424)
- Added missing docstrings (08d266a)
- Added more types to type testing (23732b1)
- Added new example for nested schema (65f33fd)
- Added recursive-apply function (8aa61f0)
- Added simple example application (2f39896)
- Aded default response formatting (d9fec9f)
- Allow args and kwargs in rapply (5c09fcf)
- Allow callables that return schemas in API spec (a5bc9f6)
- Allow onb Py36 (2854c2e)
- Allow single-field schemas (8ac445d)
- Always return a dictionary from get_spec (8af5735)
- Better use of autodocs in example (023e977)
- Blackened (daed3c9)
- Blackened test file (f0b6ee5)
- Bump black from 18.9b0 to 19.10b0 (#20) (8010344), closes #20
- Bump marshmallow from 3.3.0 to 3.4.0 (2579661)
- Convert property schemas (4c057c7)
- Converted affordances to maps (011e129)
- Converted shields.io icon to SVG (1e87a44)
- Core utilities tests (fce1b97)
- Create .deepsource.toml (4a9c51b)
- Deepsource fixes (#19) (e3fae1d), closes #19
- Default to external links (9980e72)
- Enable single-field input and output schemas (aa35bb9)
- Example of schema from data dictionary (e6c5fdd)
- First draft of auto-property builder (a9b6cf5)
- Fixed API Spec structure for parameters (c4ddb0a)
- Fixed attaching properties (84b092f)
- Fixed borked badge links (48ff2c9)
- Fixed broken task IDs (9b433a9)
- Fixed broken TD for nested schemas (9629be0)
- Fixed code style (dd7da5f)
- Fixed duplicated _external values (2a82136)
- Fixed FLK-D200 (c5ed188)
- Fixed FLK-E713 (1f668ef)
- Fixed FLK-W291 (aee9682)
- Fixed Mapping-type schemas in marshal_with (f00ddf3)
- Fixed PYL-R0205 (4287672)
- Fixed PYL-W0102 (9174715)
- Fixed PYL-W1113 (587e2a0)
- Fixed recursion in schema2json (cc777d9)
- Fixed TD description defaulting to docstring (5fc69b3)
- Fixed up docstring lengths (70c0e59)
- Formatting (a0e8c9e)
- Gevent-based websocket support (#23) (3693c16), closes #23
- Handle clean server shutdown (a77b765)
- Handle convertings lists into Masrhmallow List fields (6964029)
- Ignore PyCharm files (4f7e5cb)
- Ignore VS Code files (030dc74)
- Include pre_dump, pre_load in decorators (696a00c)
- Initial commit (5c226c0)
- Initial commit (d0c78cf)
- Introduced simple extension lifecycle functions (12b6dda)
- Massively simplified property view class builder (dfab585)
- More thorough description inheritance (fa10acf)
- Moved property builder into LT quick (2036157)
- Moved simple property to class-level PropertySchema (7c94278)
- Moved Thing Description into the root representation (42ab04b)
- Option to not run rapply on list elements (57ab2cf)
- Removed debug print (f3167ef)
- Removed extensions and tasks from Thing Description properties (e4e8886)
- Removed irrelevant example code (ebb0d79)
- Removed old custom root links (3a07e05)
- Removed old notes (29ec8d4)
- Removed placeholder test (cab443b)
- Removed unused bottom_level_name function (a73f6f6)
- Removed unused logging import (e815422)
- Renamed tasks dict to fix PYL-W0622 (d7734de)
- Show lock instance in LockError (806b71f)
- Simplified example (1250f4d)
- Skeleton of socket support (028e21c)
- Strip mid-string newlines (d9156c3)
- Tidied up spec inheritance (ef26292)
- Unit tests for server types (263e187)
- Update issue templates (0d71232)
- Update README.md (b0d2b02)
- Update README.md (c2aeb54)
- Updated dependencies (7413d4d)
- Updated dependencies (cb1ef6a)
- Updated dependencies (1d82b9b)
- Updated dependencies (f322768)
- Updated lockfile (c3dfa7f)
- Updated lockfile (6a3b259)
- Updated webargs (7a5db07)
- Use argument description if provided (2ce0bf8)
- Use flask app JSON encoder (916cc21)
- Use reloader (25d667c)