refactor: Stop DeviceRef extending str#1557
Open
tpoliaw wants to merge 1 commit into
Open
Conversation
This was originally to make serialization behave correctly when the task was passed to requests. As we are using pydantic to dump the model to JSON before passing it, we can add the custom serialization there to get the device-to-string conversion that we need.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1557 +/- ##
==========================================
- Coverage 95.69% 95.60% -0.09%
==========================================
Files 43 43
Lines 3226 3231 +5
==========================================
+ Hits 3087 3089 +2
- Misses 139 142 +3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Contributor
|
I did a quick test with this, seems to work >>> devs.fsj1.
devs.fsj1.model devs.fsj1.name No more unrelated methods. Tried some move plans. >>> plans.set_absolute(devs.fsj1, "Out")
>>> plans.set_absolute(devs.fsj1, "In")
>>> plans.set_absolute(devs.smpm.x, 1)
>>> plans.set_absolute(devs.smpm.x, 5)However, I think an unrelated change has broken the move plan again... >>> plans.move({devs.fsj1, "Out"})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/scratch/bluesky_development/blueapi/src/blueapi/client/client.py", line 155, in __call__
match self._client.run_task(req):
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/venv/lib64/python3.12/site-packages/observability_utils/tracing/decorators.py", line 151, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/src/blueapi/client/client.py", line 487, in run_task
task_response = self._rest.create_task(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/src/blueapi/client/rest.py", line 240, in create_task
return self._request_and_deserialize(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/venv/lib64/python3.12/site-packages/observability_utils/tracing/decorators.py", line 151, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/src/blueapi/client/rest.py", line 311, in _request_and_deserialize
response = self._pool.request(
^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/venv/lib64/python3.12/site-packages/requests/sessions.py", line 575, in request
prep = self.prepare_request(req)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/scratch/bluesky_development/blueapi/venv/lib64/python3.12/site-packages/requests/sessions.py", line 484, in prepare_request
p.prepare(
File "/scratch/bluesky_development/blueapi/venv/lib64/python3.12/site-packages/requests/models.py", line 370, in prepare
self.prepare_body(data, files, json)
File "/scratch/bluesky_development/blueapi/venv/lib64/python3.12/site-packages/requests/models.py", line 510, in prepare_body
body = complexjson.dumps(json, allow_nan=False)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.12/json/__init__.py", line 238, in dumps
**kw).encode(obj)
^^^^^^^^^^^
File "/usr/lib64/python3.12/json/encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.12/json/encoder.py", line 258, in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
File "/usr/lib64/python3.12/json/encoder.py", line 180, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type set is not JSON serializableIt resulted in error in main branch and this branch but I don't think it did yesterday... Something else could of broke it? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This was originally to make serialization behave correctly when the task
was passed to requests. As we are using pydantic to dump the model to
JSON before passing it, we can add the custom serialization there to get
the device-to-string conversion that we need.