-
Notifications
You must be signed in to change notification settings - Fork 3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix issue where empty WebUI property is not parsed correctly #3012
base: master
Are you sure you want to change the base?
Conversation
@@ -285,7 +285,7 @@ def swarm() -> Response: | |||
if isinstance(parsed_options_value, bool): | |||
parsed_options_dict[key] = value == "true" | |||
elif parsed_options_value is None: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe we can do:
elif parsed_options_value is None and value is None:
parsed_options_dict[key] = None
This way we still get the type casting from the else statement
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When the parsed_options_value
is None
, type checking does not make sense. I modified the code to catch this case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Type checking indeed doesn't make sense if the value
is None
, but take for example if you have an argument with a default value of None
:
parser.add_argument('--number', default=None)
Here the parsed_options_value
will always be None
, however in some cases the value
will be a number, in which case keeping the type may be useful
That's why I suggested elif parsed_options_value is None and value is None
Hey @timhovius! Thanks for reporting and fixing this issue! If you have time, it would be great if you could also add a test case for this scenario? |
Hi @timhovius ! Have you had any chance to look at making a test for this? |
Yes I'm looking into this currently. |
Actually it goes wrong when no default value was set. So I modified the tests to test this behavior and I added an extra test. |
data={"user_count": 1, "spawn_rate": 1, "host": "", "my_argument": "42"}, | ||
) | ||
self.assertEqual(200, response.status_code) | ||
self.assertEqual(42, my_dict["val"]) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! Thanks for adding tests!
This resolves #3011