def from_dict(cls, d: dict) -> "ObstructionInferralStrategy": gps = [GriddedPerm.from_dict(gp) for gp in d.pop("gps")] assert not d return cls(gps=gps)
def from_dict(cls, d: dict) -> "RequirementPlacementStrategy": gps = tuple(GriddedPerm.from_dict(gp) for gp in d.pop("gps")) return cls(gps=gps, **d)
def from_dict(cls, d: dict) -> "RequirementInsertionStrategy": gps = [GriddedPerm.from_dict(gp) for gp in d.pop("gps")] return cls(gps=gps, **d)