CHANGES
=======

v9.0.0
------

* Version 9 Release

v8.1.3
------

* Additions to Vehicle and Presence messages

v8.1.2
------

* dont register schemas for mock handlers
* fixes a race condition in the io tests
* update known issues

v8.1.1
------

* adds multiprocessing logging to openmodule requirements

v8.1.0
------

* changelog and breaking changes updated
* \* Adds an IO Listener \* Adds a SigTERM interrupt handler which converts to KeyboardInterrupt so shutdown in Docker containers is easier \* The main Test Mixin was refactored to start a separate process and raise a Interrupt. The other test methods were removed due to being hacky and crashing tox/pytest from time to time. Since this only breaks test code we don't bump the major version. \* The openmodule now waits for a connection with the message broker on startup \* Fixes an issue in the RPCServerTestMixin
* RPCServerTestMixin now only registers one random channel instead of all channels on the server. (Author: Philipp Reitter)
* add infos to CountMessage
* Moved the event to the subprocess. Changed the error for process not shutting down to TimeoutError. Added a signal\_in\_function testcase that calls a function that raises an uncaught exception
* optional vehicle id in CountMessage
* Added multiprocessing\_loggging to test-requirements.txt. This allows for easy piping of logs from child process to parent. Removed exception\_in\_function and custom\_action\_in\_function methods. interrupt\_mixin only allows signal\_in\_function now! Testcases cannot raise a normal Exception anymore! Any signal can be sent to the child. signal\_in\_function raises an AssertionError if the process did not finish gracefully. Removed TestCases calling a normal Exception
* Added line to exception\_in\_function to call new \_signal\_in\_function if exception is a signal or KeyboardInterrupt
* Added signal handler removal to shutdown\_openmodule()
* Reverted changes. Added signal\_in\_function test to interrupt.py. It starts a process that then receives the given singal. Moved docker\_shutdown tests to test\_interrupt.py. Added condition in init\_openmodule, that only the main thread can start the signalhandler
* Initial move over to multiprocessing for interrupt tests
* Initial move over to multiprocessing for interrupt tests
* known issues and migrations written
* do not write default Legacy-0 matching scheme to disk if not existing but use StringIO instead
* Fixed get\_gateway\_states returning an empty IoState if the given Gateway was offline for 5 seconds. Added method descriptions to all callable IoListener methods
* Added last\_timestamp to IoState. Renamed get\_state in IoListener to get\_io\_state. it now returns an IoState with all values 0. Added is\_pin\_valid, get\_gateway\_states and is\_gateway\_valid to IoListener. Added testcases for changes/new additions
* Added Test case for SigTERM signal
* Added a SigTERM interrupt handler, that simply raises a KeyboardInterrupt(). The handler is set in init\_openmodule and can be told not to start by setting catch\_sigterm=False at method call. The two arguments the signal hanlder receives (signal number, frame stack) are ignored (using \*\_)
* added raise\_handler\_errors bool to IoListener for listener.handler exceptions moved message = message.dict() to just before listener calls
* Added OpenModuleModel as inheritance to IoState and moved it to models/io.py
* Added a gateway filter test
* Moved IoListener from io-modbus to openmodule. Added the IoMessage model to models. (only IoMessage and nothing else) Changed IoListener to require registering listeners using add\_listener\_edge\_\* IoListener still collects all pin states. listeners are handled like dispatcher listeners. Changed IoListener tests to work with the changes. Simplified IoSimulator and added a generate\_example\_states for ease of use

v8.0.1
------

* fixed loading empty yamls fixes rpc server not logging info in debug log

v8.0.0
------

* fix in ci job
* drop support for python 3.7
* cleanup and docs
* testcases for the new test method
* better logging for rpc requests, and added a function to the test framework to receive rpc responses async
* moved config yaml path guesser to separate function, removed GUID again because its not a great idea after all
* reduced warnings in the testcases
* GUID type and rpc server changes to better support all pydantic models, in this case Union Types. DEVICE-891
* fixes an issue in rpc server logging, and adds more debug log output

v7.0.0
------

* # OpenModule \* rpc client resource filter only applies if resource in message \* all zmq messages now use utc timestamps

v6.1.6
------

* 6.1.6

v6.1.5
------

* bug fix test cases
* rpc-client refactor + kv\_redis
* rpc-client
* added default zmq.LINGER for context to be more compatible with OMv1 socket creation
* wait for rpc assertion

v6.1.4
------

* Resource Filter in RPC Server + removed urljoin from ApiMocker

v6.1.3
------

* fixes a unicode issue

v6.1.2
------

* count message uses lazy settings resource, import cleanup
* fixes a timezone issue where the timezone of the local system would change results
* removed double entry from merge
* merge from branch feature/recurrence
* removed print
* settings module now module instead of path, developer errors removed from non openmodule test
* migration notice for tox.ini change [skip ci]
* allow externals bash added for tox v4, and if fixed
* updated tox to check for openmodule\_test imports
* rebase on master
* session wrapper for database session, do not allow access to 'closed' sessions

v6.1.1
------

* interrupt test mixin rework

v6.1.0
------

* docs [skip-ci]
* relative path fix again
* relative path fix
* lazy config
* openmodule config
* docs [skip ci]

v6.0.1
------

* allow import of checking module
* documentation [skip ci]

v6.0.0
------

* requirements
* known issues
* fixes an issue with .timestamp() and testing
* name function which has no doc string in assertion
* why did i do that?
* recurrence allows empty strings again now, wait\_for\_reject raises an assertion instead of timeout error if the barrier actually opened
* testcase for datetime-naive saves
* git stash popMerge branch 'timezone\_checks' of gitlab.com:arivo-public/device-python/openmodule into timezone\_checks
* why was this ignored?
* developer error, test gate
* check on migration/make\_migration if DateTime is used + testcase, custom types are now imported correctly
* fix in timezone validator for optional fields
* v6 breaking changes, added timezone / datetime checks
* added database flush and a known issues list

v5.0.1
------

* fixes a bug in the database code, which swallowed exceptions during commit()
* api changes

v5.0.0
------

* breaking changes in alert handler, see migration.md
