locust 2.18.5.dev16__py3-none-any.whl → 2.18.5.dev32__py3-none-any.whl

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.

Potentially problematic release.


This version of locust might be problematic. Click here for more details.

locust/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '2.18.5.dev16'
16
- __version_tuple__ = version_tuple = (2, 18, 5, 'dev16')
15
+ __version__ = version = '2.18.5.dev32'
16
+ __version_tuple__ = version_tuple = (2, 18, 5, 'dev32')
locust/argument_parser.py CHANGED
@@ -146,22 +146,32 @@ def get_empty_argument_parser(add_help=True, default_config_files=DEFAULT_CONFIG
146
146
  usage=configargparse.SUPPRESS,
147
147
  description=textwrap.dedent(
148
148
  """
149
- Usage: locust [OPTIONS] [UserClass ...]
150
-
149
+ Usage: locust [options] [UserClass ...]
151
150
  """
152
151
  ),
153
- # epilog="",
152
+ epilog="""Examples:
153
+
154
+ locust -f my_test.py -H https://www.example.com
155
+
156
+ locust -u 100 -t 20m --headless --process 4 MyHttpUser AnotherUser
157
+
158
+ See documentation for more details, including how to set options using a file or environment variables: https://docs.locust.io/en/stable/configuration.html""",
154
159
  )
155
160
  parser.add_argument(
156
161
  "-f",
157
162
  "--locustfile",
163
+ metavar="<filename>",
158
164
  default="locustfile",
159
- help="Python module to import, e.g. '../other_test.py'. Either a .py file, multiple comma-separated .py files or a package "
160
- "directory. Defaults to 'locustfile'.",
165
+ help="The Python file or module that contains your test, e.g. 'my_test.py'. Also accepts multiple comma-separated .py files or a package name/directory. Defaults to 'locustfile'.",
161
166
  env_var="LOCUST_LOCUSTFILE",
162
167
  )
163
168
 
164
- parser.add_argument("--config", is_config_file_arg=True, help="Config file path")
169
+ parser.add_argument(
170
+ "--config",
171
+ is_config_file_arg=True,
172
+ help="File to read additional configuration from. See https://docs.locust.io/en/stable/configuration.html#configuration-file",
173
+ metavar="<filename>",
174
+ )
165
175
 
166
176
  return parser
167
177
 
@@ -251,13 +261,15 @@ def setup_parser_arguments(parser):
251
261
  parser.add_argument(
252
262
  "-H",
253
263
  "--host",
254
- help="Host to load test in the following format: http://10.21.32.33",
264
+ metavar="<base url>",
265
+ help="Host to load test, in the following format: https://www.example.com",
255
266
  env_var="LOCUST_HOST",
256
267
  )
257
268
  parser.add_argument(
258
269
  "-u",
259
270
  "--users",
260
271
  type=int,
272
+ metavar="<int>",
261
273
  dest="num_users",
262
274
  help="Peak number of concurrent Locust users. Primarily used together with --headless or --autostart. Can be changed during a test by keyboard inputs w, W (spawn 1, 10 users) and s, S (stop 1, 10 users)",
263
275
  env_var="LOCUST_USERS",
@@ -266,12 +278,14 @@ def setup_parser_arguments(parser):
266
278
  "-r",
267
279
  "--spawn-rate",
268
280
  type=float,
281
+ metavar="<float>",
269
282
  help="Rate to spawn users at (users per second). Primarily used together with --headless or --autostart",
270
283
  env_var="LOCUST_SPAWN_RATE",
271
284
  )
