diff --git a/.github/workflows/build_and_release.yml b/.github/workflows/build_and_release.yml index d92428a63..e0b5c7a1e 100644 --- a/.github/workflows/build_and_release.yml +++ b/.github/workflows/build_and_release.yml @@ -48,13 +48,13 @@ jobs: run: python3 -m build # Test the locally built wheel - name: Create test environment - run: python -m venv test_env + run: python -m venv test_before_testpypi - name: Test package installation and functionality run: | - source test_env/bin/activate + source test_before_testpypi/bin/activate # Install the locally built wheel and testing dependencies pip install dist/*.whl pytest - python -c "import dspy; print(dspy.__version__)" + pytest tests/metadata/test_metadata.py tests/predict deactivate # Publish to test-PyPI - name: Publish distribution 📦 to test-PyPI @@ -93,6 +93,16 @@ jobs: run: sed -i '/#replace_package_name_marker/{n;s/__name__ *= *"[^"]*"/__name__="dspy"/;}' ./dspy/__metadata__.py - name: Build a binary wheel run: python3 -m build + # Test the locally built wheel before publishing to pypi + - name: Create test environment + run: python -m venv test_before_pypi + - name: Test package installation and functionality + run: | + source test_before_pypi/bin/activate + # Install the locally built wheel and testing dependencies + pip install dist/*.whl pytest + pytest tests/metadata/test_metadata.py tests/predict + deactivate - name: Publish distribution 📦 to PyPI (dspy) uses: pypa/gh-action-pypi-publish@release/v1 with: diff --git a/dspy/utils/saving.py b/dspy/utils/saving.py index 283e5dce6..2e01be014 100644 --- a/dspy/utils/saving.py +++ b/dspy/utils/saving.py @@ -3,17 +3,19 @@ from pathlib import Path import cloudpickle -import importlib_metadata import ujson logger = logging.getLogger(__name__) def get_dependency_versions(): - cloudpickle_version = '.'.join(cloudpickle.__version__.split('.')[:2]) + import dspy + + cloudpickle_version = ".".join(cloudpickle.__version__.split(".")[:2]) + return { "python": f"{sys.version_info.major}.{sys.version_info.minor}", - "dspy": importlib_metadata.version("dspy"), + "dspy": dspy.__version__, "cloudpickle": cloudpickle_version, } diff --git a/tests/metadata/test_metadata.py b/tests/metadata/test_metadata.py new file mode 100644 index 000000000..9e6f133d7 --- /dev/null +++ b/tests/metadata/test_metadata.py @@ -0,0 +1,11 @@ +import dspy +import re + + +def test_metadata(): + assert dspy.__name__ == "dspy" + assert re.match(r"\d+\.\d+\.\d+", dspy.__version__) + assert dspy.__author__ == "Omar Khattab" + assert dspy.__author_email__ == "okhattab@stanford.edu" + assert dspy.__url__ == "https://github.com/stanfordnlp/dspy" + assert dspy.__description__ == "DSPy"