diff --git a/src/lalib/__init__.py b/src/lalib/__init__.py index 26b2482..8a1a66f 100644 --- a/src/lalib/__init__.py +++ b/src/lalib/__init__.py @@ -4,10 +4,26 @@ First, verify that your installation of `lalib` works: >>> import lalib >>> lalib.__version__ != '0.0.0' True + +`lalib` exposes its very own "words" (i.e., its public API) at the root +of the package. They can be imported all at once with: + +>>> from lalib import * + +In addition to Python's built-in numbers, `lalib` comes with a couple of +specific numeric data types, for example, `one` and `zero` representing +the two elements of the Galois field `GF2`: + +>>> one + one +zero +>>> one + zero +one """ from importlib import metadata +from lalib.elements import gf2 + try: pkg_info = metadata.metadata(__name__) @@ -24,4 +40,15 @@ else: del pkg_info +GF2, one, zero = gf2.GF2, gf2.one, gf2.zero + + +del gf2 del metadata + + +__all__ = ( + "GF2", + "one", + "zero", +) diff --git a/tests/test_top_level_imports.py b/tests/test_top_level_imports.py new file mode 100644 index 0000000..e73cd0e --- /dev/null +++ b/tests/test_top_level_imports.py @@ -0,0 +1,18 @@ +"""Test top-level imports for `lalib`.""" + +import lalib as top_level + + +def test_top_level_imports(): + """Verify `from lalib import *` works.""" + environment = {} + + exec("...", environment, environment) # noqa: S102 + defined_vars_before = set(environment) + + exec("from lalib import *", environment, environment) # noqa: S102 + defined_vars_after = set(environment) + + new_vars = defined_vars_after - defined_vars_before + + assert new_vars == set(top_level.__all__)