272
285
  parser.add_argument(
273
286
  "--hatch-rate",
274
287
  env_var="LOCUST_HATCH_RATE",
288
+ metavar="<float>",
275
289
  type=float,
276
290
  default=0,
277
291
  help=configargparse.SUPPRESS,
@@ -279,6 +293,7 @@ def setup_parser_arguments(parser):
279
293
  parser.add_argument(
280
294
  "-t",
281
295
  "--run-time",
296
+ metavar="<time string>",
282
297
  help="Stop after the specified amount of time, e.g. (300s, 20m, 3h, 1h30m, etc.). Only used together with --headless or --autostart. Defaults to run forever.",
283
298
  env_var="LOCUST_RUN_TIME",
284
299
  )
@@ -294,6 +309,7 @@ def setup_parser_arguments(parser):
294
309
  web_ui_group.add_argument(
295
310
  "--web-host",
296
311
  default="",
312
+ metavar="<ip>",
297
313
  help="Host to bind the web interface to. Defaults to '*' (all interfaces)",
298
314
  env_var="LOCUST_WEB_HOST",
299
315
  )
@@ -301,6 +317,7 @@ def setup_parser_arguments(parser):
301
317
  "--web-port",
302
318
  "-P",
303
319
  type=int,
320
+ metavar="<port number>",
304
321
  default=8089,
305
322
  help="Port on which to run web host",
306
323
  env_var="LOCUST_WEB_PORT",
@@ -320,6 +337,7 @@ def setup_parser_arguments(parser):
320
337
  web_ui_group.add_argument(
321
338
  "--autoquit",
322
339
  type=int,
340
+ metavar="<seconds>",
323
341
  default=-1,
324
342
  help="Quits Locust entirely, X seconds after the run is finished. Only used together with --autostart. The default is to keep Locust running until you shut it down using CTRL+C",
325
343
  env_var="LOCUST_AUTOQUIT",
@@ -335,19 +353,22 @@ def setup_parser_arguments(parser):
335
353
  "--web-auth",
336
354
  type=str,
337
355
  dest="web_auth",
356
+ metavar="<username:password>",
338
357
  default=None,
339
- help="Turn on Basic Auth for the web interface. Should be supplied in the following format: username:password",
358
+ help="DEPRECATED Turn on Basic Auth for the web interface. Should be supplied in the following format: username:password",
340
359
  env_var="LOCUST_WEB_AUTH",
341
360
  )
342
361
  web_ui_group.add_argument(
343
362
  "--tls-cert",
344
363
  default="",
364
+ metavar="<filename>",
345
365
  help="Optional path to TLS certificate to use to serve over HTTPS",
346
366
  env_var="LOCUST_TLS_CERT",
347
367
  )
348
368
  web_ui_group.add_argument(
349
369
  "--tls-key",
350
370
  default="",
371
+ metavar="<filename>",
351
372
  help="Optional path to TLS private key to use to serve over HTTPS",
352
373
  env_var="LOCUST_TLS_KEY",
353
374
  )
@@ -374,37 +395,40 @@ def setup_parser_arguments(parser):
374
395
  master_group.add_argument(
375
396
  "--master",
376
397
  action="store_true",
377
- help="Set locust to run in distributed mode with this process as master",
398
+ help="Launch locust as a master node, to which worker nodes connect.",
378
399
  env_var="LOCUST_MODE_MASTER",
379
400
  )
380
401
  master_group.add_argument(
381
402
  "--master-bind-host",
382
403
  default="*",
383
- help="Interfaces (hostname, ip) that locust master should bind to. Only used when running with --master. Defaults to * (all available interfaces).",
404
+ metavar="<ip>",
405
+ help="IP address for the master to listen on, e.g '192.168.1.1'. Defaults to * (all available interfaces).",
384
406
  env_var="LOCUST_MASTER_BIND_HOST",
385
407
  )
386
408
  master_group.add_argument(
387
409
  "--master-bind-port",
388
410
  type=int,
411
+ metavar="<port number>",
389
412
  default=5557,
390
- help="Port that locust master should bind to. Only used when running with --master. Defaults to 5557.",
413
+ help="Port for the master to listen on. Defaults to 5557.",
391
414
  env_var="LOCUST_MASTER_BIND_PORT",
392
415
  )
393
416
  master_group.add_argument(
394
417
  "--expect-workers",
395
418
  type=int,
419
+ metavar="<int>",
396
420
  default=1,
397
- help="How many workers master should expect to connect before starting the test (only when --headless/autostart is used).",
421
+ help="Delay starting the test until this number of workers have connected (only used in combination with --headless/--autostart).",
398
422
  env_var="LOCUST_EXPECT_WORKERS",
399
423
  )
400
424
  master_group.add_argument(
401
425
  "--expect-workers-max-wait",
402
426
  type=int,
427
+ metavar="<int>",
403
428
  default=0,
404
429
  help="How long should the master wait for workers to connect before giving up. Defaults to wait forever",
405
430
  env_var="LOCUST_EXPECT_WORKERS_MAX_WAIT",
406
431
  )
407
-
408
432
  master_group.add_argument(
409
433
  "--expect-slaves",
410
434
  action="store_true",
@@ -414,9 +438,8 @@ def setup_parser_arguments(parser):
414
438
  worker_group = parser.add_argument_group(
415
439
  "Worker options",
416
440
  """Options for running a Locust Worker node when running Locust distributed.
417
- Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, since other options such as -u, -r, -t are specified on the Master node.""",
441
+ Typically ONLY these options (and --locustfile) need to be specified on workers, since other options (-u, -r, -t, ...) are controlled by the master node.""",
418
442
  )
419
- # if locust should be run in distributed mode as worker
420
443
  worker_group.add_argument(
421
444
  "--worker",
422
445
  action="store_true",
@@ -426,7 +449,8 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
426
449
  worker_group.add_argument(
427
450
  "--processes",
428
451
  type=int,
429
- help="Number of times to fork the locust process, to enable using multiple CPU cores. Use -1 to launch one process per CPU core in your system. Combine with --worker flag or let it automatically set --worker and --master flags for an all-in-one-solution. Not available on Windows. Experimental.",
452
+ metavar="<int>",
453
+ help="Number of times to fork the locust process, to enable using system. Combine with --worker flag or let it automatically set --worker and --master flags for an all-in-one-solution. Not available on Windows. Experimental.",
430
454
  env_var="LOCUST_PROCESSES",
431
455
  )
432
456
  worker_group.add_argument(
@@ -434,21 +458,20 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
434
458
  action="store_true",
435
459
  help=configargparse.SUPPRESS,
436
460
  )
437
- # master host options
438
461
  worker_group.add_argument(
439
462
  "--master-host",
440
463
  default="127.0.0.1",
441
- help="Host or IP address of locust master for distributed load testing. Only used when running with --worker. Defaults to 127.0.0.1.",
464
+ help="Hostname of locust master node to connect to. Defaults to 127.0.0.1.",
442
465
  env_var="LOCUST_MASTER_NODE_HOST",
443
- metavar="MASTER_NODE_HOST",
466
+ metavar="<hostname>",
444
467
  )
445
468
  worker_group.add_argument(
446
469
  "--master-port",
447
470
  type=int,
471
+ metavar="<port number>",
448
472
  default=5557,
449
- help="The port to connect to that is used by the locust master for distributed load testing. Only used when running with --worker. Defaults to 5557.",
473
+ help="Port to connect to on master node. Defaults to 5557.",
450
474
  env_var="LOCUST_MASTER_NODE_PORT",
451
- metavar="MASTER_NODE_PORT",
452
475
  )
453
476
 
454
477
  tag_group = parser.add_argument_group(
@@ -459,7 +482,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
459
482
  "-T",
460
483
  "--tags",
461
484
  nargs="*",
462
- metavar="TAG",
485
+ metavar="<tag>",
463
486
  env_var="LOCUST_TAGS",
464
487
  help="List of tags to include in the test, so only tasks with any matching tags will be executed",
465
488
  )
@@ -467,7 +490,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
467
490
  "-E",
468
491
  "--exclude-tags",
469
492
  nargs="*",
470
- metavar="TAG",
493
+ metavar="<tag>",
471
494
  env_var="LOCUST_EXCLUDE_TAGS",
472
495
  help="List of tags to exclude from the test, so only tasks with no matching tags will be executed",
473
496
  )
@@ -476,6 +499,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
476
499
  stats_group.add_argument(
477
500
  "--csv", # Name repeated in 'parse_options'
478
501
  dest="csv_prefix",
502
+ metavar="<string>",
479
503
  help="Store current request stats to files in CSV format. Setting this option will generate three files: [CSV_PREFIX]_stats.csv, [CSV_PREFIX]_stats_history.csv and [CSV_PREFIX]_failures.csv",
480
504
  env_var="LOCUST_CSV",
481
505
  )
@@ -507,6 +531,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
507
531
  )
508
532
  stats_group.add_argument(
509
533
  "--html",
534
+ metavar="<filename>",
510
535
  dest="html_file",
511
536
  help="Store HTML report to file path specified",
512
537
  env_var="LOCUST_HTML",
@@ -532,11 +557,13 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
532
557
  "-L",
533
558
  default="INFO",
534
559
  help="Choose between DEBUG/INFO/WARNING/ERROR/CRITICAL. Default is INFO.",
560
+ metavar="<level>",
535
561
  env_var="LOCUST_LOGLEVEL",
536
562
  )
537
563
  log_group.add_argument(
538
564
  "--logfile",
539
565
  help="Path to log file. If not set, log will go to stderr",
566
+ metavar="<filename>",
540
567
  env_var="LOCUST_LOGFILE",
541
568
  )
542
569
 
@@ -562,8 +589,9 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
562
589
  other_group.add_argument(
563
590
  "--exit-code-on-error",
564
591
  type=int,
592
+ metavar="<int>",
565
593
  default=1,
566
- help="Sets the process exit code to use when a test result contain any failure or error",
594
+ help="Sets the process exit code to use when a test result contain any failure or error. Defaults to 1.",
567
595
  env_var="LOCUST_EXIT_CODE_ON_ERROR",
568
596
  )
569
597
  other_group.add_argument(
@@ -571,6 +599,7 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
571
599
  "--stop-timeout",
572
600
  action="store",
573
601
  dest="stop_timeout",
602
+ metavar="<number>",
574
603
  default="0",
575
604
  help="Number of seconds to wait for a simulated user to complete any executing task before exiting. Default is to terminate immediately. This parameter only needs to be specified for the master process when running Locust distributed.",
576
605
  env_var="LOCUST_STOP_TIMEOUT",
@@ -594,8 +623,8 @@ Only the LOCUSTFILE (-f option) needs to be specified when starting a Worker, si
594
623
  user_classes_group.add_argument(
595
624
  "user_classes",
596
625
  nargs="*",
597
- metavar="UserClass",
598
- help="Optionally specify which User classes that should be used (available User classes can be listed with -l or --list). LOCUST_USER_CLASSES environment variable can also be used to specify User classes",
626
+ metavar="<UserClass1 UserClass2>",
627
+ help="At the end of the command line, you can list User classes to be used (available User classes can be listed with --list). LOCUST_USER_CLASSES environment variable can also be used to specify User classes. Default is to use all available User classes",
599
628
  default=os.environ.get("LOCUST_USER_CLASSES", "").split(),
600
629
  )
601
630
 
locust/main.py CHANGED
@@ -166,12 +166,21 @@ def main():
166
166
 
167
167
  if options.processes:
168
168
  if os.name == "nt":
169
- raise Exception("--processes is not supported in Windows (except in WSL)")
169
+ sys.stderr.write("--processes is not supported in Windows (except in WSL)\n")
170
+ sys.exit(1)
170
171
  if options.processes == -1:
171
172
  options.processes = os.cpu_count()
172
- assert options.processes, "couldnt detect number of cpus!?"
173
+ if not options.processes:
174
+ sys.stderr.write("--processes failed to detect number of cpus!?\n")
175
+ sys.exit(1)
173
176
  elif options.processes < -1:
174
- raise Exception(f"invalid processes count {options.processes}")
177
+ sys.stderr.write(f"Invalid --processes count {options.processes}\n")
178
+ sys.exit(1)
179
+ elif options.master:
180
+ sys.stderr.write(
181
+ "--master cannot be combined with --processes. Remove --master, as it is implicit as long as --worker is not set.\n"
182
+ )
183
+ sys.exit(1)
175
184
  for _ in range(options.processes):
176
185
  child_pid = gevent.fork()
177
186
  if child_pid:
locust/test/test_main.py CHANGED
@@ -72,9 +72,9 @@ class StandaloneIntegrationTests(ProcessIntegrationTest):
72
72
  timeout=5,
73
73
  text=True,
74
74
  ).strip()
75
- self.assertTrue(output.startswith("Usage: locust [OPTIONS] [UserClass ...]"))
75
+ self.assertTrue(output.startswith("Usage: locust [options] [UserClass"))
76
76
  self.assertIn("Common options:", output)
77
- self.assertIn("-f LOCUSTFILE, --locustfile LOCUSTFILE", output)
77
+ self.assertIn("-f <filename>, --locustfile <filename>", output)
78
78
  self.assertIn("Logging options:", output)
79
79
  self.assertIn("--skip-log-setup Disable Locust's logging setup.", output)
80
80
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust
3
- Version: 2.18.5.dev16
3
+ Version: 2.18.5.dev32
4
4
  Summary: Developer friendly load testing framework
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://locust.io/
@@ -1,7 +1,7 @@
1
1
  locust/__init__.py,sha256=Q6sqz7YDUaMKPEqcDjWcXEFG2ilVRQR7kl0fG0yK_5A,1402
2
2
  locust/__main__.py,sha256=vBQ82334kX06ImDbFlPFgiBRiLIinwNk3z8Khs6hd74,31
3
- locust/_version.py,sha256=40SZdxSyeRG6nnBD1GZhE7y7w3ZWm9hnZd0JRckzsWo,428
4
- locust/argument_parser.py,sha256=mgFirGQccbUzbmuEMBX3QNf2FjhWkKq70f1YI1lQyEs,25511
3
+ locust/_version.py,sha256=Ygv5XVePgs9a2_Wq3oEYoTCN31yfH2PVoE7VG_vP2UI,428
4
+ locust/argument_parser.py,sha256=SFu6MwAaLnx7nbZUJ7mW_spK30lcHIvp8KtotuN7xgc,26331
5
5
  locust/clients.py,sha256=GJXTWcyBAepE6O-o-V92WboV8XKOXxWR-AixlcL74_w,14768
6
6
  locust/debug.py,sha256=pEnZ74679vCdDODEMTNvjYcVdWCe4sWolHDJvdXh9dU,4818
7
7
  locust/dispatch.py,sha256=nVWXBkUzpqsVeVp5sw3sYSjR1dD5AAUiFLqutqsrlm4,18634
@@ -11,7 +11,7 @@ locust/exception.py,sha256=aGCx5TQmkYZn8P_uDD3Z4ZwxxRoA7R3ml0WJO-nHgFQ,1942
11
11
  locust/html.py,sha256=Bd-XQG-5V1u5Ati30mbDz7NnsZUEPZ6Zcr_Q8Qdyy7o,5770
12
12
  locust/input_events.py,sha256=ARmzf5K_t4OnsNilkx0adDnNqvU9-NxtQvKOOjwgA_A,3048
13
13
  locust/log.py,sha256=dNPBbuIW96IYRi2AsBtapTmwoOekb6gMa0PsQJgFsbY,3113
14
- locust/main.py,sha256=mr6T5D4bVTivBItIOwbxqX6QZsMjK7DuA-cs7J_tFao,24776
14
+ locust/main.py,sha256=NoQgiiDNHe9iyaS-ECWeYPeNGrOWAJnEb7-j2CeE8bM,25140
15
15
  locust/py.typed,sha256=gkWLl8yD4mIZnNYYAIRM8g9VarLvWmTAFeUfEbxJLBw,65
16
16
  locust/runners.py,sha256=omkM2ZLFyQkA898KTgNwjPqKVJlnd9n8HUaTOOOdFOo,64529
17
17
  locust/shape.py,sha256=SrKDabGtZ5bqMopJDdivvLbPencaYfAPUv1qzQiAgiA,1969
@@ -60,7 +60,7 @@ locust/test/test_http.py,sha256=XOFRvI6ibbtM3_IRDV-kENGjDEAukNdQwK1T-NmkCa0,1176
60
60
  locust/test/test_load_locustfile.py,sha256=EytaJZP35l28M-ekWEai4WXi6v9W-oJYAHR84_8qEhU,7509
61
61
  locust/test/test_locust_class.py,sha256=16HONn6DWQG8E4x0nL1rXpLVfLbEdmezM7AUr21syuE,25546
62
62
  locust/test/test_log.py,sha256=p2QHAfL2-cJCItIkyKR3C3Rd7ADmnSaD1s4zjeShEno,7552
63
- locust/test/test_main.py,sha256=MTS8P7OuEhtyEtXf-nL4bDD1pa_9tM66ELZVLx3-E-s,71933
63
+ locust/test/test_main.py,sha256=jJFok2ryNyGwVB7I4pqE_u0ANHt63pEB2OwDBFXmFM8,71928
64
64
  locust/test/test_old_wait_api.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
65
  locust/test/test_parser.py,sha256=1YQMAJuNTXbq78FnXhCthxvnq0sgKDmOhf5lYdhml9s,17337
66
66
  locust/test/test_runners.py,sha256=6X3z_dlADfmzk_zoKI4gj0n9PBAYFA9Z5vsRwjXneaE,156619
@@ -93,9 +93,9 @@ locust/webui/dist/report.html,sha256=Vyi9LIAjBNiAsvn6LVFkdAZ9R4Fa8UjHnqscjAeOFp8
93
93
  locust/webui/dist/assets/favicon.ico,sha256=IUl-rYqfpHdV38e-s0bkmFIeLS-n3Ug0DQxk-h202hI,8348
94
94
  locust/webui/dist/assets/index-8ad54eaa.js,sha256=2p0-EIqVZbPDS8yakeol4jMx7KUNeFhyA8HGJ2dLJEw,1616557
95
95
  locust/webui/dist/assets/logo.png,sha256=lPCYhpDsPXYY3gUMlq3bzABI5WBtdBOvtay8R9hRFv4,2943
96
- locust-2.18.5.dev16.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
97
- locust-2.18.5.dev16.dist-info/METADATA,sha256=_ElQtjKafMQ5ue4KMI7Vrf7ZpEls9nlPuauS40dGfnI,7150
98
- locust-2.18.5.dev16.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
99
- locust-2.18.5.dev16.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
100
- locust-2.18.5.dev16.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
101
- locust-2.18.5.dev16.dist-info/RECORD,,
96
+ locust-2.18.5.dev32.dist-info/LICENSE,sha256=78XGpIn3fHVBfaxlPNUfjVufSN7QsdhpJMRJHv2AFpo,1095
97
+ locust-2.18.5.dev32.dist-info/METADATA,sha256=SAuDzAxkhh7KQ1H2dtrJ6It0bNi-lSkc02PB7WANi34,7150
98
+ locust-2.18.5.dev32.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
99
+ locust-2.18.5.dev32.dist-info/entry_points.txt,sha256=RAdt8Ku-56m7bFjmdj-MBhbF6h4NX7tVODR9QNnOg0E,44
100
+ locust-2.18.5.dev32.dist-info/top_level.txt,sha256=XSsjgPA8Ggf9TqKVbkwSqZFuPlZ085X13M9orDycE20,7
101
+ locust-2.18.5.dev32.dist-info/RECORD,,