Mose Müller
0d5cef1537
updates how Client handles (re-)connection with the server
...
The client will update the proxy class serialization directly on the
ProxyClass instance. this is the only time this get "updated".
Now, the client also notifies the observers directly with the proxy
object as this the serialization of the proxy class is now done through
its `serialize` method (which we have overwritten in a previous commit).
2024-10-01 10:55:29 +02:00
Mose Müller
e8f33eee4d
updates ProxyClass serialize method
...
The ProxyClass will keep a copy of its serialized state s.t. it does not
have to call the remote service. This hangs the event loop if trying to
call asyncio.run_coroutine_threadsafe when already inside the thread.
2024-10-01 10:55:29 +02:00
Mose Müller
a3b71b174c
fixes proxy class serialization (needs device connection methods and properties)
2024-10-01 08:25:39 +02:00
Mose Müller
e2ce0e9acb
adds ProxyClass serialization support
2024-10-01 07:27:27 +02:00
Mose Müller
f47a183c11
adds add_prefix_to_full_access_path helper function
2024-10-01 07:13:22 +02:00
Mose Müller
a9ea237cf3
overrides serialize method in ProxyClass, getting it from remote service
2024-09-30 16:58:01 +02:00
Mose Müller
6db1652dd3
move ProxyClass into separate file
2024-09-30 16:57:12 +02:00
Mose Müller
51bbaba162
writing to stdout instead of stderr
2024-09-30 10:54:58 +02:00
Mose Müller
3e21858cb7
removes basic configuration of logging system in task module
2024-09-25 19:48:32 +02:00
Mose Müller
ec5694fedf
no need to check for RuntimeError as the loop is always new
2024-09-25 19:38:09 +02:00
Mose Müller
968f774092
always create a new event loop in the client and pass it to a new thread
2024-09-25 19:37:33 +02:00
Mose Müller
964a62d4b4
removes inheritance warning for descriptors
2024-09-23 13:33:13 +02:00
Mose Müller
99aa38fcfe
chore: removes unused code
2024-09-23 13:28:08 +02:00
Mose Müller
487ef504a8
normalizes full access path strings containing dict keys with double quotes
...
Full access paths containing stringed dictionary keys are sent with
double quotes from the frontend. The quotes have to be changed to single
quotes s.t. the comparison with the property dependency dictionary
works.
2024-09-23 13:16:49 +02:00
Mose Müller
e491ac7458
observable does not have to initialise descriptor objects anymore
...
The task decorator is not returning a Task object directly anymore, but
rather a descriptor which is returning the task. This is where the task
is initialised and this does not have to be done in the observable base
class, any more.
2024-09-23 09:27:15 +02:00
Mose Müller
e9d8cbafc2
adds PerInstanceTaskDescriptor class managing task objects for service class instances
...
When defining a task on a DataService class, formerly a task object was
created which replaced the decorated method as a class attribute. This
caused errors when using multiple instances of that class as each
instance was referring to the same task.
This descriptor class now handles the tasks per instance of the service
class.
2024-09-23 09:21:04 +02:00
Mose Müller
aa705592b2
removes code from Task meant to bind the passed function to the containing class instance
...
The task object will only receive bound methods, so there is no need to
keep the descriptor functionality anymore.
2024-09-23 09:15:42 +02:00
Mose Müller
008e1262bb
updates PropertyObserver to support descriptors returning observables
...
If a class attribute is a descriptor, get its value before checking if
it is an Observable.
2024-09-23 08:57:00 +02:00
Mose Müller
91a71ad004
updates is_descriptor to exclude false positives for methods, functions and builtins
2024-09-23 08:55:44 +02:00
Mose Müller
983d392ba8
properly handle Task objects in autostart method
...
Tasks that are not autostart or are already running were passed to
autostart_nested_services. This caused the recursion as tasks have a
__self__ attribute pointing to the containing service.
2024-09-21 11:40:25 +02:00
Mose Müller
56dd9dd8aa
adapts autostart to support nested lists in dicts and vice versa
2024-09-21 09:12:01 +02:00
Mose Müller
488415436c
fixes recursion when defining task without autostart
2024-09-21 08:32:54 +02:00
Mose Müller
e74b5c773a
npm run build
2024-09-17 16:51:00 +02:00
Mose Müller
ece68b4b99
docs: updates Task documentation
...
- updates Tasks.md
- updates docstrings
- adds api section
2024-09-16 15:30:47 +02:00
Mose Müller
0c95b5e3cb
frontend: removes AsyncMethodComponent (replaced by Task)
2024-09-16 14:22:29 +02:00
Mose Müller
2f5a640c4c
chore: refactored task autostart
2024-09-16 14:17:20 +02:00
Mose Müller
78964be506
adds serialization and deserialization support for task objects
2024-09-16 13:58:58 +02:00
Mose Müller
fbdf6de63c
npm run build
2024-09-16 13:58:16 +02:00
Mose Müller
62f28f79db
adds list and dictionary entries to task autostart
2024-09-16 07:53:44 +02:00
Mose Müller
e422d627af
adds docstring to autostart method
2024-09-13 16:07:30 +02:00
Mose Müller
71adc8bea2
adds autostart to server
2024-09-13 12:37:29 +02:00
Mose Müller
bfa0acedab
moves autostart from Task to separate autostart submodule
2024-09-13 12:37:18 +02:00
Mose Müller
416b9ee815
removes part of serializer for serializing start and stop methods of async methods
2024-09-13 11:27:30 +02:00
Mose Müller
d1d2ac2614
fixing circular import
2024-09-13 11:27:30 +02:00
Mose Müller
fa35fa53e2
removes TaskManager
2024-09-13 11:27:30 +02:00
Mose Müller
c0e5a77d6f
simplifies @task decorator (updates types), moves task logic into Task's run_task()
2024-09-13 11:27:30 +02:00
Mose Müller
96cc7b31b4
updates documentation
2024-09-13 11:27:30 +02:00
Mose Müller
0d6d312f68
chore: fixes type hints for python 3.10
2024-09-13 11:27:30 +02:00
Mose Müller
be3011c565
adapt device connection component to use @task decorator
2024-09-13 11:27:30 +02:00
Mose Müller
09fae01985
adds warning when _bound_func has not been bound yet
...
This might arise when calling the start method of a task which is part of a class
that has not been instantiated yet.
2024-09-13 11:27:30 +02:00
Mose Müller
12c0c9763d
delay task setup until called from class instance containing the task
2024-09-13 11:27:30 +02:00
Mose Müller
15322b742d
using explicit loop to create task even if loop is not running yet
2024-09-13 11:27:30 +02:00
Mose Müller
85d6229aa6
updates DataService import to avoid circular import
2024-09-13 11:27:30 +02:00
Mose Müller
083fab0a29
Carefully setting up asyncio event loop
2024-09-13 11:27:30 +02:00
Mose Müller
2a1aff589d
properly binding task method
2024-09-13 11:27:30 +02:00
Mose Müller
3cd7198747
task can only wrap async functions without arguments
2024-09-13 11:27:30 +02:00
Mose Müller
1e02f12794
adds autostart flag to task
2024-09-13 11:27:30 +02:00
Mose Müller
e4a3cf341f
task can receive bound and unbound functions now
2024-09-13 11:27:30 +02:00
Mose Müller
7ddcd97f68
fixing ruff and mypy errors
2024-09-13 11:27:30 +02:00
Mose Müller
80da96657c
tasks: don't start another task when it is already running
2024-09-13 11:27:30 +02:00