diff --git a/docs_source/conf.py b/docs_source/conf.py index 809f3c1..0a50fa9 100644 --- a/docs_source/conf.py +++ b/docs_source/conf.py @@ -17,9 +17,9 @@ # -- Project information ----------------------------------------------------- -project = 'lihzahrd' -copyright = '2020, Stefano Pigozzi' -author = 'Stefano Pigozzi' +project = "lihzahrd" +copyright = "2020, Stefano Pigozzi" +author = "Stefano Pigozzi" # -- General configuration --------------------------------------------------- @@ -39,16 +39,16 @@ def skip(app, what, name: str, obj, would_skip, options): def setup(app): - app.add_stylesheet('lihzahrd.css') + app.add_stylesheet("lihzahrd.css") # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ["_templates"] # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. # This pattern also affects html_static_path and html_extra_path. -exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] # -- Options for HTML output ------------------------------------------------- @@ -56,9 +56,9 @@ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. # -html_theme = 'sphinx_rtd_theme' +html_theme = "sphinx_rtd_theme" # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] +html_static_path = ["_static"] diff --git a/lihzahrd/bestiary/bestiary.py b/lihzahrd/bestiary/bestiary.py index b083d70..946af43 100755 --- a/lihzahrd/bestiary/bestiary.py +++ b/lihzahrd/bestiary/bestiary.py @@ -7,10 +7,7 @@ class Bestiary: __slots__ = "chats", "kills", "sightings" - def __init__(self, - chats: List[EntityType], - kills: Dict[EntityType, int], - sightings: List[EntityType]): + def __init__(self, chats: List[EntityType], kills: Dict[EntityType, int], sightings: List[EntityType]): self.chats: List[EntityType] = chats self.kills: Dict[EntityType, int] = kills self.sightings: List[EntityType] = sightings diff --git a/lihzahrd/chests/chest.py b/lihzahrd/chests/chest.py index 67a9060..37bd5d5 100644 --- a/lihzahrd/chests/chest.py +++ b/lihzahrd/chests/chest.py @@ -14,5 +14,7 @@ class Chest: self.contents: typing.List[ItemStack] = contents def __repr__(self): - return f'' + return ( + f'" + ) diff --git a/lihzahrd/enums/blocktype.py b/lihzahrd/enums/blocktype.py index 721036c..e829452 100644 --- a/lihzahrd/enums/blocktype.py +++ b/lihzahrd/enums/blocktype.py @@ -5,6 +5,7 @@ class BlockType(enum.IntEnum): """All possible block types. Data from https://github.com/tModLoader/tModLoader/wiki/Vanilla-Tile-IDs.""" + DIRT = 0 STONE = 1 GRASS = 2 diff --git a/lihzahrd/enums/entitytype.py b/lihzahrd/enums/entitytype.py index 3dc68b6..1b36458 100644 --- a/lihzahrd/enums/entitytype.py +++ b/lihzahrd/enums/entitytype.py @@ -3,6 +3,7 @@ import enum class EntityType(enum.IntEnum): """An enumeration of all Terraria entities.""" + # https://terraria.gamepedia.com/NPC_IDs # Obtained from this wiki page with the following regex and adding BestiaryGirl = 633 manually # ^([0-9-]+)\s+[A-Za-z0-9()\s.,\-']+?\.(?:png|gif)\s+([A-Za-z0-9]+)$ @@ -736,4 +737,4 @@ class EntityType(enum.IntEnum): GoldenSlime = 667 def __repr__(self): - return f"{self.__class__.__name__}.{self.name}" \ No newline at end of file + return f"{self.__class__.__name__}.{self.name}" diff --git a/lihzahrd/enums/itemtype.py b/lihzahrd/enums/itemtype.py index 904013a..b489247 100644 --- a/lihzahrd/enums/itemtype.py +++ b/lihzahrd/enums/itemtype.py @@ -5,6 +5,7 @@ class ItemType(enum.IntEnum): """List of all available Terraria item types. From https://github.com/tModLoader/tModLoader/wiki/Vanilla-Item-IDs .""" + YELLOW_PHASESABER_OLD = -24 WHITE_PHASESABER_OLD = -23 PURPLE_PHASESABER_OLD = -22 diff --git a/lihzahrd/enums/liquidtype.py b/lihzahrd/enums/liquidtype.py index 6481955..432729e 100644 --- a/lihzahrd/enums/liquidtype.py +++ b/lihzahrd/enums/liquidtype.py @@ -4,6 +4,7 @@ import functools class LiquidType(enum.IntEnum): """All possible types of liquids.""" + NO_LIQUID = 0 WATER = 1 LAVA = 2 diff --git a/lihzahrd/enums/walltype.py b/lihzahrd/enums/walltype.py index 9cc63d2..c2a4029 100644 --- a/lihzahrd/enums/walltype.py +++ b/lihzahrd/enums/walltype.py @@ -5,6 +5,7 @@ class WallType(enum.IntEnum): """All possible wall types. Data from https://github.com/tModLoader/tModLoader/wiki/Vanilla-Wall-IDs.""" + STONE = 1 DIRT_UNSAFE = 2 EBONSTONE_UNSAFE = 3 diff --git a/lihzahrd/fileutils/coordinates.py b/lihzahrd/fileutils/coordinates.py index 3820ee4..c4d708b 100644 --- a/lihzahrd/fileutils/coordinates.py +++ b/lihzahrd/fileutils/coordinates.py @@ -2,6 +2,7 @@ class Coordinates: __slots__ = "x", "y" """A pair of coordinates.""" + def __init__(self, x, y): self.x = x self.y = y diff --git a/lihzahrd/fileutils/filereader.py b/lihzahrd/fileutils/filereader.py index 7d5f621..81b407a 100644 --- a/lihzahrd/fileutils/filereader.py +++ b/lihzahrd/fileutils/filereader.py @@ -7,7 +7,7 @@ from .rect import Rect class FileReader: - __slots__ = "file", + __slots__ = ("file",) def __init__(self, file: typing.IO): self.file: typing.IO = file @@ -48,14 +48,16 @@ class FileReader: @staticmethod @functools.lru_cache(256) def _bitify(data) -> typing.Tuple[bool, bool, bool, bool, bool, bool, bool, bool]: - return (bool(data & 0b0000_0001), - bool(data & 0b0000_0010), - bool(data & 0b0000_0100), - bool(data & 0b0000_1000), - bool(data & 0b0001_0000), - bool(data & 0b0010_0000), - bool(data & 0b0100_0000), - bool(data & 0b1000_0000)) + return ( + bool(data & 0b0000_0001), + bool(data & 0b0000_0010), + bool(data & 0b0000_0100), + bool(data & 0b0000_1000), + bool(data & 0b0001_0000), + bool(data & 0b0010_0000), + bool(data & 0b0100_0000), + bool(data & 0b1000_0000), + ) def bits(self) -> typing.Tuple[bool, bool, bool, bool, bool, bool, bool, bool]: data = struct.unpack("B", self.file.read(1))[0] diff --git a/lihzahrd/fileutils/pointers.py b/lihzahrd/fileutils/pointers.py index 3448b52..402495c 100644 --- a/lihzahrd/fileutils/pointers.py +++ b/lihzahrd/fileutils/pointers.py @@ -18,19 +18,21 @@ class Pointers: "unknown", ) - def __init__(self, - world_header: int, - world_tiles: int, - chests: int, - signs: int, - npcs: int, - tile_entities: int, - pressure_plates: int, - town_manager: int, - bestiary: int, - journey_powers: int, - footer: int, - *unknown): + def __init__( + self, + world_header: int, + world_tiles: int, + chests: int, + signs: int, + npcs: int, + tile_entities: int, + pressure_plates: int, + town_manager: int, + bestiary: int, + journey_powers: int, + footer: int, + *unknown, + ): self.file_format: int = 0 self.world_header: int = world_header self.world_tiles: int = world_tiles diff --git a/lihzahrd/header/backgrounds.py b/lihzahrd/header/backgrounds.py index 2872038..4de6100 100644 --- a/lihzahrd/header/backgrounds.py +++ b/lihzahrd/header/backgrounds.py @@ -1,22 +1,25 @@ class Backgrounds: """The backgrounds of various world biomes.""" - def __init__(self, - bg_underground_snow: int, - bg_underground_jungle: int, - bg_hell: int, - bg_forest: int, - bg_corruption: int, - bg_jungle: int, - bg_snow: int, - bg_hallow: int, - bg_crimson: int, - bg_desert: int, - bg_ocean: int, - new_bg_1: int, - new_bg_2: int, - new_bg_3: int, - new_bg_4: int, - new_bg_5: int,): + + def __init__( + self, + bg_underground_snow: int, + bg_underground_jungle: int, + bg_hell: int, + bg_forest: int, + bg_corruption: int, + bg_jungle: int, + bg_snow: int, + bg_hallow: int, + bg_crimson: int, + bg_desert: int, + bg_ocean: int, + new_bg_1: int, + new_bg_2: int, + new_bg_3: int, + new_bg_4: int, + new_bg_5: int, + ): self.bg_underground_snow: int = bg_underground_snow self.bg_underground_jungle: int = bg_underground_jungle self.bg_hell: int = bg_hell @@ -35,7 +38,9 @@ class Backgrounds: self.new_bg_5: int = new_bg_5 def __repr__(self): - return f"WorldBackgrounds({self.bg_underground_snow}, {self.bg_underground_jungle}, {self.bg_hell}," \ - f" {self.bg_forest}, {self.bg_corruption}, {self.bg_jungle}, {self.bg_snow}, {self.bg_hallow}," \ - f" {self.bg_crimson}, {self.bg_desert}, {self.bg_ocean}," \ - f" {self.new_bg_1}, {self.new_bg_2}, {self.new_bg_3}, {self.new_bg_4}, {self.new_bg_5})" + return ( + f"WorldBackgrounds({self.bg_underground_snow}, {self.bg_underground_jungle}, {self.bg_hell}," + f" {self.bg_forest}, {self.bg_corruption}, {self.bg_jungle}, {self.bg_snow}, {self.bg_hallow}," + f" {self.bg_crimson}, {self.bg_desert}, {self.bg_ocean}," + f" {self.new_bg_1}, {self.new_bg_2}, {self.new_bg_3}, {self.new_bg_4}, {self.new_bg_5})" + ) diff --git a/lihzahrd/header/bossesdefeated.py b/lihzahrd/header/bossesdefeated.py index 28fa95c..f394882 100644 --- a/lihzahrd/header/bossesdefeated.py +++ b/lihzahrd/header/bossesdefeated.py @@ -3,35 +3,37 @@ from .oldonesarmytiers import OldOnesArmyTiers class BossesDefeated: - def __init__(self, - eye_of_cthulhu: bool, - eater_of_worlds: bool, - skeletron: bool, - queen_bee: bool, - the_twins: bool, - the_destroyer: bool, - skeletron_prime: bool, - any_mechnical_boss: bool, - plantera: bool, - golem: bool, - king_slime: bool, - goblin_army: bool, - clown: bool, - frost_moon: bool, - pirates: bool, - duke_fishron: bool, - moon_lord: bool, - pumpking: bool, - mourning_wood: bool, - ice_queen: bool, - santa_nk1: bool, - everscream: bool, - martian_madness: bool, - lunatic_cultist: bool, - lunar_pillars: PillarsInfo, - old_ones_army: OldOnesArmyTiers, - empress_of_light: bool, - queen_slime: bool): + def __init__( + self, + eye_of_cthulhu: bool, + eater_of_worlds: bool, + skeletron: bool, + queen_bee: bool, + the_twins: bool, + the_destroyer: bool, + skeletron_prime: bool, + any_mechnical_boss: bool, + plantera: bool, + golem: bool, + king_slime: bool, + goblin_army: bool, + clown: bool, + frost_moon: bool, + pirates: bool, + duke_fishron: bool, + moon_lord: bool, + pumpking: bool, + mourning_wood: bool, + ice_queen: bool, + santa_nk1: bool, + everscream: bool, + martian_madness: bool, + lunatic_cultist: bool, + lunar_pillars: PillarsInfo, + old_ones_army: OldOnesArmyTiers, + empress_of_light: bool, + queen_slime: bool, + ): self.eye_of_cthulhu: bool = eye_of_cthulhu self.eater_of_worlds: bool = eater_of_worlds self.skeletron: bool = skeletron diff --git a/lihzahrd/header/clouds.py b/lihzahrd/header/clouds.py index aeaf806..4c3aac5 100644 --- a/lihzahrd/header/clouds.py +++ b/lihzahrd/header/clouds.py @@ -1,5 +1,6 @@ class Clouds: """Information about... the clouds in the world?""" + def __init__(self, bg_cloud: int, cloud_number: int, wind_speed: float): self.bg_cloud: int = bg_cloud self.cloud_number: int = cloud_number diff --git a/lihzahrd/header/events.py b/lihzahrd/header/events.py index a1fd289..84fa0e2 100644 --- a/lihzahrd/header/events.py +++ b/lihzahrd/header/events.py @@ -5,18 +5,22 @@ from .sandstorm import Sandstorm from .lunarevents import LunarEvents from .lanternnight import LanternNight + class Events: """Information about the ongoing world events.""" - def __init__(self, - blood_moon: bool, - solar_eclipse: bool, - invasion: Invasion, - slime_rain: float, - rain: Rain, - party: Party, - sandstorm: Sandstorm, - lunar_events: LunarEvents, - lantern_night: LanternNight): + + def __init__( + self, + blood_moon: bool, + solar_eclipse: bool, + invasion: Invasion, + slime_rain: float, + rain: Rain, + party: Party, + sandstorm: Sandstorm, + lunar_events: LunarEvents, + lantern_night: LanternNight, + ): self.blood_moon: bool = blood_moon """If the current moon is a Blood Moon.""" diff --git a/lihzahrd/header/fourpartsplit.py b/lihzahrd/header/fourpartsplit.py index b4c548a..091d321 100644 --- a/lihzahrd/header/fourpartsplit.py +++ b/lihzahrd/header/fourpartsplit.py @@ -59,4 +59,4 @@ class FourPartSplit: @far_right.setter def far_right(self, value): - self.properties[2] = value \ No newline at end of file + self.properties[2] = value diff --git a/lihzahrd/header/invasion.py b/lihzahrd/header/invasion.py index c07edd8..15e88a0 100644 --- a/lihzahrd/header/invasion.py +++ b/lihzahrd/header/invasion.py @@ -4,11 +4,7 @@ from .invasiontype import InvasionType class Invasion: """Invasions (goblin army, pirates, martian madness...) related information.""" - def __init__(self, delay: int, - size: int, - type_: InvasionType, - position: float, - size_start: int): + def __init__(self, delay: int, size: int, type_: InvasionType, position: float, size_start: int): self.delay: int = delay self.size: int = size @@ -21,5 +17,7 @@ class Invasion: self.size_start: int = size_start def __repr__(self): - return f"WorldInvasion(delay={self.delay}, size={self.size}, type_={self.type}, position={self.position}," \ - f" size_start={self.size_start})" + return ( + f"WorldInvasion(delay={self.delay}, size={self.size}, type_={self.type}, position={self.position}," + f" size_start={self.size_start})" + ) diff --git a/lihzahrd/header/lanternnight.py b/lihzahrd/header/lanternnight.py index beea50f..ec4f147 100644 --- a/lihzahrd/header/lanternnight.py +++ b/lihzahrd/header/lanternnight.py @@ -3,11 +3,8 @@ import typing class LanternNight: """Lantern Night event related information.""" - def __init__(self, - nights_on_cooldown: int, - genuine: bool, - manual: bool, - next_night_is_lantern_night: bool): + + def __init__(self, nights_on_cooldown: int, genuine: bool, manual: bool, next_night_is_lantern_night: bool): self.nights_on_cooldown: int = nights_on_cooldown """How many nights before the next lantern night can happen.""" @@ -21,8 +18,10 @@ class LanternNight: """Was a boss just defeated, making the next night a Lantern Night?""" def __repr__(self): - return f"WorldLanternNight(nights_on_cooldown={self.nights_on_cooldown}," \ - f" genuine={self.genuine}, manual={self.manual}, nights_on_cooldown={self.nights_on_cooldown})" + return ( + f"WorldLanternNight(nights_on_cooldown={self.nights_on_cooldown}," + f" genuine={self.genuine}, manual={self.manual}, nights_on_cooldown={self.nights_on_cooldown})" + ) @property def is_active(self): diff --git a/lihzahrd/header/lunarevents.py b/lihzahrd/header/lunarevents.py index 6b63bae..42c12cd 100644 --- a/lihzahrd/header/lunarevents.py +++ b/lihzahrd/header/lunarevents.py @@ -3,9 +3,8 @@ from .pillarsinfo import PillarsInfo class LunarEvents: """Lunar Events (Lunar Pillars) related information.""" - def __init__(self, - are_active: bool, - pillars_present: PillarsInfo): + + def __init__(self, are_active: bool, pillars_present: PillarsInfo): self.are_active: bool = are_active """If the Lunar Events are active or not.""" diff --git a/lihzahrd/header/moonstyle.py b/lihzahrd/header/moonstyle.py index edaa8c3..228e24a 100644 --- a/lihzahrd/header/moonstyle.py +++ b/lihzahrd/header/moonstyle.py @@ -3,6 +3,7 @@ import enum class MoonStyle(enum.IntEnum): """All possible moon styles.""" + WHITE = 0 ORANGE = 1 RINGED_GREEN = 2 @@ -13,6 +14,5 @@ class MoonStyle(enum.IntEnum): PINK_ORANGE = 7 TRIPLE_PURPLE = 8 - def __repr__(self): return f"{self.__class__.__name__}.{self.name}" diff --git a/lihzahrd/header/party.py b/lihzahrd/header/party.py index 7577b96..0465417 100644 --- a/lihzahrd/header/party.py +++ b/lihzahrd/header/party.py @@ -3,11 +3,10 @@ import typing class Party: """NPC Party related information.""" - def __init__(self, - thrown_by_party_center: bool, - thrown_by_npcs: bool, - cooldown: int, - partying_npcs: typing.List[int]): + + def __init__( + self, thrown_by_party_center: bool, thrown_by_npcs: bool, cooldown: int, partying_npcs: typing.List[int] + ): self.thrown_by_party_center: bool = thrown_by_party_center """If the party was started by right-clicking a Party Center.""" @@ -21,8 +20,10 @@ class Party: """The list of NPC IDs that threw the party.""" def __repr__(self): - return f"WorldParty(thrown_by_party_center={self.thrown_by_party_center}," \ - f" thrown_by_npcs={self.thrown_by_npcs}, cooldown={self.cooldown}, partying_npcs={self.partying_npcs})" + return ( + f"WorldParty(thrown_by_party_center={self.thrown_by_party_center}," + f" thrown_by_npcs={self.thrown_by_npcs}, cooldown={self.cooldown}, partying_npcs={self.partying_npcs})" + ) @property def is_active(self): diff --git a/lihzahrd/header/pets.py b/lihzahrd/header/pets.py index 3aabe53..5028625 100755 --- a/lihzahrd/header/pets.py +++ b/lihzahrd/header/pets.py @@ -4,10 +4,7 @@ import typing class Pets: """Information about the Pet Licenses that were activated in the world.""" - def __init__(self, - cat: bool, - dog: bool, - bunny: bool): + def __init__(self, cat: bool, dog: bool, bunny: bool): self.cat: bool = cat """Was the Cat License (https://terraria.gamepedia.com/Cat_License) ever activated?""" diff --git a/lihzahrd/header/pillarsinfo.py b/lihzahrd/header/pillarsinfo.py index 87f5781..93c5dd4 100644 --- a/lihzahrd/header/pillarsinfo.py +++ b/lihzahrd/header/pillarsinfo.py @@ -1,5 +1,6 @@ class PillarsInfo: """A container for information associated with the Lunar Pillars.""" + def __init__(self, solar, vortex, nebula, stardust): self.solar = solar self.vortex = vortex diff --git a/lihzahrd/header/rain.py b/lihzahrd/header/rain.py index dc659d5..2319aa2 100644 --- a/lihzahrd/header/rain.py +++ b/lihzahrd/header/rain.py @@ -1,5 +1,6 @@ class Rain: """Rain related information.""" + def __init__(self, is_active: bool, time_left: int, max_rain: float): self.is_active: bool = is_active """If it is currently raining in the world.""" diff --git a/lihzahrd/header/sandstorm.py b/lihzahrd/header/sandstorm.py index f43403b..8d0df98 100644 --- a/lihzahrd/header/sandstorm.py +++ b/lihzahrd/header/sandstorm.py @@ -1,10 +1,7 @@ class Sandstorm: """Sandstorm related information.""" - def __init__(self, - is_active: bool, - time_left: int, - severity: float, - intended_severity: float): + + def __init__(self, is_active: bool, time_left: int, severity: float, intended_severity: float): self.is_active: bool = is_active """If a sandstorm is currently ongoing in the desert.""" @@ -15,5 +12,7 @@ class Sandstorm: self.intended_severity: float = intended_severity def __repr__(self): - return f"WorldSandstorm(is_active={self.is_active}, time_left={self.time_left}," \ - f" severity={self.severity}, intended_severity={self.intended_severity})" + return ( + f"WorldSandstorm(is_active={self.is_active}, time_left={self.time_left}," + f" severity={self.severity}, intended_severity={self.intended_severity})" + ) diff --git a/lihzahrd/header/savednpcs.py b/lihzahrd/header/savednpcs.py index f2bc2f5..5dad45d 100644 --- a/lihzahrd/header/savednpcs.py +++ b/lihzahrd/header/savednpcs.py @@ -1,14 +1,16 @@ class SavedNPCs: - def __init__(self, - goblin_tinkerer: bool, - wizard: bool, - mechanic: bool, - angler: bool, - stylist: bool, - tax_collector: bool, - bartender: bool, - golfer: bool, - advanced_combat: bool): + def __init__( + self, + goblin_tinkerer: bool, + wizard: bool, + mechanic: bool, + angler: bool, + stylist: bool, + tax_collector: bool, + bartender: bool, + golfer: bool, + advanced_combat: bool, + ): self.goblin_tinkerer: bool = goblin_tinkerer self.wizard: bool = wizard self.mechanic: bool = mechanic @@ -21,6 +23,8 @@ class SavedNPCs: """Was the Advanced Combat Technique Book used.""" def __repr__(self): - return f"SavedNPCs(goblin_tinkerer={self.goblin_tinkerer}, wizard={self.wizard}, mechanic={self.mechanic}," \ - f" angler={self.angler}, stylist={self.stylist}, tax_collector={self.tax_collector}," \ - f" bartender={self.bartender}, golfer={self.golfer}, advanced_combat={self.advanced_combat}" + return ( + f"SavedNPCs(goblin_tinkerer={self.goblin_tinkerer}, wizard={self.wizard}, mechanic={self.mechanic}," + f" angler={self.angler}, stylist={self.stylist}, tax_collector={self.tax_collector}," + f" bartender={self.bartender}, golfer={self.golfer}, advanced_combat={self.advanced_combat}" + ) diff --git a/lihzahrd/header/savedoretiers.py b/lihzahrd/header/savedoretiers.py index 00443cb..bb7863e 100755 --- a/lihzahrd/header/savedoretiers.py +++ b/lihzahrd/header/savedoretiers.py @@ -5,14 +5,16 @@ from ..enums import BlockType class SavedOreTiers: """The types of ores that generated in the world.""" - def __init__(self, - tier_1: BlockType, - tier_2: BlockType, - tier_3: BlockType, - tier_4: BlockType, - hardmode_tier_1: Optional[BlockType], - hardmode_tier_2: Optional[BlockType], - hardmode_tier_3: Optional[BlockType]): + def __init__( + self, + tier_1: BlockType, + tier_2: BlockType, + tier_3: BlockType, + tier_4: BlockType, + hardmode_tier_1: Optional[BlockType], + hardmode_tier_2: Optional[BlockType], + hardmode_tier_3: Optional[BlockType], + ): self.tier_1: BlockType = tier_1 """Copper or Tin?""" @@ -32,21 +34,27 @@ class SavedOreTiers: self.hardmode_tier_1: Optional[BlockType] = hardmode_tier_1 """Cobalt or Palladium? None if it hasn't been determined yet.""" - assert self.hardmode_tier_1 is None \ - or self.hardmode_tier_1 == BlockType.COBALT \ - or self.hardmode_tier_1 == BlockType.PALLADIUM + assert ( + self.hardmode_tier_1 is None + or self.hardmode_tier_1 == BlockType.COBALT + or self.hardmode_tier_1 == BlockType.PALLADIUM + ) self.hardmode_tier_2: Optional[BlockType] = hardmode_tier_2 """Mythril or Orichalcum? None if it hasn't been determined yet.""" - assert self.hardmode_tier_2 is None \ - or self.hardmode_tier_2 == BlockType.MYTHRIL \ - or self.hardmode_tier_2 == BlockType.ORICHALCUM + assert ( + self.hardmode_tier_2 is None + or self.hardmode_tier_2 == BlockType.MYTHRIL + or self.hardmode_tier_2 == BlockType.ORICHALCUM + ) self.hardmode_tier_3: Optional[BlockType] = hardmode_tier_3 """Adamantite or Titanium? None if it hasn't been determined yet.""" - assert self.hardmode_tier_3 is None \ - or self.hardmode_tier_3 == BlockType.ADAMANTITE \ - or self.hardmode_tier_3 == BlockType.TITANIUM + assert ( + self.hardmode_tier_3 is None + or self.hardmode_tier_3 == BlockType.ADAMANTITE + or self.hardmode_tier_3 == BlockType.TITANIUM + ) def __repr__(self): return f"" diff --git a/lihzahrd/header/shadoworbs.py b/lihzahrd/header/shadoworbs.py index b060cf9..ae01926 100644 --- a/lihzahrd/header/shadoworbs.py +++ b/lihzahrd/header/shadoworbs.py @@ -1,10 +1,7 @@ class ShadowOrbs: """Information related to the Shadow Orbs (or the Crimson Hearts) smashed in the world.""" - def __init__(self, - smashed_at_least_once: bool, - spawn_meteorite: bool, - evil_boss_counter: int): + def __init__(self, smashed_at_least_once: bool, spawn_meteorite: bool, evil_boss_counter: int): self.smashed_at_least_once: bool = smashed_at_least_once """If a Shadow Orb has ever been smashed in this world.""" @@ -19,5 +16,7 @@ class ShadowOrbs: It is the number of Shadow Orbs broken, modulo 3.""" def __repr__(self): - return f"WorldShadowOrbs(smashed_at_least_once={self.smashed_at_least_once}," \ - f" spawn_meteorite={self.spawn_meteorite}, evil_boss_counter={self.evil_boss_counter})" + return ( + f"WorldShadowOrbs(smashed_at_least_once={self.smashed_at_least_once}," + f" spawn_meteorite={self.spawn_meteorite}, evil_boss_counter={self.evil_boss_counter})" + ) diff --git a/lihzahrd/header/styles.py b/lihzahrd/header/styles.py index 63cd5be..f44fca1 100644 --- a/lihzahrd/header/styles.py +++ b/lihzahrd/header/styles.py @@ -4,10 +4,13 @@ from .fourpartsplit import FourPartSplit class Styles: """The styles of various world elements.""" - def __init__(self, - moon: MoonStyle, - trees: FourPartSplit, - moss: FourPartSplit, ): + + def __init__( + self, + moon: MoonStyle, + trees: FourPartSplit, + moss: FourPartSplit, + ): self.moon: MoonStyle = moon self.trees: FourPartSplit = trees self.moss: FourPartSplit = moss diff --git a/lihzahrd/header/time.py b/lihzahrd/header/time.py index 38efd40..fe4f696 100644 --- a/lihzahrd/header/time.py +++ b/lihzahrd/header/time.py @@ -1,10 +1,9 @@ class Time: """Game time related information.""" - def __init__(self, current: float, - is_daytime: bool, - moon_phase: int, - sundial_cooldown: int, - fast_forward_time: bool): + + def __init__( + self, current: float, is_daytime: bool, moon_phase: int, sundial_cooldown: int, fast_forward_time: bool + ): self.current: float = current """The current game time.""" @@ -20,5 +19,7 @@ class Time: self.fast_forward_time: bool = fast_forward_time def __repr__(self): - return f"WorldTime(current={self.current}, is_daytime={self.is_daytime}, moon_phase={self.moon_phase}," \ - f" sundial_cooldown={self.sundial_cooldown}, fast_forward_time={self.fast_forward_time})" + return ( + f"WorldTime(current={self.current}, is_daytime={self.is_daytime}, moon_phase={self.moon_phase}," + f" sundial_cooldown={self.sundial_cooldown}, fast_forward_time={self.fast_forward_time})" + ) diff --git a/lihzahrd/header/version.py b/lihzahrd/header/version.py index 3178161..8d8a0d1 100644 --- a/lihzahrd/header/version.py +++ b/lihzahrd/header/version.py @@ -4,7 +4,7 @@ import typing class Version: """A Terraria version.""" - __slots__ = ("id", ) + __slots__ = ("id",) _version_ids = { 12: "1.0.5", @@ -52,7 +52,7 @@ class Version: 227: "1.4.0.3", 228: "1.4.0.4", 230: "1.4.0.5", - 238: "1.4.2.3" + 238: "1.4.2.3", } def __init__(self, data: typing.Union[int, str]): diff --git a/lihzahrd/items/itemstack.py b/lihzahrd/items/itemstack.py index 40df082..947b7c4 100644 --- a/lihzahrd/items/itemstack.py +++ b/lihzahrd/items/itemstack.py @@ -4,12 +4,10 @@ from ..enums import ItemType, PrefixType class ItemStack: """A stack of a certain item.""" + __slots__ = "type", "quantity", "prefix" - def __init__(self, - type_: ItemType, - quantity: int = 1, - prefix: Optional[PrefixType] = None): + def __init__(self, type_: ItemType, quantity: int = 1, prefix: Optional[PrefixType] = None): self.type: ItemType = type_ """The type of item represented in this stack.""" diff --git a/lihzahrd/journeypowers/journeypowers.py b/lihzahrd/journeypowers/journeypowers.py index ef49c69..67faa37 100755 --- a/lihzahrd/journeypowers/journeypowers.py +++ b/lihzahrd/journeypowers/journeypowers.py @@ -15,13 +15,15 @@ class JourneyPowers: "freeze_biome_spread", ) - def __init__(self, - freeze_time: typing.Optional[bool] = None, - time_rate: typing.Optional[float] = None, - freeze_rain: typing.Optional[bool] = None, - freeze_wind: typing.Optional[bool] = None, - difficulty: typing.Optional[float] = None, - freeze_biome_spread: typing.Optional[bool] = None): + def __init__( + self, + freeze_time: typing.Optional[bool] = None, + time_rate: typing.Optional[float] = None, + freeze_rain: typing.Optional[bool] = None, + freeze_wind: typing.Optional[bool] = None, + difficulty: typing.Optional[float] = None, + freeze_biome_spread: typing.Optional[bool] = None, + ): self.freeze_time: bool = freeze_time """Is time frozen?""" @@ -42,11 +44,13 @@ class JourneyPowers: """Can evil biomes & the hallow spread.""" def __repr__(self): - return f"JourneyPowers(" \ - f"freeze_time={self.freeze_time}," \ - f" freeze_rain={self.freeze_rain}," \ - f" freeze_wind={self.freeze_wind}," \ - f" freeze_biome_spread={self.freeze_biome_spread}," \ - f" time_rate={self.time_rate}," \ - f" difficulty={self.difficulty}" \ - f")" + return ( + f"JourneyPowers(" + f"freeze_time={self.freeze_time}," + f" freeze_rain={self.freeze_rain}," + f" freeze_wind={self.freeze_wind}," + f" freeze_biome_spread={self.freeze_biome_spread}," + f" time_rate={self.time_rate}," + f" difficulty={self.difficulty}" + f")" + ) diff --git a/lihzahrd/npcs/mob.py b/lihzahrd/npcs/mob.py index b56b693..d67be81 100644 --- a/lihzahrd/npcs/mob.py +++ b/lihzahrd/npcs/mob.py @@ -8,9 +8,11 @@ class Mob: __slots__ = "type", "position" - def __init__(self, - type_: EntityType, - position: Coordinates, ): + def __init__( + self, + type_: EntityType, + position: Coordinates, + ): self.type: EntityType = type_ """The type of entity this object represents.""" diff --git a/lihzahrd/npcs/npc.py b/lihzahrd/npcs/npc.py index 724b928..7093d24 100644 --- a/lihzahrd/npcs/npc.py +++ b/lihzahrd/npcs/npc.py @@ -9,12 +9,14 @@ class NPC(Mob): __slots__ = "type", "name", "position", "home", "variation_index" - def __init__(self, - type_: EntityType, - position: Coordinates, - name: str, - variation_index: int, - home: Optional[Coordinates] = None): + def __init__( + self, + type_: EntityType, + position: Coordinates, + name: str, + variation_index: int, + home: Optional[Coordinates] = None, + ): super().__init__(type_, position) diff --git a/lihzahrd/pressureplates/weighedpressureplate.py b/lihzahrd/pressureplates/weighedpressureplate.py index e6e381a..e970f67 100644 --- a/lihzahrd/pressureplates/weighedpressureplate.py +++ b/lihzahrd/pressureplates/weighedpressureplate.py @@ -4,7 +4,7 @@ from ..fileutils import Coordinates class WeighedPressurePlate: """A single `Weighed Pressure Plate `_ placed in the world.""" - __slots__ = ("position", ) + __slots__ = ("position",) def __init__(self, position: Coordinates): self.position: Coordinates = position diff --git a/lihzahrd/tileentities/clothingdisplay.py b/lihzahrd/tileentities/clothingdisplay.py index 4a8634d..576b140 100644 --- a/lihzahrd/tileentities/clothingdisplay.py +++ b/lihzahrd/tileentities/clothingdisplay.py @@ -7,9 +7,7 @@ class ClothingDisplay: __slots__ = "items", "dyes" - def __init__(self, - items: List[ItemStack], - dyes: List[ItemStack]): + def __init__(self, items: List[ItemStack], dyes: List[ItemStack]): self.items: List[ItemStack] = items """What items is the display wearing.""" diff --git a/lihzahrd/tileentities/hatrack.py b/lihzahrd/tileentities/hatrack.py index b385105..37c79a8 100644 --- a/lihzahrd/tileentities/hatrack.py +++ b/lihzahrd/tileentities/hatrack.py @@ -5,6 +5,7 @@ from .clothingdisplay import ClothingDisplay class HatRack(ClothingDisplay): """A `Hat Rack `_ containing up to 2 dyed helmets.""" + def __init__(self, items: List[ItemStack], dyes: List[ItemStack]): super().__init__(items, dyes) assert len(items) == 2 diff --git a/lihzahrd/tileentities/mannequin.py b/lihzahrd/tileentities/mannequin.py index d11cbcd..e96e341 100644 --- a/lihzahrd/tileentities/mannequin.py +++ b/lihzahrd/tileentities/mannequin.py @@ -7,6 +7,7 @@ class Mannequin(ClothingDisplay): """A `Mannequin `_ / `Womannequin `_ containing up to 3 dyed armor pieces and up to 5 dyed accessories.""" + def __init__(self, items: List[ItemStack], dyes: List[ItemStack]): super().__init__(items, dyes) assert len(items) == 8 diff --git a/lihzahrd/tileentities/singleitemdisplay.py b/lihzahrd/tileentities/singleitemdisplay.py index 84b8b30..9828ce8 100644 --- a/lihzahrd/tileentities/singleitemdisplay.py +++ b/lihzahrd/tileentities/singleitemdisplay.py @@ -3,7 +3,7 @@ from ..items.itemstack import ItemStack class SingleItemDisplay: """A display case for a single item, such as a `Weapon Rack `_, - a `Item Frame `_ or a `Plate `_. + a `Item Frame `_ or a `Plate `_. """ __slots__ = ("item",) diff --git a/lihzahrd/tileentities/tileentity.py b/lihzahrd/tileentities/tileentity.py index 0d3d44d..4ce3e9c 100644 --- a/lihzahrd/tileentities/tileentity.py +++ b/lihzahrd/tileentities/tileentity.py @@ -10,10 +10,7 @@ class TileEntity: __slots__ = "id", "position", "data" - def __init__(self, - id_: int, - position: Coordinates, - extra: typing.Union[TargetDummy, ItemFrame, LogicSensor]): + def __init__(self, id_: int, position: Coordinates, extra: typing.Union[TargetDummy, ItemFrame, LogicSensor]): self.id: int = id_ self.position: Coordinates = position self.data: typing.Union[TargetDummy, ItemFrame, LogicSensor] = extra diff --git a/lihzahrd/tiles/__init__.py b/lihzahrd/tiles/__init__.py index b4190ef..8fe0314 100644 --- a/lihzahrd/tiles/__init__.py +++ b/lihzahrd/tiles/__init__.py @@ -7,5 +7,4 @@ from .liquid import Liquid from .tile import Tile from .tilematrix import TileMatrix -__all__ = ["Shape", "Wiring", "FrameImportantData", "Block", - "Wall", "Liquid", "Tile", "TileMatrix"] +__all__ = ["Shape", "Wiring", "FrameImportantData", "Block", "Wall", "Liquid", "Tile", "TileMatrix"] diff --git a/lihzahrd/tiles/block.py b/lihzahrd/tiles/block.py index 72c24b5..1033b91 100644 --- a/lihzahrd/tiles/block.py +++ b/lihzahrd/tiles/block.py @@ -9,12 +9,14 @@ class Block: __slots__ = "type", "frame", "shape", "paint", "is_active" - def __init__(self, - type_: BlockType, - shape: Shape = Shape.NORMAL, - frame: typing.Optional[FrameImportantData] = None, - paint: typing.Optional[int] = None, - is_active: bool = True): + def __init__( + self, + type_: BlockType, + shape: Shape = Shape.NORMAL, + frame: typing.Optional[FrameImportantData] = None, + paint: typing.Optional[int] = None, + is_active: bool = True, + ): self.type: BlockType = type_ """The type of the block (dirt, stone, ...).""" diff --git a/lihzahrd/tiles/tile.py b/lihzahrd/tiles/tile.py index 980c209..aa9f5e3 100644 --- a/lihzahrd/tiles/tile.py +++ b/lihzahrd/tiles/tile.py @@ -14,12 +14,14 @@ class Tile: __slots__ = "block", "wall", "liquid", "wiring", "extra" - def __init__(self, - block: typing.Optional[Block] = None, - wall: typing.Optional[Wall] = None, - liquid: typing.Optional[Liquid] = None, - wiring: typing.Optional[Wiring] = None, - extra: typing.Optional[typing.Union[Chest, Sign, WeighedPressurePlate, TileEntity]] = None): + def __init__( + self, + block: typing.Optional[Block] = None, + wall: typing.Optional[Wall] = None, + liquid: typing.Optional[Liquid] = None, + wiring: typing.Optional[Wiring] = None, + extra: typing.Optional[typing.Union[Chest, Sign, WeighedPressurePlate, TileEntity]] = None, + ): if wiring is None: wiring = Wiring() @@ -32,9 +34,11 @@ class Tile: """A reference to the extra data of this tile, such as Chest or Sign data.""" def __repr__(self): - tile_status = f"{'B' if self.block else ''}" \ - f"{'W' if self.wall else ''}" \ - f"{'L' if self.liquid else ''}" \ - f"{'W' if self.wiring else ''}" \ - f"{'E' if self.extra else ''}" + tile_status = ( + f"{'B' if self.block else ''}" + f"{'W' if self.wall else ''}" + f"{'L' if self.liquid else ''}" + f"{'W' if self.wiring else ''}" + f"{'E' if self.extra else ''}" + ) return f"" diff --git a/lihzahrd/tiles/wiring.py b/lihzahrd/tiles/wiring.py index a6516e5..ad837da 100644 --- a/lihzahrd/tiles/wiring.py +++ b/lihzahrd/tiles/wiring.py @@ -6,12 +6,9 @@ class Wiring: __slots__ = "red", "green", "blue", "yellow", "actuator" - def __init__(self, - red: bool = False, - green: bool = False, - blue: bool = False, - yellow: bool = False, - actuator: bool = False): + def __init__( + self, red: bool = False, green: bool = False, blue: bool = False, yellow: bool = False, actuator: bool = False + ): self.red: bool = red """If there's a red Wire in the tile.""" @@ -28,8 +25,10 @@ class Wiring: """If there's an Actuator in the tile.""" def __repr__(self): - return f"Wires(red={self.red}, green={self.green}, blue={self.blue}, yellow={self.yellow}," \ - f" actuator={self.actuator})" + return ( + f"Wires(red={self.red}, green={self.green}, blue={self.blue}, yellow={self.yellow}," + f" actuator={self.actuator})" + ) def __bool__(self): return self.red or self.green or self.blue or self.yellow or self.actuator diff --git a/lihzahrd/timer.py b/lihzahrd/timer.py index 36861db..d9c97f2 100644 --- a/lihzahrd/timer.py +++ b/lihzahrd/timer.py @@ -4,6 +4,7 @@ import typing class Timer: """An object to track and print the time required to perform a section of code.""" + def __init__(self, name: str, display: bool = True): self.name: str = name self.display: bool = display diff --git a/lihzahrd/world.py b/lihzahrd/world.py index bf03936..0b20639 100644 --- a/lihzahrd/world.py +++ b/lihzahrd/world.py @@ -20,65 +20,67 @@ from .errors import InvalidFooterError class World: """The Python representation of a Terraria world.""" - def __init__(self, - version: Version, - savefile_type: int, - revision: int, - is_favorite: bool, - name: str, - generator: GeneratorInfo, - uuid_: uuid.UUID, - id_: int, - bounds: Rect, - size: Coordinates, - difficulty: Difficulty, - is_drunk_world: bool, - is_for_the_worthy: bool, - is_tenth_anniversary: bool, - created_on, - styles: Styles, - backgrounds: Backgrounds, - spawn_point: Coordinates, - underground_level: float, - cavern_level: float, - time: Time, - events: Events, - dungeon_point: Coordinates, - world_evil: WorldEvilType, - saved_npcs: SavedNPCs, - altars_smashed: int, - is_hardmode: bool, - shadow_orbs: ShadowOrbs, - bosses_defeated: BossesDefeated, - anglers_quest: AnglerQuest, - clouds: Clouds, - cultist_delay: int, - tiles: TileMatrix, - bestiary: Bestiary, - journey_powers: JourneyPowers, - chests: List[Chest], - signs: List[Sign], - npcs: List[NPC], - mobs: List[Mob], - tile_entities: List[TileEntity], - weighed_pressure_plates: List[WeighedPressurePlate], - rooms: List[Room], - pets: Pets, - halloween_today: bool, - xmas_today: bool, - treetop_variants: TreetopVariants, - saved_ore_tiers: SavedOreTiers, - unknown_file_format_data: bytes = b"", - unknown_world_header_data: bytes = b"", - unknown_world_tiles_data: bytes = b"", - unknown_chests_data: bytes = b"", - unknown_signs_data: bytes = b"", - unknown_npcs_data: bytes = b"", - unknown_tile_entities_data: bytes = b"", - unknown_pressure_plates_data: bytes = b"", - unknown_town_manager_data: bytes = b"", - unknown_bestiary_data: bytes = b"", - unknown_journey_powers_data: bytes = b""): + def __init__( + self, + version: Version, + savefile_type: int, + revision: int, + is_favorite: bool, + name: str, + generator: GeneratorInfo, + uuid_: uuid.UUID, + id_: int, + bounds: Rect, + size: Coordinates, + difficulty: Difficulty, + is_drunk_world: bool, + is_for_the_worthy: bool, + is_tenth_anniversary: bool, + created_on, + styles: Styles, + backgrounds: Backgrounds, + spawn_point: Coordinates, + underground_level: float, + cavern_level: float, + time: Time, + events: Events, + dungeon_point: Coordinates, + world_evil: WorldEvilType, + saved_npcs: SavedNPCs, + altars_smashed: int, + is_hardmode: bool, + shadow_orbs: ShadowOrbs, + bosses_defeated: BossesDefeated, + anglers_quest: AnglerQuest, + clouds: Clouds, + cultist_delay: int, + tiles: TileMatrix, + bestiary: Bestiary, + journey_powers: JourneyPowers, + chests: List[Chest], + signs: List[Sign], + npcs: List[NPC], + mobs: List[Mob], + tile_entities: List[TileEntity], + weighed_pressure_plates: List[WeighedPressurePlate], + rooms: List[Room], + pets: Pets, + halloween_today: bool, + xmas_today: bool, + treetop_variants: TreetopVariants, + saved_ore_tiers: SavedOreTiers, + unknown_file_format_data: bytes = b"", + unknown_world_header_data: bytes = b"", + unknown_world_tiles_data: bytes = b"", + unknown_chests_data: bytes = b"", + unknown_signs_data: bytes = b"", + unknown_npcs_data: bytes = b"", + unknown_tile_entities_data: bytes = b"", + unknown_pressure_plates_data: bytes = b"", + unknown_town_manager_data: bytes = b"", + unknown_bestiary_data: bytes = b"", + unknown_journey_powers_data: bytes = b"", + ): self.version: Version = version """The game version when this savefile was last saved.""" @@ -291,11 +293,9 @@ class World: block_paint = fr.uint1() else: block_paint = None - block = Block(type_=block_type, - frame=frame, - paint=block_paint, - is_active=is_block_active, - shape=block_shape) + block = Block( + type_=block_type, frame=frame, paint=block_paint, is_active=is_block_active, shape=block_shape + ) else: block = None # Parse wall @@ -411,17 +411,15 @@ class World: is_tenth_anniversary = f.bool() created_on = f.datetime() - world_styles = Styles(moon=MoonStyle(f.uint1()), - trees=FourPartSplit(separators=[f.int4(), f.int4(), f.int4()], - properties=[f.int4(), - f.int4(), - f.int4(), - f.int4()]), - moss=FourPartSplit(separators=[f.int4(), f.int4(), f.int4()], - properties=[f.int4(), - f.int4(), - f.int4(), - f.int4()])) + world_styles = Styles( + moon=MoonStyle(f.uint1()), + trees=FourPartSplit( + separators=[f.int4(), f.int4(), f.int4()], properties=[f.int4(), f.int4(), f.int4(), f.int4()] + ), + moss=FourPartSplit( + separators=[f.int4(), f.int4(), f.int4()], properties=[f.int4(), f.int4(), f.int4(), f.int4()] + ), + ) bg_underground_snow = f.int4() bg_underground_jungle = f.int4() @@ -462,9 +460,9 @@ class World: defeated_frost_moon = f.bool() defeated_pirates = f.bool() - shadow_orbs = ShadowOrbs(smashed_at_least_once=f.bool(), - spawn_meteorite=f.bool(), - evil_boss_counter=f.uint1()) # was int4() + shadow_orbs = ShadowOrbs( + smashed_at_least_once=f.bool(), spawn_meteorite=f.bool(), evil_boss_counter=f.uint1() + ) # was int4() altars_smashed = f.int4() @@ -505,7 +503,7 @@ class World: clouds = Clouds(bg_cloud=f.int4(), cloud_number=f.int2(), wind_speed=f.single()) - angler_today_quest_completed_by_count = f.int4() # was uint1() + angler_today_quest_completed_by_count = f.int4() # was uint1() angler_today_quest_completed_by = [] for _ in range(angler_today_quest_completed_by_count): angler_today_quest_completed_by.append(f.string()) @@ -513,19 +511,22 @@ class World: saved_angler = f.bool() angler_today_quest_target = AnglerQuestFish(f.int4()) - anglers_quest = AnglerQuest(current_goal=angler_today_quest_target, - completed_by=angler_today_quest_completed_by) + anglers_quest = AnglerQuest( + current_goal=angler_today_quest_target, completed_by=angler_today_quest_completed_by + ) saved_stylist = f.bool() saved_tax_collector = f.bool() saved_golfer = f.bool() invasion_size_start = f.int4() # ??? - invasion = Invasion(delay=invasion_delay, - size=invasion_size, - type_=invasion_type, - position=invasion_position, - size_start=invasion_size_start) + invasion = Invasion( + delay=invasion_delay, + size=invasion_size, + type_=invasion_type, + position=invasion_position, + size_start=invasion_size_start, + ) cultist_delay = f.int4() # ??? mob_types_count = f.int2() @@ -534,11 +535,13 @@ class World: mob_kills[mob_id] = f.int4() fast_forward_time = f.bool() - time = Time(current=current_time, - is_daytime=is_daytime, - moon_phase=moon_phase, - sundial_cooldown=sundial_cooldown, - fast_forward_time=fast_forward_time) + time = Time( + current=current_time, + is_daytime=is_daytime, + moon_phase=moon_phase, + sundial_cooldown=sundial_cooldown, + fast_forward_time=fast_forward_time, + ) defeated_duke_fishron = f.bool() defeated_martian_madness = f.bool() @@ -551,11 +554,10 @@ class World: defeated_everscream = f.bool() defeated_pillars = PillarsInfo(solar=f.bool(), vortex=f.bool(), nebula=f.bool(), stardust=f.bool()) - lunar_events = LunarEvents(pillars_present=PillarsInfo(solar=f.bool(), - vortex=f.bool(), - nebula=f.bool(), - stardust=f.bool()), - are_active=f.bool()) + lunar_events = LunarEvents( + pillars_present=PillarsInfo(solar=f.bool(), vortex=f.bool(), nebula=f.bool(), stardust=f.bool()), + are_active=f.bool(), + ) party_center_active = f.bool() party_natural_active = f.bool() @@ -564,15 +566,14 @@ class World: partying_npcs = [] for _ in range(partying_npcs_count): partying_npcs.append(f.int4()) - party = Party(thrown_by_party_center=party_center_active, - thrown_by_npcs=party_natural_active, - cooldown=party_cooldown, - partying_npcs=partying_npcs) + party = Party( + thrown_by_party_center=party_center_active, + thrown_by_npcs=party_natural_active, + cooldown=party_cooldown, + partying_npcs=partying_npcs, + ) - sandstorm = Sandstorm(is_active=f.bool(), - time_left=f.int4(), - severity=f.single(), - intended_severity=f.single()) + sandstorm = Sandstorm(is_active=f.bool(), time_left=f.int4(), severity=f.single(), intended_severity=f.single()) saved_bartender = f.bool() @@ -616,20 +617,22 @@ class World: tax_collector=saved_tax_collector, bartender=saved_bartender, golfer=saved_golfer, - advanced_combat=combat_book_used + advanced_combat=combat_book_used, ) lantern_night = LanternNight(f.int4(), f.bool(), f.bool(), f.bool()) - events = Events(blood_moon=blood_moon, - solar_eclipse=eclipse, - invasion=invasion, - slime_rain=time_left_slime_rain, - rain=rain, - party=party, - sandstorm=sandstorm, - lunar_events=lunar_events, - lantern_night=lantern_night) + events = Events( + blood_moon=blood_moon, + solar_eclipse=eclipse, + invasion=invasion, + slime_rain=time_left_slime_rain, + rain=rain, + party=party, + sandstorm=sandstorm, + lunar_events=lunar_events, + lantern_night=lantern_night, + ) treetop_variant_count = f.int4() treetop_variants = TreetopVariants([f.int4() for _ in range(treetop_variant_count)]) @@ -648,34 +651,36 @@ class World: defeated_empress_of_light = f.bool() defeated_queen_slime = f.bool() - bosses_defeated = BossesDefeated(eye_of_cthulhu=defeated_eye_of_cthulhu, - eater_of_worlds=defeated_eater_of_worlds, - skeletron=defeated_skeletron, - queen_bee=defeated_queen_bee, - the_twins=defeated_the_twins, - the_destroyer=defeated_the_destroyer, - skeletron_prime=defeated_skeletron_prime, - any_mechnical_boss=defeated_any_mechnical_boss, - plantera=defeated_plantera, - golem=defeated_golem, - king_slime=defeated_king_slime, - goblin_army=defeated_goblin_army, - clown=defeated_clown, - frost_moon=defeated_frost_moon, - pirates=defeated_pirates, - duke_fishron=defeated_duke_fishron, - moon_lord=defeated_moon_lord, - pumpking=defeated_pumpking, - mourning_wood=defeated_mourning_wood, - ice_queen=defeated_ice_queen, - santa_nk1=defeated_santa_nk1, - everscream=defeated_everscream, - lunar_pillars=defeated_pillars, - old_ones_army=old_ones_army, - martian_madness=defeated_martian_madness, - lunatic_cultist=defeated_lunatic_cultist, - empress_of_light=defeated_empress_of_light, - queen_slime=defeated_queen_slime) + bosses_defeated = BossesDefeated( + eye_of_cthulhu=defeated_eye_of_cthulhu, + eater_of_worlds=defeated_eater_of_worlds, + skeletron=defeated_skeletron, + queen_bee=defeated_queen_bee, + the_twins=defeated_the_twins, + the_destroyer=defeated_the_destroyer, + skeletron_prime=defeated_skeletron_prime, + any_mechnical_boss=defeated_any_mechnical_boss, + plantera=defeated_plantera, + golem=defeated_golem, + king_slime=defeated_king_slime, + goblin_army=defeated_goblin_army, + clown=defeated_clown, + frost_moon=defeated_frost_moon, + pirates=defeated_pirates, + duke_fishron=defeated_duke_fishron, + moon_lord=defeated_moon_lord, + pumpking=defeated_pumpking, + mourning_wood=defeated_mourning_wood, + ice_queen=defeated_ice_queen, + santa_nk1=defeated_santa_nk1, + everscream=defeated_everscream, + lunar_pillars=defeated_pillars, + old_ones_army=old_ones_army, + martian_madness=defeated_martian_madness, + lunatic_cultist=defeated_lunatic_cultist, + empress_of_light=defeated_empress_of_light, + queen_slime=defeated_queen_slime, + ) unknown_world_header_data = f.read_until(pointers.world_tiles) @@ -700,15 +705,11 @@ class World: if item_quantity > 0: item_type = ItemType(f.int4()) item_modifier = PrefixType.get(f.uint1()) - item = ItemStack(quantity=item_quantity, - type_=item_type, - prefix=item_modifier) + item = ItemStack(quantity=item_quantity, type_=item_type, prefix=item_modifier) else: item = None chest_contents.append(item) - chest = Chest(position=chest_position, - name=chest_name, - contents=chest_contents) + chest = Chest(position=chest_position, name=chest_name, contents=chest_contents) chests.append(chest) tm[chest.position].extra = chest @@ -720,8 +721,7 @@ class World: signs_count = f.int2() for _ in range(signs_count): - sign = Sign(text=f.string(), - position=Coordinates(f.int4(), f.int4())) + sign = Sign(text=f.string(), position=Coordinates(f.int4(), f.int4())) signs.append(sign) tm[sign.position].extra = sign @@ -743,19 +743,16 @@ class World: npc_flags = f.bits() npc_variation_index = f.int4() if npc_flags[0] else 0 - npc = NPC(type_=npc_type, - name=npc_name, - position=npc_position, - home=npc_home, - variation_index=npc_variation_index) + npc = NPC( + type_=npc_type, name=npc_name, position=npc_position, home=npc_home, variation_index=npc_variation_index + ) npcs.append(npc) while f.bool(): mob_type = EntityType(f.int4()) mob_position = Coordinates(f.single(), f.single()) - mob = Mob(type_=mob_type, - position=mob_position) + mob = Mob(type_=mob_type, position=mob_position) mobs.append(mob) unknown_npcs_data = f.read_until(pointers.tile_entities) @@ -773,9 +770,9 @@ class World: te_extra = TargetDummy(npc=f.int2()) # Item Frame elif te_type == 1: - te_extra = ItemFrame(item=ItemStack(type_=ItemType(f.int2()), - prefix=PrefixType.get(f.uint1()), - quantity=f.int2())) + te_extra = ItemFrame( + item=ItemStack(type_=ItemType(f.int2()), prefix=PrefixType.get(f.uint1()), quantity=f.int2()) + ) # Logic Sensor elif te_type == 2: te_extra = LogicSensor(logic_check=f.uint1(), enabled=f.bool()) @@ -788,21 +785,19 @@ class World: for index, flag in enumerate(item_flags): if not flag: continue - mannequin_items[index] = ItemStack(type_=ItemType(f.int2()), - prefix=PrefixType.get(f.int1()), - quantity=f.int2()) + mannequin_items[index] = ItemStack( + type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2() + ) for index, flag in enumerate(dye_flags): if not flag: continue - mannequin_dyes[index] = ItemStack(type_=ItemType(f.int2()), - prefix=PrefixType.get(f.int1()), - quantity=f.int2()) + mannequin_dyes[index] = ItemStack( + type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2() + ) te_extra = Mannequin(mannequin_items, mannequin_dyes) # Weapon Rack elif te_type == 4: - rack_item = ItemStack(type_=ItemType(f.int2()), - prefix=PrefixType.get(f.int1()), - quantity=f.int2()) + rack_item = ItemStack(type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2()) te_extra = WeaponRack(rack_item) # Hat Rack elif te_type == 5: @@ -814,21 +809,19 @@ class World: for index, flag in enumerate(item_flags[0:2]): if not flag: continue - rack_items[index] = ItemStack(type_=ItemType(f.int2()), - prefix=PrefixType.get(f.int1()), - quantity=f.int2()) + rack_items[index] = ItemStack( + type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2() + ) for index, flag in enumerate(item_flags[2:4]): if not flag: continue - rack_dyes[index] = ItemStack(type_=ItemType(f.int2()), - prefix=PrefixType.get(f.int1()), - quantity=f.int2()) + rack_dyes[index] = ItemStack( + type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2() + ) te_extra = HatRack(rack_items, rack_dyes) # Food Plate elif te_type == 6: - plate_item = ItemStack(type_=ItemType(f.int2()), - prefix=PrefixType.get(f.int1()), - quantity=f.int2()) + plate_item = ItemStack(type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2()) te_extra = Plate(plate_item) # Teleport Pylon elif te_type == 7: @@ -896,31 +889,66 @@ class World: unknown_journey_powers_data = f.read_until(pointers.footer) # Object creation - world = cls(version=version, savefile_type=savefile_type, revision=revision, is_favorite=is_favorite, - name=name, generator=generator, uuid_=uuid_, id_=id_, bounds=bounds, size=world_size, - difficulty=difficulty, is_drunk_world=is_drunk_world, is_for_the_worthy=is_for_the_worthy, - is_tenth_anniversary=is_tenth_anniversary, created_on=created_on, styles=world_styles, backgrounds=backgrounds, - spawn_point=spawn_point, underground_level=underground_level, cavern_level=cavern_level, - time=time, events=events, dungeon_point=dungeon_point, world_evil=world_evil, - saved_npcs=saved_npcs, altars_smashed=altars_smashed, is_hardmode=is_hardmode, - shadow_orbs=shadow_orbs, bosses_defeated=bosses_defeated, anglers_quest=anglers_quest, - clouds=clouds, cultist_delay=cultist_delay, tiles=tm, chests=chests, signs=signs, - npcs=npcs, mobs=mobs, tile_entities=tile_entities, - weighed_pressure_plates=weighed_pressure_plates, rooms=rooms, - halloween_today=halloween_today, xmas_today=xmas_today, - treetop_variants=treetop_variants, saved_ore_tiers=saved_ore_tiers, pets=pets, - bestiary=bestiary, journey_powers=journey_powers, - unknown_file_format_data=unknown_file_format_data, - unknown_world_header_data=unknown_world_header_data, - unknown_world_tiles_data=unknown_world_tiles_data, - unknown_chests_data=unknown_chests_data, - unknown_signs_data=unknown_signs_data, - unknown_npcs_data=unknown_npcs_data, - unknown_tile_entities_data=unknown_tile_entities_data, - unknown_pressure_plates_data=unknown_pressure_plates_data, - unknown_town_manager_data=unknown_town_manager_data, - unknown_bestiary_data=unknown_bestiary_data, - unknown_journey_powers_data=unknown_journey_powers_data) + world = cls( + version=version, + savefile_type=savefile_type, + revision=revision, + is_favorite=is_favorite, + name=name, + generator=generator, + uuid_=uuid_, + id_=id_, + bounds=bounds, + size=world_size, + difficulty=difficulty, + is_drunk_world=is_drunk_world, + is_for_the_worthy=is_for_the_worthy, + is_tenth_anniversary=is_tenth_anniversary, + created_on=created_on, + styles=world_styles, + backgrounds=backgrounds, + spawn_point=spawn_point, + underground_level=underground_level, + cavern_level=cavern_level, + time=time, + events=events, + dungeon_point=dungeon_point, + world_evil=world_evil, + saved_npcs=saved_npcs, + altars_smashed=altars_smashed, + is_hardmode=is_hardmode, + shadow_orbs=shadow_orbs, + bosses_defeated=bosses_defeated, + anglers_quest=anglers_quest, + clouds=clouds, + cultist_delay=cultist_delay, + tiles=tm, + chests=chests, + signs=signs, + npcs=npcs, + mobs=mobs, + tile_entities=tile_entities, + weighed_pressure_plates=weighed_pressure_plates, + rooms=rooms, + halloween_today=halloween_today, + xmas_today=xmas_today, + treetop_variants=treetop_variants, + saved_ore_tiers=saved_ore_tiers, + pets=pets, + bestiary=bestiary, + journey_powers=journey_powers, + unknown_file_format_data=unknown_file_format_data, + unknown_world_header_data=unknown_world_header_data, + unknown_world_tiles_data=unknown_world_tiles_data, + unknown_chests_data=unknown_chests_data, + unknown_signs_data=unknown_signs_data, + unknown_npcs_data=unknown_npcs_data, + unknown_tile_entities_data=unknown_tile_entities_data, + unknown_pressure_plates_data=unknown_pressure_plates_data, + unknown_town_manager_data=unknown_town_manager_data, + unknown_bestiary_data=unknown_bestiary_data, + unknown_journey_powers_data=unknown_journey_powers_data, + ) # Footer if not f.bool(): diff --git a/poetry.lock b/poetry.lock index e180639..5dc9feb 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,27 +1,26 @@ [[package]] -category = "dev" -description = "A configurable sidebar-enabled Sphinx theme" name = "alabaster" +version = "0.7.12" +description = "A configurable sidebar-enabled Sphinx theme" +category = "dev" optional = false python-versions = "*" -version = "0.7.12" [[package]] -category = "dev" -description = "Atomic file writes." -marker = "sys_platform == \"win32\"" name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.4.0" [[package]] -category = "dev" -description = "Classes Without Boilerplate" name = "attrs" +version = "19.3.0" +description = "Classes Without Boilerplate" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "19.3.0" [package.extras] azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"] @@ -30,73 +29,115 @@ docs = ["sphinx", "zope.interface"] tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"] [[package]] -category = "dev" -description = "Internationalization utilities" name = "babel" +version = "2.8.0" +description = "Internationalization utilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "2.8.0" [package.dependencies] pytz = ">=2015.7" [[package]] +name = "black" +version = "22.1.0" +description = "The uncompromising code formatter." category = "dev" -description = "Python package for providing Mozilla's CA Bundle." +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +click = ">=8.0.0" +dataclasses = {version = ">=0.6", markers = "python_version < \"3.7\""} +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0" +platformdirs = ">=2" +tomli = ">=1.1.0" +typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} +typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""} + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] name = "certifi" -optional = false -python-versions = "*" version = "2020.4.5.2" - -[[package]] +description = "Python package for providing Mozilla's CA Bundle." category = "dev" -description = "Universal encoding detector for Python 2 and 3" -name = "chardet" optional = false python-versions = "*" + +[[package]] +name = "chardet" version = "3.0.4" +description = "Universal encoding detector for Python 2 and 3" +category = "dev" +optional = false +python-versions = "*" [[package]] +name = "click" +version = "8.0.3" +description = "Composable command line interface toolkit" category = "dev" -description = "Cross-platform colored terminal text." -marker = "sys_platform == \"win32\"" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} + +[[package]] name = "colorama" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" version = "0.4.3" - -[[package]] +description = "Cross-platform colored terminal text." category = "dev" -description = "Docutils -- Python Documentation Utilities" -name = "docutils" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "dataclasses" +version = "0.8" +description = "A backport of the dataclasses module for Python 3.6" +category = "dev" +optional = false +python-versions = ">=3.6, <3.7" + +[[package]] +name = "docutils" version = "0.16" +description = "Docutils -- Python Documentation Utilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" [[package]] -category = "dev" -description = "Internationalized Domain Names in Applications (IDNA)" name = "idna" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" version = "2.9" - -[[package]] +description = "Internationalized Domain Names in Applications (IDNA)" category = "dev" -description = "Getting image size from png/jpeg/jpeg2000/gif file" -name = "imagesize" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.2.0" [[package]] +name = "imagesize" +version = "1.2.0" +description = "Getting image size from png/jpeg/jpeg2000/gif file" category = "dev" -description = "Read metadata from Python packages" -marker = "python_version < \"3.8\"" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] name = "importlib-metadata" +version = "1.6.1" +description = "Read metadata from Python packages" +category = "dev" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" -version = "1.6.1" [package.dependencies] zipp = ">=0.5" @@ -106,12 +147,12 @@ docs = ["sphinx", "rst.linker"] testing = ["packaging", "pep517", "importlib-resources (>=1.3)"] [[package]] -category = "dev" -description = "A very fast and expressive template engine." name = "jinja2" +version = "2.11.2" +description = "A very fast and expressive template engine." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.11.2" [package.dependencies] MarkupSafe = ">=0.23" @@ -120,114 +161,137 @@ MarkupSafe = ">=0.23" i18n = ["Babel (>=0.8)"] [[package]] -category = "dev" -description = "Safely add untrusted strings to HTML/XML markup." name = "markupsafe" +version = "1.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*" -version = "1.1.1" [[package]] -category = "dev" -description = "More routines for operating on iterables, beyond itertools" name = "more-itertools" +version = "8.3.0" +description = "More routines for operating on iterables, beyond itertools" +category = "dev" optional = false python-versions = ">=3.5" -version = "8.3.0" [[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." category = "dev" -description = "Core utilities for Python packages" +optional = false +python-versions = "*" + +[[package]] name = "packaging" +version = "20.4" +description = "Core utilities for Python packages" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "20.4" [package.dependencies] pyparsing = ">=2.0.2" six = "*" [[package]] +name = "pathspec" +version = "0.9.0" +description = "Utility library for gitignore style pattern matching of file paths." category = "dev" -description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "platformdirs" +version = "2.4.0" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.extras] +docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] + +[[package]] name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "0.13.1" [package.dependencies] -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} [package.extras] dev = ["pre-commit", "tox"] [[package]] -category = "dev" -description = "library with cross-python path, ini-parsing, io, code, log facilities" name = "py" +version = "1.8.1" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -version = "1.8.1" [[package]] -category = "dev" -description = "Pygments is a syntax highlighting package written in Python." name = "pygments" +version = "2.6.1" +description = "Pygments is a syntax highlighting package written in Python." +category = "dev" optional = false python-versions = ">=3.5" -version = "2.6.1" [[package]] -category = "dev" -description = "Python parsing module" name = "pyparsing" +version = "2.4.7" +description = "Python parsing module" +category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -version = "2.4.7" [[package]] -category = "dev" -description = "pytest: simple powerful testing with Python" name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +category = "dev" optional = false python-versions = ">=3.5" -version = "5.4.3" [package.dependencies] -atomicwrites = ">=1.0" +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} attrs = ">=17.4.0" -colorama = "*" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} more-itertools = ">=4.0.0" packaging = "*" pluggy = ">=0.12,<1.0" py = ">=1.5.0" wcwidth = "*" -[package.dependencies.importlib-metadata] -python = "<3.8" -version = ">=0.12" - [package.extras] -checkqa-mypy = ["mypy (v0.761)"] +checkqa-mypy = ["mypy (==v0.761)"] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] [[package]] -category = "dev" -description = "World timezone definitions, modern and historical" name = "pytz" +version = "2020.1" +description = "World timezone definitions, modern and historical" +category = "dev" optional = false python-versions = "*" -version = "2020.1" [[package]] -category = "dev" -description = "Python HTTP for Humans." name = "requests" +version = "2.23.0" +description = "Python HTTP for Humans." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -version = "2.23.0" [package.dependencies] certifi = ">=2017.4.17" @@ -237,43 +301,42 @@ urllib3 = ">=1.21.1,<1.25.0 || >1.25.0,<1.25.1 || >1.25.1,<1.26" [package.extras] security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7)", "win-inet-pton"] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] [[package]] -category = "dev" -description = "Python 2 and 3 compatibility utilities" name = "six" +version = "1.15.0" +description = "Python 2 and 3 compatibility utilities" +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" -version = "1.15.0" [[package]] -category = "dev" -description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms." name = "snowballstemmer" +version = "2.0.0" +description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms." +category = "dev" optional = false python-versions = "*" -version = "2.0.0" [[package]] -category = "dev" -description = "Python documentation generator" name = "sphinx" +version = "2.4.4" +description = "Python documentation generator" +category = "dev" optional = false python-versions = ">=3.5" -version = "2.4.4" [package.dependencies] -Jinja2 = ">=2.3" -Pygments = ">=2.0" alabaster = ">=0.7,<0.8" babel = ">=1.3,<2.0 || >2.0" -colorama = ">=0.3.5" +colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} docutils = ">=0.12" imagesize = "*" +Jinja2 = ">=2.3" packaging = "*" +Pygments = ">=2.0" requests = ">=2.5.0" -setuptools = "*" snowballstemmer = ">=1.1" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" @@ -287,124 +350,148 @@ docs = ["sphinxcontrib-websupport"] test = ["pytest (<5.3.3)", "pytest-cov", "html5lib", "flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.761)", "docutils-stubs"] [[package]] -category = "dev" -description = "Read the Docs theme for Sphinx" name = "sphinx-rtd-theme" +version = "0.4.3" +description = "Read the Docs theme for Sphinx" +category = "dev" optional = false python-versions = "*" -version = "0.4.3" [package.dependencies] sphinx = "*" [[package]] -category = "dev" -description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" name = "sphinxcontrib-applehelp" +version = "1.0.2" +description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" +category = "dev" optional = false python-versions = ">=3.5" -version = "1.0.2" [package.extras] lint = ["flake8", "mypy", "docutils-stubs"] test = ["pytest"] [[package]] -category = "dev" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." name = "sphinxcontrib-devhelp" +version = "1.0.2" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +category = "dev" optional = false python-versions = ">=3.5" -version = "1.0.2" [package.extras] lint = ["flake8", "mypy", "docutils-stubs"] test = ["pytest"] [[package]] -category = "dev" -description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" name = "sphinxcontrib-htmlhelp" +version = "1.0.3" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "dev" optional = false python-versions = ">=3.5" -version = "1.0.3" [package.extras] lint = ["flake8", "mypy", "docutils-stubs"] test = ["pytest", "html5lib"] [[package]] -category = "dev" -description = "A sphinx extension which renders display math in HTML via JavaScript" name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "dev" optional = false python-versions = ">=3.5" -version = "1.0.1" [package.extras] test = ["pytest", "flake8", "mypy"] [[package]] -category = "dev" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." name = "sphinxcontrib-qthelp" -optional = false -python-versions = ">=3.5" version = "1.0.3" - -[package.extras] -lint = ["flake8", "mypy", "docutils-stubs"] -test = ["pytest"] - -[[package]] +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." category = "dev" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." -name = "sphinxcontrib-serializinghtml" optional = false python-versions = ">=3.5" -version = "1.1.4" [package.extras] lint = ["flake8", "mypy", "docutils-stubs"] test = ["pytest"] [[package]] +name = "sphinxcontrib-serializinghtml" +version = "1.1.4" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." category = "dev" -description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.5" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +name = "tomli" +version = "1.2.3" +description = "A lil' TOML parser" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typed-ast" +version = "1.5.2" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typing-extensions" +version = "4.0.1" +description = "Backported and Experimental Type Hints for Python 3.6+" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] name = "urllib3" +version = "1.25.9" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" -version = "1.25.9" [package.extras] brotli = ["brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"] -socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] -category = "dev" -description = "Measures the displayed width of unicode strings in a terminal" name = "wcwidth" +version = "0.2.4" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" optional = false python-versions = "*" -version = "0.2.4" [[package]] -category = "dev" -description = "Backport of pathlib-compatible object wrapper for zip files" -marker = "python_version < \"3.8\"" name = "zipp" +version = "3.1.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "dev" optional = false python-versions = ">=3.6" -version = "3.1.0" [package.extras] docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"] testing = ["jaraco.itertools", "func-timeout"] [metadata] -content-hash = "b47b9ecb692b818f41e5c444d71d45b46d42d2c1d1263de485d857ef4eee9707" - python-versions = "^3.6" +lock-version = "1.1" + python-versions = "^3.6.2" +content-hash = "15ba7d06ad87a6deb9cfec3590a6921496fae849edbae8ffd364db9fbcba9c62" [metadata.files] alabaster = [ @@ -423,6 +510,31 @@ babel = [ {file = "Babel-2.8.0-py2.py3-none-any.whl", hash = "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"}, {file = "Babel-2.8.0.tar.gz", hash = "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38"}, ] +black = [ + {file = "black-22.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1297c63b9e1b96a3d0da2d85d11cd9bf8664251fd69ddac068b98dc4f34f73b6"}, + {file = "black-22.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ff96450d3ad9ea499fc4c60e425a1439c2120cbbc1ab959ff20f7c76ec7e866"}, + {file = "black-22.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e21e1f1efa65a50e3960edd068b6ae6d64ad6235bd8bfea116a03b21836af71"}, + {file = "black-22.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2f69158a7d120fd641d1fa9a921d898e20d52e44a74a6fbbcc570a62a6bc8ab"}, + {file = "black-22.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:228b5ae2c8e3d6227e4bde5920d2fc66cc3400fde7bcc74f480cb07ef0b570d5"}, + {file = "black-22.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b1a5ed73ab4c482208d20434f700d514f66ffe2840f63a6252ecc43a9bc77e8a"}, + {file = "black-22.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:35944b7100af4a985abfcaa860b06af15590deb1f392f06c8683b4381e8eeaf0"}, + {file = "black-22.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:7835fee5238fc0a0baf6c9268fb816b5f5cd9b8793423a75e8cd663c48d073ba"}, + {file = "black-22.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:dae63f2dbf82882fa3b2a3c49c32bffe144970a573cd68d247af6560fc493ae1"}, + {file = "black-22.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fa1db02410b1924b6749c245ab38d30621564e658297484952f3d8a39fce7e8"}, + {file = "black-22.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c8226f50b8c34a14608b848dc23a46e5d08397d009446353dad45e04af0c8e28"}, + {file = "black-22.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2d6f331c02f0f40aa51a22e479c8209d37fcd520c77721c034517d44eecf5912"}, + {file = "black-22.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:742ce9af3086e5bd07e58c8feb09dbb2b047b7f566eb5f5bc63fd455814979f3"}, + {file = "black-22.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fdb8754b453fb15fad3f72cd9cad3e16776f0964d67cf30ebcbf10327a3777a3"}, + {file = "black-22.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5660feab44c2e3cb24b2419b998846cbb01c23c7fe645fee45087efa3da2d61"}, + {file = "black-22.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:6f2f01381f91c1efb1451998bd65a129b3ed6f64f79663a55fe0e9b74a5f81fd"}, + {file = "black-22.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:efbadd9b52c060a8fc3b9658744091cb33c31f830b3f074422ed27bad2b18e8f"}, + {file = "black-22.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8871fcb4b447206904932b54b567923e5be802b9b19b744fdff092bd2f3118d0"}, + {file = "black-22.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ccad888050f5393f0d6029deea2a33e5ae371fd182a697313bdbd835d3edaf9c"}, + {file = "black-22.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07e5c049442d7ca1a2fc273c79d1aecbbf1bc858f62e8184abe1ad175c4f7cc2"}, + {file = "black-22.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:373922fc66676133ddc3e754e4509196a8c392fec3f5ca4486673e685a421321"}, + {file = "black-22.1.0-py3-none-any.whl", hash = "sha256:3524739d76b6b3ed1132422bf9d82123cd1705086723bc3e235ca39fd21c667d"}, + {file = "black-22.1.0.tar.gz", hash = "sha256:a7c0192d35635f6fc1174be575cb7915e92e5dd629ee79fdaf0dcfa41a80afb5"}, +] certifi = [ {file = "certifi-2020.4.5.2-py2.py3-none-any.whl", hash = "sha256:9cd41137dc19af6a5e03b630eefe7d1f458d964d406342dd3edf625839b944cc"}, {file = "certifi-2020.4.5.2.tar.gz", hash = "sha256:5ad7e9a056d25ffa5082862e36f119f7f7cec6457fa07ee2f8c339814b80c9b1"}, @@ -431,10 +543,18 @@ chardet = [ {file = "chardet-3.0.4-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"}, {file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"}, ] +click = [ + {file = "click-8.0.3-py3-none-any.whl", hash = "sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3"}, + {file = "click-8.0.3.tar.gz", hash = "sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b"}, +] colorama = [ {file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"}, {file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"}, ] +dataclasses = [ + {file = "dataclasses-0.8-py3-none-any.whl", hash = "sha256:0201d89fa866f68c8ebd9d08ee6ff50c0b255f8ec63a71c16fda7af82bb887bf"}, + {file = "dataclasses-0.8.tar.gz", hash = "sha256:8479067f342acf957dc82ec415d355ab5edb7e7646b90dc6e2fd1d96ad084c97"}, +] docutils = [ {file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"}, {file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"}, @@ -474,30 +594,61 @@ markupsafe = [ {file = "MarkupSafe-1.1.1-cp35-cp35m-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"}, {file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_6_intel.whl", hash = "sha256:24982cc2533820871eba85ba648cd53d8623687ff11cbb805be4ff7b4c971aff"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d53bc011414228441014aa71dbec320c66468c1030aae3a6e29778a3382d96e5"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:00bc623926325b26bb9605ae9eae8a215691f33cae5df11ca5424f06f2d1f473"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:717ba8fe3ae9cc0006d7c451f0bb265ee07739daf76355d06366154ee68d221e"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:3b8a6499709d29c2e2399569d96719a1b21dcd94410a586a18526b143ec8470f"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:84dee80c15f1b560d55bcfe6d47b27d070b4681c699c572af2e3c7cc90a3b8e0"}, + {file = "MarkupSafe-1.1.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:b1dba4527182c95a0db8b6060cc98ac49b9e2f5e64320e2b56e47cb2831978c7"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"}, {file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_6_intel.whl", hash = "sha256:8defac2f2ccd6805ebf65f5eeb132adcf2ab57aa11fdf4c0dd5169a004710e7d"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bf5aa3cbcfdf57fa2ee9cd1822c862ef23037f5c832ad09cfea57fa846dec193"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:46c99d2de99945ec5cb54f23c8cd5689f6d7177305ebff350a58ce5f8de1669e"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:6fffc775d90dcc9aed1b89219549b329a9250d918fd0b8fa8d93d154918422e1"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:a6a744282b7718a2a62d2ed9d993cad6f5f585605ad352c11de459f4108df0a1"}, + {file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:195d7d2c4fbb0ee8139a6cf67194f3973a6b3042d742ebe0a9ed36d8b6f0c07f"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"}, {file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"}, {file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"}, {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"}, {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:acf08ac40292838b3cbbb06cfe9b2cb9ec78fce8baca31ddb87aaac2e2dc3bc2"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d9be0ba6c527163cbed5e0857c451fcd092ce83947944d6c14bc95441203f032"}, + {file = "MarkupSafe-1.1.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:caabedc8323f1e93231b52fc32bdcde6db817623d33e100708d9a68e1f53b26b"}, {file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"}, {file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d73a845f227b0bfe8a7455ee623525ee656a9e2e749e4742706d80a6065d5e2c"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:98bae9582248d6cf62321dcb52aaf5d9adf0bad3b40582925ef7c7f0ed85fceb"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:2beec1e0de6924ea551859edb9e7679da6e4870d32cb766240ce17e0a0ba2014"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:7fed13866cf14bba33e7176717346713881f56d9d2bcebab207f7a036f41b850"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:6f1e273a344928347c1290119b493a1f0303c52f5a5eae5f16d74f48c15d4a85"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:feb7b34d6325451ef96bc0e36e1a6c0c1c64bc1fbec4b854f4529e51887b1621"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-win32.whl", hash = "sha256:22c178a091fc6630d0d045bdb5992d2dfe14e3259760e713c490da5323866c39"}, + {file = "MarkupSafe-1.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:b7d644ddb4dbd407d31ffb699f1d140bc35478da613b441c582aeb7c43838dd8"}, {file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"}, ] more-itertools = [ {file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"}, {file = "more_itertools-8.3.0-py3-none-any.whl", hash = "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982"}, ] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] packaging = [ {file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"}, {file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"}, ] +pathspec = [ + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, +] +platformdirs = [ + {file = "platformdirs-2.4.0-py3-none-any.whl", hash = "sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d"}, + {file = "platformdirs-2.4.0.tar.gz", hash = "sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2"}, +] pluggy = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, @@ -523,6 +674,7 @@ pytz = [ {file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"}, ] requests = [ + {file = "requests-2.23.0-py2.7.egg", hash = "sha256:5d2d0ffbb515f39417009a46c14256291061ac01ba8f875b90cad137de83beb4"}, {file = "requests-2.23.0-py2.py3-none-any.whl", hash = "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee"}, {file = "requests-2.23.0.tar.gz", hash = "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"}, ] @@ -566,6 +718,40 @@ sphinxcontrib-serializinghtml = [ {file = "sphinxcontrib-serializinghtml-1.1.4.tar.gz", hash = "sha256:eaa0eccc86e982a9b939b2b82d12cc5d013385ba5eadcc7e4fed23f4405f77bc"}, {file = "sphinxcontrib_serializinghtml-1.1.4-py2.py3-none-any.whl", hash = "sha256:f242a81d423f59617a8e5cf16f5d4d74e28ee9a66f9e5b637a18082991db5a9a"}, ] +tomli = [ + {file = "tomli-1.2.3-py3-none-any.whl", hash = "sha256:e3069e4be3ead9668e21cb9b074cd948f7b3113fd9c8bba083f48247aab8b11c"}, + {file = "tomli-1.2.3.tar.gz", hash = "sha256:05b6166bff487dc068d322585c7ea4ef78deed501cc124060e0f238e89a9231f"}, +] +typed-ast = [ + {file = "typed_ast-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:183b183b7771a508395d2cbffd6db67d6ad52958a5fdc99f450d954003900266"}, + {file = "typed_ast-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:676d051b1da67a852c0447621fdd11c4e104827417bf216092ec3e286f7da596"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc2542e83ac8399752bc16e0b35e038bdb659ba237f4222616b4e83fb9654985"}, + {file = "typed_ast-1.5.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:74cac86cc586db8dfda0ce65d8bcd2bf17b58668dfcc3652762f3ef0e6677e76"}, + {file = "typed_ast-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:18fe320f354d6f9ad3147859b6e16649a0781425268c4dde596093177660e71a"}, + {file = "typed_ast-1.5.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:31d8c6b2df19a777bc8826770b872a45a1f30cfefcfd729491baa5237faae837"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:963a0ccc9a4188524e6e6d39b12c9ca24cc2d45a71cfdd04a26d883c922b4b78"}, + {file = "typed_ast-1.5.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:0eb77764ea470f14fcbb89d51bc6bbf5e7623446ac4ed06cbd9ca9495b62e36e"}, + {file = "typed_ast-1.5.2-cp36-cp36m-win_amd64.whl", hash = "sha256:294a6903a4d087db805a7656989f613371915fc45c8cc0ddc5c5a0a8ad9bea4d"}, + {file = "typed_ast-1.5.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:26a432dc219c6b6f38be20a958cbe1abffcc5492821d7e27f08606ef99e0dffd"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7407cfcad702f0b6c0e0f3e7ab876cd1d2c13b14ce770e412c0c4b9728a0f88"}, + {file = "typed_ast-1.5.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f30ddd110634c2d7534b2d4e0e22967e88366b0d356b24de87419cc4410c41b7"}, + {file = "typed_ast-1.5.2-cp37-cp37m-win_amd64.whl", hash = "sha256:8c08d6625bb258179b6e512f55ad20f9dfef019bbfbe3095247401e053a3ea30"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:90904d889ab8e81a956f2c0935a523cc4e077c7847a836abee832f868d5c26a4"}, + {file = "typed_ast-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bbebc31bf11762b63bf61aaae232becb41c5bf6b3461b80a4df7e791fabb3aca"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c29dd9a3a9d259c9fa19d19738d021632d673f6ed9b35a739f48e5f807f264fb"}, + {file = "typed_ast-1.5.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:58ae097a325e9bb7a684572d20eb3e1809802c5c9ec7108e85da1eb6c1a3331b"}, + {file = "typed_ast-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:da0a98d458010bf4fe535f2d1e367a2e2060e105978873c04c04212fb20543f7"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:33b4a19ddc9fc551ebabca9765d54d04600c4a50eda13893dadf67ed81d9a098"}, + {file = "typed_ast-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1098df9a0592dd4c8c0ccfc2e98931278a6c6c53cb3a3e2cf7e9ee3b06153344"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42c47c3b43fe3a39ddf8de1d40dbbfca60ac8530a36c9b198ea5b9efac75c09e"}, + {file = "typed_ast-1.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f290617f74a610849bd8f5514e34ae3d09eafd521dceaa6cf68b3f4414266d4e"}, + {file = "typed_ast-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:df05aa5b241e2e8045f5f4367a9f6187b09c4cdf8578bb219861c4e27c443db5"}, + {file = "typed_ast-1.5.2.tar.gz", hash = "sha256:525a2d4088e70a9f75b08b3f87a51acc9cde640e19cc523c7e41aa355564ae27"}, +] +typing-extensions = [ + {file = "typing_extensions-4.0.1-py3-none-any.whl", hash = "sha256:7f001e5ac290a0c0401508864c7ec868be4e701886d5b573a9528ed3973d9d3b"}, + {file = "typing_extensions-4.0.1.tar.gz", hash = "sha256:4ca091dea149f945ec56afb48dae714f21e8692ef22a395223bcd328961b6a0e"}, +] urllib3 = [ {file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"}, {file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"}, diff --git a/pyproject.toml b/pyproject.toml index ad52ed4..e1ca571 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,17 +15,23 @@ # Library dependencies [tool.poetry.dependencies] - python = "^3.6" + python = "^3.6.2" # Development dependencies [tool.poetry.dev-dependencies] pytest = "^5.2.1" sphinx = "^2.2.1" sphinx_rtd_theme = "^0.4.3" + black = "^22.1.0" # Optional dependencies [tool.poetry.extras] +# Code style +[tool.black] +line-length = 120 +target-version = ['py36'] + # Used build system [build-system] requires = ["poetry>=0.12"]