Skip to content

Commit

Permalink
Add some simple output logging
Browse files Browse the repository at this point in the history
  • Loading branch information
lhearachel committed Jun 5, 2024
1 parent 1abb57b commit 4e60cde
Show file tree
Hide file tree
Showing 9 changed files with 91 additions and 43 deletions.
12 changes: 8 additions & 4 deletions porydex/parse/abilities.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pathlib

from pycparser.c_ast import NamedInitializer
from pycparser.c_ast import ExprList, NamedInitializer
from yaspin import yaspin

from porydex.parse import load_truncated, extract_int, extract_u8_str

Expand All @@ -26,9 +27,12 @@ def all_ability_names(abilities_data) -> list[str]:
return l_abilities

def parse_abilities(fname: pathlib.Path) -> list[str]:
abilities_data = load_truncated(fname, extra_includes=[
r'-include', r'constants/abilities.h',
])
abilities_data: ExprList
with yaspin(text=f'Loading abilities data: {fname}', color='cyan') as spinner:
abilities_data = load_truncated(fname, extra_includes=[
r'-include', r'constants/abilities.h',
])
spinner.ok("✅")

return all_ability_names(abilities_data)

10 changes: 8 additions & 2 deletions porydex/parse/encounters.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
import pathlib
import re

from pycparser.c_ast import ArrayDecl, Constant, Decl, InitList, NamedInitializer, Struct, TypeDecl
from pycparser.c_ast import ArrayDecl, Constant, Decl, ExprList, InitList, NamedInitializer, Struct, TypeDecl
from yaspin import yaspin

from porydex.common import name_key
from porydex.parse import extract_id, extract_int, load_data
Expand Down Expand Up @@ -197,5 +198,10 @@ def load_json(fname: pathlib.Path) -> dict:

def parse_encounters(fname: pathlib.Path,
species_names: list[str]) -> dict[str, dict[str, EncounterRate] | dict[str, dict]]:
return parse_encounters_data(load_data(fname), load_json(fname.with_suffix('.json')), species_names)
encounters: ExprList
with yaspin(text=f'Loading encouner tables: {fname}', color='cyan') as spinner:
encounters = load_data(fname)
spinner.ok("✅")

return parse_encounters_data(encounters, load_json(fname.with_suffix('.json')), species_names)

20 changes: 14 additions & 6 deletions porydex/parse/form_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import re

from pycparser.c_ast import ArrayDecl, Decl
from yaspin import yaspin

from porydex.parse import load_table_set, extract_id, extract_int

Expand Down Expand Up @@ -30,7 +31,7 @@ def parse_table_decl(minimal: Decl, full: Decl) -> tuple[str, dict[int, str]]:
form_name_pattern = re.compile(r'SPECIES_{}(_(.+))'.format(upper_snake(true_name)))

result = {}
for i, (minimal_expr, full_expr) in enumerate(zip(minimal.init.exprs, full.init.exprs)):
for minimal_expr, full_expr in zip(minimal.init.exprs, full.init.exprs):
id = extract_id(minimal_expr)
val = extract_int(full_expr)

