def batch_distribute_helper( base_permalink: Permalink, seed_number: int, timeout: int, validate: bool, output_dir: Path, ) -> float: permalink = Permalink( seed_number=seed_number, spoiler=True, patcher_configuration=base_permalink.patcher_configuration, layout_configuration=base_permalink.layout_configuration, ) start_time = time.perf_counter() description = generator.generate_description( permalink=permalink, status_update=None, validate_after_generation=validate, timeout=timeout) delta_time = time.perf_counter() - start_time description.save_to_file(output_dir.joinpath( "{}.json".format(seed_number))) return delta_time
def distribute_command_logic(args): def status_update(s): if args.status_update: print(s) if args.permalink is not None: permalink = Permalink.from_str(args.permalink) else: permalink = asyncio.run(_create_permalink(args)) print(f"Permalink: {permalink.as_base64_str}") if permalink.spoiler: debug.set_level(args.debug) extra_args = {} if args.no_retry: extra_args["attempts"] = 0 before = time.perf_counter() layout_description = generator.generate_description( permalink=permalink, status_update=status_update, validate_after_generation=args.validate, timeout=None, **extra_args) after = time.perf_counter() print("Took {} seconds. Hash: {}".format( after - before, layout_description.shareable_hash)) layout_description.save_to_file(args.output_file)
def distribute_command_logic(args): from randovania.layout.permalink import Permalink from randovania.generator import generator async def _create_permalink(args_) -> Permalink: from randovania.interface_common import persistence from randovania.interface_common.preset_manager import PresetManager preset_manager = PresetManager(persistence.user_data_dir()) await preset_manager.load_user_presets() preset = preset_manager.preset_for_name(args_.preset_name).get_preset() return Permalink( args_.seed_number, spoiler=True, presets={i: preset for i in range(args_.player_count)}, ) def status_update(s): if args.status_update: print(s) if args.permalink is not None: permalink = Permalink.from_str(args.permalink) else: permalink = asyncio.run(_create_permalink(args)) print(f"Permalink: {permalink.as_base64_str}") if permalink.spoiler: debug.set_level(args.debug) extra_args = {} if args.no_retry: extra_args["attempts"] = 0 before = time.perf_counter() layout_description = generator.generate_description( permalink=permalink, status_update=status_update, validate_after_generation=args.validate, timeout=None, **extra_args) after = time.perf_counter() print("Took {} seconds. Hash: {}".format( after - before, layout_description.shareable_hash)) layout_description.save_to_file(args.output_file)
def test_compare_generated_with_data(mock_permalink_as_str: PropertyMock, layout_description: LayoutDescription): debug.set_level(0) status_update = MagicMock() mock_permalink_as_str.return_value = "fixed-seed!" generated_description = generator.generate_description( layout_description.permalink, status_update=status_update, validate_after_generation=True, timeout=None) # indices: List[int] = [None] * echoes_pickup_database.total_pickup_count # for index, pickup in generated_description.patches.pickup_assignment.items(): # indices[index.index] = echoes_pickup_database.original_index(pickup).index # print(indices) assert generated_description.without_solver_path == layout_description
def distribute_command_logic(args): def status_update(s): pass permalink = Permalink.from_str(args.permalink) if permalink.spoiler: debug.set_level(args.debug) before = time.perf_counter() layout_description = generator.generate_description( permalink=permalink, status_update=status_update, validate_after_generation=args.validate, timeout=None) after = time.perf_counter() print("Took {} seconds. Hash: {}".format( after - before, layout_description.shareable_hash)) layout_description.save_to_file(args.output_file)
def _generate_layout_worker(output_pipe: Connection, permalink: Permalink, validate_after_generation: bool, timeout_during_generation: bool, debug_level: int): def status_update(message: str): output_pipe.send(message) if output_pipe.poll(): raise RuntimeError(output_pipe.recv()) debug.set_level(debug_level) extra_args = {} if not timeout_during_generation: extra_args["timeout"] = None return generator.generate_description(permalink, status_update=status_update, validate_after_generation=validate_after_generation, **extra_args)
def distribute_command_logic(args): debug._DEBUG_LEVEL = args.debug def status_update(s): pass permalink = Permalink.from_str(args.permalink) before = time.perf_counter() layout_description = generator.generate_description(permalink=permalink, status_update=status_update, validate_after_generation=args.validate, timeout=None) after = time.perf_counter() print("Took {} seconds. Hash: {}".format(after - before, layout_description.shareable_hash)) layout_description.save_to_file(args.output_file) simplified_patcher.write_patcher_file_to_disk( args.output_file.with_suffix(".patcher-json"), layout_description, CosmeticPatches.default(), )
def _generate_layout_worker(output_pipe, permalink: Permalink, validate_after_generation: bool, timeout_during_generation: bool, debug_level: int): try: def status_update(message: str): output_pipe.send(message) debug._DEBUG_LEVEL = debug_level extra_args = {} if not timeout_during_generation: extra_args["timeout"] = None layout_description = generator.generate_description(permalink, status_update=status_update, validate_after_generation=validate_after_generation, **extra_args) output_pipe.send(layout_description) except Exception as e: traceback.print_exc() output_pipe.send(e)
def randomize_command_logic(args): def status_update(s): if args.verbose: print(s) if args.permalink is not None: layout_description = generator.generate_description(permalink=Permalink.from_str(args.permalink), status_update=status_update, validate_after_generation=True) else: layout_description = LayoutDescription.from_file(args.log_file) cosmetic_patches = CosmeticPatches( disable_hud_popup=args.disable_hud_popup, speed_up_credits=args.speed_up_credits) claris_randomizer.apply_layout(description=layout_description, cosmetic_patches=cosmetic_patches, backup_files_path=args.backup_files, progress_update=lambda x, _: status_update(x), game_root=args.game_files, )