Skip to content

Commit 2ec371b

Browse files
committed
fix linting issues
1 parent 8833ae3 commit 2ec371b

File tree

5 files changed

+69
-58
lines changed

5 files changed

+69
-58
lines changed

src/guidellm/executor/profile_generator.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -78,32 +78,33 @@ def __init__(
7878
**kwargs,
7979
):
8080
super().__init__(ProfileGenerationMode.FIXED_RATE)
81-
if load_gen_mode == "synchronous" and rates and len(rates) > 0:
81+
if load_gen_mode == LoadGenerationMode.SYNCHRONOUS and rates and len(rates) > 0:
8282
raise ValueError("custom rates are not supported in synchronous mode")
8383
self._rates: Optional[List[float]] = rates
84-
self._load_gen_mode: LoadGenerationMode = load_gen_mode
84+
self._load_gen_mode = load_gen_mode
8585
self._generated: bool = False
8686
self._rate_index: int = 0
8787

8888
def next(self, current_report: TextGenerationBenchmarkReport) -> Optional[Profile]:
89-
if self._load_gen_mode.name == LoadGenerationMode.SYNCHRONOUS.name:
89+
if self._load_gen_mode == LoadGenerationMode.SYNCHRONOUS:
9090
if self._generated:
9191
return None
9292
self._generated = True
9393
return Profile(
9494
load_gen_mode=LoadGenerationMode.SYNCHRONOUS, load_gen_rate=None
9595
)
96-
elif self._load_gen_mode.name in {
97-
LoadGenerationMode.CONSTANT.name,
98-
LoadGenerationMode.POISSON.name,
96+
elif self._load_gen_mode in {
97+
LoadGenerationMode.CONSTANT,
98+
LoadGenerationMode.POISSON,
9999
}:
100-
if self._rate_index >= len(self._rates):
101-
return None
102-
current_rate = self._rates[self._rate_index]
103-
self._rate_index += 1
104-
return Profile(
105-
load_gen_mode=self._load_gen_mode, load_gen_rate=current_rate
106-
)
100+
if self._rates:
101+
if self._rate_index >= len(self._rates):
102+
return None
103+
current_rate = self._rates[self._rate_index]
104+
self._rate_index += 1
105+
return Profile(
106+
load_gen_mode=self._load_gen_mode, load_gen_rate=current_rate
107+
)
107108

108109
raise ValueError(f"Invalid rate type: {self._load_gen_mode}")
109110

src/guidellm/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
TransformersDatasetRequestGenerator,
1414
)
1515
from guidellm.request.base import RequestGenerator
16-
from guidellm.scheduler.load_generator import LoadGenerationMode
1716

1817

