redisbench-admin 0.11.0__py3-none-any.whl → 0.11.3__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.
@@ -653,7 +653,7 @@ def get_by_strings(
653
653
  comparison_str = comparison_branch
654
654
 
655
655
  if baseline_tag is not None:
656
- if comparison_covered:
656
+ if baseline_covered:
657
657
  logging.error(
658
658
  "--baseline-branch and --baseline-tag are mutually exclusive. Pick one..."
659
659
  )
@@ -1043,9 +1043,9 @@ def get_v_pct_change_and_largest_var(
1043
1043
  if last_n < 0 or (last_n > 0 and len(comparison_values) < last_n):
1044
1044
  comparison_values.append(tuple[1])
1045
1045
  comparison_df = pd.DataFrame(comparison_values)
1046
- comparison_median = float(comparison_df.median())
1046
+ comparison_median = float(comparison_df.median().iloc[0])
1047
1047
  comparison_v = comparison_median
1048
- comparison_std = float(comparison_df.std())
1048
+ comparison_std = float(comparison_df.std().iloc[0])
1049
1049
  if verbose:
1050
1050
  logging.info(
1051
1051
  "comparison_datapoints: {} value: {}; std-dev: {}; median: {}".format(
@@ -484,6 +484,36 @@ def extract_test_feasible_setups(
484
484
  for setup_name in feasible_setups_list:
485
485
  if default_specs is not None:
486
486
  feasible_setups_map[setup_name] = {}
487
+ # spec:
488
+ # setups:
489
+ # - name: oss-standalone
490
+ # type: oss-standalone
491
+ # redis_topology:
492
+ # primaries: 1
493
+ # replicas: 1
494
+ # placement: "sparse"
495
+ # resources:
496
+ # requests:
497
+ # cpus: "2"
498
+ # memory: "10g"
499
+ # - name: oss-standalone-threads-6
500
+ # type: oss-standalone
501
+ # redis_topology:
502
+ # primaries: 1
503
+ # replicas: 1
504
+ # placement: "sparse"
505
+ # resources:
506
+ # requests:
507
+ # cpus: "2"
508
+ # memory: "10g"
509
+ # dbconfig:
510
+ # module-configuration-parameters:
511
+ # redisearch:
512
+ # WORKERS: 6
513
+ # MIN_OPERATION_WORKERS: 6
514
+ # module-oss:
515
+ # WORKERS: 6
516
+ # MIN_OPERATION_WORKERS: 6
487
517
  if "setups" in default_specs:
488
518
  for setup in default_specs["setups"]:
489
519
  if setup_name == setup["name"]:
@@ -515,7 +545,9 @@ def extract_test_feasible_setups(
515
545
  feasible_setups_map[setup_name]
516
546
  )
517
547
  )
518
-
548
+ logging.info(
549
+ f"There a total of {len(feasible_setups_map.keys())} setups. Setups: {feasible_setups_map}"
550
+ )
519
551
  return feasible_setups_map
520
552
 
521
553
 
@@ -4,6 +4,7 @@
4
4
  # All rights reserved.
5
5
  #
6
6
  import logging
7
+ import copy
7
8
 
8
9
  from redisbench_admin.run.common import extract_test_feasible_setups
9
10
  from redisbench_admin.run_remote.consts import min_recommended_benchmark_duration
@@ -31,7 +32,7 @@ def calculate_client_tool_duration_and_check(
31
32
 
32
33
 
33
34
  def merge_dicts(dict1, dict2):
34
- result = dict1.copy() # Start with dict1's keys and values
35
+ result = copy.deepcopy(dict1) # Start with dict1's keys and values
35
36
  for key, value in dict2.items():
36
37
  if key in result:
37
38
  if isinstance(result[key], dict) and isinstance(value, dict):
@@ -56,8 +57,15 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
56
57
  benchmark_runs_plan[benchmark_type] = {}
57
58
 
58
59
  # extract dataset-name
59
- dbconfig_present, dataset_name, _, _, _ = extract_redis_dbconfig_parameters(
60
- benchmark_config, "dbconfig"
60
+ (
61
+ benchmark_contains_dbconfig,
62
+ dataset_name,
63
+ _,
64
+ _,
65
+ _,
66
+ ) = extract_redis_dbconfig_parameters(benchmark_config, "dbconfig")
67
+ logging.info(
68
+ f"Benchmark contains specific dbconfig on test {test_name}: {benchmark_contains_dbconfig}"
61
69
  )
62
70
  if dataset_name is None:
63
71
  dataset_name = test_name
@@ -74,6 +82,14 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
74
82
  )
75
83
 
76
84
  for setup_name, setup_settings in test_setups.items():
85
+ test_benchmark_config = copy.deepcopy(benchmark_config)
86
+ setup_contains_dbconfig = False
87
+ if "dbconfig" in setup_settings:
88
+ setup_contains_dbconfig = True
89
+ logging.info(
90
+ f"setup ({setup_name}): {setup_settings}. contains dbconfig {setup_contains_dbconfig}"
91
+ )
92
+
77
93
  if setup_name not in benchmark_runs_plan[benchmark_type][dataset_name]:
78
94
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name] = {}
79
95
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
@@ -82,6 +98,7 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
82
98
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
83
99
  "benchmarks"
84
100
  ] = {}
101
+
85
102
  if (
86
103
  test_name
87
104
  in benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
@@ -94,13 +111,25 @@ def define_benchmark_plan(benchmark_definitions, default_specs):
94
111
  )
95
112
  )
96
113
  else:
97
- # add benchmark
98
- if "dbconfig" in setup_settings:
99
- benchmark_config["dbconfig"] = merge_dicts(
100
- benchmark_config["dbconfig"], setup_settings["dbconfig"]
114
+ # check if we need to merge dbconfigs from the setup defaults
115
+ if setup_contains_dbconfig:
116
+ if "dbconfig" not in test_benchmark_config:
117
+ test_benchmark_config["dbconfig"] = {}
118
+ setup_dbconfig = setup_settings["dbconfig"]
119
+ benchmark_dbconfig = test_benchmark_config["dbconfig"]
120
+ logging.info(
121
+ f"Merging setup dbconfig: {setup_dbconfig}, with benchmark dbconfig {test_benchmark_config}"
101
122
  )
123
+ final_db_config = merge_dicts(benchmark_dbconfig, setup_dbconfig)
124
+ logging.info(f"FINAL DB CONFIG: {final_db_config}")
125
+ test_benchmark_config["dbconfig"] = final_db_config
126
+
127
+ logging.info(
128
+ f"final benchmark config for setup: {setup_name} and test: {test_name}. {test_benchmark_config}"
129
+ )
130
+ # add benchmark
102
131
  benchmark_runs_plan[benchmark_type][dataset_name][setup_name][
103
132
  "benchmarks"
104
- ][test_name] = benchmark_config
133
+ ][test_name] = test_benchmark_config
105
134
 
106
135
  return benchmark_runs_plan
@@ -346,7 +346,10 @@ def run_remote_command_logic(args, project_name, project_version):
346
346
 
347
347
  # map from setup name to overall target-tables ( if any target is defined )
348
348
  overall_tables[setup_name] = {}
349
+ total_benchmarks = len(benchmarks_map.keys())
350
+ import tqdm
349
351
 
352
+ pbar = tqdm.tqdm(total=total_benchmarks, unit="benchmarks")
350
353
  for test_name, benchmark_config in benchmarks_map.items():
351
354
  if return_code != 0 and args.fail_fast:
352
355
  logging.warning(
@@ -371,9 +374,7 @@ def run_remote_command_logic(args, project_name, project_version):
371
374
  continue
372
375
  remote_perf = None
373
376
  logging.info(
374
- "Repetition {} of {}. Running test {}".format(
375
- repetition, BENCHMARK_REPETITIONS, test_name
376
- )
377
+ f"Repetition {repetition} of {BENCHMARK_REPETITIONS}. Running test {test_name}. Total benchmarks {total_benchmarks}"
377
378
  )
378
379
  (
379
380
  setup_name,
@@ -1092,6 +1093,7 @@ def run_remote_command_logic(args, project_name, project_version):
1092
1093
  f"Test {test_name} does not have remote config. Skipping test."
1093
1094
  )
1094
1095
 
1096
+ pbar.update()
1095
1097
  if len(benchmark_artifacts_links) > 0:
1096
1098
  writer = MarkdownTableWriter(
1097
1099
  table_name=benchmark_artifacts_table_name,
@@ -76,6 +76,7 @@ def remote_module_files_cp(
76
76
  ):
77
77
  remote_module_files = []
78
78
  if local_module_files is not None:
79
+ logging.info(f"local_module_files: {local_module_files}")
79
80
  for local_module_file in local_module_files:
80
81
  splitted_module_and_plugins = []
81
82
  if type(local_module_file) is str:
@@ -135,7 +136,10 @@ def remote_module_files_cp(
135
136
  if pos > 1:
136
137
  remote_module_files_in = remote_module_files_in + " "
137
138
  remote_module_files_in = remote_module_files_in + remote_module_file
138
- remote_module_files.append(remote_module_files_in)
139
+ logging.info(
140
+ f"appending to {remote_module_files} remote file {remote_module_files_in}"
141
+ )
142
+ remote_module_files.append(remote_module_files_in)
139
143
  logging.info(
140
144
  "There are a total of {} remote files {}".format(
141
145
  len(remote_module_files), remote_module_files
@@ -258,10 +258,12 @@ def extract_redis_dbconfig_parameters(benchmark_config, dbconfig_keyname):
258
258
  cp = benchmark_config[dbconfig_keyname]["configuration-parameters"]
259
259
  for k, v in cp.items():
260
260
  redis_configuration_parameters[k] = v
261
- if "dataset_load_timeout_secs" in cp:
262
- dataset_load_timeout_secs = cp["dataset_load_timeout_secs"]
263
- if "dataset_name" in cp:
264
- dataset_name = cp["dataset_name"]
261
+ if "dataset_load_timeout_secs" in benchmark_config[dbconfig_keyname]:
262
+ dataset_load_timeout_secs = benchmark_config[dbconfig_keyname][
263
+ "dataset_load_timeout_secs"
264
+ ]
265
+ if "dataset_name" in benchmark_config[dbconfig_keyname]:
266
+ dataset_name = benchmark_config[dbconfig_keyname]["dataset_name"]
265
267
 
266
268
  return (
267
269
  dbconfig_present,
@@ -544,11 +544,15 @@ def common_tf(branch, path, repo, temporary_dir=None, destroy=False):
544
544
  temporary_dir = tempfile.mkdtemp()
545
545
  if destroy is False:
546
546
  logging.info(
547
- "Fetching infrastructure definition from git repo {}/{} (branch={}). Using local dir {} to store state".format(
547
+ "Fetching infrastructure definition from git repo {}{} (branch={}). Using local dir {} to store state".format(
548
548
  repo, path, branch, temporary_dir
549
549
  )
550
550
  )
551
551
  git.Repo.clone_from(repo, temporary_dir, branch=branch, depth=1)
552
+ logging.info(f"ensuring folder exists: {temporary_dir}")
553
+ assert os.path.exists(temporary_dir) and os.path.isdir(
554
+ temporary_dir
555
+ ), f"Folder '{temporary_dir}' does not exist"
552
556
  terraform_working_dir = temporary_dir + path
553
557
  return terraform_working_dir
554
558
 
@@ -561,7 +565,7 @@ def check_remote_setup_spot_instance(
561
565
  contains_spot_instance = False
562
566
  for remote_setup_property in remote_setup_config:
563
567
  if "spot_instance" in remote_setup_property:
564
- spot_path = "/terraform/" + remote_setup_property["spot_instance"]
568
+ spot_path = "terraform/" + remote_setup_property["spot_instance"]
565
569
  contains_spot_instance = True
566
570
  logging.info(f"Detected spot instance config. Setup path: {spot_path}")
567
571
 
@@ -1,20 +1,22 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: redisbench-admin
3
- Version: 0.11.0
3
+ Version: 0.11.3
4
4
  Summary: Redis benchmark run helper. A wrapper around Redis and Redis Modules benchmark tools ( ftsb_redisearch, memtier_benchmark, redis-benchmark, aibench, etc... ).
5
5
  Author: filipecosta90
6
6
  Author-email: filipecosta.90@gmail.com
7
- Requires-Python: >=3.10.0,<4.0.0
7
+ Requires-Python: >=3.9.0,<4.0.0
8
8
  Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.9
9
10
  Classifier: Programming Language :: Python :: 3.10
10
11
  Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
11
13
  Requires-Dist: Flask (>=2.0.1,<3.0.0)
12
14
  Requires-Dist: Flask-HTTPAuth (>=4.4.0,<5.0.0)
13
15
  Requires-Dist: GitPython (>=3.1.12,<4.0.0)
14
16
  Requires-Dist: Jinja2 (>=3.0.3,<4.0.0)
15
17
  Requires-Dist: PyYAML (>=6.0,<7.0)
16
18
  Requires-Dist: boto3 (>=1.13.24,<2.0.0)
17
- Requires-Dist: certifi (>=2021.10.8,<2022.0.0)
19
+ Requires-Dist: certifi (>=2021.10.8,<2025.0.0)
18
20
  Requires-Dist: daemonize (>=2.5.0,<3.0.0)
19
21
  Requires-Dist: flask-restx (>=0.5.1,<0.6.0)
20
22
  Requires-Dist: humanize (>=2.4.0,<3.0.0)
@@ -22,7 +24,7 @@ Requires-Dist: jsonpath_ng (>=1.5.2,<2.0.0)
22
24
  Requires-Dist: matplotlib (>=3.1.2,<4.0.0)
23
25
  Requires-Dist: numpy (>=2.0.0,<3.0.0)
24
26
  Requires-Dist: pandas (>=2.1.2,<3.0.0)
25
- Requires-Dist: paramiko (>=2.7.2,<3.0.0)
27
+ Requires-Dist: paramiko (>=2.7.2,<4.0.0)
26
28
  Requires-Dist: psutil (>=5.6.6,<6.0.0)
27
29
  Requires-Dist: pyWorkFlow (>=0.0.2,<0.0.3)
28
30
  Requires-Dist: py_cpuinfo (>=5.0.0,<6.0.0)
@@ -156,6 +158,12 @@ To run a specific test:
156
158
  $ tox -- tests/test_redistimeseries.py
157
159
  ```
158
160
 
161
+ To run a specific test with verbose logging:
162
+
163
+ ```sh
164
+ # tox -- -vv --log-cli-level=INFO tests/test_run.py
165
+ ```
166
+
159
167
  ## License
160
168
 
161
169
  redisbench-admin is distributed under the BSD3 license - see [LICENSE](LICENSE)
@@ -4,7 +4,7 @@ redisbench_admin/commands/__init__.py,sha256=mzVrEtqefFdopyzR-W6xx3How95dyZfToGK
4
4
  redisbench_admin/commands/commands.json.py,sha256=mzVrEtqefFdopyzR-W6xx3How95dyZfToGKm1-_YzeY,95
5
5
  redisbench_admin/compare/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
6
6
  redisbench_admin/compare/args.py,sha256=10zbiT8roeTGnAubvoVFZTbJNbVxuRaRPtCKjxV8iNE,5226
7
- redisbench_admin/compare/compare.py,sha256=ANCm4kKCR8IBBoeBRgsPOOYW2s5qJV1QVIIPcY-WNUk,37725
7
+ redisbench_admin/compare/compare.py,sha256=iGf9zrtB3X0iEmVxd_lJZNUpDbH4w8bVH6N02ZZEyOU,37739
8
8
  redisbench_admin/deploy/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
9
9
  redisbench_admin/deploy/args.py,sha256=neLUcQqI__HkJItkQg2C293hl5g3yHG40t171r7-E5Y,1732
10
10
  redisbench_admin/deploy/deploy.py,sha256=c1srxDMaUHuyh6wGdgLqzTz3ljZFtGqiumtAmguVyuk,3791
@@ -176,7 +176,7 @@ redisbench_admin/run/ann/pkg/test/test-jaccard.py,sha256=oIhaQCQKrQokwv3fvgLSwPl
176
176
  redisbench_admin/run/ann/pkg/test/test-metrics.py,sha256=vJdS8Kuk8bAnpB65Uqb-9rUUI35XrHwaO3cNwKX5gxc,3057
177
177
  redisbench_admin/run/args.py,sha256=Sspv4eusQs9HMVMIyv_hB9vQ3S_s0lHYGAL1gPb2WGM,7864
178
178
  redisbench_admin/run/cluster.py,sha256=QuptSW-IhdyFIoQ3hzY613jtQWxBrVIlgc8OarcEK20,6072
179
- redisbench_admin/run/common.py,sha256=DnGRG4wC04pU2CK4mIWG8VX7JuYFEwAL3TZvPa-Lu8M,26707
179
+ redisbench_admin/run/common.py,sha256=MIuHUTpVX7G1JsO4TIfHraPQkxqOfMu04KvcJGBw-vI,28010
180
180
  redisbench_admin/run/ftsb/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
181
181
  redisbench_admin/run/ftsb/ftsb.py,sha256=plP-yxjMvvy-gITlXpuXJcyrPHfDoYYI8JRwTe5kK4M,2388
182
182
  redisbench_admin/run/git.py,sha256=6UYGcTN0MPzf4QDVoJnFkou0yZasLF6jLG7f0zoySq8,3064
@@ -190,7 +190,7 @@ redisbench_admin/run/redis_benchmark/redis_benchmark.py,sha256=e-Az2uTlt3z2W4uzl
190
190
  redisbench_admin/run/redisgraph_benchmark_go/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
191
191
  redisbench_admin/run/redisgraph_benchmark_go/redisgraph_benchmark_go.py,sha256=DijIoWr73e2t7Zy-UmODzC51IjUh6hH5I0LaPRJW4Vk,2241
192
192
  redisbench_admin/run/redistimeseries.py,sha256=x3PA7QoHXu53zs5v0ekK2sVmUnA9_ZF2JxgCDf1Mui4,21331
193
- redisbench_admin/run/run.py,sha256=QmsabKX1tgoHvAUlhUWEsvfjHJaZGVU-LVW3SKAtk2M,4274
193
+ redisbench_admin/run/run.py,sha256=WIBc1q5198Ln3Elfgk6D1_ezuAKx5kM_xsxnxGe66-I,5586
194
194
  redisbench_admin/run/s3.py,sha256=pXQXZ1rrwDCWeBegGR4aKzbKqWWwMrmqvIjFxEB3bh4,442
195
195
  redisbench_admin/run/ssh.py,sha256=gRW6ROoTKlaxLKhS5tM-Ejjd6zk2iO1KN9dzBzw7GOk,2835
196
196
  redisbench_admin/run/tsbs_run_queries_redistimeseries/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
@@ -220,23 +220,23 @@ redisbench_admin/run_remote/remote_db.py,sha256=a1_fnLhsCGv_0HMBB91zscHTFcHwmab_
220
220
  redisbench_admin/run_remote/remote_env.py,sha256=fTZliXW7Cz0ztew7IR2BNlqLd_l4_p-5Oc6rX7T5EdI,4605
221
221
  redisbench_admin/run_remote/remote_failures.py,sha256=IOo6DyxarcwwMPCeN4gWB2JrhuC9iBLwq0nCROqr5ak,1567
222
222
  redisbench_admin/run_remote/remote_helpers.py,sha256=gy10SuKheBiL568ldiOdJaHRPJ_J7DxH_uZpqgOuylo,9818
223
- redisbench_admin/run_remote/run_remote.py,sha256=3DD5vHz3CIP7Zk9OFRBlzNFjAo_ua-c-of7paaMxiIo,67436
224
- redisbench_admin/run_remote/standalone.py,sha256=vWmm0CdFtrasy-_1BDKO7I_gVPBjjiypv94_Fq2Sm7o,6660
223
+ redisbench_admin/run_remote/run_remote.py,sha256=Y2EIiNzkktp_yu0CB3C8yjUXkbLBZSQ6RKGPJju7v0A,67599
224
+ redisbench_admin/run_remote/standalone.py,sha256=jWL1yhkTYsSbXLzpqykFc2XE7t0uoGd-OU6C3MWvzL8,6861
225
225
  redisbench_admin/run_remote/terraform.py,sha256=zD2gGuOmnTex6Dt2lhdAtNn21iL6sykPPXI10jJaim4,3945
226
226
  redisbench_admin/utils/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
227
- redisbench_admin/utils/benchmark_config.py,sha256=WDSCnfDQt753caZ-3pyXbpIaVcEoOi8NAb0FJ5rHH7k,21237
227
+ redisbench_admin/utils/benchmark_config.py,sha256=bC2C6rnj89wkkSlOXyyfe0N15unn_M1t1zfskfVkb98,21387
228
228
  redisbench_admin/utils/local.py,sha256=zUvyVI9LZMT3qyxs1pO3mXL6Bt_1z9EZUGppaRcWNRA,3890
229
229
  redisbench_admin/utils/redisearch.py,sha256=lchUEzpt0zB1rHwlDlw9LLifAnxFWcLP-PePw7TjL-0,1602
230
230
  redisbench_admin/utils/redisgraph_benchmark_go.py,sha256=os7EJt6kBxsFJLKkSoANbjMT7-cEq4-Ns-49alk2Tf8,2048
231
- redisbench_admin/utils/remote.py,sha256=fVcFRmJcqVtado_fae_Idq_QQRTtCixMlT-hdH3zsgE,38928
231
+ redisbench_admin/utils/remote.py,sha256=UH2F8cLoMKSXigpZpfNOqnWBVs2x3powmj0eiTSLhSg,39135
232
232
  redisbench_admin/utils/results.py,sha256=uKk3uNJ--bSXlUj_HGQ2OaV6MVqmXJVM8xTzFV6EOw4,3267
233
233
  redisbench_admin/utils/ssh.py,sha256=QW4AwlocMHJt05QMdN_4f8WeDmxiEwR80ny8VBThq6k,6533
234
234
  redisbench_admin/utils/utils.py,sha256=FLDjhGkW0PWwcu_nlTnIW6aZtHzJGz4LIwvu1CpCajw,14160
235
235
  redisbench_admin/watchdog/__init__.py,sha256=cD7zfXt0VEmy0b7452HvcAxX_9kVj6Vm213yNdUHP20,95
236
236
  redisbench_admin/watchdog/args.py,sha256=nKsG1G6ATOZlAMHMtT9u3kXxduKCbejSZ5x8oB_ynZ8,1312
237
237
  redisbench_admin/watchdog/watchdog.py,sha256=jFGtm5ktjKuXKWvH7lnmf3pp-ch1WBJUOomXILJMDAg,6158
238
- redisbench_admin-0.11.0.dist-info/LICENSE,sha256=AAMtfs82zOOvmG68vILivm6lxi2rcOlGObmA8jzxQvw,10768
239
- redisbench_admin-0.11.0.dist-info/entry_points.txt,sha256=UUawXk_AS-PlieKJ1QxPQXGsRLb6OW_F0MtmA1W0KE8,113
240
- redisbench_admin-0.11.0.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
241
- redisbench_admin-0.11.0.dist-info/METADATA,sha256=0wjKQ0FTYoIMTVzJF2mYxOpiRY3GS144AHcSSYSb6f4,5228
242
- redisbench_admin-0.11.0.dist-info/RECORD,,
238
+ redisbench_admin-0.11.3.dist-info/LICENSE,sha256=AAMtfs82zOOvmG68vILivm6lxi2rcOlGObmA8jzxQvw,10768
239
+ redisbench_admin-0.11.3.dist-info/METADATA,sha256=Bv2cCIczG0EyHajACJdt44hTX0Zfnj9ir6cP_fOB5nE,5437
240
+ redisbench_admin-0.11.3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
241
+ redisbench_admin-0.11.3.dist-info/entry_points.txt,sha256=UUawXk_AS-PlieKJ1QxPQXGsRLb6OW_F0MtmA1W0KE8,113
242
+ redisbench_admin-0.11.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.4.0
2
+ Generator: poetry-core 1.9.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any