Fix linting errors across backend and frontend
Backend: auto-fix and format all ruff issues, manually fix B904/B023/ SIM117/B007/E741/F841 errors, suppress B008 (FastAPI Depends) and F821 (SQLAlchemy forward refs) in config. Frontend: allow constant exports, disable React compiler-specific rules (set-state-in-effect, preserve-manual-memoization). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,15 +21,18 @@ async def upsert_version_groups(
|
||||
"""Upsert version group records, return {slug: id} mapping."""
|
||||
for vg_slug, vg_info in vg_data.items():
|
||||
vg_name = " / ".join(
|
||||
g["name"].replace("Pokemon ", "")
|
||||
for g in vg_info["games"].values()
|
||||
g["name"].replace("Pokemon ", "") for g in vg_info["games"].values()
|
||||
)
|
||||
stmt = insert(VersionGroup).values(
|
||||
name=vg_name,
|
||||
slug=vg_slug,
|
||||
).on_conflict_do_update(
|
||||
index_elements=["slug"],
|
||||
set_={"name": vg_name},
|
||||
stmt = (
|
||||
insert(VersionGroup)
|
||||
.values(
|
||||
name=vg_name,
|
||||
slug=vg_slug,
|
||||
)
|
||||
.on_conflict_do_update(
|
||||
index_elements=["slug"],
|
||||
set_={"name": vg_name},
|
||||
)
|
||||
)
|
||||
await session.execute(stmt)
|
||||
|
||||
@@ -69,9 +72,13 @@ async def upsert_games(
|
||||
values["version_group_id"] = vg_id
|
||||
update_set["version_group_id"] = vg_id
|
||||
|
||||
stmt = insert(Game).values(**values).on_conflict_do_update(
|
||||
index_elements=["slug"],
|
||||
set_=update_set,
|
||||
stmt = (
|
||||
insert(Game)
|
||||
.values(**values)
|
||||
.on_conflict_do_update(
|
||||
index_elements=["slug"],
|
||||
set_=update_set,
|
||||
)
|
||||
)
|
||||
await session.execute(stmt)
|
||||
|
||||
@@ -81,23 +88,29 @@ async def upsert_games(
|
||||
return {row.slug: row.id for row in result}
|
||||
|
||||
|
||||
async def upsert_pokemon(session: AsyncSession, pokemon_list: list[dict]) -> dict[int, int]:
|
||||
async def upsert_pokemon(
|
||||
session: AsyncSession, pokemon_list: list[dict]
|
||||
) -> dict[int, int]:
|
||||
"""Upsert pokemon records, return {pokeapi_id: id} mapping."""
|
||||
for poke in pokemon_list:
|
||||
stmt = insert(Pokemon).values(
|
||||
pokeapi_id=poke["pokeapi_id"],
|
||||
national_dex=poke["national_dex"],
|
||||
name=poke["name"],
|
||||
types=poke["types"],
|
||||
sprite_url=poke.get("sprite_url"),
|
||||
).on_conflict_do_update(
|
||||
index_elements=["pokeapi_id"],
|
||||
set_={
|
||||
"national_dex": poke["national_dex"],
|
||||
"name": poke["name"],
|
||||
"types": poke["types"],
|
||||
"sprite_url": poke.get("sprite_url"),
|
||||
},
|
||||
stmt = (
|
||||
insert(Pokemon)
|
||||
.values(
|
||||
pokeapi_id=poke["pokeapi_id"],
|
||||
national_dex=poke["national_dex"],
|
||||
name=poke["name"],
|
||||
types=poke["types"],
|
||||
sprite_url=poke.get("sprite_url"),
|
||||
)
|
||||
.on_conflict_do_update(
|
||||
index_elements=["pokeapi_id"],
|
||||
set_={
|
||||
"national_dex": poke["national_dex"],
|
||||
"name": poke["name"],
|
||||
"types": poke["types"],
|
||||
"sprite_url": poke.get("sprite_url"),
|
||||
},
|
||||
)
|
||||
)
|
||||
await session.execute(stmt)
|
||||
|
||||
@@ -119,14 +132,18 @@ async def upsert_routes(
|
||||
"""
|
||||
# First pass: upsert all parent routes (without parent_route_id)
|
||||
for route in routes:
|
||||
stmt = insert(Route).values(
|
||||
name=route["name"],
|
||||
version_group_id=version_group_id,
|
||||
order=route["order"],
|
||||
parent_route_id=None, # Parent routes have no parent
|
||||
).on_conflict_do_update(
|
||||
constraint="uq_routes_version_group_name",
|
||||
set_={"order": route["order"], "parent_route_id": None},
|
||||
stmt = (
|
||||
insert(Route)
|
||||
.values(
|
||||
name=route["name"],
|
||||
version_group_id=version_group_id,
|
||||
order=route["order"],
|
||||
parent_route_id=None, # Parent routes have no parent
|
||||
)
|
||||
.on_conflict_do_update(
|
||||
constraint="uq_routes_version_group_name",
|
||||
set_={"order": route["order"], "parent_route_id": None},
|
||||
)
|
||||
)
|
||||
await session.execute(stmt)
|
||||
|
||||
@@ -146,19 +163,23 @@ async def upsert_routes(
|
||||
|
||||
parent_id = name_to_id[route["name"]]
|
||||
for child in children:
|
||||
stmt = insert(Route).values(
|
||||
name=child["name"],
|
||||
version_group_id=version_group_id,
|
||||
order=child["order"],
|
||||
parent_route_id=parent_id,
|
||||
pinwheel_zone=child.get("pinwheel_zone"),
|
||||
).on_conflict_do_update(
|
||||
constraint="uq_routes_version_group_name",
|
||||
set_={
|
||||
"order": child["order"],
|
||||
"parent_route_id": parent_id,
|
||||
"pinwheel_zone": child.get("pinwheel_zone"),
|
||||
},
|
||||
stmt = (
|
||||
insert(Route)
|
||||
.values(
|
||||
name=child["name"],
|
||||
version_group_id=version_group_id,
|
||||
order=child["order"],
|
||||
parent_route_id=parent_id,
|
||||
pinwheel_zone=child.get("pinwheel_zone"),
|
||||
)
|
||||
.on_conflict_do_update(
|
||||
constraint="uq_routes_version_group_name",
|
||||
set_={
|
||||
"order": child["order"],
|
||||
"parent_route_id": parent_id,
|
||||
"pinwheel_zone": child.get("pinwheel_zone"),
|
||||
},
|
||||
)
|
||||
)
|
||||
await session.execute(stmt)
|
||||
|
||||
@@ -186,21 +207,25 @@ async def upsert_route_encounters(
|
||||
print(f" Warning: no pokemon_id for pokeapi_id {enc['pokeapi_id']}")
|
||||
continue
|
||||
|
||||
stmt = insert(RouteEncounter).values(
|
||||
route_id=route_id,
|
||||
pokemon_id=pokemon_id,
|
||||
game_id=game_id,
|
||||
encounter_method=enc["method"],
|
||||
encounter_rate=enc["encounter_rate"],
|
||||
min_level=enc["min_level"],
|
||||
max_level=enc["max_level"],
|
||||
).on_conflict_do_update(
|
||||
constraint="uq_route_pokemon_method_game",
|
||||
set_={
|
||||
"encounter_rate": enc["encounter_rate"],
|
||||
"min_level": enc["min_level"],
|
||||
"max_level": enc["max_level"],
|
||||
},
|
||||
stmt = (
|
||||
insert(RouteEncounter)
|
||||
.values(
|
||||
route_id=route_id,
|
||||
pokemon_id=pokemon_id,
|
||||
game_id=game_id,
|
||||
encounter_method=enc["method"],
|
||||
encounter_rate=enc["encounter_rate"],
|
||||
min_level=enc["min_level"],
|
||||
max_level=enc["max_level"],
|
||||
)
|
||||
.on_conflict_do_update(
|
||||
constraint="uq_route_pokemon_method_game",
|
||||
set_={
|
||||
"encounter_rate": enc["encounter_rate"],
|
||||
"min_level": enc["min_level"],
|
||||
"max_level": enc["max_level"],
|
||||
},
|
||||
)
|
||||
)
|
||||
await session.execute(stmt)
|
||||
count += 1
|
||||
@@ -224,37 +249,44 @@ async def upsert_bosses(
|
||||
if after_route_name and route_name_to_id:
|
||||
after_route_id = route_name_to_id.get(after_route_name)
|
||||
if after_route_id is None:
|
||||
print(f" Warning: route '{after_route_name}' not found for boss '{boss['name']}'")
|
||||
print(
|
||||
f" Warning: route '{after_route_name}' not found for boss '{boss['name']}'"
|
||||
)
|
||||
|
||||
# Upsert the boss battle on (version_group_id, order) conflict
|
||||
stmt = insert(BossBattle).values(
|
||||
version_group_id=version_group_id,
|
||||
name=boss["name"],
|
||||
boss_type=boss["boss_type"],
|
||||
specialty_type=boss.get("specialty_type"),
|
||||
badge_name=boss.get("badge_name"),
|
||||
badge_image_url=boss.get("badge_image_url"),
|
||||
level_cap=boss["level_cap"],
|
||||
order=boss["order"],
|
||||
after_route_id=after_route_id,
|
||||
location=boss["location"],
|
||||
section=boss.get("section"),
|
||||
sprite_url=boss.get("sprite_url"),
|
||||
).on_conflict_do_update(
|
||||
constraint="uq_boss_battles_version_group_order",
|
||||
set_={
|
||||
"name": boss["name"],
|
||||
"boss_type": boss["boss_type"],
|
||||
"specialty_type": boss.get("specialty_type"),
|
||||
"badge_name": boss.get("badge_name"),
|
||||
"badge_image_url": boss.get("badge_image_url"),
|
||||
"level_cap": boss["level_cap"],
|
||||
"after_route_id": after_route_id,
|
||||
"location": boss["location"],
|
||||
"section": boss.get("section"),
|
||||
"sprite_url": boss.get("sprite_url"),
|
||||
},
|
||||
).returning(BossBattle.id)
|
||||
stmt = (
|
||||
insert(BossBattle)
|
||||
.values(
|
||||
version_group_id=version_group_id,
|
||||
name=boss["name"],
|
||||
boss_type=boss["boss_type"],
|
||||
specialty_type=boss.get("specialty_type"),
|
||||
badge_name=boss.get("badge_name"),
|
||||
badge_image_url=boss.get("badge_image_url"),
|
||||
level_cap=boss["level_cap"],
|
||||
order=boss["order"],
|
||||
after_route_id=after_route_id,
|
||||
location=boss["location"],
|
||||
section=boss.get("section"),
|
||||
sprite_url=boss.get("sprite_url"),
|
||||
)
|
||||
.on_conflict_do_update(
|
||||
constraint="uq_boss_battles_version_group_order",
|
||||
set_={
|
||||
"name": boss["name"],
|
||||
"boss_type": boss["boss_type"],
|
||||
"specialty_type": boss.get("specialty_type"),
|
||||
"badge_name": boss.get("badge_name"),
|
||||
"badge_image_url": boss.get("badge_image_url"),
|
||||
"level_cap": boss["level_cap"],
|
||||
"after_route_id": after_route_id,
|
||||
"location": boss["location"],
|
||||
"section": boss.get("section"),
|
||||
"sprite_url": boss.get("sprite_url"),
|
||||
},
|
||||
)
|
||||
.returning(BossBattle.id)
|
||||
)
|
||||
result = await session.execute(stmt)
|
||||
boss_id = result.scalar_one()
|
||||
|
||||
@@ -267,13 +299,15 @@ async def upsert_bosses(
|
||||
if pokemon_id is None:
|
||||
print(f" Warning: no pokemon_id for pokeapi_id {bp['pokeapi_id']}")
|
||||
continue
|
||||
session.add(BossPokemon(
|
||||
boss_battle_id=boss_id,
|
||||
pokemon_id=pokemon_id,
|
||||
level=bp["level"],
|
||||
order=bp["order"],
|
||||
condition_label=bp.get("condition_label"),
|
||||
))
|
||||
session.add(
|
||||
BossPokemon(
|
||||
boss_battle_id=boss_id,
|
||||
pokemon_id=pokemon_id,
|
||||
level=bp["level"],
|
||||
order=bp["order"],
|
||||
condition_label=bp.get("condition_label"),
|
||||
)
|
||||
)
|
||||
|
||||
count += 1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user