mirror of
https://github.com/Steffo99/lihzahrd.git
synced 2024-11-21 07:34:23 +00:00
🧹 Run Black on all files
This commit is contained in:
parent
be05058df4
commit
21e2983072
49 changed files with 845 additions and 586 deletions
|
@ -17,9 +17,9 @@
|
||||||
|
|
||||||
# -- Project information -----------------------------------------------------
|
# -- Project information -----------------------------------------------------
|
||||||
|
|
||||||
project = 'lihzahrd'
|
project = "lihzahrd"
|
||||||
copyright = '2020, Stefano Pigozzi'
|
copyright = "2020, Stefano Pigozzi"
|
||||||
author = 'Stefano Pigozzi'
|
author = "Stefano Pigozzi"
|
||||||
|
|
||||||
# -- General configuration ---------------------------------------------------
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
||||||
|
@ -39,16 +39,16 @@ def skip(app, what, name: str, obj, would_skip, options):
|
||||||
|
|
||||||
|
|
||||||
def setup(app):
|
def setup(app):
|
||||||
app.add_stylesheet('lihzahrd.css')
|
app.add_stylesheet("lihzahrd.css")
|
||||||
|
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory.
|
# 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
|
# List of patterns, relative to source directory, that match files and
|
||||||
# directories to ignore when looking for source files.
|
# directories to ignore when looking for source files.
|
||||||
# This pattern also affects html_static_path and html_extra_path.
|
# 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 -------------------------------------------------
|
# -- 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
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
# a list of builtin themes.
|
# 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,
|
# 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,
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
html_static_path = ['_static']
|
html_static_path = ["_static"]
|
||||||
|
|
|
@ -7,10 +7,7 @@ class Bestiary:
|
||||||
|
|
||||||
__slots__ = "chats", "kills", "sightings"
|
__slots__ = "chats", "kills", "sightings"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, chats: List[EntityType], kills: Dict[EntityType, int], sightings: List[EntityType]):
|
||||||
chats: List[EntityType],
|
|
||||||
kills: Dict[EntityType, int],
|
|
||||||
sightings: List[EntityType]):
|
|
||||||
self.chats: List[EntityType] = chats
|
self.chats: List[EntityType] = chats
|
||||||
self.kills: Dict[EntityType, int] = kills
|
self.kills: Dict[EntityType, int] = kills
|
||||||
self.sightings: List[EntityType] = sightings
|
self.sightings: List[EntityType] = sightings
|
||||||
|
|
|
@ -14,5 +14,7 @@ class Chest:
|
||||||
self.contents: typing.List[ItemStack] = contents
|
self.contents: typing.List[ItemStack] = contents
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f'<Chest "{self.name}" at {self.position} ' \
|
return (
|
||||||
f'with {len(list(filter(lambda x: x is not None, self.contents)))} items>'
|
f'<Chest "{self.name}" at {self.position} '
|
||||||
|
f"with {len(list(filter(lambda x: x is not None, self.contents)))} items>"
|
||||||
|
)
|
||||||
|
|
|
@ -5,6 +5,7 @@ class BlockType(enum.IntEnum):
|
||||||
"""All possible block types.
|
"""All possible block types.
|
||||||
|
|
||||||
Data from https://github.com/tModLoader/tModLoader/wiki/Vanilla-Tile-IDs."""
|
Data from https://github.com/tModLoader/tModLoader/wiki/Vanilla-Tile-IDs."""
|
||||||
|
|
||||||
DIRT = 0
|
DIRT = 0
|
||||||
STONE = 1
|
STONE = 1
|
||||||
GRASS = 2
|
GRASS = 2
|
||||||
|
|
|
@ -3,6 +3,7 @@ import enum
|
||||||
|
|
||||||
class EntityType(enum.IntEnum):
|
class EntityType(enum.IntEnum):
|
||||||
"""An enumeration of all Terraria entities."""
|
"""An enumeration of all Terraria entities."""
|
||||||
|
|
||||||
# https://terraria.gamepedia.com/NPC_IDs
|
# https://terraria.gamepedia.com/NPC_IDs
|
||||||
# Obtained from this wiki page with the following regex and adding BestiaryGirl = 633 manually
|
# 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]+)$
|
# ^([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
|
GoldenSlime = 667
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"{self.__class__.__name__}.{self.name}"
|
return f"{self.__class__.__name__}.{self.name}"
|
||||||
|
|
|
@ -5,6 +5,7 @@ class ItemType(enum.IntEnum):
|
||||||
"""List of all available Terraria item types.
|
"""List of all available Terraria item types.
|
||||||
|
|
||||||
From https://github.com/tModLoader/tModLoader/wiki/Vanilla-Item-IDs ."""
|
From https://github.com/tModLoader/tModLoader/wiki/Vanilla-Item-IDs ."""
|
||||||
|
|
||||||
YELLOW_PHASESABER_OLD = -24
|
YELLOW_PHASESABER_OLD = -24
|
||||||
WHITE_PHASESABER_OLD = -23
|
WHITE_PHASESABER_OLD = -23
|
||||||
PURPLE_PHASESABER_OLD = -22
|
PURPLE_PHASESABER_OLD = -22
|
||||||
|
|
|
@ -4,6 +4,7 @@ import functools
|
||||||
|
|
||||||
class LiquidType(enum.IntEnum):
|
class LiquidType(enum.IntEnum):
|
||||||
"""All possible types of liquids."""
|
"""All possible types of liquids."""
|
||||||
|
|
||||||
NO_LIQUID = 0
|
NO_LIQUID = 0
|
||||||
WATER = 1
|
WATER = 1
|
||||||
LAVA = 2
|
LAVA = 2
|
||||||
|
|
|
@ -5,6 +5,7 @@ class WallType(enum.IntEnum):
|
||||||
"""All possible wall types.
|
"""All possible wall types.
|
||||||
|
|
||||||
Data from https://github.com/tModLoader/tModLoader/wiki/Vanilla-Wall-IDs."""
|
Data from https://github.com/tModLoader/tModLoader/wiki/Vanilla-Wall-IDs."""
|
||||||
|
|
||||||
STONE = 1
|
STONE = 1
|
||||||
DIRT_UNSAFE = 2
|
DIRT_UNSAFE = 2
|
||||||
EBONSTONE_UNSAFE = 3
|
EBONSTONE_UNSAFE = 3
|
||||||
|
|
|
@ -2,6 +2,7 @@ class Coordinates:
|
||||||
__slots__ = "x", "y"
|
__slots__ = "x", "y"
|
||||||
|
|
||||||
"""A pair of coordinates."""
|
"""A pair of coordinates."""
|
||||||
|
|
||||||
def __init__(self, x, y):
|
def __init__(self, x, y):
|
||||||
self.x = x
|
self.x = x
|
||||||
self.y = y
|
self.y = y
|
||||||
|
|
|
@ -7,7 +7,7 @@ from .rect import Rect
|
||||||
|
|
||||||
|
|
||||||
class FileReader:
|
class FileReader:
|
||||||
__slots__ = "file",
|
__slots__ = ("file",)
|
||||||
|
|
||||||
def __init__(self, file: typing.IO):
|
def __init__(self, file: typing.IO):
|
||||||
self.file: typing.IO = file
|
self.file: typing.IO = file
|
||||||
|
@ -48,14 +48,16 @@ class FileReader:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@functools.lru_cache(256)
|
@functools.lru_cache(256)
|
||||||
def _bitify(data) -> typing.Tuple[bool, bool, bool, bool, bool, bool, bool, bool]:
|
def _bitify(data) -> typing.Tuple[bool, bool, bool, bool, bool, bool, bool, bool]:
|
||||||
return (bool(data & 0b0000_0001),
|
return (
|
||||||
bool(data & 0b0000_0010),
|
bool(data & 0b0000_0001),
|
||||||
bool(data & 0b0000_0100),
|
bool(data & 0b0000_0010),
|
||||||
bool(data & 0b0000_1000),
|
bool(data & 0b0000_0100),
|
||||||
bool(data & 0b0001_0000),
|
bool(data & 0b0000_1000),
|
||||||
bool(data & 0b0010_0000),
|
bool(data & 0b0001_0000),
|
||||||
bool(data & 0b0100_0000),
|
bool(data & 0b0010_0000),
|
||||||
bool(data & 0b1000_0000))
|
bool(data & 0b0100_0000),
|
||||||
|
bool(data & 0b1000_0000),
|
||||||
|
)
|
||||||
|
|
||||||
def bits(self) -> typing.Tuple[bool, bool, bool, bool, bool, bool, bool, bool]:
|
def bits(self) -> typing.Tuple[bool, bool, bool, bool, bool, bool, bool, bool]:
|
||||||
data = struct.unpack("B", self.file.read(1))[0]
|
data = struct.unpack("B", self.file.read(1))[0]
|
||||||
|
|
|
@ -18,19 +18,21 @@ class Pointers:
|
||||||
"unknown",
|
"unknown",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
world_header: int,
|
self,
|
||||||
world_tiles: int,
|
world_header: int,
|
||||||
chests: int,
|
world_tiles: int,
|
||||||
signs: int,
|
chests: int,
|
||||||
npcs: int,
|
signs: int,
|
||||||
tile_entities: int,
|
npcs: int,
|
||||||
pressure_plates: int,
|
tile_entities: int,
|
||||||
town_manager: int,
|
pressure_plates: int,
|
||||||
bestiary: int,
|
town_manager: int,
|
||||||
journey_powers: int,
|
bestiary: int,
|
||||||
footer: int,
|
journey_powers: int,
|
||||||
*unknown):
|
footer: int,
|
||||||
|
*unknown,
|
||||||
|
):
|
||||||
self.file_format: int = 0
|
self.file_format: int = 0
|
||||||
self.world_header: int = world_header
|
self.world_header: int = world_header
|
||||||
self.world_tiles: int = world_tiles
|
self.world_tiles: int = world_tiles
|
||||||
|
|
|
@ -1,22 +1,25 @@
|
||||||
class Backgrounds:
|
class Backgrounds:
|
||||||
"""The backgrounds of various world biomes."""
|
"""The backgrounds of various world biomes."""
|
||||||
def __init__(self,
|
|
||||||
bg_underground_snow: int,
|
def __init__(
|
||||||
bg_underground_jungle: int,
|
self,
|
||||||
bg_hell: int,
|
bg_underground_snow: int,
|
||||||
bg_forest: int,
|
bg_underground_jungle: int,
|
||||||
bg_corruption: int,
|
bg_hell: int,
|
||||||
bg_jungle: int,
|
bg_forest: int,
|
||||||
bg_snow: int,
|
bg_corruption: int,
|
||||||
bg_hallow: int,
|
bg_jungle: int,
|
||||||
bg_crimson: int,
|
bg_snow: int,
|
||||||
bg_desert: int,
|
bg_hallow: int,
|
||||||
bg_ocean: int,
|
bg_crimson: int,
|
||||||
new_bg_1: int,
|
bg_desert: int,
|
||||||
new_bg_2: int,
|
bg_ocean: int,
|
||||||
new_bg_3: int,
|
new_bg_1: int,
|
||||||
new_bg_4: int,
|
new_bg_2: int,
|
||||||
new_bg_5: int,):
|
new_bg_3: int,
|
||||||
|
new_bg_4: int,
|
||||||
|
new_bg_5: int,
|
||||||
|
):
|
||||||
self.bg_underground_snow: int = bg_underground_snow
|
self.bg_underground_snow: int = bg_underground_snow
|
||||||
self.bg_underground_jungle: int = bg_underground_jungle
|
self.bg_underground_jungle: int = bg_underground_jungle
|
||||||
self.bg_hell: int = bg_hell
|
self.bg_hell: int = bg_hell
|
||||||
|
@ -35,7 +38,9 @@ class Backgrounds:
|
||||||
self.new_bg_5: int = new_bg_5
|
self.new_bg_5: int = new_bg_5
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"WorldBackgrounds({self.bg_underground_snow}, {self.bg_underground_jungle}, {self.bg_hell}," \
|
return (
|
||||||
f" {self.bg_forest}, {self.bg_corruption}, {self.bg_jungle}, {self.bg_snow}, {self.bg_hallow}," \
|
f"WorldBackgrounds({self.bg_underground_snow}, {self.bg_underground_jungle}, {self.bg_hell},"
|
||||||
f" {self.bg_crimson}, {self.bg_desert}, {self.bg_ocean}," \
|
f" {self.bg_forest}, {self.bg_corruption}, {self.bg_jungle}, {self.bg_snow}, {self.bg_hallow},"
|
||||||
f" {self.new_bg_1}, {self.new_bg_2}, {self.new_bg_3}, {self.new_bg_4}, {self.new_bg_5})"
|
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})"
|
||||||
|
)
|
||||||
|
|
|
@ -3,35 +3,37 @@ from .oldonesarmytiers import OldOnesArmyTiers
|
||||||
|
|
||||||
|
|
||||||
class BossesDefeated:
|
class BossesDefeated:
|
||||||
def __init__(self,
|
def __init__(
|
||||||
eye_of_cthulhu: bool,
|
self,
|
||||||
eater_of_worlds: bool,
|
eye_of_cthulhu: bool,
|
||||||
skeletron: bool,
|
eater_of_worlds: bool,
|
||||||
queen_bee: bool,
|
skeletron: bool,
|
||||||
the_twins: bool,
|
queen_bee: bool,
|
||||||
the_destroyer: bool,
|
the_twins: bool,
|
||||||
skeletron_prime: bool,
|
the_destroyer: bool,
|
||||||
any_mechnical_boss: bool,
|
skeletron_prime: bool,
|
||||||
plantera: bool,
|
any_mechnical_boss: bool,
|
||||||
golem: bool,
|
plantera: bool,
|
||||||
king_slime: bool,
|
golem: bool,
|
||||||
goblin_army: bool,
|
king_slime: bool,
|
||||||
clown: bool,
|
goblin_army: bool,
|
||||||
frost_moon: bool,
|
clown: bool,
|
||||||
pirates: bool,
|
frost_moon: bool,
|
||||||
duke_fishron: bool,
|
pirates: bool,
|
||||||
moon_lord: bool,
|
duke_fishron: bool,
|
||||||
pumpking: bool,
|
moon_lord: bool,
|
||||||
mourning_wood: bool,
|
pumpking: bool,
|
||||||
ice_queen: bool,
|
mourning_wood: bool,
|
||||||
santa_nk1: bool,
|
ice_queen: bool,
|
||||||
everscream: bool,
|
santa_nk1: bool,
|
||||||
martian_madness: bool,
|
everscream: bool,
|
||||||
lunatic_cultist: bool,
|
martian_madness: bool,
|
||||||
lunar_pillars: PillarsInfo,
|
lunatic_cultist: bool,
|
||||||
old_ones_army: OldOnesArmyTiers,
|
lunar_pillars: PillarsInfo,
|
||||||
empress_of_light: bool,
|
old_ones_army: OldOnesArmyTiers,
|
||||||
queen_slime: bool):
|
empress_of_light: bool,
|
||||||
|
queen_slime: bool,
|
||||||
|
):
|
||||||
self.eye_of_cthulhu: bool = eye_of_cthulhu
|
self.eye_of_cthulhu: bool = eye_of_cthulhu
|
||||||
self.eater_of_worlds: bool = eater_of_worlds
|
self.eater_of_worlds: bool = eater_of_worlds
|
||||||
self.skeletron: bool = skeletron
|
self.skeletron: bool = skeletron
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class Clouds:
|
class Clouds:
|
||||||
"""Information about... the clouds in the world?"""
|
"""Information about... the clouds in the world?"""
|
||||||
|
|
||||||
def __init__(self, bg_cloud: int, cloud_number: int, wind_speed: float):
|
def __init__(self, bg_cloud: int, cloud_number: int, wind_speed: float):
|
||||||
self.bg_cloud: int = bg_cloud
|
self.bg_cloud: int = bg_cloud
|
||||||
self.cloud_number: int = cloud_number
|
self.cloud_number: int = cloud_number
|
||||||
|
|
|
@ -5,18 +5,22 @@ from .sandstorm import Sandstorm
|
||||||
from .lunarevents import LunarEvents
|
from .lunarevents import LunarEvents
|
||||||
from .lanternnight import LanternNight
|
from .lanternnight import LanternNight
|
||||||
|
|
||||||
|
|
||||||
class Events:
|
class Events:
|
||||||
"""Information about the ongoing world events."""
|
"""Information about the ongoing world events."""
|
||||||
def __init__(self,
|
|
||||||
blood_moon: bool,
|
def __init__(
|
||||||
solar_eclipse: bool,
|
self,
|
||||||
invasion: Invasion,
|
blood_moon: bool,
|
||||||
slime_rain: float,
|
solar_eclipse: bool,
|
||||||
rain: Rain,
|
invasion: Invasion,
|
||||||
party: Party,
|
slime_rain: float,
|
||||||
sandstorm: Sandstorm,
|
rain: Rain,
|
||||||
lunar_events: LunarEvents,
|
party: Party,
|
||||||
lantern_night: LanternNight):
|
sandstorm: Sandstorm,
|
||||||
|
lunar_events: LunarEvents,
|
||||||
|
lantern_night: LanternNight,
|
||||||
|
):
|
||||||
self.blood_moon: bool = blood_moon
|
self.blood_moon: bool = blood_moon
|
||||||
"""If the current moon is a Blood Moon."""
|
"""If the current moon is a Blood Moon."""
|
||||||
|
|
||||||
|
|
|
@ -59,4 +59,4 @@ class FourPartSplit:
|
||||||
|
|
||||||
@far_right.setter
|
@far_right.setter
|
||||||
def far_right(self, value):
|
def far_right(self, value):
|
||||||
self.properties[2] = value
|
self.properties[2] = value
|
||||||
|
|
|
@ -4,11 +4,7 @@ from .invasiontype import InvasionType
|
||||||
class Invasion:
|
class Invasion:
|
||||||
"""Invasions (goblin army, pirates, martian madness...) related information."""
|
"""Invasions (goblin army, pirates, martian madness...) related information."""
|
||||||
|
|
||||||
def __init__(self, delay: int,
|
def __init__(self, delay: int, size: int, type_: InvasionType, position: float, size_start: int):
|
||||||
size: int,
|
|
||||||
type_: InvasionType,
|
|
||||||
position: float,
|
|
||||||
size_start: int):
|
|
||||||
self.delay: int = delay
|
self.delay: int = delay
|
||||||
self.size: int = size
|
self.size: int = size
|
||||||
|
|
||||||
|
@ -21,5 +17,7 @@ class Invasion:
|
||||||
self.size_start: int = size_start
|
self.size_start: int = size_start
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"WorldInvasion(delay={self.delay}, size={self.size}, type_={self.type}, position={self.position}," \
|
return (
|
||||||
f" size_start={self.size_start})"
|
f"WorldInvasion(delay={self.delay}, size={self.size}, type_={self.type}, position={self.position},"
|
||||||
|
f" size_start={self.size_start})"
|
||||||
|
)
|
||||||
|
|
|
@ -3,11 +3,8 @@ import typing
|
||||||
|
|
||||||
class LanternNight:
|
class LanternNight:
|
||||||
"""Lantern Night event related information."""
|
"""Lantern Night event related information."""
|
||||||
def __init__(self,
|
|
||||||
nights_on_cooldown: int,
|
def __init__(self, nights_on_cooldown: int, genuine: bool, manual: bool, next_night_is_lantern_night: bool):
|
||||||
genuine: bool,
|
|
||||||
manual: bool,
|
|
||||||
next_night_is_lantern_night: bool):
|
|
||||||
self.nights_on_cooldown: int = nights_on_cooldown
|
self.nights_on_cooldown: int = nights_on_cooldown
|
||||||
"""How many nights before the next lantern night can happen."""
|
"""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?"""
|
"""Was a boss just defeated, making the next night a Lantern Night?"""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"WorldLanternNight(nights_on_cooldown={self.nights_on_cooldown}," \
|
return (
|
||||||
f" genuine={self.genuine}, manual={self.manual}, nights_on_cooldown={self.nights_on_cooldown})"
|
f"WorldLanternNight(nights_on_cooldown={self.nights_on_cooldown},"
|
||||||
|
f" genuine={self.genuine}, manual={self.manual}, nights_on_cooldown={self.nights_on_cooldown})"
|
||||||
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_active(self):
|
def is_active(self):
|
||||||
|
|
|
@ -3,9 +3,8 @@ from .pillarsinfo import PillarsInfo
|
||||||
|
|
||||||
class LunarEvents:
|
class LunarEvents:
|
||||||
"""Lunar Events (Lunar Pillars) related information."""
|
"""Lunar Events (Lunar Pillars) related information."""
|
||||||
def __init__(self,
|
|
||||||
are_active: bool,
|
def __init__(self, are_active: bool, pillars_present: PillarsInfo):
|
||||||
pillars_present: PillarsInfo):
|
|
||||||
self.are_active: bool = are_active
|
self.are_active: bool = are_active
|
||||||
"""If the Lunar Events are active or not."""
|
"""If the Lunar Events are active or not."""
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@ import enum
|
||||||
|
|
||||||
class MoonStyle(enum.IntEnum):
|
class MoonStyle(enum.IntEnum):
|
||||||
"""All possible moon styles."""
|
"""All possible moon styles."""
|
||||||
|
|
||||||
WHITE = 0
|
WHITE = 0
|
||||||
ORANGE = 1
|
ORANGE = 1
|
||||||
RINGED_GREEN = 2
|
RINGED_GREEN = 2
|
||||||
|
@ -13,6 +14,5 @@ class MoonStyle(enum.IntEnum):
|
||||||
PINK_ORANGE = 7
|
PINK_ORANGE = 7
|
||||||
TRIPLE_PURPLE = 8
|
TRIPLE_PURPLE = 8
|
||||||
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"{self.__class__.__name__}.{self.name}"
|
return f"{self.__class__.__name__}.{self.name}"
|
||||||
|
|
|
@ -3,11 +3,10 @@ import typing
|
||||||
|
|
||||||
class Party:
|
class Party:
|
||||||
"""NPC Party related information."""
|
"""NPC Party related information."""
|
||||||
def __init__(self,
|
|
||||||
thrown_by_party_center: bool,
|
def __init__(
|
||||||
thrown_by_npcs: bool,
|
self, thrown_by_party_center: bool, thrown_by_npcs: bool, cooldown: int, partying_npcs: typing.List[int]
|
||||||
cooldown: int,
|
):
|
||||||
partying_npcs: typing.List[int]):
|
|
||||||
self.thrown_by_party_center: bool = thrown_by_party_center
|
self.thrown_by_party_center: bool = thrown_by_party_center
|
||||||
"""If the party was started by right-clicking a 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."""
|
"""The list of NPC IDs that threw the party."""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"WorldParty(thrown_by_party_center={self.thrown_by_party_center}," \
|
return (
|
||||||
f" thrown_by_npcs={self.thrown_by_npcs}, cooldown={self.cooldown}, partying_npcs={self.partying_npcs})"
|
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
|
@property
|
||||||
def is_active(self):
|
def is_active(self):
|
||||||
|
|
|
@ -4,10 +4,7 @@ import typing
|
||||||
class Pets:
|
class Pets:
|
||||||
"""Information about the Pet Licenses that were activated in the world."""
|
"""Information about the Pet Licenses that were activated in the world."""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, cat: bool, dog: bool, bunny: bool):
|
||||||
cat: bool,
|
|
||||||
dog: bool,
|
|
||||||
bunny: bool):
|
|
||||||
|
|
||||||
self.cat: bool = cat
|
self.cat: bool = cat
|
||||||
"""Was the Cat License (https://terraria.gamepedia.com/Cat_License) ever activated?"""
|
"""Was the Cat License (https://terraria.gamepedia.com/Cat_License) ever activated?"""
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class PillarsInfo:
|
class PillarsInfo:
|
||||||
"""A container for information associated with the Lunar Pillars."""
|
"""A container for information associated with the Lunar Pillars."""
|
||||||
|
|
||||||
def __init__(self, solar, vortex, nebula, stardust):
|
def __init__(self, solar, vortex, nebula, stardust):
|
||||||
self.solar = solar
|
self.solar = solar
|
||||||
self.vortex = vortex
|
self.vortex = vortex
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
class Rain:
|
class Rain:
|
||||||
"""Rain related information."""
|
"""Rain related information."""
|
||||||
|
|
||||||
def __init__(self, is_active: bool, time_left: int, max_rain: float):
|
def __init__(self, is_active: bool, time_left: int, max_rain: float):
|
||||||
self.is_active: bool = is_active
|
self.is_active: bool = is_active
|
||||||
"""If it is currently raining in the world."""
|
"""If it is currently raining in the world."""
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
class Sandstorm:
|
class Sandstorm:
|
||||||
"""Sandstorm related information."""
|
"""Sandstorm related information."""
|
||||||
def __init__(self,
|
|
||||||
is_active: bool,
|
def __init__(self, is_active: bool, time_left: int, severity: float, intended_severity: float):
|
||||||
time_left: int,
|
|
||||||
severity: float,
|
|
||||||
intended_severity: float):
|
|
||||||
self.is_active: bool = is_active
|
self.is_active: bool = is_active
|
||||||
"""If a sandstorm is currently ongoing in the desert."""
|
"""If a sandstorm is currently ongoing in the desert."""
|
||||||
|
|
||||||
|
@ -15,5 +12,7 @@ class Sandstorm:
|
||||||
self.intended_severity: float = intended_severity
|
self.intended_severity: float = intended_severity
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"WorldSandstorm(is_active={self.is_active}, time_left={self.time_left}," \
|
return (
|
||||||
f" severity={self.severity}, intended_severity={self.intended_severity})"
|
f"WorldSandstorm(is_active={self.is_active}, time_left={self.time_left},"
|
||||||
|
f" severity={self.severity}, intended_severity={self.intended_severity})"
|
||||||
|
)
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
class SavedNPCs:
|
class SavedNPCs:
|
||||||
def __init__(self,
|
def __init__(
|
||||||
goblin_tinkerer: bool,
|
self,
|
||||||
wizard: bool,
|
goblin_tinkerer: bool,
|
||||||
mechanic: bool,
|
wizard: bool,
|
||||||
angler: bool,
|
mechanic: bool,
|
||||||
stylist: bool,
|
angler: bool,
|
||||||
tax_collector: bool,
|
stylist: bool,
|
||||||
bartender: bool,
|
tax_collector: bool,
|
||||||
golfer: bool,
|
bartender: bool,
|
||||||
advanced_combat: bool):
|
golfer: bool,
|
||||||
|
advanced_combat: bool,
|
||||||
|
):
|
||||||
self.goblin_tinkerer: bool = goblin_tinkerer
|
self.goblin_tinkerer: bool = goblin_tinkerer
|
||||||
self.wizard: bool = wizard
|
self.wizard: bool = wizard
|
||||||
self.mechanic: bool = mechanic
|
self.mechanic: bool = mechanic
|
||||||
|
@ -21,6 +23,8 @@ class SavedNPCs:
|
||||||
"""Was the Advanced Combat Technique Book used."""
|
"""Was the Advanced Combat Technique Book used."""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"SavedNPCs(goblin_tinkerer={self.goblin_tinkerer}, wizard={self.wizard}, mechanic={self.mechanic}," \
|
return (
|
||||||
f" angler={self.angler}, stylist={self.stylist}, tax_collector={self.tax_collector}," \
|
f"SavedNPCs(goblin_tinkerer={self.goblin_tinkerer}, wizard={self.wizard}, mechanic={self.mechanic},"
|
||||||
f" bartender={self.bartender}, golfer={self.golfer}, advanced_combat={self.advanced_combat}"
|
f" angler={self.angler}, stylist={self.stylist}, tax_collector={self.tax_collector},"
|
||||||
|
f" bartender={self.bartender}, golfer={self.golfer}, advanced_combat={self.advanced_combat}"
|
||||||
|
)
|
||||||
|
|
|
@ -5,14 +5,16 @@ from ..enums import BlockType
|
||||||
class SavedOreTiers:
|
class SavedOreTiers:
|
||||||
"""The types of ores that generated in the world."""
|
"""The types of ores that generated in the world."""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
tier_1: BlockType,
|
self,
|
||||||
tier_2: BlockType,
|
tier_1: BlockType,
|
||||||
tier_3: BlockType,
|
tier_2: BlockType,
|
||||||
tier_4: BlockType,
|
tier_3: BlockType,
|
||||||
hardmode_tier_1: Optional[BlockType],
|
tier_4: BlockType,
|
||||||
hardmode_tier_2: Optional[BlockType],
|
hardmode_tier_1: Optional[BlockType],
|
||||||
hardmode_tier_3: Optional[BlockType]):
|
hardmode_tier_2: Optional[BlockType],
|
||||||
|
hardmode_tier_3: Optional[BlockType],
|
||||||
|
):
|
||||||
|
|
||||||
self.tier_1: BlockType = tier_1
|
self.tier_1: BlockType = tier_1
|
||||||
"""Copper or Tin?"""
|
"""Copper or Tin?"""
|
||||||
|
@ -32,21 +34,27 @@ class SavedOreTiers:
|
||||||
|
|
||||||
self.hardmode_tier_1: Optional[BlockType] = hardmode_tier_1
|
self.hardmode_tier_1: Optional[BlockType] = hardmode_tier_1
|
||||||
"""Cobalt or Palladium? None if it hasn't been determined yet."""
|
"""Cobalt or Palladium? None if it hasn't been determined yet."""
|
||||||
assert self.hardmode_tier_1 is None \
|
assert (
|
||||||
or self.hardmode_tier_1 == BlockType.COBALT \
|
self.hardmode_tier_1 is None
|
||||||
or self.hardmode_tier_1 == BlockType.PALLADIUM
|
or self.hardmode_tier_1 == BlockType.COBALT
|
||||||
|
or self.hardmode_tier_1 == BlockType.PALLADIUM
|
||||||
|
)
|
||||||
|
|
||||||
self.hardmode_tier_2: Optional[BlockType] = hardmode_tier_2
|
self.hardmode_tier_2: Optional[BlockType] = hardmode_tier_2
|
||||||
"""Mythril or Orichalcum? None if it hasn't been determined yet."""
|
"""Mythril or Orichalcum? None if it hasn't been determined yet."""
|
||||||
assert self.hardmode_tier_2 is None \
|
assert (
|
||||||
or self.hardmode_tier_2 == BlockType.MYTHRIL \
|
self.hardmode_tier_2 is None
|
||||||
or self.hardmode_tier_2 == BlockType.ORICHALCUM
|
or self.hardmode_tier_2 == BlockType.MYTHRIL
|
||||||
|
or self.hardmode_tier_2 == BlockType.ORICHALCUM
|
||||||
|
)
|
||||||
|
|
||||||
self.hardmode_tier_3: Optional[BlockType] = hardmode_tier_3
|
self.hardmode_tier_3: Optional[BlockType] = hardmode_tier_3
|
||||||
"""Adamantite or Titanium? None if it hasn't been determined yet."""
|
"""Adamantite or Titanium? None if it hasn't been determined yet."""
|
||||||
assert self.hardmode_tier_3 is None \
|
assert (
|
||||||
or self.hardmode_tier_3 == BlockType.ADAMANTITE \
|
self.hardmode_tier_3 is None
|
||||||
or self.hardmode_tier_3 == BlockType.TITANIUM
|
or self.hardmode_tier_3 == BlockType.ADAMANTITE
|
||||||
|
or self.hardmode_tier_3 == BlockType.TITANIUM
|
||||||
|
)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<SavedOreTiers>"
|
return f"<SavedOreTiers>"
|
||||||
|
|
|
@ -1,10 +1,7 @@
|
||||||
class ShadowOrbs:
|
class ShadowOrbs:
|
||||||
"""Information related to the Shadow Orbs (or the Crimson Hearts) smashed in the world."""
|
"""Information related to the Shadow Orbs (or the Crimson Hearts) smashed in the world."""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, smashed_at_least_once: bool, spawn_meteorite: bool, evil_boss_counter: int):
|
||||||
smashed_at_least_once: bool,
|
|
||||||
spawn_meteorite: bool,
|
|
||||||
evil_boss_counter: int):
|
|
||||||
self.smashed_at_least_once: bool = smashed_at_least_once
|
self.smashed_at_least_once: bool = smashed_at_least_once
|
||||||
"""If a Shadow Orb has ever been smashed in this world."""
|
"""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."""
|
It is the number of Shadow Orbs broken, modulo 3."""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"WorldShadowOrbs(smashed_at_least_once={self.smashed_at_least_once}," \
|
return (
|
||||||
f" spawn_meteorite={self.spawn_meteorite}, evil_boss_counter={self.evil_boss_counter})"
|
f"WorldShadowOrbs(smashed_at_least_once={self.smashed_at_least_once},"
|
||||||
|
f" spawn_meteorite={self.spawn_meteorite}, evil_boss_counter={self.evil_boss_counter})"
|
||||||
|
)
|
||||||
|
|
|
@ -4,10 +4,13 @@ from .fourpartsplit import FourPartSplit
|
||||||
|
|
||||||
class Styles:
|
class Styles:
|
||||||
"""The styles of various world elements."""
|
"""The styles of various world elements."""
|
||||||
def __init__(self,
|
|
||||||
moon: MoonStyle,
|
def __init__(
|
||||||
trees: FourPartSplit,
|
self,
|
||||||
moss: FourPartSplit, ):
|
moon: MoonStyle,
|
||||||
|
trees: FourPartSplit,
|
||||||
|
moss: FourPartSplit,
|
||||||
|
):
|
||||||
self.moon: MoonStyle = moon
|
self.moon: MoonStyle = moon
|
||||||
self.trees: FourPartSplit = trees
|
self.trees: FourPartSplit = trees
|
||||||
self.moss: FourPartSplit = moss
|
self.moss: FourPartSplit = moss
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
class Time:
|
class Time:
|
||||||
"""Game time related information."""
|
"""Game time related information."""
|
||||||
def __init__(self, current: float,
|
|
||||||
is_daytime: bool,
|
def __init__(
|
||||||
moon_phase: int,
|
self, current: float, is_daytime: bool, moon_phase: int, sundial_cooldown: int, fast_forward_time: bool
|
||||||
sundial_cooldown: int,
|
):
|
||||||
fast_forward_time: bool):
|
|
||||||
self.current: float = current
|
self.current: float = current
|
||||||
"""The current game time."""
|
"""The current game time."""
|
||||||
|
|
||||||
|
@ -20,5 +19,7 @@ class Time:
|
||||||
self.fast_forward_time: bool = fast_forward_time
|
self.fast_forward_time: bool = fast_forward_time
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"WorldTime(current={self.current}, is_daytime={self.is_daytime}, moon_phase={self.moon_phase}," \
|
return (
|
||||||
f" sundial_cooldown={self.sundial_cooldown}, fast_forward_time={self.fast_forward_time})"
|
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})"
|
||||||
|
)
|
||||||
|
|
|
@ -4,7 +4,7 @@ import typing
|
||||||
class Version:
|
class Version:
|
||||||
"""A Terraria version."""
|
"""A Terraria version."""
|
||||||
|
|
||||||
__slots__ = ("id", )
|
__slots__ = ("id",)
|
||||||
|
|
||||||
_version_ids = {
|
_version_ids = {
|
||||||
12: "1.0.5",
|
12: "1.0.5",
|
||||||
|
@ -52,7 +52,7 @@ class Version:
|
||||||
227: "1.4.0.3",
|
227: "1.4.0.3",
|
||||||
228: "1.4.0.4",
|
228: "1.4.0.4",
|
||||||
230: "1.4.0.5",
|
230: "1.4.0.5",
|
||||||
238: "1.4.2.3"
|
238: "1.4.2.3",
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, data: typing.Union[int, str]):
|
def __init__(self, data: typing.Union[int, str]):
|
||||||
|
|
|
@ -4,12 +4,10 @@ from ..enums import ItemType, PrefixType
|
||||||
|
|
||||||
class ItemStack:
|
class ItemStack:
|
||||||
"""A stack of a certain item."""
|
"""A stack of a certain item."""
|
||||||
|
|
||||||
__slots__ = "type", "quantity", "prefix"
|
__slots__ = "type", "quantity", "prefix"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, type_: ItemType, quantity: int = 1, prefix: Optional[PrefixType] = None):
|
||||||
type_: ItemType,
|
|
||||||
quantity: int = 1,
|
|
||||||
prefix: Optional[PrefixType] = None):
|
|
||||||
|
|
||||||
self.type: ItemType = type_
|
self.type: ItemType = type_
|
||||||
"""The type of item represented in this stack."""
|
"""The type of item represented in this stack."""
|
||||||
|
|
|
@ -15,13 +15,15 @@ class JourneyPowers:
|
||||||
"freeze_biome_spread",
|
"freeze_biome_spread",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
freeze_time: typing.Optional[bool] = None,
|
self,
|
||||||
time_rate: typing.Optional[float] = None,
|
freeze_time: typing.Optional[bool] = None,
|
||||||
freeze_rain: typing.Optional[bool] = None,
|
time_rate: typing.Optional[float] = None,
|
||||||
freeze_wind: typing.Optional[bool] = None,
|
freeze_rain: typing.Optional[bool] = None,
|
||||||
difficulty: typing.Optional[float] = None,
|
freeze_wind: typing.Optional[bool] = None,
|
||||||
freeze_biome_spread: typing.Optional[bool] = None):
|
difficulty: typing.Optional[float] = None,
|
||||||
|
freeze_biome_spread: typing.Optional[bool] = None,
|
||||||
|
):
|
||||||
|
|
||||||
self.freeze_time: bool = freeze_time
|
self.freeze_time: bool = freeze_time
|
||||||
"""Is time frozen?"""
|
"""Is time frozen?"""
|
||||||
|
@ -42,11 +44,13 @@ class JourneyPowers:
|
||||||
"""Can evil biomes & the hallow spread."""
|
"""Can evil biomes & the hallow spread."""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"JourneyPowers(" \
|
return (
|
||||||
f"freeze_time={self.freeze_time}," \
|
f"JourneyPowers("
|
||||||
f" freeze_rain={self.freeze_rain}," \
|
f"freeze_time={self.freeze_time},"
|
||||||
f" freeze_wind={self.freeze_wind}," \
|
f" freeze_rain={self.freeze_rain},"
|
||||||
f" freeze_biome_spread={self.freeze_biome_spread}," \
|
f" freeze_wind={self.freeze_wind},"
|
||||||
f" time_rate={self.time_rate}," \
|
f" freeze_biome_spread={self.freeze_biome_spread},"
|
||||||
f" difficulty={self.difficulty}" \
|
f" time_rate={self.time_rate},"
|
||||||
f")"
|
f" difficulty={self.difficulty}"
|
||||||
|
f")"
|
||||||
|
)
|
||||||
|
|
|
@ -8,9 +8,11 @@ class Mob:
|
||||||
|
|
||||||
__slots__ = "type", "position"
|
__slots__ = "type", "position"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
type_: EntityType,
|
self,
|
||||||
position: Coordinates, ):
|
type_: EntityType,
|
||||||
|
position: Coordinates,
|
||||||
|
):
|
||||||
self.type: EntityType = type_
|
self.type: EntityType = type_
|
||||||
"""The type of entity this object represents."""
|
"""The type of entity this object represents."""
|
||||||
|
|
||||||
|
|
|
@ -9,12 +9,14 @@ class NPC(Mob):
|
||||||
|
|
||||||
__slots__ = "type", "name", "position", "home", "variation_index"
|
__slots__ = "type", "name", "position", "home", "variation_index"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
type_: EntityType,
|
self,
|
||||||
position: Coordinates,
|
type_: EntityType,
|
||||||
name: str,
|
position: Coordinates,
|
||||||
variation_index: int,
|
name: str,
|
||||||
home: Optional[Coordinates] = None):
|
variation_index: int,
|
||||||
|
home: Optional[Coordinates] = None,
|
||||||
|
):
|
||||||
|
|
||||||
super().__init__(type_, position)
|
super().__init__(type_, position)
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@ from ..fileutils import Coordinates
|
||||||
class WeighedPressurePlate:
|
class WeighedPressurePlate:
|
||||||
"""A single `Weighed Pressure Plate <https://terraria.gamepedia.com/Pressure_Plates>`_ placed in the world."""
|
"""A single `Weighed Pressure Plate <https://terraria.gamepedia.com/Pressure_Plates>`_ placed in the world."""
|
||||||
|
|
||||||
__slots__ = ("position", )
|
__slots__ = ("position",)
|
||||||
|
|
||||||
def __init__(self, position: Coordinates):
|
def __init__(self, position: Coordinates):
|
||||||
self.position: Coordinates = position
|
self.position: Coordinates = position
|
||||||
|
|
|
@ -7,9 +7,7 @@ class ClothingDisplay:
|
||||||
|
|
||||||
__slots__ = "items", "dyes"
|
__slots__ = "items", "dyes"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, items: List[ItemStack], dyes: List[ItemStack]):
|
||||||
items: List[ItemStack],
|
|
||||||
dyes: List[ItemStack]):
|
|
||||||
|
|
||||||
self.items: List[ItemStack] = items
|
self.items: List[ItemStack] = items
|
||||||
"""What items is the display wearing."""
|
"""What items is the display wearing."""
|
||||||
|
|
|
@ -5,6 +5,7 @@ from .clothingdisplay import ClothingDisplay
|
||||||
|
|
||||||
class HatRack(ClothingDisplay):
|
class HatRack(ClothingDisplay):
|
||||||
"""A `Hat Rack <https://terraria.gamepedia.com/Hat_Rack>`_ containing up to 2 dyed helmets."""
|
"""A `Hat Rack <https://terraria.gamepedia.com/Hat_Rack>`_ containing up to 2 dyed helmets."""
|
||||||
|
|
||||||
def __init__(self, items: List[ItemStack], dyes: List[ItemStack]):
|
def __init__(self, items: List[ItemStack], dyes: List[ItemStack]):
|
||||||
super().__init__(items, dyes)
|
super().__init__(items, dyes)
|
||||||
assert len(items) == 2
|
assert len(items) == 2
|
||||||
|
|
|
@ -7,6 +7,7 @@ class Mannequin(ClothingDisplay):
|
||||||
"""A `Mannequin <https://terraria.gamepedia.com/Mannequin>`_
|
"""A `Mannequin <https://terraria.gamepedia.com/Mannequin>`_
|
||||||
/ `Womannequin <https://terraria.gamepedia.com/Womannequin>`_ containing up to 3 dyed armor pieces and up
|
/ `Womannequin <https://terraria.gamepedia.com/Womannequin>`_ containing up to 3 dyed armor pieces and up
|
||||||
to 5 dyed accessories."""
|
to 5 dyed accessories."""
|
||||||
|
|
||||||
def __init__(self, items: List[ItemStack], dyes: List[ItemStack]):
|
def __init__(self, items: List[ItemStack], dyes: List[ItemStack]):
|
||||||
super().__init__(items, dyes)
|
super().__init__(items, dyes)
|
||||||
assert len(items) == 8
|
assert len(items) == 8
|
||||||
|
|
|
@ -3,7 +3,7 @@ from ..items.itemstack import ItemStack
|
||||||
|
|
||||||
class SingleItemDisplay:
|
class SingleItemDisplay:
|
||||||
"""A display case for a single item, such as a `Weapon Rack <https://terraria.gamepedia.com/Weapon_Rack>`_,
|
"""A display case for a single item, such as a `Weapon Rack <https://terraria.gamepedia.com/Weapon_Rack>`_,
|
||||||
a `Item Frame <https://terraria.gamepedia.com/Item_Frame>`_ or a `Plate <https://terraria.gamepedia.com/Plate>`_.
|
a `Item Frame <https://terraria.gamepedia.com/Item_Frame>`_ or a `Plate <https://terraria.gamepedia.com/Plate>`_.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__slots__ = ("item",)
|
__slots__ = ("item",)
|
||||||
|
|
|
@ -10,10 +10,7 @@ class TileEntity:
|
||||||
|
|
||||||
__slots__ = "id", "position", "data"
|
__slots__ = "id", "position", "data"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(self, id_: int, position: Coordinates, extra: typing.Union[TargetDummy, ItemFrame, LogicSensor]):
|
||||||
id_: int,
|
|
||||||
position: Coordinates,
|
|
||||||
extra: typing.Union[TargetDummy, ItemFrame, LogicSensor]):
|
|
||||||
self.id: int = id_
|
self.id: int = id_
|
||||||
self.position: Coordinates = position
|
self.position: Coordinates = position
|
||||||
self.data: typing.Union[TargetDummy, ItemFrame, LogicSensor] = extra
|
self.data: typing.Union[TargetDummy, ItemFrame, LogicSensor] = extra
|
||||||
|
|
|
@ -7,5 +7,4 @@ from .liquid import Liquid
|
||||||
from .tile import Tile
|
from .tile import Tile
|
||||||
from .tilematrix import TileMatrix
|
from .tilematrix import TileMatrix
|
||||||
|
|
||||||
__all__ = ["Shape", "Wiring", "FrameImportantData", "Block",
|
__all__ = ["Shape", "Wiring", "FrameImportantData", "Block", "Wall", "Liquid", "Tile", "TileMatrix"]
|
||||||
"Wall", "Liquid", "Tile", "TileMatrix"]
|
|
||||||
|
|
|
@ -9,12 +9,14 @@ class Block:
|
||||||
|
|
||||||
__slots__ = "type", "frame", "shape", "paint", "is_active"
|
__slots__ = "type", "frame", "shape", "paint", "is_active"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
type_: BlockType,
|
self,
|
||||||
shape: Shape = Shape.NORMAL,
|
type_: BlockType,
|
||||||
frame: typing.Optional[FrameImportantData] = None,
|
shape: Shape = Shape.NORMAL,
|
||||||
paint: typing.Optional[int] = None,
|
frame: typing.Optional[FrameImportantData] = None,
|
||||||
is_active: bool = True):
|
paint: typing.Optional[int] = None,
|
||||||
|
is_active: bool = True,
|
||||||
|
):
|
||||||
self.type: BlockType = type_
|
self.type: BlockType = type_
|
||||||
"""The type of the block (dirt, stone, ...)."""
|
"""The type of the block (dirt, stone, ...)."""
|
||||||
|
|
||||||
|
|
|
@ -14,12 +14,14 @@ class Tile:
|
||||||
|
|
||||||
__slots__ = "block", "wall", "liquid", "wiring", "extra"
|
__slots__ = "block", "wall", "liquid", "wiring", "extra"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
block: typing.Optional[Block] = None,
|
self,
|
||||||
wall: typing.Optional[Wall] = None,
|
block: typing.Optional[Block] = None,
|
||||||
liquid: typing.Optional[Liquid] = None,
|
wall: typing.Optional[Wall] = None,
|
||||||
wiring: typing.Optional[Wiring] = None,
|
liquid: typing.Optional[Liquid] = None,
|
||||||
extra: typing.Optional[typing.Union[Chest, Sign, WeighedPressurePlate, TileEntity]] = None):
|
wiring: typing.Optional[Wiring] = None,
|
||||||
|
extra: typing.Optional[typing.Union[Chest, Sign, WeighedPressurePlate, TileEntity]] = None,
|
||||||
|
):
|
||||||
if wiring is None:
|
if wiring is None:
|
||||||
wiring = Wiring()
|
wiring = Wiring()
|
||||||
|
|
||||||
|
@ -32,9 +34,11 @@ class Tile:
|
||||||
"""A reference to the extra data of this tile, such as Chest or Sign data."""
|
"""A reference to the extra data of this tile, such as Chest or Sign data."""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
tile_status = f"{'B' if self.block else ''}" \
|
tile_status = (
|
||||||
f"{'W' if self.wall else ''}" \
|
f"{'B' if self.block else ''}"
|
||||||
f"{'L' if self.liquid else ''}" \
|
f"{'W' if self.wall else ''}"
|
||||||
f"{'W' if self.wiring else ''}" \
|
f"{'L' if self.liquid else ''}"
|
||||||
f"{'E' if self.extra else ''}"
|
f"{'W' if self.wiring else ''}"
|
||||||
|
f"{'E' if self.extra else ''}"
|
||||||
|
)
|
||||||
return f"<Tile{' ' if tile_status else ''}{tile_status}>"
|
return f"<Tile{' ' if tile_status else ''}{tile_status}>"
|
||||||
|
|
|
@ -6,12 +6,9 @@ class Wiring:
|
||||||
|
|
||||||
__slots__ = "red", "green", "blue", "yellow", "actuator"
|
__slots__ = "red", "green", "blue", "yellow", "actuator"
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
red: bool = False,
|
self, red: bool = False, green: bool = False, blue: bool = False, yellow: bool = False, actuator: bool = False
|
||||||
green: bool = False,
|
):
|
||||||
blue: bool = False,
|
|
||||||
yellow: bool = False,
|
|
||||||
actuator: bool = False):
|
|
||||||
self.red: bool = red
|
self.red: bool = red
|
||||||
"""If there's a red Wire in the tile."""
|
"""If there's a red Wire in the tile."""
|
||||||
|
|
||||||
|
@ -28,8 +25,10 @@ class Wiring:
|
||||||
"""If there's an Actuator in the tile."""
|
"""If there's an Actuator in the tile."""
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"Wires(red={self.red}, green={self.green}, blue={self.blue}, yellow={self.yellow}," \
|
return (
|
||||||
f" actuator={self.actuator})"
|
f"Wires(red={self.red}, green={self.green}, blue={self.blue}, yellow={self.yellow},"
|
||||||
|
f" actuator={self.actuator})"
|
||||||
|
)
|
||||||
|
|
||||||
def __bool__(self):
|
def __bool__(self):
|
||||||
return self.red or self.green or self.blue or self.yellow or self.actuator
|
return self.red or self.green or self.blue or self.yellow or self.actuator
|
||||||
|
|
|
@ -4,6 +4,7 @@ import typing
|
||||||
|
|
||||||
class Timer:
|
class Timer:
|
||||||
"""An object to track and print the time required to perform a section of code."""
|
"""An object to track and print the time required to perform a section of code."""
|
||||||
|
|
||||||
def __init__(self, name: str, display: bool = True):
|
def __init__(self, name: str, display: bool = True):
|
||||||
self.name: str = name
|
self.name: str = name
|
||||||
self.display: bool = display
|
self.display: bool = display
|
||||||
|
|
|
@ -20,65 +20,67 @@ from .errors import InvalidFooterError
|
||||||
class World:
|
class World:
|
||||||
"""The Python representation of a Terraria world."""
|
"""The Python representation of a Terraria world."""
|
||||||
|
|
||||||
def __init__(self,
|
def __init__(
|
||||||
version: Version,
|
self,
|
||||||
savefile_type: int,
|
version: Version,
|
||||||
revision: int,
|
savefile_type: int,
|
||||||
is_favorite: bool,
|
revision: int,
|
||||||
name: str,
|
is_favorite: bool,
|
||||||
generator: GeneratorInfo,
|
name: str,
|
||||||
uuid_: uuid.UUID,
|
generator: GeneratorInfo,
|
||||||
id_: int,
|
uuid_: uuid.UUID,
|
||||||
bounds: Rect,
|
id_: int,
|
||||||
size: Coordinates,
|
bounds: Rect,
|
||||||
difficulty: Difficulty,
|
size: Coordinates,
|
||||||
is_drunk_world: bool,
|
difficulty: Difficulty,
|
||||||
is_for_the_worthy: bool,
|
is_drunk_world: bool,
|
||||||
is_tenth_anniversary: bool,
|
is_for_the_worthy: bool,
|
||||||
created_on,
|
is_tenth_anniversary: bool,
|
||||||
styles: Styles,
|
created_on,
|
||||||
backgrounds: Backgrounds,
|
styles: Styles,
|
||||||
spawn_point: Coordinates,
|
backgrounds: Backgrounds,
|
||||||
underground_level: float,
|
spawn_point: Coordinates,
|
||||||
cavern_level: float,
|
underground_level: float,
|
||||||
time: Time,
|
cavern_level: float,
|
||||||
events: Events,
|
time: Time,
|
||||||
dungeon_point: Coordinates,
|
events: Events,
|
||||||
world_evil: WorldEvilType,
|
dungeon_point: Coordinates,
|
||||||
saved_npcs: SavedNPCs,
|
world_evil: WorldEvilType,
|
||||||
altars_smashed: int,
|
saved_npcs: SavedNPCs,
|
||||||
is_hardmode: bool,
|
altars_smashed: int,
|
||||||
shadow_orbs: ShadowOrbs,
|
is_hardmode: bool,
|
||||||
bosses_defeated: BossesDefeated,
|
shadow_orbs: ShadowOrbs,
|
||||||
anglers_quest: AnglerQuest,
|
bosses_defeated: BossesDefeated,
|
||||||
clouds: Clouds,
|
anglers_quest: AnglerQuest,
|
||||||
cultist_delay: int,
|
clouds: Clouds,
|
||||||
tiles: TileMatrix,
|
cultist_delay: int,
|
||||||
bestiary: Bestiary,
|
tiles: TileMatrix,
|
||||||
journey_powers: JourneyPowers,
|
bestiary: Bestiary,
|
||||||
chests: List[Chest],
|
journey_powers: JourneyPowers,
|
||||||
signs: List[Sign],
|
chests: List[Chest],
|
||||||
npcs: List[NPC],
|
signs: List[Sign],
|
||||||
mobs: List[Mob],
|
npcs: List[NPC],
|
||||||
tile_entities: List[TileEntity],
|
mobs: List[Mob],
|
||||||
weighed_pressure_plates: List[WeighedPressurePlate],
|
tile_entities: List[TileEntity],
|
||||||
rooms: List[Room],
|
weighed_pressure_plates: List[WeighedPressurePlate],
|
||||||
pets: Pets,
|
rooms: List[Room],
|
||||||
halloween_today: bool,
|
pets: Pets,
|
||||||
xmas_today: bool,
|
halloween_today: bool,
|
||||||
treetop_variants: TreetopVariants,
|
xmas_today: bool,
|
||||||
saved_ore_tiers: SavedOreTiers,
|
treetop_variants: TreetopVariants,
|
||||||
unknown_file_format_data: bytes = b"",
|
saved_ore_tiers: SavedOreTiers,
|
||||||
unknown_world_header_data: bytes = b"",
|
unknown_file_format_data: bytes = b"",
|
||||||
unknown_world_tiles_data: bytes = b"",
|
unknown_world_header_data: bytes = b"",
|
||||||
unknown_chests_data: bytes = b"",
|
unknown_world_tiles_data: bytes = b"",
|
||||||
unknown_signs_data: bytes = b"",
|
unknown_chests_data: bytes = b"",
|
||||||
unknown_npcs_data: bytes = b"",
|
unknown_signs_data: bytes = b"",
|
||||||
unknown_tile_entities_data: bytes = b"",
|
unknown_npcs_data: bytes = b"",
|
||||||
unknown_pressure_plates_data: bytes = b"",
|
unknown_tile_entities_data: bytes = b"",
|
||||||
unknown_town_manager_data: bytes = b"",
|
unknown_pressure_plates_data: bytes = b"",
|
||||||
unknown_bestiary_data: bytes = b"",
|
unknown_town_manager_data: bytes = b"",
|
||||||
unknown_journey_powers_data: bytes = b""):
|
unknown_bestiary_data: bytes = b"",
|
||||||
|
unknown_journey_powers_data: bytes = b"",
|
||||||
|
):
|
||||||
|
|
||||||
self.version: Version = version
|
self.version: Version = version
|
||||||
"""The game version when this savefile was last saved."""
|
"""The game version when this savefile was last saved."""
|
||||||
|
@ -291,11 +293,9 @@ class World:
|
||||||
block_paint = fr.uint1()
|
block_paint = fr.uint1()
|
||||||
else:
|
else:
|
||||||
block_paint = None
|
block_paint = None
|
||||||
block = Block(type_=block_type,
|
block = Block(
|
||||||
frame=frame,
|
type_=block_type, frame=frame, paint=block_paint, is_active=is_block_active, shape=block_shape
|
||||||
paint=block_paint,
|
)
|
||||||
is_active=is_block_active,
|
|
||||||
shape=block_shape)
|
|
||||||
else:
|
else:
|
||||||
block = None
|
block = None
|
||||||
# Parse wall
|
# Parse wall
|
||||||
|
@ -411,17 +411,15 @@ class World:
|
||||||
is_tenth_anniversary = f.bool()
|
is_tenth_anniversary = f.bool()
|
||||||
created_on = f.datetime()
|
created_on = f.datetime()
|
||||||
|
|
||||||
world_styles = Styles(moon=MoonStyle(f.uint1()),
|
world_styles = Styles(
|
||||||
trees=FourPartSplit(separators=[f.int4(), f.int4(), f.int4()],
|
moon=MoonStyle(f.uint1()),
|
||||||
properties=[f.int4(),
|
trees=FourPartSplit(
|
||||||
f.int4(),
|
separators=[f.int4(), f.int4(), f.int4()], properties=[f.int4(), f.int4(), f.int4(), f.int4()]
|
||||||
f.int4(),
|
),
|
||||||
f.int4()]),
|
moss=FourPartSplit(
|
||||||
moss=FourPartSplit(separators=[f.int4(), f.int4(), f.int4()],
|
separators=[f.int4(), f.int4(), f.int4()], properties=[f.int4(), f.int4(), f.int4(), f.int4()]
|
||||||
properties=[f.int4(),
|
),
|
||||||
f.int4(),
|
)
|
||||||
f.int4(),
|
|
||||||
f.int4()]))
|
|
||||||
|
|
||||||
bg_underground_snow = f.int4()
|
bg_underground_snow = f.int4()
|
||||||
bg_underground_jungle = f.int4()
|
bg_underground_jungle = f.int4()
|
||||||
|
@ -462,9 +460,9 @@ class World:
|
||||||
defeated_frost_moon = f.bool()
|
defeated_frost_moon = f.bool()
|
||||||
defeated_pirates = f.bool()
|
defeated_pirates = f.bool()
|
||||||
|
|
||||||
shadow_orbs = ShadowOrbs(smashed_at_least_once=f.bool(),
|
shadow_orbs = ShadowOrbs(
|
||||||
spawn_meteorite=f.bool(),
|
smashed_at_least_once=f.bool(), spawn_meteorite=f.bool(), evil_boss_counter=f.uint1()
|
||||||
evil_boss_counter=f.uint1()) # was int4()
|
) # was int4()
|
||||||
|
|
||||||
altars_smashed = f.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())
|
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 = []
|
angler_today_quest_completed_by = []
|
||||||
for _ in range(angler_today_quest_completed_by_count):
|
for _ in range(angler_today_quest_completed_by_count):
|
||||||
angler_today_quest_completed_by.append(f.string())
|
angler_today_quest_completed_by.append(f.string())
|
||||||
|
@ -513,19 +511,22 @@ class World:
|
||||||
saved_angler = f.bool()
|
saved_angler = f.bool()
|
||||||
|
|
||||||
angler_today_quest_target = AnglerQuestFish(f.int4())
|
angler_today_quest_target = AnglerQuestFish(f.int4())
|
||||||
anglers_quest = AnglerQuest(current_goal=angler_today_quest_target,
|
anglers_quest = AnglerQuest(
|
||||||
completed_by=angler_today_quest_completed_by)
|
current_goal=angler_today_quest_target, completed_by=angler_today_quest_completed_by
|
||||||
|
)
|
||||||
|
|
||||||
saved_stylist = f.bool()
|
saved_stylist = f.bool()
|
||||||
saved_tax_collector = f.bool()
|
saved_tax_collector = f.bool()
|
||||||
saved_golfer = f.bool()
|
saved_golfer = f.bool()
|
||||||
|
|
||||||
invasion_size_start = f.int4() # ???
|
invasion_size_start = f.int4() # ???
|
||||||
invasion = Invasion(delay=invasion_delay,
|
invasion = Invasion(
|
||||||
size=invasion_size,
|
delay=invasion_delay,
|
||||||
type_=invasion_type,
|
size=invasion_size,
|
||||||
position=invasion_position,
|
type_=invasion_type,
|
||||||
size_start=invasion_size_start)
|
position=invasion_position,
|
||||||
|
size_start=invasion_size_start,
|
||||||
|
)
|
||||||
|
|
||||||
cultist_delay = f.int4() # ???
|
cultist_delay = f.int4() # ???
|
||||||
mob_types_count = f.int2()
|
mob_types_count = f.int2()
|
||||||
|
@ -534,11 +535,13 @@ class World:
|
||||||
mob_kills[mob_id] = f.int4()
|
mob_kills[mob_id] = f.int4()
|
||||||
|
|
||||||
fast_forward_time = f.bool()
|
fast_forward_time = f.bool()
|
||||||
time = Time(current=current_time,
|
time = Time(
|
||||||
is_daytime=is_daytime,
|
current=current_time,
|
||||||
moon_phase=moon_phase,
|
is_daytime=is_daytime,
|
||||||
sundial_cooldown=sundial_cooldown,
|
moon_phase=moon_phase,
|
||||||
fast_forward_time=fast_forward_time)
|
sundial_cooldown=sundial_cooldown,
|
||||||
|
fast_forward_time=fast_forward_time,
|
||||||
|
)
|
||||||
|
|
||||||
defeated_duke_fishron = f.bool()
|
defeated_duke_fishron = f.bool()
|
||||||
defeated_martian_madness = f.bool()
|
defeated_martian_madness = f.bool()
|
||||||
|
@ -551,11 +554,10 @@ class World:
|
||||||
defeated_everscream = f.bool()
|
defeated_everscream = f.bool()
|
||||||
defeated_pillars = PillarsInfo(solar=f.bool(), vortex=f.bool(), nebula=f.bool(), stardust=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(),
|
lunar_events = LunarEvents(
|
||||||
vortex=f.bool(),
|
pillars_present=PillarsInfo(solar=f.bool(), vortex=f.bool(), nebula=f.bool(), stardust=f.bool()),
|
||||||
nebula=f.bool(),
|
are_active=f.bool(),
|
||||||
stardust=f.bool()),
|
)
|
||||||
are_active=f.bool())
|
|
||||||
|
|
||||||
party_center_active = f.bool()
|
party_center_active = f.bool()
|
||||||
party_natural_active = f.bool()
|
party_natural_active = f.bool()
|
||||||
|
@ -564,15 +566,14 @@ class World:
|
||||||
partying_npcs = []
|
partying_npcs = []
|
||||||
for _ in range(partying_npcs_count):
|
for _ in range(partying_npcs_count):
|
||||||
partying_npcs.append(f.int4())
|
partying_npcs.append(f.int4())
|
||||||
party = Party(thrown_by_party_center=party_center_active,
|
party = Party(
|
||||||
thrown_by_npcs=party_natural_active,
|
thrown_by_party_center=party_center_active,
|
||||||
cooldown=party_cooldown,
|
thrown_by_npcs=party_natural_active,
|
||||||
partying_npcs=partying_npcs)
|
cooldown=party_cooldown,
|
||||||
|
partying_npcs=partying_npcs,
|
||||||
|
)
|
||||||
|
|
||||||
sandstorm = Sandstorm(is_active=f.bool(),
|
sandstorm = Sandstorm(is_active=f.bool(), time_left=f.int4(), severity=f.single(), intended_severity=f.single())
|
||||||
time_left=f.int4(),
|
|
||||||
severity=f.single(),
|
|
||||||
intended_severity=f.single())
|
|
||||||
|
|
||||||
saved_bartender = f.bool()
|
saved_bartender = f.bool()
|
||||||
|
|
||||||
|
@ -616,20 +617,22 @@ class World:
|
||||||
tax_collector=saved_tax_collector,
|
tax_collector=saved_tax_collector,
|
||||||
bartender=saved_bartender,
|
bartender=saved_bartender,
|
||||||
golfer=saved_golfer,
|
golfer=saved_golfer,
|
||||||
advanced_combat=combat_book_used
|
advanced_combat=combat_book_used,
|
||||||
)
|
)
|
||||||
|
|
||||||
lantern_night = LanternNight(f.int4(), f.bool(), f.bool(), f.bool())
|
lantern_night = LanternNight(f.int4(), f.bool(), f.bool(), f.bool())
|
||||||
|
|
||||||
events = Events(blood_moon=blood_moon,
|
events = Events(
|
||||||
solar_eclipse=eclipse,
|
blood_moon=blood_moon,
|
||||||
invasion=invasion,
|
solar_eclipse=eclipse,
|
||||||
slime_rain=time_left_slime_rain,
|
invasion=invasion,
|
||||||
rain=rain,
|
slime_rain=time_left_slime_rain,
|
||||||
party=party,
|
rain=rain,
|
||||||
sandstorm=sandstorm,
|
party=party,
|
||||||
lunar_events=lunar_events,
|
sandstorm=sandstorm,
|
||||||
lantern_night=lantern_night)
|
lunar_events=lunar_events,
|
||||||
|
lantern_night=lantern_night,
|
||||||
|
)
|
||||||
|
|
||||||
treetop_variant_count = f.int4()
|
treetop_variant_count = f.int4()
|
||||||
treetop_variants = TreetopVariants([f.int4() for _ in range(treetop_variant_count)])
|
treetop_variants = TreetopVariants([f.int4() for _ in range(treetop_variant_count)])
|
||||||
|
@ -648,34 +651,36 @@ class World:
|
||||||
defeated_empress_of_light = f.bool()
|
defeated_empress_of_light = f.bool()
|
||||||
defeated_queen_slime = f.bool()
|
defeated_queen_slime = f.bool()
|
||||||
|
|
||||||
bosses_defeated = BossesDefeated(eye_of_cthulhu=defeated_eye_of_cthulhu,
|
bosses_defeated = BossesDefeated(
|
||||||
eater_of_worlds=defeated_eater_of_worlds,
|
eye_of_cthulhu=defeated_eye_of_cthulhu,
|
||||||
skeletron=defeated_skeletron,
|
eater_of_worlds=defeated_eater_of_worlds,
|
||||||
queen_bee=defeated_queen_bee,
|
skeletron=defeated_skeletron,
|
||||||
the_twins=defeated_the_twins,
|
queen_bee=defeated_queen_bee,
|
||||||
the_destroyer=defeated_the_destroyer,
|
the_twins=defeated_the_twins,
|
||||||
skeletron_prime=defeated_skeletron_prime,
|
the_destroyer=defeated_the_destroyer,
|
||||||
any_mechnical_boss=defeated_any_mechnical_boss,
|
skeletron_prime=defeated_skeletron_prime,
|
||||||
plantera=defeated_plantera,
|
any_mechnical_boss=defeated_any_mechnical_boss,
|
||||||
golem=defeated_golem,
|
plantera=defeated_plantera,
|
||||||
king_slime=defeated_king_slime,
|
golem=defeated_golem,
|
||||||
goblin_army=defeated_goblin_army,
|
king_slime=defeated_king_slime,
|
||||||
clown=defeated_clown,
|
goblin_army=defeated_goblin_army,
|
||||||
frost_moon=defeated_frost_moon,
|
clown=defeated_clown,
|
||||||
pirates=defeated_pirates,
|
frost_moon=defeated_frost_moon,
|
||||||
duke_fishron=defeated_duke_fishron,
|
pirates=defeated_pirates,
|
||||||
moon_lord=defeated_moon_lord,
|
duke_fishron=defeated_duke_fishron,
|
||||||
pumpking=defeated_pumpking,
|
moon_lord=defeated_moon_lord,
|
||||||
mourning_wood=defeated_mourning_wood,
|
pumpking=defeated_pumpking,
|
||||||
ice_queen=defeated_ice_queen,
|
mourning_wood=defeated_mourning_wood,
|
||||||
santa_nk1=defeated_santa_nk1,
|
ice_queen=defeated_ice_queen,
|
||||||
everscream=defeated_everscream,
|
santa_nk1=defeated_santa_nk1,
|
||||||
lunar_pillars=defeated_pillars,
|
everscream=defeated_everscream,
|
||||||
old_ones_army=old_ones_army,
|
lunar_pillars=defeated_pillars,
|
||||||
martian_madness=defeated_martian_madness,
|
old_ones_army=old_ones_army,
|
||||||
lunatic_cultist=defeated_lunatic_cultist,
|
martian_madness=defeated_martian_madness,
|
||||||
empress_of_light=defeated_empress_of_light,
|
lunatic_cultist=defeated_lunatic_cultist,
|
||||||
queen_slime=defeated_queen_slime)
|
empress_of_light=defeated_empress_of_light,
|
||||||
|
queen_slime=defeated_queen_slime,
|
||||||
|
)
|
||||||
|
|
||||||
unknown_world_header_data = f.read_until(pointers.world_tiles)
|
unknown_world_header_data = f.read_until(pointers.world_tiles)
|
||||||
|
|
||||||
|
@ -700,15 +705,11 @@ class World:
|
||||||
if item_quantity > 0:
|
if item_quantity > 0:
|
||||||
item_type = ItemType(f.int4())
|
item_type = ItemType(f.int4())
|
||||||
item_modifier = PrefixType.get(f.uint1())
|
item_modifier = PrefixType.get(f.uint1())
|
||||||
item = ItemStack(quantity=item_quantity,
|
item = ItemStack(quantity=item_quantity, type_=item_type, prefix=item_modifier)
|
||||||
type_=item_type,
|
|
||||||
prefix=item_modifier)
|
|
||||||
else:
|
else:
|
||||||
item = None
|
item = None
|
||||||
chest_contents.append(item)
|
chest_contents.append(item)
|
||||||
chest = Chest(position=chest_position,
|
chest = Chest(position=chest_position, name=chest_name, contents=chest_contents)
|
||||||
name=chest_name,
|
|
||||||
contents=chest_contents)
|
|
||||||
chests.append(chest)
|
chests.append(chest)
|
||||||
tm[chest.position].extra = chest
|
tm[chest.position].extra = chest
|
||||||
|
|
||||||
|
@ -720,8 +721,7 @@ class World:
|
||||||
signs_count = f.int2()
|
signs_count = f.int2()
|
||||||
|
|
||||||
for _ in range(signs_count):
|
for _ in range(signs_count):
|
||||||
sign = Sign(text=f.string(),
|
sign = Sign(text=f.string(), position=Coordinates(f.int4(), f.int4()))
|
||||||
position=Coordinates(f.int4(), f.int4()))
|
|
||||||
signs.append(sign)
|
signs.append(sign)
|
||||||
tm[sign.position].extra = sign
|
tm[sign.position].extra = sign
|
||||||
|
|
||||||
|
@ -743,19 +743,16 @@ class World:
|
||||||
npc_flags = f.bits()
|
npc_flags = f.bits()
|
||||||
npc_variation_index = f.int4() if npc_flags[0] else 0
|
npc_variation_index = f.int4() if npc_flags[0] else 0
|
||||||
|
|
||||||
npc = NPC(type_=npc_type,
|
npc = NPC(
|
||||||
name=npc_name,
|
type_=npc_type, name=npc_name, position=npc_position, home=npc_home, variation_index=npc_variation_index
|
||||||
position=npc_position,
|
)
|
||||||
home=npc_home,
|
|
||||||
variation_index=npc_variation_index)
|
|
||||||
npcs.append(npc)
|
npcs.append(npc)
|
||||||
|
|
||||||
while f.bool():
|
while f.bool():
|
||||||
mob_type = EntityType(f.int4())
|
mob_type = EntityType(f.int4())
|
||||||
mob_position = Coordinates(f.single(), f.single())
|
mob_position = Coordinates(f.single(), f.single())
|
||||||
|
|
||||||
mob = Mob(type_=mob_type,
|
mob = Mob(type_=mob_type, position=mob_position)
|
||||||
position=mob_position)
|
|
||||||
mobs.append(mob)
|
mobs.append(mob)
|
||||||
|
|
||||||
unknown_npcs_data = f.read_until(pointers.tile_entities)
|
unknown_npcs_data = f.read_until(pointers.tile_entities)
|
||||||
|
@ -773,9 +770,9 @@ class World:
|
||||||
te_extra = TargetDummy(npc=f.int2())
|
te_extra = TargetDummy(npc=f.int2())
|
||||||
# Item Frame
|
# Item Frame
|
||||||
elif te_type == 1:
|
elif te_type == 1:
|
||||||
te_extra = ItemFrame(item=ItemStack(type_=ItemType(f.int2()),
|
te_extra = ItemFrame(
|
||||||
prefix=PrefixType.get(f.uint1()),
|
item=ItemStack(type_=ItemType(f.int2()), prefix=PrefixType.get(f.uint1()), quantity=f.int2())
|
||||||
quantity=f.int2()))
|
)
|
||||||
# Logic Sensor
|
# Logic Sensor
|
||||||
elif te_type == 2:
|
elif te_type == 2:
|
||||||
te_extra = LogicSensor(logic_check=f.uint1(), enabled=f.bool())
|
te_extra = LogicSensor(logic_check=f.uint1(), enabled=f.bool())
|
||||||
|
@ -788,21 +785,19 @@ class World:
|
||||||
for index, flag in enumerate(item_flags):
|
for index, flag in enumerate(item_flags):
|
||||||
if not flag:
|
if not flag:
|
||||||
continue
|
continue
|
||||||
mannequin_items[index] = ItemStack(type_=ItemType(f.int2()),
|
mannequin_items[index] = ItemStack(
|
||||||
prefix=PrefixType.get(f.int1()),
|
type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2()
|
||||||
quantity=f.int2())
|
)
|
||||||
for index, flag in enumerate(dye_flags):
|
for index, flag in enumerate(dye_flags):
|
||||||
if not flag:
|
if not flag:
|
||||||
continue
|
continue
|
||||||
mannequin_dyes[index] = ItemStack(type_=ItemType(f.int2()),
|
mannequin_dyes[index] = ItemStack(
|
||||||
prefix=PrefixType.get(f.int1()),
|
type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2()
|
||||||
quantity=f.int2())
|
)
|
||||||
te_extra = Mannequin(mannequin_items, mannequin_dyes)
|
te_extra = Mannequin(mannequin_items, mannequin_dyes)
|
||||||
# Weapon Rack
|
# Weapon Rack
|
||||||
elif te_type == 4:
|
elif te_type == 4:
|
||||||
rack_item = ItemStack(type_=ItemType(f.int2()),
|
rack_item = ItemStack(type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2())
|
||||||
prefix=PrefixType.get(f.int1()),
|
|
||||||
quantity=f.int2())
|
|
||||||
te_extra = WeaponRack(rack_item)
|
te_extra = WeaponRack(rack_item)
|
||||||
# Hat Rack
|
# Hat Rack
|
||||||
elif te_type == 5:
|
elif te_type == 5:
|
||||||
|
@ -814,21 +809,19 @@ class World:
|
||||||
for index, flag in enumerate(item_flags[0:2]):
|
for index, flag in enumerate(item_flags[0:2]):
|
||||||
if not flag:
|
if not flag:
|
||||||
continue
|
continue
|
||||||
rack_items[index] = ItemStack(type_=ItemType(f.int2()),
|
rack_items[index] = ItemStack(
|
||||||
prefix=PrefixType.get(f.int1()),
|
type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2()
|
||||||
quantity=f.int2())
|
)
|
||||||
for index, flag in enumerate(item_flags[2:4]):
|
for index, flag in enumerate(item_flags[2:4]):
|
||||||
if not flag:
|
if not flag:
|
||||||
continue
|
continue
|
||||||
rack_dyes[index] = ItemStack(type_=ItemType(f.int2()),
|
rack_dyes[index] = ItemStack(
|
||||||
prefix=PrefixType.get(f.int1()),
|
type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2()
|
||||||
quantity=f.int2())
|
)
|
||||||
te_extra = HatRack(rack_items, rack_dyes)
|
te_extra = HatRack(rack_items, rack_dyes)
|
||||||
# Food Plate
|
# Food Plate
|
||||||
elif te_type == 6:
|
elif te_type == 6:
|
||||||
plate_item = ItemStack(type_=ItemType(f.int2()),
|
plate_item = ItemStack(type_=ItemType(f.int2()), prefix=PrefixType.get(f.int1()), quantity=f.int2())
|
||||||
prefix=PrefixType.get(f.int1()),
|
|
||||||
quantity=f.int2())
|
|
||||||
te_extra = Plate(plate_item)
|
te_extra = Plate(plate_item)
|
||||||
# Teleport Pylon
|
# Teleport Pylon
|
||||||
elif te_type == 7:
|
elif te_type == 7:
|
||||||
|
@ -896,31 +889,66 @@ class World:
|
||||||
unknown_journey_powers_data = f.read_until(pointers.footer)
|
unknown_journey_powers_data = f.read_until(pointers.footer)
|
||||||
|
|
||||||
# Object creation
|
# Object creation
|
||||||
world = cls(version=version, savefile_type=savefile_type, revision=revision, is_favorite=is_favorite,
|
world = cls(
|
||||||
name=name, generator=generator, uuid_=uuid_, id_=id_, bounds=bounds, size=world_size,
|
version=version,
|
||||||
difficulty=difficulty, is_drunk_world=is_drunk_world, is_for_the_worthy=is_for_the_worthy,
|
savefile_type=savefile_type,
|
||||||
is_tenth_anniversary=is_tenth_anniversary, created_on=created_on, styles=world_styles, backgrounds=backgrounds,
|
revision=revision,
|
||||||
spawn_point=spawn_point, underground_level=underground_level, cavern_level=cavern_level,
|
is_favorite=is_favorite,
|
||||||
time=time, events=events, dungeon_point=dungeon_point, world_evil=world_evil,
|
name=name,
|
||||||
saved_npcs=saved_npcs, altars_smashed=altars_smashed, is_hardmode=is_hardmode,
|
generator=generator,
|
||||||
shadow_orbs=shadow_orbs, bosses_defeated=bosses_defeated, anglers_quest=anglers_quest,
|
uuid_=uuid_,
|
||||||
clouds=clouds, cultist_delay=cultist_delay, tiles=tm, chests=chests, signs=signs,
|
id_=id_,
|
||||||
npcs=npcs, mobs=mobs, tile_entities=tile_entities,
|
bounds=bounds,
|
||||||
weighed_pressure_plates=weighed_pressure_plates, rooms=rooms,
|
size=world_size,
|
||||||
halloween_today=halloween_today, xmas_today=xmas_today,
|
difficulty=difficulty,
|
||||||
treetop_variants=treetop_variants, saved_ore_tiers=saved_ore_tiers, pets=pets,
|
is_drunk_world=is_drunk_world,
|
||||||
bestiary=bestiary, journey_powers=journey_powers,
|
is_for_the_worthy=is_for_the_worthy,
|
||||||
unknown_file_format_data=unknown_file_format_data,
|
is_tenth_anniversary=is_tenth_anniversary,
|
||||||
unknown_world_header_data=unknown_world_header_data,
|
created_on=created_on,
|
||||||
unknown_world_tiles_data=unknown_world_tiles_data,
|
styles=world_styles,
|
||||||
unknown_chests_data=unknown_chests_data,
|
backgrounds=backgrounds,
|
||||||
unknown_signs_data=unknown_signs_data,
|
spawn_point=spawn_point,
|
||||||
unknown_npcs_data=unknown_npcs_data,
|
underground_level=underground_level,
|
||||||
unknown_tile_entities_data=unknown_tile_entities_data,
|
cavern_level=cavern_level,
|
||||||
unknown_pressure_plates_data=unknown_pressure_plates_data,
|
time=time,
|
||||||
unknown_town_manager_data=unknown_town_manager_data,
|
events=events,
|
||||||
unknown_bestiary_data=unknown_bestiary_data,
|
dungeon_point=dungeon_point,
|
||||||
unknown_journey_powers_data=unknown_journey_powers_data)
|
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
|
# Footer
|
||||||
if not f.bool():
|
if not f.bool():
|
||||||
|
|
456
poetry.lock
generated
456
poetry.lock
generated
|
@ -1,27 +1,26 @@
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "A configurable sidebar-enabled Sphinx theme"
|
|
||||||
name = "alabaster"
|
name = "alabaster"
|
||||||
|
version = "0.7.12"
|
||||||
|
description = "A configurable sidebar-enabled Sphinx theme"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
version = "0.7.12"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Atomic file writes."
|
|
||||||
marker = "sys_platform == \"win32\""
|
|
||||||
name = "atomicwrites"
|
name = "atomicwrites"
|
||||||
|
version = "1.4.0"
|
||||||
|
description = "Atomic file writes."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
version = "1.4.0"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Classes Without Boilerplate"
|
|
||||||
name = "attrs"
|
name = "attrs"
|
||||||
|
version = "19.3.0"
|
||||||
|
description = "Classes Without Boilerplate"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
version = "19.3.0"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
azure-pipelines = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface", "pytest-azurepipelines"]
|
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"]
|
tests = ["coverage", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "zope.interface"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Internationalization utilities"
|
|
||||||
name = "babel"
|
name = "babel"
|
||||||
|
version = "2.8.0"
|
||||||
|
description = "Internationalization utilities"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
version = "2.8.0"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
pytz = ">=2015.7"
|
pytz = ">=2015.7"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
name = "black"
|
||||||
|
version = "22.1.0"
|
||||||
|
description = "The uncompromising code formatter."
|
||||||
category = "dev"
|
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"
|
name = "certifi"
|
||||||
optional = false
|
|
||||||
python-versions = "*"
|
|
||||||
version = "2020.4.5.2"
|
version = "2020.4.5.2"
|
||||||
|
description = "Python package for providing Mozilla's CA Bundle."
|
||||||
[[package]]
|
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "Universal encoding detector for Python 2 and 3"
|
|
||||||
name = "chardet"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "chardet"
|
||||||
version = "3.0.4"
|
version = "3.0.4"
|
||||||
|
description = "Universal encoding detector for Python 2 and 3"
|
||||||
|
category = "dev"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
name = "click"
|
||||||
|
version = "8.0.3"
|
||||||
|
description = "Composable command line interface toolkit"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "Cross-platform colored terminal text."
|
optional = false
|
||||||
marker = "sys_platform == \"win32\""
|
python-versions = ">=3.6"
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
colorama = {version = "*", markers = "platform_system == \"Windows\""}
|
||||||
|
importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
|
||||||
|
|
||||||
|
[[package]]
|
||||||
name = "colorama"
|
name = "colorama"
|
||||||
optional = false
|
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
|
||||||
version = "0.4.3"
|
version = "0.4.3"
|
||||||
|
description = "Cross-platform colored terminal text."
|
||||||
[[package]]
|
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "Docutils -- Python Documentation Utilities"
|
|
||||||
name = "docutils"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
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"
|
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]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Internationalized Domain Names in Applications (IDNA)"
|
|
||||||
name = "idna"
|
name = "idna"
|
||||||
optional = false
|
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|
||||||
version = "2.9"
|
version = "2.9"
|
||||||
|
description = "Internationalized Domain Names in Applications (IDNA)"
|
||||||
[[package]]
|
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "Getting image size from png/jpeg/jpeg2000/gif file"
|
|
||||||
name = "imagesize"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
version = "1.2.0"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
name = "imagesize"
|
||||||
|
version = "1.2.0"
|
||||||
|
description = "Getting image size from png/jpeg/jpeg2000/gif file"
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "Read metadata from Python packages"
|
optional = false
|
||||||
marker = "python_version < \"3.8\""
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
name = "importlib-metadata"
|
name = "importlib-metadata"
|
||||||
|
version = "1.6.1"
|
||||||
|
description = "Read metadata from Python packages"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
||||||
version = "1.6.1"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
zipp = ">=0.5"
|
zipp = ">=0.5"
|
||||||
|
@ -106,12 +147,12 @@ docs = ["sphinx", "rst.linker"]
|
||||||
testing = ["packaging", "pep517", "importlib-resources (>=1.3)"]
|
testing = ["packaging", "pep517", "importlib-resources (>=1.3)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "A very fast and expressive template engine."
|
|
||||||
name = "jinja2"
|
name = "jinja2"
|
||||||
|
version = "2.11.2"
|
||||||
|
description = "A very fast and expressive template engine."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||||
version = "2.11.2"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
MarkupSafe = ">=0.23"
|
MarkupSafe = ">=0.23"
|
||||||
|
@ -120,114 +161,137 @@ MarkupSafe = ">=0.23"
|
||||||
i18n = ["Babel (>=0.8)"]
|
i18n = ["Babel (>=0.8)"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Safely add untrusted strings to HTML/XML markup."
|
|
||||||
name = "markupsafe"
|
name = "markupsafe"
|
||||||
|
version = "1.1.1"
|
||||||
|
description = "Safely add untrusted strings to HTML/XML markup."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
|
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
|
||||||
version = "1.1.1"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "More routines for operating on iterables, beyond itertools"
|
|
||||||
name = "more-itertools"
|
name = "more-itertools"
|
||||||
|
version = "8.3.0"
|
||||||
|
description = "More routines for operating on iterables, beyond itertools"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "8.3.0"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
name = "mypy-extensions"
|
||||||
|
version = "0.4.3"
|
||||||
|
description = "Experimental type system extensions for programs checked with the mypy typechecker."
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "Core utilities for Python packages"
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
name = "packaging"
|
name = "packaging"
|
||||||
|
version = "20.4"
|
||||||
|
description = "Core utilities for Python packages"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
version = "20.4"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
pyparsing = ">=2.0.2"
|
pyparsing = ">=2.0.2"
|
||||||
six = "*"
|
six = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
name = "pathspec"
|
||||||
|
version = "0.9.0"
|
||||||
|
description = "Utility library for gitignore style pattern matching of file paths."
|
||||||
category = "dev"
|
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"
|
name = "pluggy"
|
||||||
|
version = "0.13.1"
|
||||||
|
description = "plugin and hook calling mechanisms for python"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
version = "0.13.1"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
[package.dependencies.importlib-metadata]
|
importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""}
|
||||||
python = "<3.8"
|
|
||||||
version = ">=0.12"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
dev = ["pre-commit", "tox"]
|
dev = ["pre-commit", "tox"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "library with cross-python path, ini-parsing, io, code, log facilities"
|
|
||||||
name = "py"
|
name = "py"
|
||||||
|
version = "1.8.1"
|
||||||
|
description = "library with cross-python path, ini-parsing, io, code, log facilities"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||||
version = "1.8.1"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Pygments is a syntax highlighting package written in Python."
|
|
||||||
name = "pygments"
|
name = "pygments"
|
||||||
|
version = "2.6.1"
|
||||||
|
description = "Pygments is a syntax highlighting package written in Python."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "2.6.1"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Python parsing module"
|
|
||||||
name = "pyparsing"
|
name = "pyparsing"
|
||||||
|
version = "2.4.7"
|
||||||
|
description = "Python parsing module"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
version = "2.4.7"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "pytest: simple powerful testing with Python"
|
|
||||||
name = "pytest"
|
name = "pytest"
|
||||||
|
version = "5.4.3"
|
||||||
|
description = "pytest: simple powerful testing with Python"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "5.4.3"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
atomicwrites = ">=1.0"
|
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
|
||||||
attrs = ">=17.4.0"
|
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"
|
more-itertools = ">=4.0.0"
|
||||||
packaging = "*"
|
packaging = "*"
|
||||||
pluggy = ">=0.12,<1.0"
|
pluggy = ">=0.12,<1.0"
|
||||||
py = ">=1.5.0"
|
py = ">=1.5.0"
|
||||||
wcwidth = "*"
|
wcwidth = "*"
|
||||||
|
|
||||||
[package.dependencies.importlib-metadata]
|
|
||||||
python = "<3.8"
|
|
||||||
version = ">=0.12"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
checkqa-mypy = ["mypy (v0.761)"]
|
checkqa-mypy = ["mypy (==v0.761)"]
|
||||||
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
|
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "World timezone definitions, modern and historical"
|
|
||||||
name = "pytz"
|
name = "pytz"
|
||||||
|
version = "2020.1"
|
||||||
|
description = "World timezone definitions, modern and historical"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
version = "2020.1"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Python HTTP for Humans."
|
|
||||||
name = "requests"
|
name = "requests"
|
||||||
|
version = "2.23.0"
|
||||||
|
description = "Python HTTP for Humans."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||||
version = "2.23.0"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
certifi = ">=2017.4.17"
|
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]
|
[package.extras]
|
||||||
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"]
|
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]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Python 2 and 3 compatibility utilities"
|
|
||||||
name = "six"
|
name = "six"
|
||||||
|
version = "1.15.0"
|
||||||
|
description = "Python 2 and 3 compatibility utilities"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||||
version = "1.15.0"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms."
|
|
||||||
name = "snowballstemmer"
|
name = "snowballstemmer"
|
||||||
|
version = "2.0.0"
|
||||||
|
description = "This package provides 26 stemmers for 25 languages generated from Snowball algorithms."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
version = "2.0.0"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Python documentation generator"
|
|
||||||
name = "sphinx"
|
name = "sphinx"
|
||||||
|
version = "2.4.4"
|
||||||
|
description = "Python documentation generator"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "2.4.4"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
Jinja2 = ">=2.3"
|
|
||||||
Pygments = ">=2.0"
|
|
||||||
alabaster = ">=0.7,<0.8"
|
alabaster = ">=0.7,<0.8"
|
||||||
babel = ">=1.3,<2.0 || >2.0"
|
babel = ">=1.3,<2.0 || >2.0"
|
||||||
colorama = ">=0.3.5"
|
colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""}
|
||||||
docutils = ">=0.12"
|
docutils = ">=0.12"
|
||||||
imagesize = "*"
|
imagesize = "*"
|
||||||
|
Jinja2 = ">=2.3"
|
||||||
packaging = "*"
|
packaging = "*"
|
||||||
|
Pygments = ">=2.0"
|
||||||
requests = ">=2.5.0"
|
requests = ">=2.5.0"
|
||||||
setuptools = "*"
|
|
||||||
snowballstemmer = ">=1.1"
|
snowballstemmer = ">=1.1"
|
||||||
sphinxcontrib-applehelp = "*"
|
sphinxcontrib-applehelp = "*"
|
||||||
sphinxcontrib-devhelp = "*"
|
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"]
|
test = ["pytest (<5.3.3)", "pytest-cov", "html5lib", "flake8 (>=3.5.0)", "flake8-import-order", "mypy (>=0.761)", "docutils-stubs"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Read the Docs theme for Sphinx"
|
|
||||||
name = "sphinx-rtd-theme"
|
name = "sphinx-rtd-theme"
|
||||||
|
version = "0.4.3"
|
||||||
|
description = "Read the Docs theme for Sphinx"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
version = "0.4.3"
|
|
||||||
|
|
||||||
[package.dependencies]
|
[package.dependencies]
|
||||||
sphinx = "*"
|
sphinx = "*"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
|
|
||||||
name = "sphinxcontrib-applehelp"
|
name = "sphinxcontrib-applehelp"
|
||||||
|
version = "1.0.2"
|
||||||
|
description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "1.0.2"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
lint = ["flake8", "mypy", "docutils-stubs"]
|
lint = ["flake8", "mypy", "docutils-stubs"]
|
||||||
test = ["pytest"]
|
test = ["pytest"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
|
|
||||||
name = "sphinxcontrib-devhelp"
|
name = "sphinxcontrib-devhelp"
|
||||||
|
version = "1.0.2"
|
||||||
|
description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "1.0.2"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
lint = ["flake8", "mypy", "docutils-stubs"]
|
lint = ["flake8", "mypy", "docutils-stubs"]
|
||||||
test = ["pytest"]
|
test = ["pytest"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
|
|
||||||
name = "sphinxcontrib-htmlhelp"
|
name = "sphinxcontrib-htmlhelp"
|
||||||
|
version = "1.0.3"
|
||||||
|
description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "1.0.3"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
lint = ["flake8", "mypy", "docutils-stubs"]
|
lint = ["flake8", "mypy", "docutils-stubs"]
|
||||||
test = ["pytest", "html5lib"]
|
test = ["pytest", "html5lib"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "A sphinx extension which renders display math in HTML via JavaScript"
|
|
||||||
name = "sphinxcontrib-jsmath"
|
name = "sphinxcontrib-jsmath"
|
||||||
|
version = "1.0.1"
|
||||||
|
description = "A sphinx extension which renders display math in HTML via JavaScript"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "1.0.1"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
test = ["pytest", "flake8", "mypy"]
|
test = ["pytest", "flake8", "mypy"]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
|
|
||||||
name = "sphinxcontrib-qthelp"
|
name = "sphinxcontrib-qthelp"
|
||||||
optional = false
|
|
||||||
python-versions = ">=3.5"
|
|
||||||
version = "1.0.3"
|
version = "1.0.3"
|
||||||
|
description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document."
|
||||||
[package.extras]
|
|
||||||
lint = ["flake8", "mypy", "docutils-stubs"]
|
|
||||||
test = ["pytest"]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
category = "dev"
|
category = "dev"
|
||||||
description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)."
|
|
||||||
name = "sphinxcontrib-serializinghtml"
|
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.5"
|
python-versions = ">=3.5"
|
||||||
version = "1.1.4"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
lint = ["flake8", "mypy", "docutils-stubs"]
|
lint = ["flake8", "mypy", "docutils-stubs"]
|
||||||
test = ["pytest"]
|
test = ["pytest"]
|
||||||
|
|
||||||
[[package]]
|
[[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"
|
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"
|
name = "urllib3"
|
||||||
|
version = "1.25.9"
|
||||||
|
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
|
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
|
||||||
version = "1.25.9"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
brotli = ["brotlipy (>=0.6.0)"]
|
brotli = ["brotlipy (>=0.6.0)"]
|
||||||
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"]
|
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]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Measures the displayed width of unicode strings in a terminal"
|
|
||||||
name = "wcwidth"
|
name = "wcwidth"
|
||||||
|
version = "0.2.4"
|
||||||
|
description = "Measures the displayed width of unicode strings in a terminal"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = "*"
|
python-versions = "*"
|
||||||
version = "0.2.4"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
category = "dev"
|
|
||||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
|
||||||
marker = "python_version < \"3.8\""
|
|
||||||
name = "zipp"
|
name = "zipp"
|
||||||
|
version = "3.1.0"
|
||||||
|
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||||
|
category = "dev"
|
||||||
optional = false
|
optional = false
|
||||||
python-versions = ">=3.6"
|
python-versions = ">=3.6"
|
||||||
version = "3.1.0"
|
|
||||||
|
|
||||||
[package.extras]
|
[package.extras]
|
||||||
docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
|
docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
|
||||||
testing = ["jaraco.itertools", "func-timeout"]
|
testing = ["jaraco.itertools", "func-timeout"]
|
||||||
|
|
||||||
[metadata]
|
[metadata]
|
||||||
content-hash = "b47b9ecb692b818f41e5c444d71d45b46d42d2c1d1263de485d857ef4eee9707"
|
lock-version = "1.1"
|
||||||
python-versions = "^3.6"
|
python-versions = "^3.6.2"
|
||||||
|
content-hash = "15ba7d06ad87a6deb9cfec3590a6921496fae849edbae8ffd364db9fbcba9c62"
|
||||||
|
|
||||||
[metadata.files]
|
[metadata.files]
|
||||||
alabaster = [
|
alabaster = [
|
||||||
|
@ -423,6 +510,31 @@ babel = [
|
||||||
{file = "Babel-2.8.0-py2.py3-none-any.whl", hash = "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"},
|
{file = "Babel-2.8.0-py2.py3-none-any.whl", hash = "sha256:d670ea0b10f8b723672d3a6abeb87b565b244da220d76b4dba1b66269ec152d4"},
|
||||||
{file = "Babel-2.8.0.tar.gz", hash = "sha256:1aac2ae2d0d8ea368fa90906567f5c08463d98ade155c0c4bfedd6a0f7160e38"},
|
{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 = [
|
certifi = [
|
||||||
{file = "certifi-2020.4.5.2-py2.py3-none-any.whl", hash = "sha256:9cd41137dc19af6a5e03b630eefe7d1f458d964d406342dd3edf625839b944cc"},
|
{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"},
|
{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-py2.py3-none-any.whl", hash = "sha256:fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691"},
|
||||||
{file = "chardet-3.0.4.tar.gz", hash = "sha256:84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae"},
|
{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 = [
|
colorama = [
|
||||||
{file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"},
|
{file = "colorama-0.4.3-py2.py3-none-any.whl", hash = "sha256:7d73d2a99753107a36ac6b455ee49046802e59d9d076ef8e47b61499fa29afff"},
|
||||||
{file = "colorama-0.4.3.tar.gz", hash = "sha256:e96da0d330793e2cb9485e9ddfd918d456036c7149416295932478192f4436a1"},
|
{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 = [
|
docutils = [
|
||||||
{file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
|
{file = "docutils-0.16-py2.py3-none-any.whl", hash = "sha256:0c5b78adfbf7762415433f5515cd5c9e762339e23369dbe8000d84a4bf4ab3af"},
|
||||||
{file = "docutils-0.16.tar.gz", hash = "sha256:c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc"},
|
{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-win32.whl", hash = "sha256:6dd73240d2af64df90aa7c4e7481e23825ea70af4b4922f8ede5b9e35f78a3b1"},
|
||||||
{file = "MarkupSafe-1.1.1-cp35-cp35m-win_amd64.whl", hash = "sha256:9add70b36c5666a2ed02b43b335fe19002ee5235efd4b8a89bfcf9005bebac0d"},
|
{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_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_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-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-win32.whl", hash = "sha256:535f6fc4d397c1563d08b88e485c3496cf5784e927af890fb3c3aac7f933ec66"},
|
||||||
{file = "MarkupSafe-1.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b1282f8c00509d99fef04d8ba936b156d419be841854fe901d8ae224c59f0be5"},
|
{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_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_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-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-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
|
||||||
{file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
|
{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-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_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-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-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
|
||||||
{file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
|
{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"},
|
{file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
|
||||||
]
|
]
|
||||||
more-itertools = [
|
more-itertools = [
|
||||||
{file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"},
|
{file = "more-itertools-8.3.0.tar.gz", hash = "sha256:558bb897a2232f5e4f8e2399089e35aecb746e1f9191b6584a151647e89267be"},
|
||||||
{file = "more_itertools-8.3.0-py3-none-any.whl", hash = "sha256:7818f596b1e87be009031c7653d01acc46ed422e6656b394b0f765ce66ed4982"},
|
{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 = [
|
packaging = [
|
||||||
{file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"},
|
{file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"},
|
||||||
{file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"},
|
{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 = [
|
pluggy = [
|
||||||
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
|
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
|
||||||
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
|
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
|
||||||
|
@ -523,6 +674,7 @@ pytz = [
|
||||||
{file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"},
|
{file = "pytz-2020.1.tar.gz", hash = "sha256:c35965d010ce31b23eeb663ed3cc8c906275d6be1a34393a1d73a41febf4a048"},
|
||||||
]
|
]
|
||||||
requests = [
|
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-py2.py3-none-any.whl", hash = "sha256:43999036bfa82904b6af1d99e4882b560e5e2c68e5c4b0aa03b655f3d7d73fee"},
|
||||||
{file = "requests-2.23.0.tar.gz", hash = "sha256:b3f43d496c6daba4493e7c431722aeb7dbc6288f52a6e04e7b6023b0247817e6"},
|
{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.tar.gz", hash = "sha256:eaa0eccc86e982a9b939b2b82d12cc5d013385ba5eadcc7e4fed23f4405f77bc"},
|
||||||
{file = "sphinxcontrib_serializinghtml-1.1.4-py2.py3-none-any.whl", hash = "sha256:f242a81d423f59617a8e5cf16f5d4d74e28ee9a66f9e5b637a18082991db5a9a"},
|
{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 = [
|
urllib3 = [
|
||||||
{file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"},
|
{file = "urllib3-1.25.9-py2.py3-none-any.whl", hash = "sha256:88206b0eb87e6d677d424843ac5209e3fb9d0190d0ee169599165ec25e9d9115"},
|
||||||
{file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"},
|
{file = "urllib3-1.25.9.tar.gz", hash = "sha256:3018294ebefce6572a474f0604c2021e33b3fd8006ecd11d62107a5d2a963527"},
|
||||||
|
|
|
@ -15,17 +15,23 @@
|
||||||
|
|
||||||
# Library dependencies
|
# Library dependencies
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.6"
|
python = "^3.6.2"
|
||||||
|
|
||||||
# Development dependencies
|
# Development dependencies
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
pytest = "^5.2.1"
|
pytest = "^5.2.1"
|
||||||
sphinx = "^2.2.1"
|
sphinx = "^2.2.1"
|
||||||
sphinx_rtd_theme = "^0.4.3"
|
sphinx_rtd_theme = "^0.4.3"
|
||||||
|
black = "^22.1.0"
|
||||||
|
|
||||||
# Optional dependencies
|
# Optional dependencies
|
||||||
[tool.poetry.extras]
|
[tool.poetry.extras]
|
||||||
|
|
||||||
|
# Code style
|
||||||
|
[tool.black]
|
||||||
|
line-length = 120
|
||||||
|
target-version = ['py36']
|
||||||
|
|
||||||
# Used build system
|
# Used build system
|
||||||
[build-system]
|
[build-system]
|
||||||
requires = ["poetry>=0.12"]
|
requires = ["poetry>=0.12"]
|
||||||
|
|
Loading…
Reference in a new issue