Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions flapjacksearch/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,27 @@
# coding: utf-8

# The version of the flapjacksearch package
__version__ = "0.1.0b1"
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.<subpackage>.__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()
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -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 <support@flapjack.com>"]
license = "MIT"
Expand Down
29 changes: 29 additions & 0 deletions tests/test_version_consistency.py
Original file line number Diff line number Diff line change
@@ -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__
Loading