Skip to content

Commit 6b7f782

Browse files
committed
Update ruff settings and fix rules C417 and UP032
1 parent 58a8070 commit 6b7f782

File tree

17 files changed

+91
-195
lines changed

17 files changed

+91
-195
lines changed

examples/sc2autosave.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -373,9 +373,7 @@ def reset(args):
373373
exit("Cannot reset, destination must be directory: {0}", args.dest)
374374

375375
print(
376-
"About to reset directory: {}\nAll files and subdirectories will be removed.".format(
377-
args.dest
378-
)
376+
f"About to reset directory: {args.dest}\nAll files and subdirectories will be removed."
379377
)
380378
choice = raw_input("Proceed anyway? (y/n) ")
381379
if choice.lower() == "y":

generate_build_data.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,7 @@ def generate_build_data(balance_data_path):
103103
if element_ability_index != train_ability_index:
104104
train_ability_index = element_ability_index
105105

106-
train_ability_name = "{}Train{}".format(
107-
unit_id, trained_unit_name
108-
)
106+
train_ability_name = f"{unit_id}Train{trained_unit_name}"
109107
abilities[train_ability_index] = train_ability_name
110108

111109
if train_ability_name not in ability_lookup:

pyproject.toml

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ keywords = [
1313
"sc2",
1414
"starcraft 2",
1515
]
16-
license = {text = "MIT"}
17-
authors = [{name = "Kevin Leung", email = "[email protected]"}]
18-
requires-python = ">=3.7"
16+
license = { text = "MIT" }
17+
authors = [ { name = "Kevin Leung", email = "[email protected]" } ]
18+
requires-python = ">=3.9"
1919
classifiers = [
2020
"Development Status :: 5 - Production/Stable",
2121
"Environment :: Console",
@@ -25,11 +25,11 @@ classifiers = [
2525
"Operating System :: OS Independent",
2626
"Programming Language :: Python",
2727
"Programming Language :: Python :: 3 :: Only",
28-
"Programming Language :: Python :: 3.7",
29-
"Programming Language :: Python :: 3.8",
3028
"Programming Language :: Python :: 3.9",
3129
"Programming Language :: Python :: 3.10",
3230
"Programming Language :: Python :: 3.11",
31+
"Programming Language :: Python :: 3.12",
32+
"Programming Language :: Python :: 3.13",
3333
"Programming Language :: Python :: Implementation :: CPython",
3434
"Programming Language :: Python :: Implementation :: PyPy",
3535
"Topic :: Games/Entertainment",
@@ -46,27 +46,35 @@ dependencies = [
4646
"mpyq",
4747
"pillow",
4848
]
49-
[project.optional-dependencies]
50-
testing = [
49+
optional-dependencies.testing = [
5150
"pytest",
5251
]
53-
[project.urls]
54-
Homepage = "https://github.com/ggtracker/sc2reader"
55-
[project.scripts]
56-
sc2attributes = "sc2reader.scripts.sc2attributes:main"
57-
sc2json = "sc2reader.scripts.sc2json:main"
58-
sc2parse = "sc2reader.scripts.sc2parse:main"
59-
sc2printer = "sc2reader.scripts.sc2printer:main"
60-
sc2replayer = "sc2reader.scripts.sc2replayer:main"
52+
urls.Homepage = "https://github.com/ggtracker/sc2reader"
53+
scripts.sc2attributes = "sc2reader.scripts.sc2attributes:main"
54+
scripts.sc2json = "sc2reader.scripts.sc2json:main"
55+
scripts.sc2parse = "sc2reader.scripts.sc2parse:main"
56+
scripts.sc2printer = "sc2reader.scripts.sc2printer:main"
57+
scripts.sc2replayer = "sc2reader.scripts.sc2replayer:main"
6158

6259
[tool.setuptools]
6360
include-package-data = true
6461
zip-safe = true
65-
platforms = ["any"]
62+
platforms = [ "any" ]
6663

6764
[tool.setuptools.dynamic]
68-
readme = {file = ["README.rst", "CHANGELOG.rst"]}
69-
version = {attr = "sc2reader.__version__"}
65+
readme = { file = [ "README.rst", "CHANGELOG.rst" ] }
66+
version = { attr = "sc2reader.__version__" }
7067

7168
[tool.setuptools.packages]
72-
find = {namespaces = false}
69+
find = { namespaces = false }
70+
71+
[tool.ruff]
72+
line-length = 129
73+
74+
lint.ignore = [
75+
"F401", # module imported but unused; consider using `importlib.util.find_spec` to test for availability
76+
"F403", # Run `removestar` on this codebase
77+
"F405", # Run `removestar` on this codebase
78+
"F841", # Run `ruff --select=F841 --fix .`
79+
]
80+
lint.mccabe.max-complexity = 34

ruff.toml

Lines changed: 0 additions & 7 deletions
This file was deleted.

sc2reader/data/__init__.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -339,9 +339,7 @@ def change_type(self, unit, new_type, frame):
339339
unit.set_type(unit_type, frame)
340340
else:
341341
self.logger.error(
342-
"Unable to change type of {} to {} [frame {}]; unit type not found in build {}".format(
343-
unit, new_type, frame, self.id
344-
)
342+
f"Unable to change type of {unit} to {new_type} [frame {frame}]; unit type not found in build {self.id}"
345343
)
346344

347345
def add_ability(

sc2reader/engine/plugins/context.py

Lines changed: 14 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,7 @@ def handleCommandEvent(self, event, replay):
4343
event.logger.error("\t" + player.__str__())
4444

4545
self.logger.error(
46-
"{}\t{}\tMissing ability {:X} from {}".format(
47-
event.frame,
48-
event.player.name,
49-
event.ability_id,
50-
replay.datapack.__class__.__name__,
51-
)
46+
f"{event.frame}\t{event.player.name}\tMissing ability {event.ability_id:X} from {replay.datapack.__class__.__name__}"
5247
)
5348

5449
else:
@@ -197,15 +192,11 @@ def handleUnitDiedEvent(self, event, replay):
197192
del replay.active_units[event.unit_id_index]
198193
else:
199194
self.logger.error(
200-
"Unable to delete unit index {} at {} [{}], index not active.".format(
201-
event.unit_id_index, Length(seconds=event.second), event.frame
202-
)
195+
f"Unable to delete unit index {event.unit_id_index} at {Length(seconds=event.second)} [{event.frame}], index not active."
203196
)
204197
else:
205198
self.logger.error(
206-
"Unit {} died at {} [{}] before it was born!".format(
207-
event.unit_id, Length(seconds=event.second), event.frame
208-
)
199+
f"Unit {event.unit_id} died at {Length(seconds=event.second)} [{event.frame}] before it was born!"
209200
)
210201

211202
if event.killing_player_id in replay.player:
@@ -215,9 +206,7 @@ def handleUnitDiedEvent(self, event, replay):
215206
event.killing_player.killed_units.append(event.unit)
216207
elif event.killing_player_id:
217208
self.logger.error(
218-
"Unknown killing player id {} at {} [{}]".format(
219-
event.killing_player_id, Length(seconds=event.second), event.frame
220-
)
209+
f"Unknown killing player id {event.killing_player_id} at {Length(seconds=event.second)} [{event.frame}]"
221210
)
222211

223212
if event.killing_unit_id in replay.objects:
@@ -227,9 +216,7 @@ def handleUnitDiedEvent(self, event, replay):
227216
event.killing_unit.killed_units.append(event.unit)
228217
elif event.killing_unit_id:
229218
self.logger.error(
230-
"Unknown killing unit id {} at {} [{}]".format(
231-
event.killing_unit_id, Length(seconds=event.second), event.frame
232-
)
219+
f"Unknown killing unit id {event.killing_unit_id} at {Length(seconds=event.second)} [{event.frame}]"
233220
)
234221

235222
def handleUnitOwnerChangeEvent(self, event, replay):
@@ -243,9 +230,7 @@ def handleUnitOwnerChangeEvent(self, event, replay):
243230
event.unit = replay.objects[event.unit_id]
244231
else:
245232
self.logger.error(
246-
"Unit {} owner changed at {} [{}] before it was born!".format(
247-
event.unit_id, Length(seconds=event.second), event.frame
248-
)
233+
f"Unit {event.unit_id} owner changed at {Length(seconds=event.second)} [{event.frame}] before it was born!"
249234
)
250235

251236
if event.unit_upkeeper and event.unit:
@@ -263,9 +248,7 @@ def handleUnitTypeChangeEvent(self, event, replay):
263248
replay.datapack.change_type(event.unit, event.unit_type_name, event.frame)
264249
else:
265250
self.logger.error(
266-
"Unit {} type changed at {} before it was born!".format(
267-
event.unit_id, Length(seconds=event.second)
268-
)
251+
f"Unit {event.unit_id} type changed at {Length(seconds=event.second)} before it was born!"
269252
)
270253

271254
def handleUpgradeCompleteEvent(self, event, replay):
@@ -306,9 +289,7 @@ def handleUnitDoneEvent(self, event, replay):
306289
event.unit.finished_at = event.frame
307290
else:
308291
self.logger.error(
309-
"Unit {} done at {} [{}] before it was started!".format(
310-
event.unit_id, Length(seconds=event.second), event.frame
311-
)
292+
f"Unit {event.unit_id} done at {Length(seconds=event.second)} [{event.frame}] before it was started!"
312293
)
313294

314295
def handleUnitPositionsEvent(self, event, replay):
@@ -322,9 +303,7 @@ def handleUnitPositionsEvent(self, event, replay):
322303
event.units[unit] = unit.location
323304
else:
324305
self.logger.error(
325-
"Unit at active_unit index {} moved at {} [{}] but it doesn't exist!".format(
326-
unit_index, Length(seconds=event.second), event.frame
327-
)
306+
f"Unit at active_unit index {unit_index} moved at {Length(seconds=event.second)} [{event.frame}] but it doesn't exist!"
328307
)
329308

330309
def load_message_game_player(self, event, replay):
@@ -336,12 +315,7 @@ def load_message_game_player(self, event, replay):
336315
event.player.events.append(event)
337316
elif event.pid != 16:
338317
self.logger.error(
339-
"Bad pid ({}) for event {} at {} [{}].".format(
340-
event.pid,
341-
event.__class__,
342-
Length(seconds=event.second),
343-
event.frame,
344-
)
318+
f"Bad pid ({event.pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]."
345319
)
346320
else:
347321
pass # This is a global event
@@ -352,12 +326,7 @@ def load_message_game_player(self, event, replay):
352326
event.player.events.append(event)
353327
elif event.pid != 16:
354328
self.logger.error(
355-
"Bad pid ({}) for event {} at {} [{}].".format(
356-
event.pid,
357-
event.__class__,
358-
Length(seconds=event.second),
359-
event.frame,
360-
)
329+
f"Bad pid ({event.pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]."
361330
)
362331
else:
363332
pass # This is a global event
@@ -367,36 +336,21 @@ def load_tracker_player(self, event, replay):
367336
event.player = replay.entity[event.pid]
368337
else:
369338
self.logger.error(
370-
"Bad pid ({}) for event {} at {} [{}].".format(
371-
event.pid,
372-
event.__class__,
373-
Length(seconds=event.second),
374-
event.frame,
375-
)
339+
f"Bad pid ({event.pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]."
376340
)
377341

378342
def load_tracker_upkeeper(self, event, replay):
379343
if event.upkeep_pid in replay.entity:
380344
event.unit_upkeeper = replay.entity[event.upkeep_pid]
381345
elif event.upkeep_pid != 0:
382346
self.logger.error(
383-
"Bad upkeep_pid ({}) for event {} at {} [{}].".format(
384-
event.upkeep_pid,
385-
event.__class__,
386-
Length(seconds=event.second),
387-
event.frame,
388-
)
347+
f"Bad upkeep_pid ({event.upkeep_pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]."
389348
)
390349

391350
def load_tracker_controller(self, event, replay):
392351
if event.control_pid in replay.entity:
393352
event.unit_controller = replay.entity[event.control_pid]
394353
elif event.control_pid != 0:
395354
self.logger.error(
396-
"Bad control_pid ({}) for event {} at {} [{}].".format(
397-
event.control_pid,
398-
event.__class__,
399-
Length(seconds=event.second),
400-
event.frame,
401-
)
355+
f"Bad control_pid ({event.control_pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]."
402356
)

sc2reader/engine/plugins/creeptracker.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ def cgu_in_min_to_cgu_units(self, player_id, cgu_in_minutes):
229229
## this function takes index and value of CGU times and returns
230230
## the cgu units with the maximum length
231231
for cgu_per_minute in cgu_in_minutes:
232-
indexes = map(lambda x: x[0], cgu_per_minute)
232+
indexes = (x[0] for x in cgu_per_minute)
233233
cgu_units = list()
234234
for index in indexes:
235235
cgu_units.append(self.creep_gen_units[player_id][index])
@@ -247,16 +247,16 @@ def reduce_cgu_per_minute(self, player_id):
247247
cgu_unit_max_per_minute = self.cgu_in_min_to_cgu_units(
248248
player_id, cgu_per_minute1
249249
)
250-
minutes = map(lambda x: int(x[0][1] // 60) * 60, cgu_per_minute2)
250+
minutes = (int(x[0][1] // 60) * 60 for x in cgu_per_minute2)
251251
self.creep_gen_units[player_id] = list(cgu_unit_max_per_minute)
252252
self.creep_gen_units_times[player_id] = list(minutes)
253253

254254
def get_creep_spread_area(self, player_id):
255255
## iterates through all cgus and and calculate the area
256256
for index, cgu_per_player in enumerate(self.creep_gen_units[player_id]):
257257
# convert cgu list into centre of circles and radius
258-
cgu_radius = map(
259-
lambda x: (x[1], self.unit_name_to_radius[x[2]]), cgu_per_player
258+
cgu_radius = (
259+
(x[1], self.unit_name_to_radius[x[2]]) for x in cgu_per_player
260260
)
261261
# convert event coords to minimap coords
262262
cgu_radius = self.convert_cgu_radius_event_to_map_coord(cgu_radius)
@@ -286,9 +286,9 @@ def cgu_radius_to_map_positions(self, cgu_radius, radius_to_coordinates):
286286
radius = cgu[1]
287287
## subtract all radius_to_coordinates with centre of
288288
## cgu radius to change centre of circle
289-
cgu_map_position = map(
290-
lambda x: (x[0] + point[0], x[1] + point[1]),
291-
self.radius_to_coordinates[radius],
289+
cgu_map_position = (
290+
(x[0] + point[0], x[1] + point[1])
291+
for x in self.radius_to_coordinates[radius]
292292
)
293293
total_points_on_map = total_points_on_map | Set(cgu_map_position)
294294
return total_points_on_map

sc2reader/events/game.py

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ def _str_prefix(self):
3838
if getattr(self, "pid", 16) == 16:
3939
player_name = "Global"
4040
elif self.player and not self.player.name:
41-
player_name = "Player {} - ({})".format(
42-
self.player.pid, self.player.play_race
43-
)
41+
player_name = f"Player {self.player.pid} - ({self.player.play_race})"
4442
elif self.player:
4543
player_name = self.player.name
4644
else:
@@ -244,9 +242,7 @@ def __str__(self):
244242
string += "Right Click"
245243

246244
if self.ability_type == "TargetUnit":
247-
string += "; Target: {} [{:0>8X}]".format(
248-
self.target.name, self.target_unit_id
249-
)
245+
string += f"; Target: {self.target.name} [{self.target_unit_id:0>8X}]"
250246

251247
if self.ability_type in ("TargetPoint", "TargetUnit"):
252248
string += f"; Location: {str(self.location)}"
@@ -643,7 +639,7 @@ def __init__(self, frame, pid, data):
643639
self.yaw = data["yaw"]
644640

645641
def __str__(self):
646-
return self._str_prefix() + "{} at ({}, {})".format(self.name, self.x, self.y)
642+
return self._str_prefix() + f"{self.name} at ({self.x}, {self.y})"
647643

648644

649645
@loggable
@@ -686,13 +682,7 @@ def __init__(self, frame, pid, data):
686682
def __str__(self):
687683
return (
688684
self._str_prefix()
689-
+ " transfer {} minerals, {} gas, {} terrazine, and {} custom to {}".format(
690-
self.minerals,
691-
self.vespene,
692-
self.terrazine,
693-
self.custom_resource,
694-
self.recipient,
695-
)
685+
+ f" transfer {self.minerals} minerals, {self.vespene} gas, {self.terrazine} terrazine, and {self.custom_resource} custom to {self.recipient}"
696686
)
697687

698688

@@ -722,9 +712,7 @@ def __init__(self, frame, pid, data):
722712
def __str__(self):
723713
return (
724714
self._str_prefix()
725-
+ " requests {} minerals, {} gas, {} terrazine, and {} custom".format(
726-
self.minerals, self.vespene, self.terrazine, self.custom_resource
727-
)
715+
+ f" requests {self.minerals} minerals, {self.vespene} gas, {self.terrazine} terrazine, and {self.custom_resource} custom"
728716
)
729717

730718

0 commit comments

Comments
 (0)