locust-plugins 4.4.2__tar.gz → 4.4.4__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 (97) hide show
  1. locust_plugins-4.4.4/CONTRIBUTING.md +12 -0
  2. {locust-plugins-4.4.2/locust_plugins.egg-info → locust_plugins-4.4.4}/PKG-INFO +3 -3
  3. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/_version.py +2 -2
  4. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/listeners/timescale.py +14 -12
  5. {locust-plugins-4.4.2 → locust_plugins-4.4.4/locust_plugins.egg-info}/PKG-INFO +3 -3
  6. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins.egg-info/requires.txt +2 -2
  7. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/setup.py +1 -1
  8. locust-plugins-4.4.2/CONTRIBUTING.md +0 -30
  9. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/.github/workflows/stale.yml +0 -0
  10. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/.github/workflows/tests.yml +0 -0
  11. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/.gitignore +0 -0
  12. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/.pylintrc +0 -0
  13. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/.vscode/launch.json +0 -0
  14. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/.vscode/settings.json +0 -0
  15. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/LICENSE +0 -0
  16. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/MANIFEST.in +0 -0
  17. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/Makefile +0 -0
  18. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/README.md +0 -0
  19. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/bin/locust-compose +0 -0
  20. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/appinsights_listener_ex.py +0 -0
  21. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/cloudwatch_listener_ex.py +0 -0
  22. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/cmd_line_examples.sh +0 -0
  23. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/connection_pool_ex.py +0 -0
  24. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/constant_total_ips_ex.py +0 -0
  25. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/csvreader_ex.py +0 -0
  26. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/distributor_ex.py +0 -0
  27. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/embedded_resource_manager_ex.py +0 -0
  28. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/jmeter_listener_example.py +0 -0
  29. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/kafka_ex.py +0 -0
  30. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/mongoreader_ex.py +0 -0
  31. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/mqtt_custom_client_ex.py +0 -0
  32. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/mqtt_ex.py +0 -0
  33. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/playwright-recording.py +0 -0
  34. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/playwright_ex.py +0 -0
  35. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/products.csv +0 -0
  36. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/reschedule_on_fail_ex.py +0 -0
  37. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/rest_ex.py +0 -0
  38. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/socketio_ex.py +0 -0
  39. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/ssn.csv +0 -0
  40. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/ssn.tsv +0 -0
  41. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/transaction_example.py +0 -0
  42. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/transaction_example_as_library_local.py +0 -0
  43. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/transaction_example_as_library_master.py +0 -0
  44. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/transaction_example_as_library_worker.py +0 -0
  45. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/tsvreader_ex.py +0 -0
  46. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/examples/webdriver_ex.py +0 -0
  47. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/__init__.py +0 -0
  48. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/connection_pools.py +0 -0
  49. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/csvreader.py +0 -0
  50. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/Makefile +0 -0
  51. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/README.md +0 -0
  52. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/docker-compose.yml +0 -0
  53. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-grafana/Dockerfile +0 -0
  54. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-grafana/Makefile +0 -0
  55. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-grafana/create_datasource.sh +0 -0
  56. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-grafana/grafana_setup.sh +0 -0
  57. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-grafana/import_dashboards.sh +0 -0
  58. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-timescale/Dockerfile +0 -0
  59. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-timescale/Makefile +0 -0
  60. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-timescale/timescale_schema.sql +0 -0
  61. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/locust-timescale/zz_hypertable.sql +0 -0
  62. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/screenshots/main_dashboard.png +0 -0
  63. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/screenshots/main_dashboard_by_request_graphs.png +0 -0
  64. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/screenshots/requests_table.png +0 -0
  65. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/screenshots/scatter_plot.png +0 -0
  66. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/dashboards/screenshots/testruns.png +0 -0
  67. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/distributor.py +0 -0
  68. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/listeners/__init__.py +0 -0
  69. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/listeners/appinsights.py +0 -0
  70. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/listeners/cloudwatch.py +0 -0
  71. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/listeners/jmeter.py +0 -0
  72. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/mongoreader.py +0 -0
  73. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/py.typed +0 -0
  74. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/transaction_manager.py +0 -0
  75. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/__init__.py +0 -0
  76. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/kafka.py +0 -0
  77. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/mqtt.py +0 -0
  78. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/playwright.py +0 -0
  79. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/resource.py +0 -0
  80. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/rest.py +0 -0
  81. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/socketio.py +0 -0
  82. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/users/webdriver.py +0 -0
  83. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/utils.py +0 -0
  84. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins/wait_time.py +0 -0
  85. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins.egg-info/SOURCES.txt +0 -0
  86. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins.egg-info/dependency_links.txt +0 -0
  87. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins.egg-info/not-zip-safe +0 -0
  88. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/locust_plugins.egg-info/top_level.txt +0 -0
  89. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/mypy.ini +0 -0
  90. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/pyproject.toml +0 -0
  91. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/setup.cfg +0 -0
  92. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/test/test.csv +0 -0
  93. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/test/test_all.py +0 -0
  94. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/test/test_cloudwatch_plugin.py +0 -0
  95. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/test/test_missing_extras.py +0 -0
  96. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/tox.ini +0 -0
  97. {locust-plugins-4.4.2 → locust_plugins-4.4.4}/tusk.yaml +0 -0
