redisbench-admin 0.11.49__py3-none-any.whl → 0.11.50__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.
- redisbench_admin/compare/args.py +20 -0
- redisbench_admin/compare/compare.py +165 -23
- redisbench_admin/run/modules.py +14 -6
- {redisbench_admin-0.11.49.dist-info → redisbench_admin-0.11.50.dist-info}/METADATA +1 -1
- {redisbench_admin-0.11.49.dist-info → redisbench_admin-0.11.50.dist-info}/RECORD +8 -8
- {redisbench_admin-0.11.49.dist-info → redisbench_admin-0.11.50.dist-info}/LICENSE +0 -0
- {redisbench_admin-0.11.49.dist-info → redisbench_admin-0.11.50.dist-info}/WHEEL +0 -0
- {redisbench_admin-0.11.49.dist-info → redisbench_admin-0.11.50.dist-info}/entry_points.txt +0 -0
redisbench_admin/compare/args.py
CHANGED
|
@@ -114,6 +114,26 @@ def create_compare_arguments(parser):
|
|
|
114
114
|
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
115
115
|
default=START_TIME_NOW_UTC,
|
|
116
116
|
)
|
|
117
|
+
parser.add_argument(
|
|
118
|
+
"--from-date-baseline",
|
|
119
|
+
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
120
|
+
default=None,
|
|
121
|
+
)
|
|
122
|
+
parser.add_argument(
|
|
123
|
+
"--to-date-baseline",
|
|
124
|
+
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
125
|
+
default=None,
|
|
126
|
+
)
|
|
127
|
+
parser.add_argument(
|
|
128
|
+
"--from-date-comparison",
|
|
129
|
+
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
130
|
+
default=None,
|
|
131
|
+
)
|
|
132
|
+
parser.add_argument(
|
|
133
|
+
"--to-date-comparison",
|
|
134
|
+
type=lambda s: datetime.datetime.strptime(s, "%Y-%m-%d"),
|
|
135
|
+
default=None,
|
|
136
|
+
)
|
|
117
137
|
parser.add_argument(
|
|
118
138
|
"--metric_mode",
|
|
119
139
|
type=str,
|
|
@@ -314,6 +314,10 @@ def compare_command_logic(args, project_name, project_version):
|
|
|
314
314
|
first_n_baseline,
|
|
315
315
|
first_n_comparison,
|
|
316
316
|
grafana_link_base,
|
|
317
|
+
args.from_date_baseline,
|
|
318
|
+
args.to_date_baseline,
|
|
319
|
+
args.from_date_comparison,
|
|
320
|
+
args.to_date_comparison,
|
|
317
321
|
)
|
|
318
322
|
comment_body = ""
|
|
319
323
|
if total_comparison_points > 0:
|
|
@@ -593,24 +597,99 @@ def compute_regression_table(
|
|
|
593
597
|
first_n_baseline=-1,
|
|
594
598
|
first_n_comparison=-1,
|
|
595
599
|
grafana_link_base=None,
|
|
600
|
+
from_date_baseline=None,
|
|
601
|
+
to_date_baseline=None,
|
|
602
|
+
from_date_comparison=None,
|
|
603
|
+
to_date_comparison=None,
|
|
596
604
|
):
|
|
597
605
|
START_TIME_NOW_UTC, _, _ = get_start_time_vars()
|
|
598
606
|
START_TIME_LAST_MONTH_UTC = START_TIME_NOW_UTC - datetime.timedelta(days=31)
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
if
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
607
|
+
|
|
608
|
+
# Handle separate baseline and comparison date ranges (takes precedence if defined)
|
|
609
|
+
if (
|
|
610
|
+
from_date_baseline is not None
|
|
611
|
+
or to_date_baseline is not None
|
|
612
|
+
or from_date_comparison is not None
|
|
613
|
+
or to_date_comparison is not None
|
|
614
|
+
):
|
|
615
|
+
# Use separate date ranges for baseline and comparison
|
|
616
|
+
from_date_baseline = (
|
|
617
|
+
from_date_baseline
|
|
618
|
+
if from_date_baseline is not None
|
|
619
|
+
else START_TIME_LAST_MONTH_UTC
|
|
620
|
+
)
|
|
621
|
+
to_date_baseline = (
|
|
622
|
+
to_date_baseline if to_date_baseline is not None else START_TIME_NOW_UTC
|
|
623
|
+
)
|
|
624
|
+
from_date_comparison = (
|
|
625
|
+
from_date_comparison
|
|
626
|
+
if from_date_comparison is not None
|
|
627
|
+
else START_TIME_LAST_MONTH_UTC
|
|
628
|
+
)
|
|
629
|
+
to_date_comparison = (
|
|
630
|
+
to_date_comparison if to_date_comparison is not None else START_TIME_NOW_UTC
|
|
631
|
+
)
|
|
632
|
+
|
|
633
|
+
from_ts_ms_baseline = int(from_date_baseline.timestamp() * 1000)
|
|
634
|
+
to_ts_ms_baseline = int(to_date_baseline.timestamp() * 1000)
|
|
635
|
+
from_ts_ms_comparison = int(from_date_comparison.timestamp() * 1000)
|
|
636
|
+
to_ts_ms_comparison = int(to_date_comparison.timestamp() * 1000)
|
|
637
|
+
|
|
638
|
+
from_human_str_baseline = humanize.naturaltime(
|
|
639
|
+
dt.datetime.utcfromtimestamp(from_ts_ms_baseline / 1000)
|
|
640
|
+
)
|
|
641
|
+
to_human_str_baseline = humanize.naturaltime(
|
|
642
|
+
dt.datetime.utcfromtimestamp(to_ts_ms_baseline / 1000)
|
|
643
|
+
)
|
|
644
|
+
from_human_str_comparison = humanize.naturaltime(
|
|
645
|
+
dt.datetime.utcfromtimestamp(from_ts_ms_comparison / 1000)
|
|
646
|
+
)
|
|
647
|
+
to_human_str_comparison = humanize.naturaltime(
|
|
648
|
+
dt.datetime.utcfromtimestamp(to_ts_ms_comparison / 1000)
|
|
649
|
+
)
|
|
650
|
+
|
|
651
|
+
logging.info(
|
|
652
|
+
"Using separate time ranges - Baseline: {} to {}, Comparison: {} to {}".format(
|
|
653
|
+
from_human_str_baseline,
|
|
654
|
+
to_human_str_baseline,
|
|
655
|
+
from_human_str_comparison,
|
|
656
|
+
to_human_str_comparison,
|
|
657
|
+
)
|
|
658
|
+
)
|
|
659
|
+
|
|
660
|
+
# Use baseline range for legacy compatibility (will be overridden in data queries)
|
|
661
|
+
from_ts_ms = from_ts_ms_baseline
|
|
662
|
+
to_ts_ms = to_ts_ms_baseline
|
|
663
|
+
|
|
664
|
+
# Set legacy variables for table headers (show separate ranges info)
|
|
665
|
+
from_human_str = f"Baseline: {from_human_str_baseline} to {to_human_str_baseline}, Comparison: {from_human_str_comparison} to {to_human_str_comparison}"
|
|
666
|
+
to_human_str = to_human_str_baseline
|
|
667
|
+
else:
|
|
668
|
+
# Use legacy single date range for both baseline and comparison
|
|
669
|
+
if from_date is None:
|
|
670
|
+
from_date = START_TIME_LAST_MONTH_UTC
|
|
671
|
+
if to_date is None:
|
|
672
|
+
to_date = START_TIME_NOW_UTC
|
|
673
|
+
if from_ts_ms is None:
|
|
674
|
+
from_ts_ms = int(from_date.timestamp() * 1000)
|
|
675
|
+
if to_ts_ms is None:
|
|
676
|
+
to_ts_ms = int(to_date.timestamp() * 1000)
|
|
677
|
+
|
|
678
|
+
# Use same range for both baseline and comparison
|
|
679
|
+
from_ts_ms_baseline = from_ts_ms
|
|
680
|
+
to_ts_ms_baseline = to_ts_ms
|
|
681
|
+
from_ts_ms_comparison = from_ts_ms
|
|
682
|
+
to_ts_ms_comparison = to_ts_ms
|
|
683
|
+
|
|
684
|
+
from_human_str = humanize.naturaltime(
|
|
685
|
+
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
686
|
+
)
|
|
687
|
+
to_human_str = humanize.naturaltime(
|
|
688
|
+
dt.datetime.utcfromtimestamp(to_ts_ms / 1000)
|
|
689
|
+
)
|
|
690
|
+
logging.info(
|
|
691
|
+
"Using a time-delta from {} to {}".format(from_human_str, to_human_str)
|
|
692
|
+
)
|
|
614
693
|
baseline_str, by_str_baseline, comparison_str, by_str_comparison = get_by_strings(
|
|
615
694
|
baseline_branch,
|
|
616
695
|
comparison_branch,
|
|
@@ -694,6 +773,10 @@ def compute_regression_table(
|
|
|
694
773
|
comparison_tag,
|
|
695
774
|
from_date,
|
|
696
775
|
to_date,
|
|
776
|
+
from_ts_ms_baseline,
|
|
777
|
+
to_ts_ms_baseline,
|
|
778
|
+
from_ts_ms_comparison,
|
|
779
|
+
to_ts_ms_comparison,
|
|
697
780
|
)
|
|
698
781
|
logging.info(
|
|
699
782
|
"Printing differential analysis between {} and {}".format(
|
|
@@ -944,7 +1027,56 @@ def from_rts_to_regression_table(
|
|
|
944
1027
|
comparison_tag=None,
|
|
945
1028
|
from_date=None,
|
|
946
1029
|
to_date=None,
|
|
1030
|
+
from_ts_ms_baseline=None,
|
|
1031
|
+
to_ts_ms_baseline=None,
|
|
1032
|
+
from_ts_ms_comparison=None,
|
|
1033
|
+
to_ts_ms_comparison=None,
|
|
947
1034
|
):
|
|
1035
|
+
# Use separate timestamp ranges if provided, otherwise use legacy single range
|
|
1036
|
+
if (
|
|
1037
|
+
from_ts_ms_baseline is not None
|
|
1038
|
+
and to_ts_ms_baseline is not None
|
|
1039
|
+
and from_ts_ms_comparison is not None
|
|
1040
|
+
and to_ts_ms_comparison is not None
|
|
1041
|
+
):
|
|
1042
|
+
# Use separate ranges for baseline and comparison
|
|
1043
|
+
baseline_from_ts = from_ts_ms_baseline
|
|
1044
|
+
baseline_to_ts = to_ts_ms_baseline
|
|
1045
|
+
comparison_from_ts = from_ts_ms_comparison
|
|
1046
|
+
comparison_to_ts = to_ts_ms_comparison
|
|
1047
|
+
baseline_from_human = humanize.naturaltime(
|
|
1048
|
+
dt.datetime.utcfromtimestamp(baseline_from_ts / 1000)
|
|
1049
|
+
)
|
|
1050
|
+
baseline_to_human = humanize.naturaltime(
|
|
1051
|
+
dt.datetime.utcfromtimestamp(baseline_to_ts / 1000)
|
|
1052
|
+
)
|
|
1053
|
+
comparison_from_human = humanize.naturaltime(
|
|
1054
|
+
dt.datetime.utcfromtimestamp(comparison_from_ts / 1000)
|
|
1055
|
+
)
|
|
1056
|
+
comparison_to_human = humanize.naturaltime(
|
|
1057
|
+
dt.datetime.utcfromtimestamp(comparison_to_ts / 1000)
|
|
1058
|
+
)
|
|
1059
|
+
logging.info(
|
|
1060
|
+
"Using separate timestamp ranges - Baseline: {} to {}, Comparison: {} to {}".format(
|
|
1061
|
+
baseline_from_human, baseline_to_human, comparison_from_human, comparison_to_human
|
|
1062
|
+
)
|
|
1063
|
+
)
|
|
1064
|
+
else:
|
|
1065
|
+
# Use legacy single range for both
|
|
1066
|
+
baseline_from_ts = from_ts_ms
|
|
1067
|
+
baseline_to_ts = to_ts_ms
|
|
1068
|
+
comparison_from_ts = from_ts_ms
|
|
1069
|
+
comparison_to_ts = to_ts_ms
|
|
1070
|
+
from_human = humanize.naturaltime(
|
|
1071
|
+
dt.datetime.utcfromtimestamp(from_ts_ms / 1000)
|
|
1072
|
+
)
|
|
1073
|
+
to_human = humanize.naturaltime(dt.datetime.utcfromtimestamp(to_ts_ms / 1000))
|
|
1074
|
+
logging.info(
|
|
1075
|
+
"Using single timestamp range for both baseline and comparison: {} to {}".format(
|
|
1076
|
+
from_human, to_human
|
|
1077
|
+
)
|
|
1078
|
+
)
|
|
1079
|
+
|
|
948
1080
|
print_all = print_regressions_only is False and print_improvements_only is False
|
|
949
1081
|
table = []
|
|
950
1082
|
detected_regressions = []
|
|
@@ -1045,7 +1177,7 @@ def from_rts_to_regression_table(
|
|
|
1045
1177
|
try:
|
|
1046
1178
|
for ts_name_baseline in baseline_timeseries:
|
|
1047
1179
|
datapoints_inner = rts.ts().revrange(
|
|
1048
|
-
ts_name_baseline,
|
|
1180
|
+
ts_name_baseline, baseline_from_ts, baseline_to_ts
|
|
1049
1181
|
)
|
|
1050
1182
|
baseline_datapoints.extend(datapoints_inner)
|
|
1051
1183
|
(
|
|
@@ -1064,7 +1196,7 @@ def from_rts_to_regression_table(
|
|
|
1064
1196
|
)
|
|
1065
1197
|
for ts_name_comparison in comparison_timeseries:
|
|
1066
1198
|
datapoints_inner = rts.ts().revrange(
|
|
1067
|
-
ts_name_comparison,
|
|
1199
|
+
ts_name_comparison, comparison_from_ts, comparison_to_ts
|
|
1068
1200
|
)
|
|
1069
1201
|
comparison_datapoints.extend(datapoints_inner)
|
|
1070
1202
|
|
|
@@ -1533,9 +1665,11 @@ def check_client_side_latency(
|
|
|
1533
1665
|
comparison_ts = comparison_client_ts[0]
|
|
1534
1666
|
|
|
1535
1667
|
# Get client-side latency data
|
|
1536
|
-
baseline_client_data = rts.ts().revrange(
|
|
1668
|
+
baseline_client_data = rts.ts().revrange(
|
|
1669
|
+
baseline_ts, baseline_from_ts, baseline_to_ts
|
|
1670
|
+
)
|
|
1537
1671
|
comparison_client_data = rts.ts().revrange(
|
|
1538
|
-
comparison_ts,
|
|
1672
|
+
comparison_ts, comparison_from_ts, comparison_to_ts
|
|
1539
1673
|
)
|
|
1540
1674
|
|
|
1541
1675
|
if len(baseline_client_data) == 0 or len(comparison_client_data) == 0:
|
|
@@ -1878,11 +2012,15 @@ def perform_variance_and_p99_analysis(
|
|
|
1878
2012
|
comparison_p99_data = []
|
|
1879
2013
|
|
|
1880
2014
|
for ts_name in baseline_ts_list:
|
|
1881
|
-
datapoints = rts.ts().revrange(
|
|
2015
|
+
datapoints = rts.ts().revrange(
|
|
2016
|
+
ts_name, baseline_from_ts, baseline_to_ts
|
|
2017
|
+
)
|
|
1882
2018
|
baseline_p99_data.extend(datapoints)
|
|
1883
2019
|
|
|
1884
2020
|
for ts_name in comparison_ts_list:
|
|
1885
|
-
datapoints = rts.ts().revrange(
|
|
2021
|
+
datapoints = rts.ts().revrange(
|
|
2022
|
+
ts_name, comparison_from_ts, comparison_to_ts
|
|
2023
|
+
)
|
|
1886
2024
|
comparison_p99_data.extend(datapoints)
|
|
1887
2025
|
|
|
1888
2026
|
if len(baseline_p99_data) < 3 or len(comparison_p99_data) < 3:
|
|
@@ -2230,11 +2368,15 @@ def check_latency_for_unstable_throughput(
|
|
|
2230
2368
|
comparison_latency_data = []
|
|
2231
2369
|
|
|
2232
2370
|
for ts_name in baseline_ts_list:
|
|
2233
|
-
datapoints = rts.ts().revrange(
|
|
2371
|
+
datapoints = rts.ts().revrange(
|
|
2372
|
+
ts_name, baseline_from_ts, baseline_to_ts
|
|
2373
|
+
)
|
|
2234
2374
|
baseline_latency_data.extend(datapoints)
|
|
2235
2375
|
|
|
2236
2376
|
for ts_name in comparison_ts_list:
|
|
2237
|
-
datapoints = rts.ts().revrange(
|
|
2377
|
+
datapoints = rts.ts().revrange(
|
|
2378
|
+
ts_name, comparison_from_ts, comparison_to_ts
|
|
2379
|
+
)
|
|
2238
2380
|
comparison_latency_data.extend(datapoints)
|
|
2239
2381
|
|
|
2240
2382
|
if len(baseline_latency_data) == 0 or len(comparison_latency_data) == 0:
|
redisbench_admin/run/modules.py
CHANGED
|
@@ -66,9 +66,13 @@ def redis_files_check(redis_server_binary_path, redis_conf_path):
|
|
|
66
66
|
|
|
67
67
|
if redis_server_binary_path is not None:
|
|
68
68
|
# Convert relative paths to absolute paths
|
|
69
|
-
redis_server_binary_path = os.path.abspath(
|
|
69
|
+
redis_server_binary_path = os.path.abspath(
|
|
70
|
+
os.path.expanduser(redis_server_binary_path)
|
|
71
|
+
)
|
|
70
72
|
logging.info(
|
|
71
|
-
"Checking if custom Redis server binary {} exists...".format(
|
|
73
|
+
"Checking if custom Redis server binary {} exists...".format(
|
|
74
|
+
redis_server_binary_path
|
|
75
|
+
)
|
|
72
76
|
)
|
|
73
77
|
if not os.path.exists(redis_server_binary_path):
|
|
74
78
|
error_message = "Specified Redis server binary does not exist: {}".format(
|
|
@@ -77,14 +81,18 @@ def redis_files_check(redis_server_binary_path, redis_conf_path):
|
|
|
77
81
|
logging.error(error_message)
|
|
78
82
|
status = False
|
|
79
83
|
elif not os.path.isfile(redis_server_binary_path):
|
|
80
|
-
error_message =
|
|
81
|
-
|
|
84
|
+
error_message = (
|
|
85
|
+
"Specified Redis server binary path is not a file: {}".format(
|
|
86
|
+
redis_server_binary_path
|
|
87
|
+
)
|
|
82
88
|
)
|
|
83
89
|
logging.error(error_message)
|
|
84
90
|
status = False
|
|
85
91
|
elif not os.access(redis_server_binary_path, os.X_OK):
|
|
86
|
-
error_message =
|
|
87
|
-
|
|
92
|
+
error_message = (
|
|
93
|
+
"Specified Redis server binary is not executable: {}".format(
|
|
94
|
+
redis_server_binary_path
|
|
95
|
+
)
|
|
88
96
|
)
|
|
89
97
|
logging.error(error_message)
|
|
90
98
|
status = False
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: redisbench-admin
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.50
|
|
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
|
|
@@ -3,8 +3,8 @@ redisbench_admin/cli.py,sha256=LAS5qnqScXKhxHYfXWB0mvAYaUYrSurIwadhexEa9g4,7740
|
|
|
3
3
|
redisbench_admin/commands/__init__.py,sha256=mzVrEtqefFdopyzR-W6xx3How95dyZfToGKm1-_YzeY,95
|
|
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
|
-
redisbench_admin/compare/args.py,sha256=
|
|
7
|
-
redisbench_admin/compare/compare.py,sha256=
|
|
6
|
+
redisbench_admin/compare/args.py,sha256=BPLdYSBTk7DUMPjqsCxiHlaTMSUuTH2Lc60WdECDZ-g,6940
|
|
7
|
+
redisbench_admin/compare/compare.py,sha256=FdweCQkXSabUzhv6y3HVwoE_JwAKUIc1Pc3hC8Hwhoo,108833
|
|
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=MtfJbsL97DLrbBYut6zRCzyEMebX4xWoZE-m4-JDRB8,3885
|
|
@@ -184,7 +184,7 @@ redisbench_admin/run/grafana.py,sha256=iMDgMyJKinpZMTD43rZ1IcRGkadjFjCxaB48mYWkv
|
|
|
184
184
|
redisbench_admin/run/memtier_benchmark/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
|
|
185
185
|
redisbench_admin/run/memtier_benchmark/memtier_benchmark.py,sha256=wTd2olovvFBZ98mOSr6DM5BJsdaiuPteEZzBqeSgbkE,4246
|
|
186
186
|
redisbench_admin/run/metrics.py,sha256=8EQdcZbCiFB_kIR1WtUQNOPV8y74bZ8Dj51Cv0aR4nk,7556
|
|
187
|
-
redisbench_admin/run/modules.py,sha256=
|
|
187
|
+
redisbench_admin/run/modules.py,sha256=NehcSl3mVLeZ5H_x2thgYTYa5SOc5KSH8HDO2MCdb14,4905
|
|
188
188
|
redisbench_admin/run/redis_benchmark/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
|
|
189
189
|
redisbench_admin/run/redis_benchmark/redis_benchmark.py,sha256=e-Az2uTlt3z2W4uzlUsdxeT8GITpxpGb-Mjb6JxrSWc,6848
|
|
190
190
|
redisbench_admin/run/redisgraph_benchmark_go/__init__.py,sha256=DtBXRp0Q01XgCFmY-1OIePMyyYihVNAjZ1Y8zwqSDN0,101
|
|
@@ -235,8 +235,8 @@ redisbench_admin/utils/utils.py,sha256=XVSvo1_DdcYwk2jOxL3VPVPbnDnhGYt8ieYfANo6r
|
|
|
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=0wWYge3x_OMxWrzazNhJif2NK4tKsI963HVZqjczRag,6189
|
|
238
|
-
redisbench_admin-0.11.
|
|
239
|
-
redisbench_admin-0.11.
|
|
240
|
-
redisbench_admin-0.11.
|
|
241
|
-
redisbench_admin-0.11.
|
|
242
|
-
redisbench_admin-0.11.
|
|
238
|
+
redisbench_admin-0.11.50.dist-info/LICENSE,sha256=AAMtfs82zOOvmG68vILivm6lxi2rcOlGObmA8jzxQvw,10768
|
|
239
|
+
redisbench_admin-0.11.50.dist-info/METADATA,sha256=v3BjufPIxSYH3J9AsIzQ5lsr5i2QEnFvv6yY1ZFxkNY,5596
|
|
240
|
+
redisbench_admin-0.11.50.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
241
|
+
redisbench_admin-0.11.50.dist-info/entry_points.txt,sha256=UUawXk_AS-PlieKJ1QxPQXGsRLb6OW_F0MtmA1W0KE8,113
|
|
242
|
+
redisbench_admin-0.11.50.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|