From 6b7f782129aaaca780ff4d64109def4bfc1045a9 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 19 Jan 2025 18:06:12 +0100 Subject: [PATCH] Update ruff settings and fix rules C417 and UP032 --- examples/sc2autosave.py | 4 +- generate_build_data.py | 4 +- pyproject.toml | 46 +++++++++------ ruff.toml | 7 --- sc2reader/data/__init__.py | 4 +- sc2reader/engine/plugins/context.py | 74 +++++------------------- sc2reader/engine/plugins/creeptracker.py | 14 ++--- sc2reader/events/game.py | 22 ++----- sc2reader/events/tracker.py | 32 +++++----- sc2reader/factories/plugins/replay.py | 23 ++------ sc2reader/factories/sc2factory.py | 4 +- sc2reader/objects.py | 4 +- sc2reader/readers.py | 12 +--- sc2reader/resources.py | 6 +- sc2reader/scripts/sc2parse.py | 12 +--- sc2reader/scripts/sc2printer.py | 16 +---- sc2reader/utils.py | 2 +- 17 files changed, 91 insertions(+), 195 deletions(-) delete mode 100644 ruff.toml diff --git a/examples/sc2autosave.py b/examples/sc2autosave.py index 3d826680..3364b4a9 100755 --- a/examples/sc2autosave.py +++ b/examples/sc2autosave.py @@ -373,9 +373,7 @@ def reset(args): exit("Cannot reset, destination must be directory: {0}", args.dest) print( - "About to reset directory: {}\nAll files and subdirectories will be removed.".format( - args.dest - ) + f"About to reset directory: {args.dest}\nAll files and subdirectories will be removed." ) choice = raw_input("Proceed anyway? (y/n) ") if choice.lower() == "y": diff --git a/generate_build_data.py b/generate_build_data.py index a13f9807..7419e547 100644 --- a/generate_build_data.py +++ b/generate_build_data.py @@ -103,9 +103,7 @@ def generate_build_data(balance_data_path): if element_ability_index != train_ability_index: train_ability_index = element_ability_index - train_ability_name = "{}Train{}".format( - unit_id, trained_unit_name - ) + train_ability_name = f"{unit_id}Train{trained_unit_name}" abilities[train_ability_index] = train_ability_name if train_ability_name not in ability_lookup: diff --git a/pyproject.toml b/pyproject.toml index b569cad6..e33c1d05 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,9 +13,9 @@ keywords = [ "sc2", "starcraft 2", ] -license = {text = "MIT"} -authors = [{name = "Kevin Leung", email = "kkleung89@gmail.com"}] -requires-python = ">=3.7" +license = { text = "MIT" } +authors = [ { name = "Kevin Leung", email = "kkleung89@gmail.com" } ] +requires-python = ">=3.9" classifiers = [ "Development Status :: 5 - Production/Stable", "Environment :: Console", @@ -25,11 +25,11 @@ classifiers = [ "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Games/Entertainment", @@ -46,27 +46,35 @@ dependencies = [ "mpyq", "pillow", ] -[project.optional-dependencies] -testing = [ +optional-dependencies.testing = [ "pytest", ] -[project.urls] -Homepage = "https://github.com/ggtracker/sc2reader" -[project.scripts] -sc2attributes = "sc2reader.scripts.sc2attributes:main" -sc2json = "sc2reader.scripts.sc2json:main" -sc2parse = "sc2reader.scripts.sc2parse:main" -sc2printer = "sc2reader.scripts.sc2printer:main" -sc2replayer = "sc2reader.scripts.sc2replayer:main" +urls.Homepage = "https://github.com/ggtracker/sc2reader" +scripts.sc2attributes = "sc2reader.scripts.sc2attributes:main" +scripts.sc2json = "sc2reader.scripts.sc2json:main" +scripts.sc2parse = "sc2reader.scripts.sc2parse:main" +scripts.sc2printer = "sc2reader.scripts.sc2printer:main" +scripts.sc2replayer = "sc2reader.scripts.sc2replayer:main" [tool.setuptools] include-package-data = true zip-safe = true -platforms = ["any"] +platforms = [ "any" ] [tool.setuptools.dynamic] -readme = {file = ["README.rst", "CHANGELOG.rst"]} -version = {attr = "sc2reader.__version__"} +readme = { file = [ "README.rst", "CHANGELOG.rst" ] } +version = { attr = "sc2reader.__version__" } [tool.setuptools.packages] -find = {namespaces = false} +find = { namespaces = false } + +[tool.ruff] +line-length = 129 + +lint.ignore = [ + "F401", # module imported but unused; consider using `importlib.util.find_spec` to test for availability + "F403", # Run `removestar` on this codebase + "F405", # Run `removestar` on this codebase + "F841", # Run `ruff --select=F841 --fix .` +] +lint.mccabe.max-complexity = 34 diff --git a/ruff.toml b/ruff.toml deleted file mode 100644 index 57d86cdc..00000000 --- a/ruff.toml +++ /dev/null @@ -1,7 +0,0 @@ -ignore = [ - "F401", # module imported but unused; consider using `importlib.util.find_spec` to test for availability - "F403", # Run `removestar` on this codebase - "F405", # Run `removestar` on this codebase - "F841", # Run `ruff --select=F841 --fix .` -] -line-length=129 diff --git a/sc2reader/data/__init__.py b/sc2reader/data/__init__.py index 10598e02..d97e4885 100755 --- a/sc2reader/data/__init__.py +++ b/sc2reader/data/__init__.py @@ -339,9 +339,7 @@ def change_type(self, unit, new_type, frame): unit.set_type(unit_type, frame) else: self.logger.error( - "Unable to change type of {} to {} [frame {}]; unit type not found in build {}".format( - unit, new_type, frame, self.id - ) + f"Unable to change type of {unit} to {new_type} [frame {frame}]; unit type not found in build {self.id}" ) def add_ability( diff --git a/sc2reader/engine/plugins/context.py b/sc2reader/engine/plugins/context.py index 6b0d05dc..38f8b3d2 100644 --- a/sc2reader/engine/plugins/context.py +++ b/sc2reader/engine/plugins/context.py @@ -43,12 +43,7 @@ def handleCommandEvent(self, event, replay): event.logger.error("\t" + player.__str__()) self.logger.error( - "{}\t{}\tMissing ability {:X} from {}".format( - event.frame, - event.player.name, - event.ability_id, - replay.datapack.__class__.__name__, - ) + f"{event.frame}\t{event.player.name}\tMissing ability {event.ability_id:X} from {replay.datapack.__class__.__name__}" ) else: @@ -197,15 +192,11 @@ def handleUnitDiedEvent(self, event, replay): del replay.active_units[event.unit_id_index] else: self.logger.error( - "Unable to delete unit index {} at {} [{}], index not active.".format( - event.unit_id_index, Length(seconds=event.second), event.frame - ) + f"Unable to delete unit index {event.unit_id_index} at {Length(seconds=event.second)} [{event.frame}], index not active." ) else: self.logger.error( - "Unit {} died at {} [{}] before it was born!".format( - event.unit_id, Length(seconds=event.second), event.frame - ) + f"Unit {event.unit_id} died at {Length(seconds=event.second)} [{event.frame}] before it was born!" ) if event.killing_player_id in replay.player: @@ -215,9 +206,7 @@ def handleUnitDiedEvent(self, event, replay): event.killing_player.killed_units.append(event.unit) elif event.killing_player_id: self.logger.error( - "Unknown killing player id {} at {} [{}]".format( - event.killing_player_id, Length(seconds=event.second), event.frame - ) + f"Unknown killing player id {event.killing_player_id} at {Length(seconds=event.second)} [{event.frame}]" ) if event.killing_unit_id in replay.objects: @@ -227,9 +216,7 @@ def handleUnitDiedEvent(self, event, replay): event.killing_unit.killed_units.append(event.unit) elif event.killing_unit_id: self.logger.error( - "Unknown killing unit id {} at {} [{}]".format( - event.killing_unit_id, Length(seconds=event.second), event.frame - ) + f"Unknown killing unit id {event.killing_unit_id} at {Length(seconds=event.second)} [{event.frame}]" ) def handleUnitOwnerChangeEvent(self, event, replay): @@ -243,9 +230,7 @@ def handleUnitOwnerChangeEvent(self, event, replay): event.unit = replay.objects[event.unit_id] else: self.logger.error( - "Unit {} owner changed at {} [{}] before it was born!".format( - event.unit_id, Length(seconds=event.second), event.frame - ) + f"Unit {event.unit_id} owner changed at {Length(seconds=event.second)} [{event.frame}] before it was born!" ) if event.unit_upkeeper and event.unit: @@ -263,9 +248,7 @@ def handleUnitTypeChangeEvent(self, event, replay): replay.datapack.change_type(event.unit, event.unit_type_name, event.frame) else: self.logger.error( - "Unit {} type changed at {} before it was born!".format( - event.unit_id, Length(seconds=event.second) - ) + f"Unit {event.unit_id} type changed at {Length(seconds=event.second)} before it was born!" ) def handleUpgradeCompleteEvent(self, event, replay): @@ -306,9 +289,7 @@ def handleUnitDoneEvent(self, event, replay): event.unit.finished_at = event.frame else: self.logger.error( - "Unit {} done at {} [{}] before it was started!".format( - event.unit_id, Length(seconds=event.second), event.frame - ) + f"Unit {event.unit_id} done at {Length(seconds=event.second)} [{event.frame}] before it was started!" ) def handleUnitPositionsEvent(self, event, replay): @@ -322,9 +303,7 @@ def handleUnitPositionsEvent(self, event, replay): event.units[unit] = unit.location else: self.logger.error( - "Unit at active_unit index {} moved at {} [{}] but it doesn't exist!".format( - unit_index, Length(seconds=event.second), event.frame - ) + f"Unit at active_unit index {unit_index} moved at {Length(seconds=event.second)} [{event.frame}] but it doesn't exist!" ) def load_message_game_player(self, event, replay): @@ -336,12 +315,7 @@ def load_message_game_player(self, event, replay): event.player.events.append(event) elif event.pid != 16: self.logger.error( - "Bad pid ({}) for event {} at {} [{}].".format( - event.pid, - event.__class__, - Length(seconds=event.second), - event.frame, - ) + f"Bad pid ({event.pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]." ) else: pass # This is a global event @@ -352,12 +326,7 @@ def load_message_game_player(self, event, replay): event.player.events.append(event) elif event.pid != 16: self.logger.error( - "Bad pid ({}) for event {} at {} [{}].".format( - event.pid, - event.__class__, - Length(seconds=event.second), - event.frame, - ) + f"Bad pid ({event.pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]." ) else: pass # This is a global event @@ -367,12 +336,7 @@ def load_tracker_player(self, event, replay): event.player = replay.entity[event.pid] else: self.logger.error( - "Bad pid ({}) for event {} at {} [{}].".format( - event.pid, - event.__class__, - Length(seconds=event.second), - event.frame, - ) + f"Bad pid ({event.pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]." ) def load_tracker_upkeeper(self, event, replay): @@ -380,12 +344,7 @@ def load_tracker_upkeeper(self, event, replay): event.unit_upkeeper = replay.entity[event.upkeep_pid] elif event.upkeep_pid != 0: self.logger.error( - "Bad upkeep_pid ({}) for event {} at {} [{}].".format( - event.upkeep_pid, - event.__class__, - Length(seconds=event.second), - event.frame, - ) + f"Bad upkeep_pid ({event.upkeep_pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]." ) def load_tracker_controller(self, event, replay): @@ -393,10 +352,5 @@ def load_tracker_controller(self, event, replay): event.unit_controller = replay.entity[event.control_pid] elif event.control_pid != 0: self.logger.error( - "Bad control_pid ({}) for event {} at {} [{}].".format( - event.control_pid, - event.__class__, - Length(seconds=event.second), - event.frame, - ) + f"Bad control_pid ({event.control_pid}) for event {event.__class__} at {Length(seconds=event.second)} [{event.frame}]." ) diff --git a/sc2reader/engine/plugins/creeptracker.py b/sc2reader/engine/plugins/creeptracker.py index d947c42a..7125924d 100644 --- a/sc2reader/engine/plugins/creeptracker.py +++ b/sc2reader/engine/plugins/creeptracker.py @@ -229,7 +229,7 @@ def cgu_in_min_to_cgu_units(self, player_id, cgu_in_minutes): ## this function takes index and value of CGU times and returns ## the cgu units with the maximum length for cgu_per_minute in cgu_in_minutes: - indexes = map(lambda x: x[0], cgu_per_minute) + indexes = (x[0] for x in cgu_per_minute) cgu_units = list() for index in indexes: cgu_units.append(self.creep_gen_units[player_id][index]) @@ -247,7 +247,7 @@ def reduce_cgu_per_minute(self, player_id): cgu_unit_max_per_minute = self.cgu_in_min_to_cgu_units( player_id, cgu_per_minute1 ) - minutes = map(lambda x: int(x[0][1] // 60) * 60, cgu_per_minute2) + minutes = (int(x[0][1] // 60) * 60 for x in cgu_per_minute2) self.creep_gen_units[player_id] = list(cgu_unit_max_per_minute) self.creep_gen_units_times[player_id] = list(minutes) @@ -255,8 +255,8 @@ def get_creep_spread_area(self, player_id): ## iterates through all cgus and and calculate the area for index, cgu_per_player in enumerate(self.creep_gen_units[player_id]): # convert cgu list into centre of circles and radius - cgu_radius = map( - lambda x: (x[1], self.unit_name_to_radius[x[2]]), cgu_per_player + cgu_radius = ( + (x[1], self.unit_name_to_radius[x[2]]) for x in cgu_per_player ) # convert event coords to minimap coords 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): radius = cgu[1] ## subtract all radius_to_coordinates with centre of ## cgu radius to change centre of circle - cgu_map_position = map( - lambda x: (x[0] + point[0], x[1] + point[1]), - self.radius_to_coordinates[radius], + cgu_map_position = ( + (x[0] + point[0], x[1] + point[1]) + for x in self.radius_to_coordinates[radius] ) total_points_on_map = total_points_on_map | Set(cgu_map_position) return total_points_on_map diff --git a/sc2reader/events/game.py b/sc2reader/events/game.py index 008f6ef9..0da9afa2 100644 --- a/sc2reader/events/game.py +++ b/sc2reader/events/game.py @@ -38,9 +38,7 @@ def _str_prefix(self): if getattr(self, "pid", 16) == 16: player_name = "Global" elif self.player and not self.player.name: - player_name = "Player {} - ({})".format( - self.player.pid, self.player.play_race - ) + player_name = f"Player {self.player.pid} - ({self.player.play_race})" elif self.player: player_name = self.player.name else: @@ -244,9 +242,7 @@ def __str__(self): string += "Right Click" if self.ability_type == "TargetUnit": - string += "; Target: {} [{:0>8X}]".format( - self.target.name, self.target_unit_id - ) + string += f"; Target: {self.target.name} [{self.target_unit_id:0>8X}]" if self.ability_type in ("TargetPoint", "TargetUnit"): string += f"; Location: {str(self.location)}" @@ -643,7 +639,7 @@ def __init__(self, frame, pid, data): self.yaw = data["yaw"] def __str__(self): - return self._str_prefix() + "{} at ({}, {})".format(self.name, self.x, self.y) + return self._str_prefix() + f"{self.name} at ({self.x}, {self.y})" @loggable @@ -686,13 +682,7 @@ def __init__(self, frame, pid, data): def __str__(self): return ( self._str_prefix() - + " transfer {} minerals, {} gas, {} terrazine, and {} custom to {}".format( - self.minerals, - self.vespene, - self.terrazine, - self.custom_resource, - self.recipient, - ) + + f" transfer {self.minerals} minerals, {self.vespene} gas, {self.terrazine} terrazine, and {self.custom_resource} custom to {self.recipient}" ) @@ -722,9 +712,7 @@ def __init__(self, frame, pid, data): def __str__(self): return ( self._str_prefix() - + " requests {} minerals, {} gas, {} terrazine, and {} custom".format( - self.minerals, self.vespene, self.terrazine, self.custom_resource - ) + + f" requests {self.minerals} minerals, {self.vespene} gas, {self.terrazine} terrazine, and {self.custom_resource} custom" ) diff --git a/sc2reader/events/tracker.py b/sc2reader/events/tracker.py index 7355ef35..8e0c6772 100644 --- a/sc2reader/events/tracker.py +++ b/sc2reader/events/tracker.py @@ -334,8 +334,9 @@ def __init__(self, frames, data, build): self.location = (self.x, self.y) def __str__(self): - return self._str_prefix() + "{: >15} - Unit born {}".format( - str(self.unit_upkeeper), self.unit + return ( + self._str_prefix() + + f"{str(self.unit_upkeeper): >15} - Unit born {self.unit}" ) @@ -409,8 +410,8 @@ def __init__(self, frames, data, build): ) def __str__(self): - return self._str_prefix() + "{: >15} - Unit died {}.".format( - str(self.unit.owner), self.unit + return ( + self._str_prefix() + f"{str(self.unit.owner): >15} - Unit died {self.unit}." ) @@ -448,9 +449,7 @@ def __init__(self, frames, data, build): self.unit_controller = None def __str__(self): - return self._str_prefix() + "{: >15} took {}".format( - str(self.unit_upkeeper), self.unit - ) + return self._str_prefix() + f"{str(self.unit_upkeeper): >15} took {self.unit}" class UnitTypeChangeEvent(TrackerEvent): @@ -479,8 +478,9 @@ def __init__(self, frames, data, build): self.unit_type_name = data[2].decode("utf8") def __str__(self): - return self._str_prefix() + "{: >15} - Unit {} type changed to {}".format( - str(self.unit.owner), self.unit, self.unit_type_name + return ( + self._str_prefix() + + f"{str(self.unit.owner): >15} - Unit {self.unit} type changed to {self.unit_type_name}" ) @@ -505,8 +505,9 @@ def __init__(self, frames, data, build): self.count = data[2] def __str__(self): - return self._str_prefix() + "{: >15} - {} upgrade completed".format( - str(self.player), self.upgrade_type_name + return ( + self._str_prefix() + + f"{str(self.player): >15} - {self.upgrade_type_name} upgrade completed" ) @@ -564,8 +565,9 @@ def __init__(self, frames, data, build): self.location = (self.x, self.y) def __str__(self): - return self._str_prefix() + "{: >15} - Unit initiated {}".format( - str(self.unit_upkeeper), self.unit + return ( + self._str_prefix() + + f"{str(self.unit_upkeeper): >15} - Unit initiated {self.unit}" ) @@ -591,8 +593,8 @@ def __init__(self, frames, data, build): self.unit = None def __str__(self): - return self._str_prefix() + "{: >15} - Unit {} done".format( - str(self.unit.owner), self.unit + return ( + self._str_prefix() + f"{str(self.unit.owner): >15} - Unit {self.unit} done" ) diff --git a/sc2reader/factories/plugins/replay.py b/sc2reader/factories/plugins/replay.py index ff5986eb..724a51e3 100644 --- a/sc2reader/factories/plugins/replay.py +++ b/sc2reader/factories/plugins/replay.py @@ -155,12 +155,7 @@ def SelectionTracker(replay): selections[event.control_group] = control_group if debug: logger.info( - "[{}] {} selected {} units: {}".format( - Length(seconds=event.second), - person.name, - len(selections[0x0A].objects), - selections[0x0A], - ) + f"[{Length(seconds=event.second)}] {person.name} selected {len(selections[0x0A].objects)} units: {selections[0x0A]}" ) elif event.name == "SetControlGroupEvent": @@ -168,9 +163,7 @@ def SelectionTracker(replay): selections[event.control_group] = selections[0x0A].copy() if debug: logger.info( - "[{}] {} set hotkey {} to current selection".format( - Length(seconds=event.second), person.name, event.hotkey - ) + f"[{Length(seconds=event.second)}] {person.name} set hotkey {event.hotkey} to current selection" ) elif event.name == "AddToControlGroupEvent": @@ -181,9 +174,7 @@ def SelectionTracker(replay): selections[event.control_group] = control_group if debug: logger.info( - "[{}] {} added current selection to hotkey {}".format( - Length(seconds=event.second), person.name, event.hotkey - ) + f"[{Length(seconds=event.second)}] {person.name} added current selection to hotkey {event.hotkey}" ) elif event.name == "GetControlGroupEvent": @@ -193,13 +184,7 @@ def SelectionTracker(replay): selections[0xA] = control_group if debug: logger.info( - "[{}] {} retrieved hotkey {}, {} units: {}".format( - Length(seconds=event.second), - person.name, - event.control_group, - len(selections[0x0A].objects), - selections[0x0A], - ) + f"[{Length(seconds=event.second)}] {person.name} retrieved hotkey {event.control_group}, {len(selections[0x0A].objects)} units: {selections[0x0A]}" ) else: diff --git a/sc2reader/factories/sc2factory.py b/sc2reader/factories/sc2factory.py index c5298eb3..40de1c7f 100644 --- a/sc2reader/factories/sc2factory.py +++ b/sc2reader/factories/sc2factory.py @@ -293,9 +293,7 @@ def __init__(self, cache_dir, **options): ) elif not os.access(self.cache_dir, os.F_OK | os.W_OK | os.R_OK): raise ValueError( - "Must have read/write access to {} for local file caching.".format( - self.cache_dir - ) + f"Must have read/write access to {self.cache_dir} for local file caching." ) def cache_has(self, cache_key): diff --git a/sc2reader/objects.py b/sc2reader/objects.py index 10dbc755..03632dee 100644 --- a/sc2reader/objects.py +++ b/sc2reader/objects.py @@ -438,9 +438,7 @@ def __init__(self, pid): def __str__(self): if not self.is_ai: - return "User {}-S2-{}-{}".format( - self.region.upper(), self.subregion, self.bnetid - ) + return f"User {self.region.upper()}-S2-{self.subregion}-{self.bnetid}" else: return f"AI ({self.play_race})" diff --git a/sc2reader/readers.py b/sc2reader/readers.py index 0dbacce4..c74c7c89 100644 --- a/sc2reader/readers.py +++ b/sc2reader/readers.py @@ -601,9 +601,7 @@ def __call__(self, data, replay): # Otherwise throw a read error else: raise ReadError( - "Event type {} unknown at position {}.".format( - hex(event_type), hex(event_start) - ), + f"Event type {hex(event_type)} unknown at position {hex(event_start)}.", event_type, event_start, replay, @@ -617,9 +615,7 @@ def __call__(self, data, replay): return game_events except ParseError as e: raise ReadError( - "Parse error '{}' unknown at position {}.".format( - e.msg, hex(event_start) - ), + f"Parse error '{e.msg}' unknown at position {hex(event_start)}.", event_type, event_start, replay, @@ -628,9 +624,7 @@ def __call__(self, data, replay): ) except EOFError as e: raise ReadError( - "EOFError error '{}' unknown at position {}.".format( - e.msg, hex(event_start) - ), + f"EOFError error '{e.msg}' unknown at position {hex(event_start)}.", event_type, event_start, replay, diff --git a/sc2reader/resources.py b/sc2reader/resources.py index d42ceea2..388f1765 100644 --- a/sc2reader/resources.py +++ b/sc2reader/resources.py @@ -578,7 +578,7 @@ def get_team(team_id): # Pretty sure this just never worked, forget about it for now self.recorder = None - entity_names = sorted(map(lambda p: p.name, self.entities)) + entity_names = sorted((p.name for p in self.entities)) hash_input = self.region + ":" + ",".join(entity_names) self.people_hash = hashlib.sha256(hash_input.encode("utf8")).hexdigest() @@ -884,9 +884,7 @@ def _get_reader(self, data_file): return reader else: raise ValueError( - "Valid {} reader could not found for build {}".format( - data_file, self.build - ) + f"Valid {data_file} reader could not found for build {self.build}" ) def _get_datapack(self): diff --git a/sc2reader/scripts/sc2parse.py b/sc2reader/scripts/sc2parse.py index 22f792a4..4b517908 100755 --- a/sc2reader/scripts/sc2parse.py +++ b/sc2reader/scripts/sc2parse.py @@ -71,9 +71,7 @@ def main(): } if human_pids != event_pids: print( - "Event Pid problem! pids={pids} but event pids={event_pids}".format( - pids=human_pids, event_pids=event_pids - ) + f"Event Pid problem! pids={human_pids} but event pids={event_pids}" ) print( " with {path}: {build} - {real_type} on {map_name} - Played {start_time}".format( @@ -82,9 +80,7 @@ def main(): ) elif player_pids != ability_pids: print( - "Ability Pid problem! pids={pids} but event pids={event_pids}".format( - pids=player_pids, event_pids=ability_pids - ) + f"Ability Pid problem! pids={player_pids} but event pids={ability_pids}" ) print( " with {path}: {build} - {real_type} on {map_name} - Played {start_time}".format( @@ -98,9 +94,7 @@ def main(): ) ) print( - "Units were: {units}".format( - units={obj.name for obj in replay.objects.values()} - ) + f"Units were: {({obj.name for obj in replay.objects.values()})}" ) except sc2reader.exceptions.ReadError as e: diff --git a/sc2reader/scripts/sc2printer.py b/sc2reader/scripts/sc2printer.py index 634aff53..76241a05 100755 --- a/sc2reader/scripts/sc2printer.py +++ b/sc2reader/scripts/sc2printer.py @@ -24,16 +24,10 @@ def printReplay(filepath, arguments): print(" Teams: {}".format("v".join(lineups))) for team in replay.teams: print( - " Team {}\t{} ({})".format( - team.number, team.players[0].name, team.players[0].pick_race[0] - ) + f" Team {team.number}\t{team.players[0].name} ({team.players[0].pick_race[0]})" ) for player in team.players[1:]: - print( - " \t{} ({})".format( - player.name, player.pick_race[0] - ) - ) + print(f" \t{player.name} ({player.pick_race[0]})") if arguments.observers: print(" Observers:") for observer in replay.observers: @@ -51,11 +45,7 @@ def printReplay(filepath, arguments): raise return prev = e.game_events[-1] - print( - "\nVersion {} replay:\n\t{}".format( - e.replay.release_string, e.replay.filepath - ) - ) + print(f"\nVersion {e.replay.release_string} replay:\n\t{e.replay.filepath}") print(f"\t{e.msg}, Type={e.type:X}") print(f"\tPrevious Event: {prev.name}") print("\t\t" + prev.bytes.encode("hex")) diff --git a/sc2reader/utils.py b/sc2reader/utils.py index dae65a9d..7b638d3f 100644 --- a/sc2reader/utils.py +++ b/sc2reader/utils.py @@ -93,7 +93,7 @@ def hex(self): """ The hexadecimal representation of the color """ - return "{0.r:02X}{0.g:02X}{0.b:02X}".format(self) + return f"{self.r:02X}{self.g:02X}{self.b:02X}" def __str__(self): return self.name