locust 2.42.4.dev3__tar.gz → 2.42.4.dev16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/PKG-INFO +2 -2
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/_version.py +2 -2
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/argument_parser.py +13 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/web.py +5 -1
- locust-2.42.4.dev3/locust/webui/dist/assets/index-Bk5WNA9e.js → locust-2.42.4.dev16/locust/webui/dist/assets/index-Mvj-aOsx.js +1 -1
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/auth.html +1 -1
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/index.html +1 -1
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/pyproject.toml +3 -5
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/.gitignore +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/LICENSE +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/README.md +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/hatch_build.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/__init__.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/__main__.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/clients.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/__init__.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/dns.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/fasthttp.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/milvus.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/mongodb.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/mqtt.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/oai.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/postgres.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/contrib/socketio.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/debug.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/dispatch.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/env.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/event.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/exception.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/html.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/input_events.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/log.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/main.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/py.typed +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/rpc/__init__.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/rpc/protocol.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/runners.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/shape.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/stats.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/user/__init__.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/user/inspectuser.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/user/markov_taskset.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/user/sequential_taskset.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/user/task.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/user/users.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/user/wait_time.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/__init__.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/cache.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/date.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/deprecation.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/directory.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/exception_handler.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/load_locustfile.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/rounding.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/timespan.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/util/url.py +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/assets/favicon-dark.png +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/assets/favicon-light.png +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/assets/graphs-dark.png +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/assets/graphs-light.png +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/assets/terminal.gif +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/assets/testruns-dark.png +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/assets/testruns-light.png +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/locust/webui/dist/report.html +0 -0
- {locust-2.42.4.dev3 → locust-2.42.4.dev16}/pytest_locust/plugin.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: locust
|
|
3
|
-
Version: 2.42.4.
|
|
3
|
+
Version: 2.42.4.dev16
|
|
4
4
|
Summary: Developer-friendly load testing framework
|
|
5
5
|
Project-URL: homepage, https://locust.io/
|
|
6
6
|
Project-URL: repository, https://github.com/locustio/locust
|
|
@@ -34,7 +34,7 @@ Requires-Dist: geventhttpclient>=2.3.1
|
|
|
34
34
|
Requires-Dist: locust-cloud>=1.28.1
|
|
35
35
|
Requires-Dist: msgpack>=1.0.0
|
|
36
36
|
Requires-Dist: psutil>=5.9.1
|
|
37
|
-
Requires-Dist: pytest<
|
|
37
|
+
Requires-Dist: pytest<10,>=8.3.3
|
|
38
38
|
Requires-Dist: python-engineio>=4.12.2
|
|
39
39
|
Requires-Dist: python-socketio[client]>=5.13.0
|
|
40
40
|
Requires-Dist: pywin32; sys_platform == 'win32'
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '2.42.4.
|
|
32
|
-
__version_tuple__ = version_tuple = (2, 42, 4, '
|
|
31
|
+
__version__ = version = '2.42.4.dev16'
|
|
32
|
+
__version_tuple__ = version_tuple = (2, 42, 4, 'dev16')
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -79,6 +79,7 @@ class LocustArgumentParser(configargparse.ArgumentParser):
|
|
|
79
79
|
include_in_web_ui: If True (default), the argument will show in the UI.
|
|
80
80
|
is_secret: If True (default is False) and include_in_web_ui is True, the argument will show in the UI with a password masked text input.
|
|
81
81
|
is_required: If True (default is False) and include_in_web_ui is True, the argument will show in the UI as a required form field.
|
|
82
|
+
is_multiple: If True (default is False) and include_in_web_ui is True, the argument will show in the UI as a multiple select form field.
|
|
82
83
|
|
|
83
84
|
Returns:
|
|
84
85
|
argparse.Action: the new argparse action
|
|
@@ -86,10 +87,12 @@ class LocustArgumentParser(configargparse.ArgumentParser):
|
|
|
86
87
|
include_in_web_ui = kwargs.pop("include_in_web_ui", True)
|
|
87
88
|
is_secret = kwargs.pop("is_secret", False)
|
|
88
89
|
is_required = kwargs.pop("is_required", False)
|
|
90
|
+
is_multiple = kwargs.pop("is_multiple", False)
|
|
89
91
|
action = super().add_argument(*args, **kwargs)
|
|
90
92
|
action.include_in_web_ui = include_in_web_ui
|
|
91
93
|
action.is_secret = is_secret
|
|
92
94
|
action.is_required = is_required
|
|
95
|
+
action.is_multiple = is_multiple
|
|
93
96
|
return action
|
|
94
97
|
|
|
95
98
|
@property
|
|
@@ -112,6 +115,14 @@ class LocustArgumentParser(configargparse.ArgumentParser):
|
|
|
112
115
|
if a.dest in self.args_included_in_web_ui and hasattr(a, "is_required") and a.is_required
|
|
113
116
|
}
|
|
114
117
|
|
|
118
|
+
@property
|
|
119
|
+
def multiple_args_included_in_web_ui(self) -> dict[str, configargparse.Action]:
|
|
120
|
+
return {
|
|
121
|
+
a.dest: a
|
|
122
|
+
for a in self._actions
|
|
123
|
+
if a.dest in self.args_included_in_web_ui and hasattr(a, "is_multiple") and a.is_multiple
|
|
124
|
+
}
|
|
125
|
+
|
|
115
126
|
|
|
116
127
|
class LocustTomlConfigParser(configargparse.TomlConfigParser):
|
|
117
128
|
def parse(self, stream):
|
|
@@ -909,6 +920,7 @@ class UIExtraArgOptions(NamedTuple):
|
|
|
909
920
|
is_secret: bool
|
|
910
921
|
is_required: bool
|
|
911
922
|
help_text: str
|
|
923
|
+
is_multiple: bool
|
|
912
924
|
choices: list[str] | None = None
|
|
913
925
|
|
|
914
926
|
|
|
@@ -925,6 +937,7 @@ def ui_extra_args_dict(args=None) -> dict[str, dict[str, Any]]:
|
|
|
925
937
|
is_secret=k in parser.secret_args_included_in_web_ui,
|
|
926
938
|
is_required=k in parser.required_args_included_in_web_ui,
|
|
927
939
|
help_text=parser.args_included_in_web_ui[k].help,
|
|
940
|
+
is_multiple=k in parser.multiple_args_included_in_web_ui,
|
|
928
941
|
choices=parser.args_included_in_web_ui[k].choices,
|
|
929
942
|
)._asdict()
|
|
930
943
|
for k, v in all_args.items()
|
|
@@ -59,6 +59,7 @@ class InputField(TypedDict, total=False):
|
|
|
59
59
|
type: str | None
|
|
60
60
|
default_value: bool | None
|
|
61
61
|
choices: list[str] | None
|
|
62
|
+
is_multiple: bool | None
|
|
62
63
|
is_secret: bool | None
|
|
63
64
|
is_required: bool | None
|
|
64
65
|
|
|
@@ -291,7 +292,10 @@ class WebUI:
|
|
|
291
292
|
elif parsed_options_value is None:
|
|
292
293
|
parsed_options_dict[key] = value
|
|
293
294
|
elif isinstance(parsed_options_value, list):
|
|
294
|
-
|
|
295
|
+
if "," in value:
|
|
296
|
+
value_as_list = value.split(",")
|
|
297
|
+
else:
|
|
298
|
+
value_as_list = request.form.getlist(key)
|
|
295
299
|
if all(isinstance(x, int) for x in parsed_options_value):
|
|
296
300
|
parsed_options_dict[key] = list(map(int, value_as_list))
|
|
297
301
|
else:
|