Expand Down Expand Up @@ -58,13 +59,20 @@ def all_table_decls(minimal: list[Decl], full: list[Decl]) -> dict[str, dict[int

return functools.reduce(
lambda d, t: d.update({ t[0]: t[1] }) or d,
[parse_table_decl(min_entry, full_entry) for min_entry, full_entry in zip(minimal, full[start:])],
[
parse_table_decl(min_entry, full_entry)
for min_entry, full_entry in zip(minimal, full[start:])
],
{}
)

def parse_form_tables(fname: pathlib.Path):
return all_table_decls(
load_table_set(fname, minimal_preprocess=True),
load_table_set(fname, minimal_preprocess=False),
)
minimal: list[Decl]
full: list[Decl]
with yaspin(text=f'Loading form tables: {fname}', color='cyan') as spinner:
minimal = load_table_set(fname, minimal_preprocess=True)
full = load_table_set(fname, minimal_preprocess=False)
spinner.ok("✅")

return all_table_decls(minimal, full)

12 changes: 8 additions & 4 deletions porydex/parse/items.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pathlib

from pycparser.c_ast import ID, NamedInitializer
from pycparser.c_ast import ID, ExprList, NamedInitializer
from yaspin import yaspin

from porydex.parse import load_truncated, extract_int, extract_u8_str

Expand All @@ -27,9 +28,12 @@ def all_item_names(items_data) -> list[str]:
return l_items

def parse_items(fname: pathlib.Path) -> list[str]:
items_data = load_truncated(fname, extra_includes=[
r'-include', r'constants/items.h',
])
items_data: ExprList
with yaspin(text=f'Loading items data: {fname}', color='cyan') as spinner:
items_data = load_truncated(fname, extra_includes=[
r'-include', r'constants/items.h',
])
spinner.ok("✅")

return all_item_names(items_data)

45 changes: 28 additions & 17 deletions porydex/parse/learnsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

import porydex.config

from pycparser.c_ast import Decl
from pycparser.c_ast import Decl, ExprList
from yaspin import yaspin

from porydex.common import name_key
from porydex.parse import extract_int, load_data_and_start
Expand Down Expand Up @@ -53,28 +54,38 @@ def parse_teachable_learnsets_data(decls: list[Decl],
def parse_level_up_learnsets(fname: pathlib.Path,
move_names: list[str]) -> dict[str, dict[str, list[int]]]:
pattern = re.compile(r's(\w+)LevelUpLearnset')
data, start = load_data_and_start(
fname,
pattern,
extra_includes=[
rf'-I{porydex.config.expansion}/src',
r'-include', r'constants/moves.h',
]
)
data: ExprList
start: int

with yaspin(text=f'Loading level-up learnsets: {fname}', color='cyan') as spinner:
data, start = load_data_and_start(
fname,
pattern,
extra_includes=[
rf'-I{porydex.config.expansion}/src',
r'-include', r'constants/moves.h',
]
)
spinner.ok("✅")

return parse_level_up_learnsets_data(data[start:], move_names)

def parse_teachable_learnsets(fname: pathlib.Path,
move_names: list[str]) -> dict[str, dict[str, list[str]]]:
pattern = re.compile(r's(\w+)TeachableLearnset')
data, start = load_data_and_start(
fname,
pattern,
extra_includes=[
rf'-I{porydex.config.expansion}/src',
r'-include', r'constants/moves.h',
]
)
data: ExprList
start: int

with yaspin(text=f'Loading teachable learnsets: {fname}', color='cyan') as spinner:
data, start = load_data_and_start(
fname,
pattern,
extra_includes=[
rf'-I{porydex.config.expansion}/src',
r'-include', r'constants/moves.h',
]
)
spinner.ok("✅")

return parse_teachable_learnsets_data(data[start:], move_names)

10 changes: 7 additions & 3 deletions porydex/parse/maps.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pathlib

from pycparser.c_ast import Decl, ExprList
from yaspin import yaspin

from porydex.parse import load_data, extract_id, extract_int, extract_u8_str

Expand All @@ -27,8 +28,11 @@ def all_maps(existing: ExprList) -> list[str]:
return [ map_name for _, map_name in sorted(map_names.items(), key=lambda e: e[0]) ]

def parse_maps(fname: pathlib.Path) -> list[str]:
maps_data = load_data(fname, extra_includes=[
r'-include', r'constants/abilities.h',
])
maps_data: ExprList
with yaspin(text=f'Loading map data: {fname}', color='cyan') as spinner:
maps_data = load_data(fname, extra_includes=[
r'-include', r'constants/abilities.h',
])
spinner.ok("✅")

return all_maps(maps_data)
12 changes: 8 additions & 4 deletions porydex/parse/moves.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import pathlib

from pycparser.c_ast import ExprList, NamedInitializer
from yaspin import yaspin

from porydex.common import name_key
from porydex.model import DAMAGE_TYPE, DAMAGE_CATEGORY, CONTEST_CATEGORY
Expand Down Expand Up @@ -111,10 +112,13 @@ def parse_moves_data(moves_data: ExprList) -> dict:
return all_moves

def parse_moves(fname: pathlib.Path) -> dict:
moves_data = load_truncated(fname, extra_includes=[
r'-include', r'constants/battle.h',
r'-include', r'constants/moves.h',
])
moves_data: ExprList
with yaspin(text=f'Loading moves data: {fname}', color='cyan') as spinner:
moves_data = load_truncated(fname, extra_includes=[
r'-include', r'constants/battle.h',
r'-include', r'constants/moves.h',
])
spinner.ok("✅")

return parse_moves_data(moves_data)

12 changes: 9 additions & 3 deletions porydex/parse/species.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import pathlib

from pycparser.c_ast import Constant, ExprList, NamedInitializer
from yaspin import yaspin

from porydex.common import name_key
from porydex.model import ExpansionEvoMethod, DAMAGE_TYPE, EGG_GROUP, BODY_COLOR, EVO_METHOD
Expand Down Expand Up @@ -329,10 +330,15 @@ def parse_species(fname: pathlib.Path,
map_sections: list[str],
level_up_learnsets: dict[str, dict[str, list[int]]],
teachable_learnsets: dict[str, dict[str, list[str]]]) -> dict:
return parse_species_data(
load_truncated(fname, extra_includes=[
species_data: ExprList
with yaspin(text=f'Loading species data: {fname}', color='cyan') as spinner:
species_data = load_truncated(fname, extra_includes=[
r'-include', r'constants/moves.h',
]),
])
spinner.ok("✅")

return parse_species_data(
species_data,
abilities,
items,
moves,
Expand Down
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
pycparser==2.22
pyinstaller==6.7.0
yaspin==3.0.2

0 comments on commit 4e60cde

Please sign in to comment.