From 12a22b1be20b9e98c5c03070dfbd9b83221461da Mon Sep 17 00:00:00 2001 From: Chen Qian Date: Tue, 4 Mar 2025 14:18:04 -0800 Subject: [PATCH] Run test before publishing to pypi (#7904) * add testing * package name * use __version__ instead of importlib * name back --- .github/workflows/build_and_release.yml | 16 +++++++++++++--- dspy/utils/saving.py | 8 +++++--- tests/metadata/test_metadata.py | 11 +++++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 tests/metadata/test_metadata.py diff --git a/.github/workflows/build_and_release.yml b/.github/workflows/build_and_release.yml index d92428a631..e0b5c7a1ea 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 283e5dce6b..2e01be0149 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 0000000000..9e6f133d76 --- /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"