1918
@click.command()
@@ -112,9 +111,10 @@ def main(
112111
else:
113112
raise ValueError(f"Unknown data type: {data_type}")
114113

115-
profile_mode = rate_type_to_profile_mode(rate_type)
114+
profile_mode = rate_type_to_profile_mode.get(rate_type)
116115
load_gen_mode = rate_type_to_load_gen_mode.get(rate_type, None)
117-
116+
if not profile_mode or not load_gen_mode:
117+
raise ValueError("Invalid rate type")
118118
# Create executor
119119
executor = Executor(
120120
request_generator=request_generator,

tests/unit/executor/test_executor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ def test_executor_creation():
1414
mock_backend = MagicMock(spec=Backend)
1515
profile_mode = ProfileGenerationMode.SWEEP
1616
profile_args = None
17-
max_requests = (None,)
18-
max_duration = (None,)
17+
max_requests = None
18+
max_duration = None
1919
executor = Executor(
2020
mock_backend,
2121
mock_request_generator,

tests/unit/executor/test_single_profile_generation_mode.py renamed to tests/unit/executor/test_fixed_rate_profile_generation_mode.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from typing import List, Optional
2+
13
import pytest
24

35
from guidellm.core import TextGenerationBenchmark, TextGenerationBenchmarkReport
@@ -24,7 +26,7 @@ def test_executor_single_profile_generator_benchmark_report(
2426
request_genrator = dummy.services.TestRequestGenerator(
2527
tokenizer="bert-base-uncased"
2628
)
27-
rates = [1.0]
29+
rates: Optional[List[float]] = [1.0]
2830
if load_gen_mode == LoadGenerationMode.SYNCHRONOUS:
2931
rates = None
3032
profile_generator_kwargs = {"load_gen_mode": load_gen_mode, "rates": rates}
Lines changed: 47 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from profile import Profile
12
from unittest.mock import MagicMock
23

34
import numpy
@@ -9,28 +10,27 @@
910
ProfileGenerationMode,
1011
ProfileGenerator,
1112
SweepProfileGenerator,
12-
profile_generator,
1313
)
1414
from guidellm.scheduler import LoadGenerationMode
1515

1616
# Fixed Rate Profile Generator
1717

1818

1919
def test_fixed_rate_profile_generator_creation():
20-
rates = [1]
20+
rates = [1.0]
2121
load_gen_mode = LoadGenerationMode.CONSTANT
22-
profile_generator = ProfileGenerator.create(
22+
test_profile_generator = ProfileGenerator.create(
2323
ProfileGenerationMode.FIXED_RATE,
2424
**({"rates": rates, "load_gen_mode": load_gen_mode}),
2525
)
26-
assert isinstance(profile_generator, FixedRateProfileGenerator)
27-
assert profile_generator._rates == rates
28-
assert profile_generator._load_gen_mode.name == load_gen_mode.name
29-
assert profile_generator._rate_index == 0
26+
assert isinstance(test_profile_generator, FixedRateProfileGenerator)
27+
assert test_profile_generator._rates == rates
28+
assert test_profile_generator._load_gen_mode == load_gen_mode
29+
assert test_profile_generator._rate_index == 0
3030

3131

3232
def test_synchronous_mode_rate_list_error():
33-
rates = [1]
33+
rates = [1.0]
3434
load_gen_mode = LoadGenerationMode.SYNCHRONOUS
3535
with pytest.raises(
3636
ValueError, match="custom rates are not supported in synchronous mode"
@@ -42,69 +42,75 @@ def test_synchronous_mode_rate_list_error():
4242

4343

4444
def test_next_with_multiple_rates():
45-
rates = [1, 2]
45+
rates = [1.0, 2.0]
4646
load_gen_mode = LoadGenerationMode.CONSTANT
47-
profile_generator = ProfileGenerator.create(
47+
test_profile_generator = ProfileGenerator.create(
4848
ProfileGenerationMode.FIXED_RATE,
4949
**({"rates": rates, "load_gen_mode": load_gen_mode}),
5050
)
5151
mock_report = MagicMock(spec=TextGenerationBenchmarkReport)
52-
for rates in rates:
53-
current_profile = profile_generator.next(mock_report)
54-
assert current_profile.load_gen_rate == rates
55-
assert current_profile.load_gen_mode.name == LoadGenerationMode.CONSTANT.name
56-
assert profile_generator.next(mock_report) == None
52+
for rate in rates:
53+
current_profile = test_profile_generator.next(mock_report)
54+
assert current_profile is not None
55+
assert current_profile.load_gen_rate == rate
56+
assert current_profile.load_gen_mode == LoadGenerationMode.CONSTANT
57+
assert test_profile_generator.next(mock_report) is None
5758

5859

5960
def test_next_with_sync_mode():
6061
load_gen_mode = LoadGenerationMode.SYNCHRONOUS
61-
profile_generator = ProfileGenerator.create(
62+
test_profile_generator = ProfileGenerator.create(
6263
ProfileGenerationMode.FIXED_RATE, **({"load_gen_mode": load_gen_mode})
6364
)
6465
mock_report = MagicMock(spec=TextGenerationBenchmarkReport)
65-
current_profile = profile_generator.next(mock_report)
66-
assert current_profile.load_gen_rate == None
67-
assert current_profile.load_gen_mode.name == LoadGenerationMode.SYNCHRONOUS.name
68-
assert profile_generator.next(mock_report) == None
66+
current_profile = test_profile_generator.next(mock_report)
67+
assert current_profile is not None
68+
assert current_profile.load_gen_rate is None
69+
assert current_profile.load_gen_mode == LoadGenerationMode.SYNCHRONOUS
70+
assert test_profile_generator.next(mock_report) is None
6971

7072

7173
# Sweep Profile Generator
7274

7375

7476
def test_sweep_profile_generator_creation():
75-
profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP, **({}))
76-
assert isinstance(profile_generator, SweepProfileGenerator)
77-
assert profile_generator._sync_run == False
78-
assert profile_generator._max_found == False
79-
assert profile_generator._pending_rates == None
80-
assert profile_generator._pending_rates == None
77+
test_profile_generator = ProfileGenerator.create(
78+
ProfileGenerationMode.SWEEP, **({})
79+
)
80+
assert isinstance(test_profile_generator, SweepProfileGenerator)
81+
assert not test_profile_generator._sync_run
82+
assert not test_profile_generator._max_found
83+
assert test_profile_generator._pending_rates is None
84+
assert test_profile_generator._pending_rates is None
8185

8286

8387
def test_first_profile_is_synchronous():
84-
profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
88+
test_profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
8589
mock_report = MagicMock(spec=TextGenerationBenchmarkReport)
86-
profile = profile_generator.next(mock_report)
87-
assert profile.load_gen_rate == None
88-
assert profile.load_gen_mode.name == LoadGenerationMode.SYNCHRONOUS.name
90+
profile = test_profile_generator.next(mock_report)
91+
assert profile is not None
92+
assert profile.load_gen_rate is None
93+
assert profile.load_gen_mode == LoadGenerationMode.SYNCHRONOUS
8994

9095

9196
def test_rate_doubles():
92-
profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
97+
test_profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
9398
mock_report = MagicMock(spec=TextGenerationBenchmarkReport)
9499
mock_benchmark = MagicMock(spec=TextGenerationBenchmark)
95100
mock_benchmark.overloaded = False
96101
mock_benchmark.rate = 2.0
97102
mock_benchmark.request_rate = 2.0
98103
benchmarks = [mock_benchmark]
99104
mock_report.benchmarks = benchmarks
100-
profile = profile_generator.next(mock_report)
105+
test_profile_generator.next(mock_report)
101106

102-
profile = profile_generator.next(mock_report)
107+
profile = test_profile_generator.next(mock_report)
108+
assert profile is not None
103109
assert profile.load_gen_rate == 4.0
104110

105111

106112
def test_max_found():
107-
profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
113+
test_profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
108114
mock_report = MagicMock(spec=TextGenerationBenchmarkReport)
109115
mock_benchmark = MagicMock(spec=TextGenerationBenchmark)
110116
mock_benchmark.overloaded = False
@@ -117,15 +123,16 @@ def test_max_found():
117123
benchmarks = [mock_benchmark, mock_overloaded_benchmark]
118124
mock_report.benchmarks = benchmarks
119125

120-
profile_generator.next(mock_report)
121-
profile = profile_generator.next(mock_report)
126+
test_profile_generator.next(mock_report)
127+
profile = test_profile_generator.next(mock_report)
128+
assert profile is not None
122129

123130
# if benchmark wasn't overloaded, rates would have doubled to 8
124131
assert profile.load_gen_rate == 2.0
125132

126133

127134
def test_pending_rates():
128-
profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
135+
test_profile_generator = ProfileGenerator.create(ProfileGenerationMode.SWEEP)
129136
mock_report = MagicMock(spec=TextGenerationBenchmarkReport)
130137
mock_benchmark = MagicMock(spec=TextGenerationBenchmark)
131138
mock_benchmark.overloaded = False
@@ -137,7 +144,8 @@ def test_pending_rates():
137144
mock_overloaded_benchmark.request_rate = 8.0
138145
benchmarks = [mock_benchmark, mock_overloaded_benchmark]
139146
mock_report.benchmarks = benchmarks
140-
profile = profile_generator.next(mock_report)
147+
profile = test_profile_generator.next(mock_report)
148+
assert profile is not None
141149
for expected_rate in numpy.linspace(2.0, 8.0, 10):
142-
profile = profile_generator.next(mock_report)
150+
profile = test_profile_generator.next(mock_report)
143151
assert profile.load_gen_rate == expected_rate

0 commit comments

Comments
 (0)