@@ -0,0 +1,12 @@
1
+ Contributing Guidelines
2
+ =======================
3
+
4
+ If you want to talk about a contribution before you start writing code & making a pull request, please [file an issue](https://github.com/SvenskaSpel/locust-plugins/issues/new). You can also find me (cyberwiz) semi-regularly on the official locust [slack](https://locustio.slack.com) [(signup)](https://communityinviter.com/apps/locustio/locust)
5
+
6
+ In order to maintain a good level of quality, please ensure that your code:
7
+
8
+ * Is formatted using black (https://github.com/psf/black)
9
+
10
+ * Passes linting with pylint (https://www.pylint.org/)
11
+
12
+ * Has relevant examples [here](examples/)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust-plugins
3
- Version: 4.4.2
3
+ Version: 4.4.4
4
4
  Summary: Useful plugins/extensions for Locust
5
5
  Home-page: https://github.com/SvenskaSpel/locust-plugins
6
6
  Author: Lars Holmberg
@@ -35,7 +35,7 @@ Requires-Dist: confluent-kafka; extra == "kafka"
35
35
  Provides-Extra: mongo
36
36
  Requires-Dist: pymongo; extra == "mongo"
37
37
  Provides-Extra: mqtt
38
- Requires-Dist: paho-mqtt>=1.5.0; extra == "mqtt"
38
+ Requires-Dist: paho-mqtt>=2.1.0; extra == "mqtt"
39
39
  Provides-Extra: appinsights
40
40
  Requires-Dist: opencensus-ext-azure; extra == "appinsights"
41
41
  Provides-Extra: resource
@@ -49,7 +49,7 @@ Requires-Dist: psycogreen; extra == "all"
49
49
  Requires-Dist: psycopg2-binary; extra == "all"
50
50
  Requires-Dist: confluent-kafka; extra == "all"
51
51
  Requires-Dist: pymongo; extra == "all"
52
- Requires-Dist: paho-mqtt>=1.5.0; extra == "all"
52
+ Requires-Dist: paho-mqtt>=2.1.0; extra == "all"
53
53
  Requires-Dist: opencensus-ext-azure; extra == "all"
54
54
  Requires-Dist: lxml; extra == "all"
55
55
  Requires-Dist: boto3; extra == "all"
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '4.4.2'
16
- __version_tuple__ = version_tuple = (4, 4, 2)
15
+ __version__ = version = '4.4.4'
16
+ __version_tuple__ = version_tuple = (4, 4, 4)
@@ -1,4 +1,3 @@
1
- # See timescale_listener_ex.py for documentation
2
1
  from contextlib import contextmanager
3
2
  from locust.exception import CatchResponseError # need to do this first to make sure monkey patching is done
4
3
  import json
@@ -75,7 +74,7 @@ class Timescale: # pylint: disable=R0902
75
74
 
76
75
  def set_run_id(self, environment, msg, **kwargs):
77
76
  logging.debug(f"run id from master: {msg.data}")
78
- self._run_id = datetime.strptime(msg.data, "%Y-%m-%d, %H:%M:%S.%f").replace(tzinfo=timezone.utc)
77
+ environment._run_id = datetime.strptime(msg.data, "%Y-%m-%d, %H:%M:%S.%f").replace(tzinfo=timezone.utc)
79
78
 
80
79
  @contextmanager
81
80
  def dbcursor(self):
@@ -131,11 +130,11 @@ class Timescale: # pylint: disable=R0902
131
130
  self.set_gitrepo()
132
131
 
133
132
  if not self.env.parsed_options.worker:
134
- self._run_id = datetime.now(timezone.utc)
133
+ environment._run_id = datetime.now(timezone.utc)
135
134
  logging.info(
136
- f"Follow test run here: {self.env.parsed_options.grafana_url}&var-testplan={self._testplan}&from={int(self._run_id.timestamp()*1000)}&to=now"
135
+ f"Follow test run here: {self.env.parsed_options.grafana_url}&var-testplan={self._testplan}&from={int(environment._run_id.timestamp()*1000)}&to=now"
137
136
  )
138
- msg = self._run_id.strftime("%Y-%m-%d, %H:%M:%S.%f")
137
+ msg = environment._run_id.strftime("%Y-%m-%d, %H:%M:%S.%f")
139
138
  if environment.runner is not None:
140
139
  logging.debug(f"about to send run_id to workers: {msg}")
141
140
  environment.runner.send_message("run_id", msg)
@@ -143,6 +142,9 @@ class Timescale: # pylint: disable=R0902
143
142
  self._user_count_logger = gevent.spawn(self._log_user_count)
144
143
 
145
144
  def _dbconn(self) -> psycopg2.extensions.connection:
145
+ logging.debug(
146
+ f"Connecting to Postgres ({self.env.parsed_options.pguser}@{self.env.parsed_options.pghost}:{self.env.parsed_options.pgport or 5432})"
147
+ )
146
148
  try:
147
149
  conn = psycopg2.connect(
148
150
  host=self.env.parsed_options.pghost,
@@ -171,7 +173,7 @@ class Timescale: # pylint: disable=R0902
171
173
  with self.dbcursor() as cur:
172
174
  cur.execute(
173
175
  """INSERT INTO user_count(time, run_id, testplan, user_count) VALUES (%s, %s, %s, %s)""",
174
- (datetime.now(timezone.utc), self._run_id, self._testplan, self.env.runner.user_count),
176
+ (datetime.now(timezone.utc), self.env._run_id, self._testplan, self.env.runner.user_count),
175
177
  )
176
178
  except psycopg2.Error as error:
177
179
  logging.error("Failed to write user count to Postgresql: " + repr(error))
@@ -239,7 +241,7 @@ class Timescale: # pylint: disable=R0902
239
241
  greenlet_id = getattr(greenlet.getcurrent(), "minimal_ident", 0) # if we're debugging there is no greenlet
240
242
  sample = {
241
243
  "time": time,
242
- "run_id": self._run_id,
244
+ "run_id": self.env._run_id,
243
245
  "greenlet_id": greenlet_id,
244
246
  "loadgen": self._hostname,
245
247
  "name": name,
@@ -276,7 +278,7 @@ class Timescale: # pylint: disable=R0902
276
278
  cur.execute(
277
279
  "INSERT INTO testrun (id, testplan, num_clients, rps, description, env, profile_name, username, gitrepo, changeset_guid, arguments) VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",
278
280
  (
279
- self._run_id,
281
+ self.env._run_id,
280
282
  self._testplan,
281
283
  self.env.parsed_options.num_users or 1,
282
284
  self.env.parsed_options.ips, # this field is incorrectly called "rps" in db, it should be called something like "target_ips"
@@ -309,7 +311,7 @@ class Timescale: # pylint: disable=R0902
309
311
  )
310
312
 
311
313
  def log_stop_test_run(self, exit_code=None):
312
- logging.debug(f"Test run id {self._run_id} stopping")
314
+ logging.debug(f"Test run id {self.env._run_id} stopping")
313
315
  if self.env.parsed_options.worker:
314
316
  return # only run on master or standalone
315
317
  if getattr(self, "dbconn", None) is None:
@@ -319,7 +321,7 @@ class Timescale: # pylint: disable=R0902
319
321
  with self.dbcursor() as cur:
320
322
  cur.execute(
321
323
  "UPDATE testrun SET end_time = %s, exit_code = %s where id = %s",
322
- (end_time, exit_code, self._run_id),
324
+ (end_time, exit_code, self.env._run_id),
323
325
  )
324
326
  cur.execute(
325
327
  "INSERT INTO events (time, text) VALUES (%s, %s)",
@@ -344,7 +346,7 @@ SET (requests, resp_time_avg, rps_avg, fail_ratio) =
344
346
  COUNT(*)::numeric AS fails
345
347
  FROM request WHERE run_id = %s AND time > %s AND success = 0) AS ___
346
348
  WHERE id = %s""",
347
- [self._run_id] * 7,
349
+ [self.env._run_id] * 7,
348
350
  )
349
351
  except psycopg2.errors.DivisionByZero: # pylint: disable=no-member
350
352
  logging.info(
@@ -356,5 +358,5 @@ WHERE id = %s""",
356
358
  + repr(error)
357
359
  )
358
360
  logging.info(
359
- f"Report: {self.env.parsed_options.grafana_url}&var-testplan={self._testplan}&from={int(self._run_id.timestamp()*1000)}&to={int((end_time.timestamp()+1)*1000)}\n"
361
+ f"Report: {self.env.parsed_options.grafana_url}&var-testplan={self._testplan}&from={int(self.env._run_id.timestamp()*1000)}&to={int((end_time.timestamp()+1)*1000)}\n"
360
362
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: locust-plugins
3
- Version: 4.4.2
3
+ Version: 4.4.4
4
4
  Summary: Useful plugins/extensions for Locust
5
5
  Home-page: https://github.com/SvenskaSpel/locust-plugins
6
6
  Author: Lars Holmberg
@@ -35,7 +35,7 @@ Requires-Dist: confluent-kafka; extra == "kafka"
35
35
  Provides-Extra: mongo
36
36
  Requires-Dist: pymongo; extra == "mongo"
37
37
  Provides-Extra: mqtt
38
- Requires-Dist: paho-mqtt>=1.5.0; extra == "mqtt"
38
+ Requires-Dist: paho-mqtt>=2.1.0; extra == "mqtt"
39
39
  Provides-Extra: appinsights
40
40
  Requires-Dist: opencensus-ext-azure; extra == "appinsights"
41
41
  Provides-Extra: resource
@@ -49,7 +49,7 @@ Requires-Dist: psycogreen; extra == "all"
49
49
  Requires-Dist: psycopg2-binary; extra == "all"
50
50
  Requires-Dist: confluent-kafka; extra == "all"
51
51
  Requires-Dist: pymongo; extra == "all"
52
- Requires-Dist: paho-mqtt>=1.5.0; extra == "all"
52
+ Requires-Dist: paho-mqtt>=2.1.0; extra == "all"
53
53
  Requires-Dist: opencensus-ext-azure; extra == "all"
54
54
  Requires-Dist: lxml; extra == "all"
55
55
  Requires-Dist: boto3; extra == "all"
@@ -8,7 +8,7 @@ psycogreen
8
8
  psycopg2-binary
9
9
  confluent-kafka
10
10
  pymongo
11
- paho-mqtt>=1.5.0
11
+ paho-mqtt>=2.1.0
12
12
  opencensus-ext-azure
13
13
  lxml
14
14
  boto3
@@ -30,7 +30,7 @@ confluent-kafka
30
30
  pymongo
31
31
 
32
32
  [mqtt]
33
- paho-mqtt>=1.5.0
33
+ paho-mqtt>=2.1.0
34
34
 
35
35
  [playwright]
36
36
  playwright>=1.40.0
@@ -10,7 +10,7 @@ extras = {
10
10
  "dashboards": ["psycogreen", "psycopg2-binary"],
11
11
  "kafka": ["confluent-kafka"],
12
12
  "mongo": ["pymongo"],
13
- "mqtt": ["paho-mqtt>=1.5.0"],
13
+ "mqtt": ["paho-mqtt>=2.1.0"],
14
14
  "appinsights": ["opencensus-ext-azure"],
15
15
  "resource": ["lxml"],
16
16
  "boto3": ["boto3"],
@@ -1,30 +0,0 @@
1
- Contributing Guidelines
2
- =======================
3
-
4
- If you want to talk about a contribution before you start writing code & making a pull request, please [file an issue](https://github.com/SvenskaSpel/locust-plugins/issues/new). You can also find me (cyberwiz) semi-regularly on the official locust [slack](https://locustio.slack.com).
5
-
6
- In order to maintain a good level of quality, please ensure that your code:
7
-
8
- * Is formatted using black (https://github.com/psf/black)
9
-
10
- * Passes linting with pylint (https://www.pylint.org/)
11
-
12
- * Has relevant examples [here](examples/)
13
-
14
- ---
15
- ## environment setup
16
-
17
- This project has a dev container definition - https://code.visualstudio.com/docs/remote/containers#
18
-
19
- If you have Docker and visual studio code installed all you need to do is open the repository in vs code and select "re-open in container" in the popup that appears in the bottom right. Dependencies and plugins will be automatically handled.
20
-
21
-
22
- ### Tusk runner
23
-
24
- The development image has some quality of life scripts baked into it
25
-
26
- 1. running `tusk format` Will run the black formatter on examples/ and locust_plugins/
27
-
28
- 2. `tusk pylint` will run pylint against on examples/ and locust_plugins/
29
-
30
- 3. `tusk test` will run the tox test suite in the 3.9 environment
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes