From 1d23b34ad686229b02cd092e065f2bc751ee839d Mon Sep 17 00:00:00 2001 From: SimplifiedPrivacy Date: Wed, 1 Jul 2026 10:06:14 -0400 Subject: [PATCH] Supports Flexible YAML paths from parent directory --- core/Constants.py | 2 +- core/models/manage/denormalize.py | 3 +-- core/services/sync/orm_methods/sync_one_orm.py | 6 +++++- core/utils/basic_operations/get_parent_directory.py | 8 ++++++++ pyproject.toml | 1 + 5 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 core/utils/basic_operations/get_parent_directory.py diff --git a/core/Constants.py b/core/Constants.py index b230486..5e8e9f2 100644 --- a/core/Constants.py +++ b/core/Constants.py @@ -6,7 +6,7 @@ import os @dataclass(frozen=True) class Constants: - DB_VERSION_THIS_APP_WANTS = 2 + DB_VERSION_THIS_APP_WANTS = 1 # ticketing group: TICKET_API_BASE_URL: Final[str] = os.environ.get( diff --git a/core/models/manage/denormalize.py b/core/models/manage/denormalize.py index 795ac9c..c6e3f4c 100644 --- a/core/models/manage/denormalize.py +++ b/core/models/manage/denormalize.py @@ -27,11 +27,10 @@ def extract_from_nested(obj, yaml_keys, default=None): This function removes unnecessary nesting, by comparing it to a pre-made YAML mapping """ -def denormalize(data, which_yaml_file): +def denormalize(data, mapping_file): final_results = [] # prep the mapping config: - mapping_file = f"assets/yaml_mappings/{which_yaml_file}" with open(mapping_file) as f: mapping = yaml.safe_load(f) diff --git a/core/services/sync/orm_methods/sync_one_orm.py b/core/services/sync/orm_methods/sync_one_orm.py index 5e87f5c..274351e 100644 --- a/core/services/sync/orm_methods/sync_one_orm.py +++ b/core/services/sync/orm_methods/sync_one_orm.py @@ -5,6 +5,7 @@ from core.models.orm_models.Base import Base from core.observers.ClientObserver import ClientObserver from core.observers.ConnectionObserver import ConnectionObserver from core.errors.logger import logger +from core.utils.basic_operations.get_parent_directory import get_parent_directory from typing import Optional import json @@ -29,8 +30,11 @@ def sync_one_orm_model( new_data = api_result.get("data") # prep data (denormalize) + parent_directory = get_parent_directory() yaml_filename = f"{which_endpoint}.yaml" - denormalized_data = denormalize(new_data, yaml_filename) + full_yaml_path = f"{parent_directory}/assets/yaml_mappings/{yaml_filename}" + + denormalized_data = denormalize(new_data, str(full_yaml_path)) if denormalized_data: # Debug Pretty print with indentation diff --git a/core/utils/basic_operations/get_parent_directory.py b/core/utils/basic_operations/get_parent_directory.py new file mode 100644 index 0000000..e3e5a81 --- /dev/null +++ b/core/utils/basic_operations/get_parent_directory.py @@ -0,0 +1,8 @@ +from pathlib import Path +import core + +def get_parent_directory(): + # Get core's parent directory + parent_directory = Path(core.__file__).parent.parent + + return str(parent_directory) \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index 95e2fea..aa23979 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ dependencies = [ "pydantic_core==2.46.3", "pydeps==3.0.6", "pytokens==0.4.1", + "PyYAML==6.0.3", "stdlib-list==0.12.0", "SQLAlchemy==2.0.51", "toolz==1.1.0",