From 24a296e93ae120e7d778aa45f9687df318f8457d Mon Sep 17 00:00:00 2001 From: Manas Date: Thu, 2 Jul 2026 13:53:31 +0530 Subject: [PATCH 1/3] Prepare Ocelle SDK 1.0.0rc1 (#68) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a278b9b..324e050 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fortifyroot-ocelle" -version = "0.1.0" +version = "1.0.0rc1" description = "FortifyRoot Ocelle SDK for LLM observability" authors = ["FortifyRoot "] license = "Apache-2.0" From 1d4a4d1baa955109125bc595a4b3e2e78e0791cf Mon Sep 17 00:00:00 2001 From: Manas Date: Thu, 2 Jul 2026 15:37:58 +0530 Subject: [PATCH 2/3] Prepare Ocelle SDK 1.0.0rc2 (#69) --- .github/workflows/publish-release.yml | 103 ++++++++++++++++++++++++++ poetry.lock | 2 +- pyproject.toml | 3 +- 3 files changed, 106 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index 9e63eed..95229a7 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -26,6 +26,9 @@ jobs: timeout-minutes: 30 environment: name: ${{ inputs.pypi_repository == 'testpypi' && 'testpypi' || 'pypi' }} + outputs: + version: ${{ steps.tag.outputs.version }} + pypi_repository: ${{ steps.tag.outputs.pypi_repository }} steps: - name: Validate release tag and target repository id: tag @@ -66,6 +69,7 @@ jobs: echo "release_tag=$RELEASE_TAG" echo "tag_kind=$TAG_KIND" echo "version=$VERSION" + echo "pypi_repository=$PYPI_REPOSITORY" } >> "$GITHUB_OUTPUT" - name: Resolve release tag to commit SHA @@ -139,3 +143,102 @@ jobs: if: inputs.pypi_repository != 'testpypi' # pypa/gh-action-pypi-publish release/v1 resolved 2026-06-30. uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b + + verify-published-install: + name: Verify published install from ${{ needs.publish.outputs.pypi_repository }} + needs: publish + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Create clean verification venv + env: + VERSION: ${{ needs.publish.outputs.version }} + run: | + set -euo pipefail + if [[ -z "$VERSION" ]]; then + echo "::error::Missing published package version." + exit 1 + fi + venv="/tmp/ocelle-publish-verify-${VERSION}" + python -m venv "$venv" + # shellcheck disable=SC1091 + source "$venv/bin/activate" + python -m pip install --upgrade pip + + - name: Verify published TestPyPI install + if: needs.publish.outputs.pypi_repository == 'testpypi' + env: + VERSION: ${{ needs.publish.outputs.version }} + run: | + set -euo pipefail + venv="/tmp/ocelle-publish-verify-${VERSION}" + # shellcheck disable=SC1091 + source "$venv/bin/activate" + for attempt in {1..12}; do + echo "TestPyPI install verification attempt ${attempt}/12 for fortifyroot-ocelle==${VERSION}." + if python -m pip install --no-cache-dir \ + --index-url https://test.pypi.org/simple/ \ + --extra-index-url https://pypi.org/simple/ \ + "fortifyroot-ocelle==${VERSION}"; then + break + fi + + if [[ "$attempt" == "12" ]]; then + echo "::error::Published TestPyPI install verification failed after ${attempt} attempts." + exit 1 + fi + sleep 10 + done + + - name: Verify published PyPI install + if: needs.publish.outputs.pypi_repository == 'pypi' + env: + VERSION: ${{ needs.publish.outputs.version }} + run: | + set -euo pipefail + venv="/tmp/ocelle-publish-verify-${VERSION}" + # shellcheck disable=SC1091 + source "$venv/bin/activate" + for attempt in {1..12}; do + echo "PyPI install verification attempt ${attempt}/12 for fortifyroot-ocelle==${VERSION}." + if python -m pip install --no-cache-dir "fortifyroot-ocelle==${VERSION}"; then + break + fi + + if [[ "$attempt" == "12" ]]; then + echo "::error::Published PyPI install verification failed after ${attempt} attempts." + exit 1 + fi + sleep 10 + done + + - name: Verify published import and version + env: + VERSION: ${{ needs.publish.outputs.version }} + run: | + set -euo pipefail + venv="/tmp/ocelle-publish-verify-${VERSION}" + # shellcheck disable=SC1091 + source "$venv/bin/activate" + python - <<'PY' + import importlib.metadata + import os + + import fortifyroot.ocelle as ocelle + + expected = os.environ["VERSION"] + installed = importlib.metadata.version("fortifyroot-ocelle") + if installed != expected: + raise SystemExit( + f"installed package version {installed!r} != expected {expected!r}" + ) + if ocelle.__version__ != expected: + raise SystemExit( + f"fortifyroot.ocelle.__version__ {ocelle.__version__!r} != expected {expected!r}" + ) + print(ocelle) + PY diff --git a/poetry.lock b/poetry.lock index 10f03b5..3b5cdb3 100644 --- a/poetry.lock +++ b/poetry.lock @@ -6085,4 +6085,4 @@ openai = ["openai"] [metadata] lock-version = "2.1" python-versions = ">=3.10,<4" -content-hash = "74161c4c6d7d042714a4f5b7aea27aa93d5a16ee51444698b508a10d56149495" +content-hash = "8433e9cbfab04087033a22f04ada5f5945a176d243d564736e6128d814ac6198" diff --git a/pyproject.toml b/pyproject.toml index 324e050..fd28709 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fortifyroot-ocelle" -version = "1.0.0rc1" +version = "1.0.0rc2" description = "FortifyRoot Ocelle SDK for LLM observability" authors = ["FortifyRoot "] license = "Apache-2.0" @@ -86,6 +86,7 @@ pydantic = ">=1,<3" jinja2 = "^3.1.5" deprecated = "^1.2.14" aiohttp = "^3.11.11" +httpx = ">=0.27,<1" cuid = "^0.4" wrapt = "^1.14.0" # inflection is a hard import of the vendored LlamaIndex instrumentor — From b478ebaf9a6774bfb4cd1199cca098972ecde8f6 Mon Sep 17 00:00:00 2001 From: Manas Date: Thu, 2 Jul 2026 16:36:20 +0530 Subject: [PATCH 3/3] Prepare Ocelle SDK 1.0.0 (#70) --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fd28709..74c2fa0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "fortifyroot-ocelle" -version = "1.0.0rc2" +version = "1.0.0" description = "FortifyRoot Ocelle SDK for LLM observability" authors = ["FortifyRoot "] license = "Apache-2.0"