diff --git a/flapjacksearch/__init__.py b/flapjacksearch/__init__.py index 4d12fcb..3d322ae 100644 --- a/flapjacksearch/__init__.py +++ b/flapjacksearch/__init__.py @@ -1,4 +1,27 @@ # coding: utf-8 -# The version of the flapjacksearch package -__version__ = "0.1.0b1" \ No newline at end of file +from importlib import import_module +from pkgutil import iter_modules + +# The canonical version of the flapjacksearch package. +__version__ = "1.0.0" + + +def _sync_generated_subpackage_versions() -> None: + """Keep generated subpackage runtime versions aligned with the root package. + + Generated clients stamp an OpenAPI spec version (for example ``4.36.0``) + into each top-level subpackage ``__init__``. At runtime, consumers expect + ``flapjacksearch..__version__`` to match the distributable + package version exposed by ``flapjacksearch.__version__``. + """ + + for module_info in iter_modules(__path__): + if not module_info.ispkg: + continue + module = import_module(f"{__name__}.{module_info.name}") + if hasattr(module, "__version__"): + module.__version__ = __version__ + + +_sync_generated_subpackage_versions() diff --git a/pyproject.toml b/pyproject.toml index 0262341..380e8de 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "flapjack-search" -version = "0.1.0b1" +version = "1.0.0" description = "A fully-featured and blazing-fast Python API client to interact with Flapjack Search. Drop-in replacement for algoliasearch." authors = ["Flapjack "] license = "MIT" diff --git a/tests/test_version_consistency.py b/tests/test_version_consistency.py new file mode 100644 index 0000000..c655ead --- /dev/null +++ b/tests/test_version_consistency.py @@ -0,0 +1,29 @@ +"""Version consistency checks for root and generated subpackages.""" + +from importlib import import_module +from pkgutil import iter_modules + +import flapjacksearch + + +def _generated_subpackage_names(): + """Discover current generated top-level subpackages from the package tree.""" + + return tuple( + sorted( + module_info.name + for module_info in iter_modules(flapjacksearch.__path__) + if module_info.ispkg + ) + ) + + +def test_generated_subpackages_use_root_runtime_version(): + subpackage_names = _generated_subpackage_names() + + # Guard against a vacuous pass if package generation/output changes unexpectedly. + assert subpackage_names + + for subpackage_name in subpackage_names: + module = import_module(f"flapjacksearch.{subpackage_name}") + assert module.__version__ == flapjacksearch.__version__