From c89c2fcf73a369c0c192f7251d1a10d2722906d8 Mon Sep 17 00:00:00 2001 From: Brooks Travis <brooks.travis@gmail.com> Date: Thu, 2 Nov 2023 01:56:26 -0500 Subject: [PATCH] Moving i18n_config.py and en.json into main package, and adding ability to specify a i18n config directory via environment variable or use the current migration project base directory, falling back to packaged. Fixes i18n changes require files not included in the package distribution #703 --- conftest.py | 3 ++- src/folio_migration_tools/__main__.py | 17 +++++++++++------ .../folio_migration_tools/i18n_config.py | 0 .../folio_migration_tools/translations}/en.json | 2 +- tests/test_basic.py | 2 +- 5 files changed, 15 insertions(+), 9 deletions(-) rename i18n_config.py => src/folio_migration_tools/i18n_config.py (100%) rename {translations => src/folio_migration_tools/translations}/en.json (99%) diff --git a/conftest.py b/conftest.py index 50682fc7..17d30af8 100644 --- a/conftest.py +++ b/conftest.py @@ -1,4 +1,5 @@ from pathlib import Path + import pytest @@ -10,7 +11,7 @@ def pytest_addoption(parser): # parser.addoption("--folio_release", action="store") -i18n_config_file = Path(__file__).parent / "i18n_config.py" +i18n_config_file = Path(__file__).parent / "src/folio_migration_tools/i18n_config.py" @pytest.fixture(scope="session", autouse=True) diff --git a/src/folio_migration_tools/__main__.py b/src/folio_migration_tools/__main__.py index d63dcb76..0b03d9bd 100644 --- a/src/folio_migration_tools/__main__.py +++ b/src/folio_migration_tools/__main__.py @@ -1,23 +1,20 @@ import json import logging import sys -from pathlib import Path from os import environ +from pathlib import Path import httpx import humps +import i18n from argparse_prompt import PromptParser from pydantic import ValidationError +from folio_migration_tools.config_file_load import merge_load from folio_migration_tools.custom_exceptions import TransformationProcessError from folio_migration_tools.library_configuration import LibraryConfiguration from folio_migration_tools.migration_tasks import * # noqa: F403, F401 from folio_migration_tools.migration_tasks import migration_task_base -from folio_migration_tools.config_file_load import merge_load - -import i18n - -i18n.load_config(Path(__file__).parents[2] / "i18n_config.py") def parse_args(args): @@ -68,6 +65,14 @@ def main(): task_classes = list(inheritors(migration_task_base.MigrationTaskBase)) args = parse_args(sys.argv[1:]) + try: + i18n.load_config( + Path( + environ.get( + "FOLIO_MIGRATION_TOOLS_I18N_CONFIG_BASE_PATH" + ) or args.base_folder_path) / "i18n_config.py") + except i18n.I18nFileLoadError: + i18n.load_config(Path(__file__).parent / "i18n_config.py") i18n.set("locale", args.report_language) config_file_humped = merge_load(args.configuration_path) config_file_humped["libraryInformation"]["okapiPassword"] = args.okapi_password diff --git a/i18n_config.py b/src/folio_migration_tools/i18n_config.py similarity index 100% rename from i18n_config.py rename to src/folio_migration_tools/i18n_config.py diff --git a/translations/en.json b/src/folio_migration_tools/translations/en.json similarity index 99% rename from translations/en.json rename to src/folio_migration_tools/translations/en.json index c755371a..079aa1e6 100644 --- a/translations/en.json +++ b/src/folio_migration_tools/translations/en.json @@ -441,4 +441,4 @@ "legacy id from %{fro}": "legacy id from %{fro}", "naturalId mapped from %{fro}": "naturalId mapped from %{fro}", "no matching identifier_types in %{names}": "no matching identifier_types in %{names}" -} \ No newline at end of file +} diff --git a/tests/test_basic.py b/tests/test_basic.py index 6c706676..19cf03cb 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -52,7 +52,7 @@ def test_dedupe(): def test_blurb_internationalization(): - i18n.load_config(Path(__file__).parents[1] / "i18n_config.py") + i18n.load_config(Path(__file__).parents[1] / "src/folio_migration_tools/i18n_config.py") assert i18n.t("blurbs.Introduction.title") == "Introduction"