From d8b58f5dd7c03fa9f70783db8bdbe0d714fb60b5 Mon Sep 17 00:00:00 2001 From: hmoazam Date: Fri, 4 Oct 2024 19:12:35 +0300 Subject: [PATCH] New release flow with dspy-ai as a wrapper depending on dspy and dspy the main pypi package --- .github/workflows/build_and_release.yml | 35 +++++++++++++------------ dspy/.internal_dspyai/setup.py | 23 ++++++++++++++++ setup.py | 2 +- 3 files changed, 42 insertions(+), 18 deletions(-) create mode 100644 dspy/.internal_dspyai/setup.py diff --git a/.github/workflows/build_and_release.yml b/.github/workflows/build_and_release.yml index 7900d79df..da234b787 100644 --- a/.github/workflows/build_and_release.yml +++ b/.github/workflows/build_and_release.yml @@ -11,7 +11,7 @@ jobs: outputs: version: ${{ steps.extract_tag.outputs.tag }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 - id: extract_tag name: Extract tag name run: echo "::set-output name=tag::$(echo $GITHUB_REF | cut -d / -f 3)" @@ -24,7 +24,7 @@ jobs: permissions: id-token: write # IMPORTANT: mandatory for trusted publishing steps: - - uses: actions/checkout@master + - uses: actions/checkout@v4 - name: Set up Python 3.9 uses: actions/setup-python@v3 with: @@ -54,7 +54,6 @@ jobs: uses: pypa/gh-action-pypi-publish@release/v1 # This requires a trusted publisher to be setup in pypi/testpypi with: repository-url: https://test.pypi.org/legacy/ - verbose: true build-and-publish-pypi: needs: [extract-tag, build-and-publish-test-pypi] @@ -64,34 +63,36 @@ jobs: permissions: id-token: write # IMPORTANT: mandatory for trusted publishing steps: - - uses: actions/checkout@master + - uses: actions/checkout@v4 - name: Set up Python 3.9 uses: actions/setup-python@v3 with: python-version: "3.9" - name: Install dependencies run: python3 -m pip install setuptools wheel twine - - name: Update version in setup.py + - name: Update version in setup.py (dspy) run: sed -i '/#replace_package_version_marker/{n;s/version="[^"]*"/version="${{ needs.extract-tag.outputs.version }}"/;}' setup.py - name: Update version in pyproject.toml run: sed -i '/#replace_package_version_marker/{n;s/version="[^"]*"/version="${{ needs.extract-tag.outputs.version }}"/;}' pyproject.toml - # Publish to dspy-ai - - name: Update package name in setup.py - run: sed -i '/#replace_package_name_marker/{n;s/name="[^"]*"/name="dspy-ai"/;}' setup.py - - name: Update package name in pyproject.toml - run: sed -i '/#replace_package_name_marker/{n;s/name="[^"]*"/name="dspy-ai"/;}' pyproject.toml - - name: Build a binary wheel - run: python3 setup.py sdist bdist_wheel - - name: Publish distribution 📦 to PyPI (dspy-ai) - uses: pypa/gh-action-pypi-publish@release/v1 # This requires a trusted publisher to be setup in pypi # Publish to dspy - name: Update package name in setup.py - run: sed -i '/#replace_package_name_marker/{n;s/name="[^"]*"/name="dspy"/;}' setup.py + run: | + sed -i '/#replace_package_name_marker/{n;s/name="[^"]*"/name="dspy"/;}' setup.py - name: Update package name in pyproject.toml run: sed -i '/#replace_package_name_marker/{n;s/name="[^"]*"/name="dspy"/;}' pyproject.toml - name: Build a binary wheel run: python3 setup.py sdist bdist_wheel - name: Publish distribution 📦 to PyPI (dspy) uses: pypa/gh-action-pypi-publish@release/v1 # This requires a trusted publisher to be setup in pypi - - + # Publish to dspy-ai + - name: Update version in setup.py (dspy-ai) + run: sed -i '/#replace_package_version_marker/{n;s/version="[^"]*"/version="${{ needs.extract-tag.outputs.version }}"/;}' ./dspy/.internal_dspyai/setup.py + - name: Update package name in setup.py + run: sed -i '/#replace_package_name_marker/{n;s/name="[^"]*"/name="dspy-ai"/;}' ./dspy/.internal_dspyai/setup.py + - name: Update dspy dependency version in setup.py + run: | + sed -i '/#replace_dspy_version_marker/{n;s/dspy==[^"]*/dspy==${{ needs.extract-tag.outputs.version }}/;}' ./dspy/.internal_dspyai/setup.py + - name: Build a binary wheel + run: python3 ./dspy/.internal_dspyai/setup.py sdist bdist_wheel + - name: Publish distribution 📦 to PyPI (dspy-ai) + uses: pypa/gh-action-pypi-publish@release/v1 # This requires a trusted publisher to be setup in pypi \ No newline at end of file diff --git a/dspy/.internal_dspyai/setup.py b/dspy/.internal_dspyai/setup.py new file mode 100644 index 000000000..dbf5cc9de --- /dev/null +++ b/dspy/.internal_dspyai/setup.py @@ -0,0 +1,23 @@ +from setuptools import find_packages, setup + +# Read the content of the README file +with open("README.md", encoding="utf-8") as f: + long_description = f.read() + +setup( + #replace_package_name_marker + name="dspy-ai", + #replace_package_version_marker + version="2.5.3", + description="DSPy", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/stanfordnlp/dsp", + author="Omar Khattab", + author_email="okhattab@stanford.edu", + license="MIT License", + packages=find_packages(include=["dsp.*", "dspy.*", "dsp", "dspy"]), + python_requires=">=3.9", + #replace_dspy_version_marker + install_requires=["dspy==2.5.3"] +) diff --git a/setup.py b/setup.py index d3c26108f..e354af678 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ setup( #replace_package_name_marker - name="dspy-ai", + name="dspy", #replace_package_version_marker version="2.5.3", description="DSPy",