import json
import os
import zipfile
import yaml
class DumperEdit(yaml.Dumper):
def increase_indent(self, flow=False, indentless=False):
return super(DumperEdit, self).increase_indent(flow, False)
def write_line_break(self, data=None):
super().write_line_break(data)
if len(self.indents) == 1:
super().write_line_break()
[docs]
def load_yml(f):
"""Load YAML file"""
with open(f, "r") as file:
config = yaml.safe_load(file)
return config
[docs]
def save_yml(f, data):
"""Save YAML file"""
with open(f, "w") as file:
yaml.dump(
data,
file,
Dumper=DumperEdit,
default_flow_style=False,
sort_keys=False,
indent=2,
)
[docs]
def unzip_file(
zip_file_name,
out_dir,
):
"""Unzip a file"""
if not os.path.exists(out_dir):
os.makedirs(out_dir)
out_dir = str(out_dir)
with zipfile.ZipFile(zip_file_name, "r") as zip_file:
zip_file.extractall(out_dir)
return True
[docs]
def load_json(file):
"""Load json file"""
with open(file, "r", encoding="utf-8") as f:
j = json.load(f)
return j
[docs]
def save_json(data, out_file):
"""Save json in a pretty way"""
with open(out_file, "w", encoding="utf-8") as f:
json.dump(
data,
f,
ensure_ascii=False,
indent=4,
)