mirror of
https://github.com/maoakeEnterprise/amazing.git
synced 2026-04-29 00:14:34 +02:00
98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
class DataMaze:
|
|
|
|
@staticmethod
|
|
def get_file_data(name_file: str) -> str:
|
|
with open(name_file, "r") as file:
|
|
data = file.read()
|
|
if data == "":
|
|
raise ValueError("The file is empty")
|
|
return data
|
|
|
|
@staticmethod
|
|
def transform_data(data: str) -> dict:
|
|
tmp = data.split("\n")
|
|
tmp2 = [
|
|
value.split("=", 1) for value in tmp
|
|
]
|
|
data_t = {
|
|
value[0]: value[1] for value in tmp2
|
|
}
|
|
return data_t
|
|
|
|
@staticmethod
|
|
def verif_key_data(data: dict) -> None:
|
|
key_test = {
|
|
"WIDTH", "HEIGHT", "ENTRY", "EXIT", "OUTPUT_FILE", "PERFECT"
|
|
}
|
|
set_key = {
|
|
key for key in data.keys()
|
|
}
|
|
if len(set_key) != len(key_test):
|
|
raise KeyError("Missing some data the len do not correspond")
|
|
res_key = {key for key in set_key if key not in key_test}
|
|
if len(res_key) != 0:
|
|
raise KeyError("Some Key "
|
|
f"do not correspond the keys: {res_key}")
|
|
|
|
@staticmethod
|
|
def convert_values(data: dict):
|
|
key_int = {"WIDTH", "HEIGHT"}
|
|
key_tuple = {"ENTRY", "EXIT"}
|
|
key_bool = {"PERFECT"}
|
|
res: dict = {}
|
|
for key in key_int:
|
|
res.update({key: int(data[key])})
|
|
for key in key_tuple:
|
|
res.update({key: DataMaze.convert_tuple(data[key])})
|
|
for key in key_bool:
|
|
res.update({key: DataMaze.convert_bool(data[key])})
|
|
res.update({"OUTPUT_FILE": data["OUTPUT_FILE"]})
|
|
return res
|
|
|
|
@staticmethod
|
|
def get_data_maze(name_file: str) -> dict:
|
|
try:
|
|
data_str = DataMaze.get_file_data(name_file)
|
|
data_dict = DataMaze.transform_data(data_str)
|
|
DataMaze.verif_key_data(data_dict)
|
|
data_maze = DataMaze.convert_values(data_dict)
|
|
return data_maze
|
|
except FileNotFoundError:
|
|
print("The file do not exist")
|
|
exit()
|
|
except PermissionError:
|
|
print("We dont have the Permission")
|
|
exit()
|
|
except ValueError as e:
|
|
print(f"Error during the convert or the file is empty: {e}")
|
|
exit()
|
|
except KeyError as e:
|
|
print(f"Error on the key in the file: {e}")
|
|
exit()
|
|
except IndexError as e:
|
|
print("In the function transform Data some data cannot "
|
|
f"be splited by '=' because '=' was not present: {e}")
|
|
exit()
|
|
except AttributeError as e:
|
|
print("Error on the "
|
|
f"funciton get_data_maze : {e}")
|
|
exit()
|
|
|
|
@staticmethod
|
|
def convert_tuple(data: str) -> tuple:
|
|
data_t = data.split(",")
|
|
if len(data_t) != 2:
|
|
raise ValueError("There is too much "
|
|
"argument in the coordinate given")
|
|
x, y = data_t
|
|
tup = (int(x), int(y))
|
|
return tup
|
|
|
|
@staticmethod
|
|
def convert_bool(data: str) -> bool:
|
|
if data != "True" and data != "False":
|
|
raise ValueError("This is not True or False")
|
|
if data == "True":
|
|
return True
|
|
return False
|