From bdf69f2ab9ba489fb96e691e62f194efabb38f2d Mon Sep 17 00:00:00 2001 From: Valentin Pratz Date: Mon, 24 Feb 2025 15:40:28 +0000 Subject: [PATCH] [no ci] Semi-automatically populate __all__ in init files --- bayesflow/adapters/__init__.py | 4 ++++ bayesflow/adapters/transforms/__init__.py | 4 ++++ bayesflow/approximators/__init__.py | 4 ++++ bayesflow/benchmarks/__init__.py | 4 ++++ bayesflow/datasets/__init__.py | 4 ++++ bayesflow/diagnostics/__init__.py | 4 ++++ bayesflow/distributions/__init__.py | 4 ++++ bayesflow/metrics/__init__.py | 5 +++++ bayesflow/metrics/functional/__init__.py | 4 ++++ bayesflow/networks/__init__.py | 4 ++++ bayesflow/simulators/__init__.py | 4 ++++ bayesflow/types/__init__.py | 4 ++++ bayesflow/utils/__init__.py | 4 ++++ bayesflow/utils/_docs/__init__.py | 1 + bayesflow/utils/_docs/_populate_all.py | 21 +++++++++++++++++++++ bayesflow/workflows/__init__.py | 4 ++++ docsrc/source/api/bayesflow.rst | 1 + docsrc/source/conf.py | 2 +- 18 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 bayesflow/utils/_docs/__init__.py create mode 100644 bayesflow/utils/_docs/_populate_all.py diff --git a/bayesflow/adapters/__init__.py b/bayesflow/adapters/__init__.py index aebc55314..1fbd0d81a 100644 --- a/bayesflow/adapters/__init__.py +++ b/bayesflow/adapters/__init__.py @@ -1,2 +1,6 @@ from . import transforms from .adapter import Adapter + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=["transforms"]) diff --git a/bayesflow/adapters/transforms/__init__.py b/bayesflow/adapters/transforms/__init__.py index 311c313e5..92e294ed4 100644 --- a/bayesflow/adapters/transforms/__init__.py +++ b/bayesflow/adapters/transforms/__init__.py @@ -16,3 +16,7 @@ from .standardize import Standardize from .to_array import ToArray from .transform import Transform + +from ...utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=["transforms"]) diff --git a/bayesflow/approximators/__init__.py b/bayesflow/approximators/__init__.py index b2bd76f6b..43ec8c0d6 100644 --- a/bayesflow/approximators/__init__.py +++ b/bayesflow/approximators/__init__.py @@ -1,3 +1,7 @@ from .approximator import Approximator from .continuous_approximator import ContinuousApproximator from .model_comparison_approximator import ModelComparisonApproximator + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/benchmarks/__init__.py b/bayesflow/benchmarks/__init__.py index a7b82acb6..b4ef229ff 100644 --- a/bayesflow/benchmarks/__init__.py +++ b/bayesflow/benchmarks/__init__.py @@ -1,2 +1,6 @@ from .simulators import TwoMoons from .simulators import LotkaVolterra + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/datasets/__init__.py b/bayesflow/datasets/__init__.py index 54ce6e2a4..b540c0c65 100644 --- a/bayesflow/datasets/__init__.py +++ b/bayesflow/datasets/__init__.py @@ -2,3 +2,7 @@ from .online_dataset import OnlineDataset from .disk_dataset import DiskDataset from .rounds_dataset import RoundsDataset + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/diagnostics/__init__.py b/bayesflow/diagnostics/__init__.py index 80528e091..338bb252a 100644 --- a/bayesflow/diagnostics/__init__.py +++ b/bayesflow/diagnostics/__init__.py @@ -12,3 +12,7 @@ recovery, z_score_contraction, ) + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/distributions/__init__.py b/bayesflow/distributions/__init__.py index da5b0acb2..afe63b3a0 100644 --- a/bayesflow/distributions/__init__.py +++ b/bayesflow/distributions/__init__.py @@ -1,3 +1,7 @@ from .distribution import Distribution from .diagonal_normal import DiagonalNormal from .diagonal_student_t import DiagonalStudentT + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/metrics/__init__.py b/bayesflow/metrics/__init__.py index 0f58c5359..41954ab02 100644 --- a/bayesflow/metrics/__init__.py +++ b/bayesflow/metrics/__init__.py @@ -1,2 +1,7 @@ +from . import functional from .maximum_mean_discrepancy import MaximumMeanDiscrepancy from .root_mean_squard_error import RootMeanSquaredError + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=["functional"]) diff --git a/bayesflow/metrics/functional/__init__.py b/bayesflow/metrics/functional/__init__.py index 13abef6e4..4febaea80 100644 --- a/bayesflow/metrics/functional/__init__.py +++ b/bayesflow/metrics/functional/__init__.py @@ -1,2 +1,6 @@ from .maximum_mean_discrepancy import maximum_mean_discrepancy from .root_mean_squared_error import root_mean_squared_error + +from ...utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/networks/__init__.py b/bayesflow/networks/__init__.py index 7ac7fcc89..d347ed745 100644 --- a/bayesflow/networks/__init__.py +++ b/bayesflow/networks/__init__.py @@ -9,3 +9,7 @@ from .lstnet import LSTNet from .summary_network import SummaryNetwork from .transformers import SetTransformer, TimeSeriesTransformer, FusionTransformer + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/simulators/__init__.py b/bayesflow/simulators/__init__.py index 13aa46da6..18be9b0fd 100644 --- a/bayesflow/simulators/__init__.py +++ b/bayesflow/simulators/__init__.py @@ -5,3 +5,7 @@ from .model_comparison_simulator import ModelComparisonSimulator from .simulator import Simulator from .two_moons import TwoMoons + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/types/__init__.py b/bayesflow/types/__init__.py index 16253178f..923e37fb1 100644 --- a/bayesflow/types/__init__.py +++ b/bayesflow/types/__init__.py @@ -1,2 +1,6 @@ from .shape import Shape from .tensor import Tensor + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/bayesflow/utils/__init__.py b/bayesflow/utils/__init__.py index 4b5482089..5f1068a73 100644 --- a/bayesflow/utils/__init__.py +++ b/bayesflow/utils/__init__.py @@ -68,3 +68,7 @@ ) from .validators import check_lengths_same from .workflow_utils import find_inference_network, find_summary_network + +from ._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=["keras_utils", "logging", "numpy_utils"]) diff --git a/bayesflow/utils/_docs/__init__.py b/bayesflow/utils/_docs/__init__.py new file mode 100644 index 000000000..8dd6b9899 --- /dev/null +++ b/bayesflow/utils/_docs/__init__.py @@ -0,0 +1 @@ +from ._populate_all import _add_imports_to_all diff --git a/bayesflow/utils/_docs/_populate_all.py b/bayesflow/utils/_docs/_populate_all.py new file mode 100644 index 000000000..dc48350e0 --- /dev/null +++ b/bayesflow/utils/_docs/_populate_all.py @@ -0,0 +1,21 @@ +import inspect + + +def _add_imports_to_all(include_modules: bool | list[str] = False, exclude: list[str] | None = None): + """Add all global variables to __all__""" + assert type(include_modules) in [bool, list] + exclude = exclude or [] + calling_module = inspect.stack()[1] + local_stack = calling_module[0] + global_vars = local_stack.f_globals + all_vars = global_vars["__all__"] if "__all__" in global_vars else [] + included_vars = [] + for var_name in set(global_vars.keys()): + if inspect.ismodule(global_vars[var_name]): + if include_modules is True and var_name not in exclude and not var_name.startswith("_"): + included_vars.append(var_name) + elif isinstance(include_modules, list) and var_name in include_modules: + included_vars.append(var_name) + elif var_name not in exclude and not var_name.startswith("_"): + included_vars.append(var_name) + global_vars["__all__"] = list(set(all_vars).union(included_vars)) diff --git a/bayesflow/workflows/__init__.py b/bayesflow/workflows/__init__.py index eda7e8b6e..63fc49c9c 100644 --- a/bayesflow/workflows/__init__.py +++ b/bayesflow/workflows/__init__.py @@ -1 +1,5 @@ from .basic_workflow import BasicWorkflow + +from ..utils._docs import _add_imports_to_all + +_add_imports_to_all(include_modules=[]) diff --git a/docsrc/source/api/bayesflow.rst b/docsrc/source/api/bayesflow.rst index aba1e0aae..a46e88c04 100644 --- a/docsrc/source/api/bayesflow.rst +++ b/docsrc/source/api/bayesflow.rst @@ -12,6 +12,7 @@ bayesflow.datasets bayesflow.diagnostics bayesflow.distributions + bayesflow.experimental bayesflow.metrics bayesflow.networks bayesflow.simulators diff --git a/docsrc/source/conf.py b/docsrc/source/conf.py index afbd44133..4804c7ae6 100644 --- a/docsrc/source/conf.py +++ b/docsrc/source/conf.py @@ -90,7 +90,7 @@ # do not ignore __all__, use it to determine public members autosummary_ignore_module_all = False # include imported members in autosummary -autosummary_imported_members = True +autosummary_imported_members = False # selects content to insert into the main body of an autoclass directive. autoclass_content = "both"