Add a small hint when tasks are called with missing keywords
Calling swh scheduler task add load-git https://example.org/repository.git
instead of swh scheduler task add load-git url=https://example.org/repository.git
will result in a confusing TypeError being raised by the scheduler.
This change adds a small note to the TypeError pointing at the
arguments of swh scheduler task add
.
This uses the BaseException.add_note
method which was introduced in
Python 3.11.
Sadly, I was not able to understand where to plug a test for this.
The result looks like:
ERROR celery.app.trace:trace.py:270 Task swh.scheduler.tests.tasks.keyword[c6764342-bdda-4d92-9e2d-11e6119ae49b] raised unexpected: TypeError("keyword() missing 1 required keyword-only argument: 'keyword'")
Traceback (most recent call last):
File "/home/lunar/.pyenv/versions/swh3.11/lib/python3.11/site-packages/celery/app/trace.py", line 477, in trace_task
R = retval = fun(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^
File "/home/lunar/Documents/SWH/swh-environment/swh-scheduler/build/__editable__.swh.scheduler-1.13.1.dev2+g869514d.d20231211-py3-none-any/swh/scheduler/task.py", line 67, in __call__
raise e
File "/home/lunar/Documents/SWH/swh-environment/swh-scheduler/build/__editable__.swh.scheduler-1.13.1.dev2+g869514d.d20231211-py3-none-any/swh/scheduler/task.py", line 62, in __call__
result = super().__call__(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lunar/.pyenv/versions/swh3.11/lib/python3.11/site-packages/celery/app/task.py", line 411, in __call__
return self.run(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: keyword() missing 1 required keyword-only argument: 'keyword'
Would you have forgotten to write the keywords when calling `swh scheduler task add`?