diff --git a/source/classes/CustomSettings.py b/source/classes/CustomSettings.py index 2a8a39f6..c31e628f 100644 --- a/source/classes/CustomSettings.py +++ b/source/classes/CustomSettings.py @@ -4,6 +4,7 @@ import urllib.parse import yaml from yaml.representer import Representer from collections import defaultdict +from pathlib import Path import RaceRandom as random from BaseClasses import LocationType, DoorType @@ -334,10 +335,11 @@ class CustomSettings(object): def load_yaml(path): try: - if urllib.parse.urlparse(path).scheme: + return yaml.load(path, Loader=yaml.SafeLoader) + except yaml.YAMLError as exc: + if os.path.exists(Path(path)): + with open(path, "r", encoding="utf-8") as f: + return yaml.load(f, Loader=yaml.SafeLoader) + elif urllib.parse.urlparse(path).scheme in ['http', 'https']: return yaml.load(urllib.request.urlopen(path), Loader=yaml.FullLoader) - with open(path, 'r', encoding='utf-8') as f: - return yaml.load(f, Loader=yaml.SafeLoader) - except Exception as e: - raise Exception(f'Failed to read customizer file: {e}') diff --git a/source/tools/MysteryUtils.py b/source/tools/MysteryUtils.py index 3fbbbf8d..9df4eca4 100644 --- a/source/tools/MysteryUtils.py +++ b/source/tools/MysteryUtils.py @@ -1,5 +1,7 @@ import argparse import RaceRandom as random +import os +from pathlib import Path import urllib.request import urllib.parse @@ -8,12 +10,13 @@ import yaml def get_weights(path): try: - if urllib.parse.urlparse(path).scheme: + return yaml.load(path, Loader=yaml.SafeLoader) + except yaml.YAMLError as exc: + if os.path.exists(Path(path)): + with open(path, "r", encoding="utf-8") as f: + return yaml.load(f, Loader=yaml.SafeLoader) + elif urllib.parse.urlparse(path).scheme in ['http', 'https']: return yaml.load(urllib.request.urlopen(path), Loader=yaml.FullLoader) - with open(path, 'r', encoding='utf-8') as f: - return yaml.load(f, Loader=yaml.SafeLoader) - except Exception as e: - raise Exception(f'Failed to read weights file: {e}') def roll_settings(weights):