Zillion: some typing fixes (#2534)

`colorama` has type stubs when it didn't before

`ZillionDeltaPatch.hash` annotated type could be `None` but md5s doesn't allow `None`

type of `CollectionState.prog_items` changed

`WorldTestBase` moved

all of the following are related to this issue:
https://github.com/python/typing/discussions/1486

CommonContext for `command_processor` (is invalid without specifying immutable - but I don't need it anyway)

ZillionWorld options and settings (is invalid without specifying immutable - but I do need it)
This commit is contained in:
Doug Hoskisson 2023-12-06 09:23:43 -08:00 committed by GitHub
parent 597f94dc22
commit d8004f82ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 7 deletions

View File

@ -1,7 +1,7 @@
import asyncio import asyncio
import base64 import base64
import platform import platform
from typing import Any, ClassVar, Coroutine, Dict, List, Optional, Protocol, Tuple, Type, cast from typing import Any, ClassVar, Coroutine, Dict, List, Optional, Protocol, Tuple, cast
# CommonClient import first to trigger ModuleUpdater # CommonClient import first to trigger ModuleUpdater
from CommonClient import CommonContext, server_loop, gui_enabled, \ from CommonClient import CommonContext, server_loop, gui_enabled, \
@ -10,7 +10,7 @@ from NetUtils import ClientStatus
import Utils import Utils
from Utils import async_start from Utils import async_start
import colorama # type: ignore import colorama
from zilliandomizer.zri.memory import Memory from zilliandomizer.zri.memory import Memory
from zilliandomizer.zri import events from zilliandomizer.zri import events
@ -45,7 +45,7 @@ class SetRoomCallback(Protocol):
class ZillionContext(CommonContext): class ZillionContext(CommonContext):
game = "Zillion" game = "Zillion"
command_processor: Type[ClientCommandProcessor] = ZillionCommandProcessor command_processor = ZillionCommandProcessor
items_handling = 1 # receive items from other players items_handling = 1 # receive items from other players
known_name: Optional[str] known_name: Optional[str]

View File

@ -33,6 +33,7 @@ class ZillionSettings(settings.Group):
"""File name of the Zillion US rom""" """File name of the Zillion US rom"""
description = "Zillion US ROM File" description = "Zillion US ROM File"
copy_to = "Zillion (UE) [!].sms" copy_to = "Zillion (UE) [!].sms"
assert ZillionDeltaPatch.hash
md5s = [ZillionDeltaPatch.hash] md5s = [ZillionDeltaPatch.hash]
class RomStart(str): class RomStart(str):
@ -70,9 +71,11 @@ class ZillionWorld(World):
web = ZillionWebWorld() web = ZillionWebWorld()
options_dataclass = ZillionOptions options_dataclass = ZillionOptions
options: ZillionOptions options: ZillionOptions # type: ignore
settings: typing.ClassVar[ZillionSettings] # type: ignore
# these type: ignore are because of this issue: https://github.com/python/typing/discussions/1486
settings: typing.ClassVar[ZillionSettings]
topology_present = True # indicate if world type has any meaningful layout/pathing topology_present = True # indicate if world type has any meaningful layout/pathing
# map names to their IDs # map names to their IDs

View File

@ -41,7 +41,7 @@ def item_counts(cs: CollectionState, p: int) -> Tuple[Tuple[str, int], ...]:
return tuple((item_name, cs.count(item_name, p)) for item_name in item_name_to_id) return tuple((item_name, cs.count(item_name, p)) for item_name in item_name_to_id)
LogicCacheType = Dict[int, Tuple[_Counter[Tuple[str, int]], FrozenSet[Location]]] LogicCacheType = Dict[int, Tuple[Dict[int, _Counter[str]], FrozenSet[Location]]]
""" { hash: (cs.prog_items, accessible_locations) } """ """ { hash: (cs.prog_items, accessible_locations) } """

View File

@ -1,5 +1,5 @@
from typing import cast from typing import cast
from test.TestBase import WorldTestBase from test.bases import WorldTestBase
from worlds.zillion import ZillionWorld from worlds.zillion import ZillionWorld