Skip to content
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

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

timhovius
Copy link

This resolves #3011

@@ -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:
Copy link
Collaborator

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

Copy link
Author

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.

Copy link
Collaborator

@andrewbaldwin44 andrewbaldwin44 Jan 9, 2025

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

@andrewbaldwin44
Copy link
Collaborator

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?

@timhovius timhovius closed this Dec 19, 2024
@timhovius timhovius deleted the patch-1 branch December 19, 2024 11:43
@timhovius timhovius restored the patch-1 branch December 19, 2024 12:01
@timhovius timhovius reopened this Dec 19, 2024
@cyberw
Copy link
Collaborator

cyberw commented Jan 7, 2025

Hi @timhovius ! Have you had any chance to look at making a test for this?

@timhovius
Copy link
Author

Hi @timhovius ! Have you had any chance to look at making a test for this?

Yes I'm looking into this currently.

@timhovius
Copy link
Author

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"])
Copy link
Collaborator

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!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cannot Update Custom options in the Web UI when Default Value is None
3 participants