diff --git a/.fernignore b/.fernignore index 5b3cc70..9c949d7 100644 --- a/.fernignore +++ b/.fernignore @@ -1,5 +1,19 @@ # Specify files that shouldn't be modified by Fern + +# Legacy CI workflow replaced by release-please.yml — keep listed so Fern +# does not regenerate the file after deletion. .github/workflows/ci.yml +# Release-please owns versioning, releases, and PyPI publish. +.github/workflows/release-please.yml +release-please-config.json +.release-please-manifest.json +CHANGELOG.md + +# release-please bumps the X-Fern-SDK-Version literal in this file via an +# inline `x-release-please-version` marker comment. Fern regen would strip the +# marker, so the file is owned outside of Fern. +src/speechify/core/client_wrapper.py + # ignore context7 config file context7.json diff --git a/.github/workflows/ci.yml b/.github/workflows/release-please.yml similarity index 50% rename from .github/workflows/ci.yml rename to .github/workflows/release-please.yml index 7d41c65..19d852a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/release-please.yml @@ -1,16 +1,24 @@ -name: ci +name: release-please + +on: + push: + branches: [master] + pull_request: + branches: [master] + +permissions: + contents: read -on: [push] jobs: compile: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: "3.8" - name: Bootstrap poetry run: | curl -sSL https://install.python-poetry.org | python - -y --version 1.5.1 @@ -18,41 +26,60 @@ jobs: run: poetry install - name: Compile run: poetry run mypy . + test: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: "3.8" - name: Bootstrap poetry run: | curl -sSL https://install.python-poetry.org | python - -y --version 1.5.1 - name: Install dependencies run: poetry install - - name: Test run: poetry run pytest -rP . - publish: + release-please: needs: [compile, test] - if: github.event_name == 'push' && contains(github.ref, 'refs/tags/') + if: github.event_name == 'push' && github.ref == 'refs/heads/master' + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + outputs: + release_created: ${{ steps.release.outputs.release_created }} + tag_name: ${{ steps.release.outputs.tag_name }} + steps: + - name: Run release-please + id: release + uses: googleapis/release-please-action@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + config-file: release-please-config.json + manifest-file: .release-please-manifest.json + + publish: + needs: release-please + if: needs.release-please.outputs.release_created == 'true' runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: "3.8" - name: Bootstrap poetry run: | curl -sSL https://install.python-poetry.org | python - -y --version 1.5.1 - name: Install dependencies run: poetry install - - name: Publish to pypi + - name: Publish to PyPI run: | poetry config pypi-token.pypi ${{ secrets.PYPI_TOKEN }} poetry publish --build diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..b7298f8 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.2.3" +} diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..3d10873 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json", + "release-type": "python", + "include-v-in-tag": false, + "include-component-in-tag": false, + "packages": { + ".": { + "package-name": "speechify-api", + "extra-files": [ + { + "type": "generic", + "path": "src/speechify/core/client_wrapper.py" + } + ] + } + } +} diff --git a/src/speechify/core/client_wrapper.py b/src/speechify/core/client_wrapper.py index 71accb2..1c0ca85 100644 --- a/src/speechify/core/client_wrapper.py +++ b/src/speechify/core/client_wrapper.py @@ -22,7 +22,7 @@ def get_headers(self) -> typing.Dict[str, str]: headers: typing.Dict[str, str] = { "X-Fern-Language": "Python", "X-Fern-SDK-Name": "speechify-api", - "X-Fern-SDK-Version": "1.2.3", + "X-Fern-SDK-Version": "1.2.3", # x-release-please-version } token = self._get_token() if token is not None: