From 5e7c0235ada46c62aaab7ebd72b6184c34b89dc2 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 18:33:28 +0000 Subject: [PATCH 1/3] feat(api): api update (#4) --- .github/workflows/publish-pypi.yml | 31 +++++++++ .github/workflows/release-doctor.yml | 21 +++++++ .release-please-manifest.json | 3 + CONTRIBUTING.md | 4 +- README.md | 10 +-- bin/check-release-environment | 21 +++++++ pyproject.toml | 6 +- release-please-config.json | 66 ++++++++++++++++++++ src/omnistack/_version.py | 2 +- src/omnistack/resources/chats/chats.py | 8 +-- src/omnistack/resources/chats/completions.py | 8 +-- src/omnistack/resources/completions.py | 8 +-- 12 files changed, 165 insertions(+), 23 deletions(-) create mode 100644 .github/workflows/publish-pypi.yml create mode 100644 .github/workflows/release-doctor.yml create mode 100644 .release-please-manifest.json create mode 100644 bin/check-release-environment create mode 100644 release-please-config.json diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml new file mode 100644 index 0000000..b882da0 --- /dev/null +++ b/.github/workflows/publish-pypi.yml @@ -0,0 +1,31 @@ +# This workflow is triggered when a GitHub release is created. +# It can also be run manually to re-publish to PyPI in case it failed for some reason. +# You can run this workflow by navigating to https://www.github.com/OmniStack-sh/omnistack-python/actions/workflows/publish-pypi.yml +name: Publish PyPI +on: + workflow_dispatch: + + release: + types: [published] + +jobs: + publish: + name: publish + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Install Rye + run: | + curl -sSf https://rye.astral.sh/get | bash + echo "$HOME/.rye/shims" >> $GITHUB_PATH + env: + RYE_VERSION: '0.35.0' + RYE_INSTALL_OPTION: '--yes' + + - name: Publish to PyPI + run: | + bash ./bin/publish-pypi + env: + PYPI_TOKEN: ${{ secrets.OMNISTACK_PYPI_TOKEN || secrets.PYPI_TOKEN }} diff --git a/.github/workflows/release-doctor.yml b/.github/workflows/release-doctor.yml new file mode 100644 index 0000000..a0ec8c5 --- /dev/null +++ b/.github/workflows/release-doctor.yml @@ -0,0 +1,21 @@ +name: Release Doctor +on: + pull_request: + branches: + - main + workflow_dispatch: + +jobs: + release_doctor: + name: release doctor + runs-on: ubuntu-latest + if: github.repository == 'OmniStack-sh/omnistack-python' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.head_ref, 'release-please') || github.head_ref == 'next') + + steps: + - uses: actions/checkout@v4 + + - name: Check release environment + run: | + bash ./bin/check-release-environment + env: + PYPI_TOKEN: ${{ secrets.OMNISTACK_PYPI_TOKEN || secrets.PYPI_TOKEN }} diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..c476280 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "0.0.1-alpha.0" +} \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7629cdf..380b73c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -63,7 +63,7 @@ If you’d like to use the repository from source, you can either install from g To install via git: ```sh -$ pip install git+ssh://git@github.com/stainless-sdks/omnistack-python.git +$ pip install git+ssh://git@github.com/OmniStack-sh/omnistack-python.git ``` Alternatively, you can build from source and install the wheel file: @@ -121,7 +121,7 @@ the changes aren't made through the automated pipeline, you may want to make rel ### Publish with a GitHub workflow -You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/stainless-sdks/omnistack-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up. +You can release to package managers by using [the `Publish PyPI` GitHub action](https://www.github.com/OmniStack-sh/omnistack-python/actions/workflows/publish-pypi.yml). This requires a setup organization or repository secret to be set up. ### Publish manually diff --git a/README.md b/README.md index f5f6242..501e4e5 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,8 @@ The REST API documentation can be found on [help.omnistack.sh](https://help.omni ## Installation ```sh -# install from this staging repo -pip install git+ssh://git@github.com/stainless-sdks/omnistack-python.git +# install from the production repo +pip install git+ssh://git@github.com/OmniStack-sh/omnistack-python.git ``` > [!NOTE] @@ -224,9 +224,9 @@ completion = response.parse() # get the object that `completions.create()` woul print(completion.id) ``` -These methods return an [`APIResponse`](https://github.com/stainless-sdks/omnistack-python/tree/main/src/omnistack/_response.py) object. +These methods return an [`APIResponse`](https://github.com/OmniStack-sh/omnistack-python/tree/main/src/omnistack/_response.py) object. -The async client returns an [`AsyncAPIResponse`](https://github.com/stainless-sdks/omnistack-python/tree/main/src/omnistack/_response.py) with the same structure, the only difference being `await`able methods for reading the response content. +The async client returns an [`AsyncAPIResponse`](https://github.com/OmniStack-sh/omnistack-python/tree/main/src/omnistack/_response.py) with the same structure, the only difference being `await`able methods for reading the response content. #### `.with_streaming_response` @@ -323,7 +323,7 @@ This package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) con We take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience. -We are keen for your feedback; please open an [issue](https://www.github.com/stainless-sdks/omnistack-python/issues) with questions, bugs, or suggestions. +We are keen for your feedback; please open an [issue](https://www.github.com/OmniStack-sh/omnistack-python/issues) with questions, bugs, or suggestions. ### Determining the installed version diff --git a/bin/check-release-environment b/bin/check-release-environment new file mode 100644 index 0000000..e3136a8 --- /dev/null +++ b/bin/check-release-environment @@ -0,0 +1,21 @@ +#!/usr/bin/env bash + +errors=() + +if [ -z "${PYPI_TOKEN}" ]; then + errors+=("The OMNISTACK_PYPI_TOKEN secret has not been set. Please set it in either this repository's secrets or your organization secrets.") +fi + +lenErrors=${#errors[@]} + +if [[ lenErrors -gt 0 ]]; then + echo -e "Found the following errors in the release environment:\n" + + for error in "${errors[@]}"; do + echo -e "- $error\n" + done + + exit 1 +fi + +echo "The environment is ready to push releases!" diff --git a/pyproject.toml b/pyproject.toml index 98aa0d5..c19650d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,8 +36,8 @@ classifiers = [ ] [project.urls] -Homepage = "https://github.com/stainless-sdks/omnistack-python" -Repository = "https://github.com/stainless-sdks/omnistack-python" +Homepage = "https://github.com/OmniStack-sh/omnistack-python" +Repository = "https://github.com/OmniStack-sh/omnistack-python" @@ -123,7 +123,7 @@ path = "README.md" [[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]] # replace relative links with absolute links pattern = '\[(.+?)\]\(((?!https?://)\S+?)\)' -replacement = '[\1](https://github.com/stainless-sdks/omnistack-python/tree/main/\g<2>)' +replacement = '[\1](https://github.com/OmniStack-sh/omnistack-python/tree/main/\g<2>)' [tool.black] line-length = 120 diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..1fe4384 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,66 @@ +{ + "packages": { + ".": {} + }, + "$schema": "https://raw.githubusercontent.com/stainless-api/release-please/main/schemas/config.json", + "include-v-in-tag": true, + "include-component-in-tag": false, + "versioning": "prerelease", + "prerelease": true, + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": false, + "pull-request-header": "Automated Release PR", + "pull-request-title-pattern": "release: ${version}", + "changelog-sections": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "perf", + "section": "Performance Improvements" + }, + { + "type": "revert", + "section": "Reverts" + }, + { + "type": "chore", + "section": "Chores" + }, + { + "type": "docs", + "section": "Documentation" + }, + { + "type": "style", + "section": "Styles" + }, + { + "type": "refactor", + "section": "Refactors" + }, + { + "type": "test", + "section": "Tests", + "hidden": true + }, + { + "type": "build", + "section": "Build System" + }, + { + "type": "ci", + "section": "Continuous Integration", + "hidden": true + } + ], + "release-type": "python", + "extra-files": [ + "src/omnistack/_version.py" + ] +} \ No newline at end of file diff --git a/src/omnistack/_version.py b/src/omnistack/_version.py index ca6d3a1..c178860 100644 --- a/src/omnistack/_version.py +++ b/src/omnistack/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "omnistack" -__version__ = "0.0.1-alpha.0" +__version__ = "0.0.1-alpha.0" # x-release-please-version diff --git a/src/omnistack/resources/chats/chats.py b/src/omnistack/resources/chats/chats.py index b45f68f..9d6a5c2 100644 --- a/src/omnistack/resources/chats/chats.py +++ b/src/omnistack/resources/chats/chats.py @@ -27,7 +27,7 @@ def with_raw_response(self) -> ChatsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#accessing-raw-response-data-eg-headers """ return ChatsResourceWithRawResponse(self) @@ -36,7 +36,7 @@ def with_streaming_response(self) -> ChatsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#with_streaming_response + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#with_streaming_response """ return ChatsResourceWithStreamingResponse(self) @@ -52,7 +52,7 @@ def with_raw_response(self) -> AsyncChatsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#accessing-raw-response-data-eg-headers """ return AsyncChatsResourceWithRawResponse(self) @@ -61,7 +61,7 @@ def with_streaming_response(self) -> AsyncChatsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#with_streaming_response + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#with_streaming_response """ return AsyncChatsResourceWithStreamingResponse(self) diff --git a/src/omnistack/resources/chats/completions.py b/src/omnistack/resources/chats/completions.py index 380e12c..f4110b3 100644 --- a/src/omnistack/resources/chats/completions.py +++ b/src/omnistack/resources/chats/completions.py @@ -34,7 +34,7 @@ def with_raw_response(self) -> CompletionsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#accessing-raw-response-data-eg-headers """ return CompletionsResourceWithRawResponse(self) @@ -43,7 +43,7 @@ def with_streaming_response(self) -> CompletionsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#with_streaming_response + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#with_streaming_response """ return CompletionsResourceWithStreamingResponse(self) @@ -321,7 +321,7 @@ def with_raw_response(self) -> AsyncCompletionsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#accessing-raw-response-data-eg-headers """ return AsyncCompletionsResourceWithRawResponse(self) @@ -330,7 +330,7 @@ def with_streaming_response(self) -> AsyncCompletionsResourceWithStreamingRespon """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#with_streaming_response + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#with_streaming_response """ return AsyncCompletionsResourceWithStreamingResponse(self) diff --git a/src/omnistack/resources/completions.py b/src/omnistack/resources/completions.py index 0695a77..888155f 100644 --- a/src/omnistack/resources/completions.py +++ b/src/omnistack/resources/completions.py @@ -34,7 +34,7 @@ def with_raw_response(self) -> CompletionsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#accessing-raw-response-data-eg-headers """ return CompletionsResourceWithRawResponse(self) @@ -43,7 +43,7 @@ def with_streaming_response(self) -> CompletionsResourceWithStreamingResponse: """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#with_streaming_response + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#with_streaming_response """ return CompletionsResourceWithStreamingResponse(self) @@ -234,7 +234,7 @@ def with_raw_response(self) -> AsyncCompletionsResourceWithRawResponse: This property can be used as a prefix for any HTTP method call to return the the raw response object instead of the parsed content. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#accessing-raw-response-data-eg-headers + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#accessing-raw-response-data-eg-headers """ return AsyncCompletionsResourceWithRawResponse(self) @@ -243,7 +243,7 @@ def with_streaming_response(self) -> AsyncCompletionsResourceWithStreamingRespon """ An alternative to `.with_raw_response` that doesn't eagerly read the response body. - For more information, see https://www.github.com/stainless-sdks/omnistack-python#with_streaming_response + For more information, see https://www.github.com/OmniStack-sh/omnistack-python#with_streaming_response """ return AsyncCompletionsResourceWithStreamingResponse(self) From 7ccbcd82e2b8ef20e21b00632f1d6d2285ce07d4 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 18:33:54 +0000 Subject: [PATCH 2/3] feat(api): api update (#6) --- README.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 501e4e5..3eea81a 100644 --- a/README.md +++ b/README.md @@ -15,13 +15,10 @@ The REST API documentation can be found on [help.omnistack.sh](https://help.omni ## Installation ```sh -# install from the production repo -pip install git+ssh://git@github.com/OmniStack-sh/omnistack-python.git +# install from PyPI +pip install --pre omnistack ``` -> [!NOTE] -> Once this package is [published to PyPI](https://app.stainlessapi.com/docs/guides/publish), this will become: `pip install --pre omnistack` - ## Usage The full API of this library can be found in [api.md](api.md). From 185269c7600892b21cc3f75d517931ea0afbab04 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 18:34:05 +0000 Subject: [PATCH 3/3] release: 0.1.0-alpha.1 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 14 ++++++++++++++ pyproject.toml | 2 +- src/omnistack/_version.py | 2 +- 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 CHANGELOG.md diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c476280..ba6c348 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.0.1-alpha.0" + ".": "0.1.0-alpha.1" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..0738c5e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +## 0.1.0-alpha.1 (2024-10-17) + +Full Changelog: [v0.0.1-alpha.0...v0.1.0-alpha.1](https://github.com/OmniStack-sh/omnistack-python/compare/v0.0.1-alpha.0...v0.1.0-alpha.1) + +### Features + +* **api:** api update ([545bf39](https://github.com/OmniStack-sh/omnistack-python/commit/545bf39e870e41cd9c4ec86ccf352cb2bef51fe9)) +* **api:** api update ([2836cca](https://github.com/OmniStack-sh/omnistack-python/commit/2836cca7259167b83822071d5a2a5b006e843ee5)) +* **api:** api update ([2450aec](https://github.com/OmniStack-sh/omnistack-python/commit/2450aecdf56d0aebfdd137131bf9d140550c6ae6)) +* **api:** api update ([0dec917](https://github.com/OmniStack-sh/omnistack-python/commit/0dec917406f10897a4fda28282b302cee186698b)) +* **api:** api update ([#4](https://github.com/OmniStack-sh/omnistack-python/issues/4)) ([5e7c023](https://github.com/OmniStack-sh/omnistack-python/commit/5e7c0235ada46c62aaab7ebd72b6184c34b89dc2)) +* **api:** api update ([#6](https://github.com/OmniStack-sh/omnistack-python/issues/6)) ([7ccbcd8](https://github.com/OmniStack-sh/omnistack-python/commit/7ccbcd82e2b8ef20e21b00632f1d6d2285ce07d4)) diff --git a/pyproject.toml b/pyproject.toml index c19650d..2befd14 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "omnistack" -version = "0.0.1-alpha.0" +version = "0.1.0-alpha.1" description = "The official Python library for the omnistack API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/omnistack/_version.py b/src/omnistack/_version.py index c178860..c077bff 100644 --- a/src/omnistack/_version.py +++ b/src/omnistack/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "omnistack" -__version__ = "0.0.1-alpha.0" # x-release-please-version +__version__ = "0.1.0-alpha.1" # x-release-please-version