locust 2.46.6.dev4__tar.gz → 2.46.6.dev10__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.
Files changed (69) hide show
  1. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/PKG-INFO +1 -1
  2. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/_version.py +2 -2
  3. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/stats.py +4 -15
  4. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/web.py +9 -2
  5. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/.gitignore +0 -0
  6. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/LICENSE +0 -0
  7. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/README.md +0 -0
  8. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/hatch_build.py +0 -0
  9. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/__init__.py +0 -0
  10. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/__main__.py +0 -0
  11. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/argument_parser.py +0 -0
  12. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/clients.py +0 -0
  13. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/__init__.py +0 -0
  14. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/csv_request_logger.py +0 -0
  15. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/dns.py +0 -0
  16. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/fasthttp.py +0 -0
  17. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/milvus.py +0 -0
  18. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/mongodb.py +0 -0
  19. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/mqtt.py +0 -0
  20. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/oai.py +0 -0
  21. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/postgres.py +0 -0
  22. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/qdrant.py +0 -0
  23. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/contrib/socketio.py +0 -0
  24. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/debug.py +0 -0
  25. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/dispatch.py +0 -0
  26. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/env.py +0 -0
  27. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/event.py +0 -0
  28. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/exception.py +0 -0
  29. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/html.py +0 -0
  30. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/input_events.py +0 -0
  31. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/log.py +0 -0
  32. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/main.py +0 -0
  33. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/opentelemetry.py +0 -0
  34. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/py.typed +0 -0
  35. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/rpc/__init__.py +0 -0
  36. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/rpc/protocol.py +0 -0
  37. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/rpc/zmqrpc.py +0 -0
  38. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/runners.py +0 -0
  39. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/shape.py +0 -0
  40. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/user/__init__.py +0 -0
  41. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/user/inspectuser.py +0 -0
  42. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/user/markov_taskset.py +0 -0
  43. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/user/sequential_taskset.py +0 -0
  44. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/user/task.py +0 -0
  45. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/user/users.py +0 -0
  46. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/user/wait_time.py +0 -0
  47. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/__init__.py +0 -0
  48. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/cache.py +0 -0
  49. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/date.py +0 -0
  50. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/deprecation.py +0 -0
  51. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/directory.py +0 -0
  52. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/exception_handler.py +0 -0
  53. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/load_locustfile.py +0 -0
  54. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/rounding.py +0 -0
  55. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/timespan.py +0 -0
  56. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/util/url.py +0 -0
  57. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/favicon-dark.png +0 -0
  58. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/favicon-light.png +0 -0
  59. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/graphs-dark.png +0 -0
  60. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/graphs-light.png +0 -0
  61. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/src-pSlzKFX1.js +0 -0
  62. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/terminal.gif +0 -0
  63. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/testruns-dark.png +0 -0
  64. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/assets/testruns-light.png +0 -0
  65. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/auth.html +0 -0
  66. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/index.html +0 -0
  67. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/locust/webui/dist/report.html +0 -0
  68. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/pyproject.toml +0 -0
  69. {locust-2.46.6.dev4 → locust-2.46.6.dev10}/pytest_locust/plugin.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: locust
3
- Version: 2.46.6.dev4
3
+ Version: 2.46.6.dev10
4
4
  Summary: Developer-friendly load testing framework
5
5
  Project-URL: Homepage, https://locust.cloud/
6
6
  Project-URL: Repository, https://github.com/locustio/locust
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.46.6.dev4'
22
- __version_tuple__ = version_tuple = (2, 46, 6, 'dev4')
21
+ __version__ = version = '2.46.6.dev10'
22
+ __version_tuple__ = version_tuple = (2, 46, 6, 'dev10')
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -435,7 +435,10 @@ class StatsEntry:
435
435
  def median_response_time(self) -> int:
436
436
  if not self.response_times:
437
437
  return 0
438
- median = median_from_dict(self.num_requests - self.num_none_requests, self.response_times) or 0
438
+ median = (
439
+ calculate_response_time_percentile(self.response_times, self.num_requests - self.num_none_requests, 0.5)
440
+ or 0
441
+ )
439
442
 
440
443
  # Since we only use two digits of precision when calculating the median response time
441
444
  # while still using the exact values for min and max response times, the following checks
@@ -812,20 +815,6 @@ def avg(values: list[float | int]) -> float:
812
815
  return sum(values, 0.0) / max(len(values), 1)
813
816
 
814
817
 
815
- def median_from_dict(total: int, count: dict[int, int]) -> int:
816
- """
817
- total is the number of requests made
818
- count is a dict {response_time: count}
819
- """
820
- pos = (total - 1) / 2
821
- for k in sorted(count.keys()):
822
- if pos < count[k]:
823
- return k
824
- pos -= count[k]
825
-
826
- return k
827
-
828
-
829
818
  def setup_distributed_stats_event_listeners(events: Events, stats: RequestStats) -> None:
830
819
  def on_report_to_master(client_id: str, data: dict[str, Any]) -> None:
831
820
  data["stats"] = stats.serialize_stats()
@@ -29,6 +29,7 @@ from flask import (
29
29
  from flask_cors import CORS
30
30
  from flask_login import LoginManager, login_required
31
31
  from gevent import pywsgi
32
+ from jinja2 import TemplateNotFound
32
33
 
33
34
  from . import __version__ as version
34
35
  from . import argument_parser, stats
@@ -206,8 +207,14 @@ class WebUI:
206
207
  if not environment.runner:
207
208
  return make_response("Error: Locust Environment does not have any runner", 500)
208
209
  self.update_template_args()
209
-
210
- return render_template("index.html", template_args=self.template_args)
210
+ try:
211
+ return render_template("index.html", template_args=self.template_args)
212
+ except TemplateNotFound:
213
+ return make_response(
214
+ "Web UI assets are missing. If running Locust from source, "
215
+ "please refer to docs/developing-locust.rst for instructions on building the Web UI.",
216
+ 500,
217
+ )
211
218
 
212
219
  @app_blueprint.route("/swarm", methods=["POST"])
213
220
  @self.auth_required_if_enabled
File without changes
File without changes
File without changes