Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
eb22f80
feat(client-py): Add a (empty) package for the Python client
lcian Oct 28, 2025
d37032c
use workspace, use internal PyPI for whole workspace, uv sync
lcian Oct 28, 2025
86c75cb
specify build system, install client as editable
lcian Oct 28, 2025
8f932f2
uv sync --all-packages in envrc for unified venv
lcian Oct 28, 2025
987c9c6
rebased
lcian Oct 28, 2025
1e9388c
lockfile
lcian Oct 28, 2025
ac5bc03
adjst commands
lcian Oct 28, 2025
a29e932
add pre-commit
lcian Oct 28, 2025
58d5309
disclaimer on pre-commit
lcian Oct 28, 2025
daca135
readme
lcian Oct 28, 2025
ca248cb
build_system
lcian Oct 29, 2025
1c93543
os matrix
lcian Oct 29, 2025
33ff8b4
os matrix
lcian Oct 29, 2025
1f5d760
improve
lcian Oct 29, 2025
790e69a
improve
lcian Oct 29, 2025
e209b31
only tests in matrix
lcian Oct 29, 2025
ad1a998
exclude mypy on windows
lcian Oct 29, 2025
25c4df6
exclude precommit on windows
lcian Oct 29, 2025
5296238
make internal pypi not exclusive - packages are missing on win
lcian Oct 29, 2025
41c5edf
ci only on win and macos
lcian Oct 29, 2025
5c2305e
default = true
lcian Oct 29, 2025
7a6d503
lower py version, regenerate uv.lock
lcian Oct 29, 2025
e0c1a52
lower .python-version as well for CI
lcian Oct 29, 2025
1ac9c9c
just require 3.11
lcian Oct 29, 2025
5c0e09f
lower req to 3.11.9 due to GH runners availability
lcian Oct 29, 2025
b7ebd66
regerate lockfile with 3.11
lcian Oct 29, 2025
08fd439
feat(py-client): Add Python client implementation
lcian Oct 28, 2025
984888c
improve
lcian Oct 29, 2025
d24bf59
improve
lcian Oct 29, 2025
f62f754
regerate lockfile for 3.11
lcian Oct 29, 2025
53d7f41
vendor in itertools.batched
lcian Oct 29, 2025
ce3dcb6
improve
lcian Oct 29, 2025
db5229d
move flake8 config to pyproject.toml
lcian Oct 29, 2025
5cffe3f
improve
lcian Oct 29, 2025
8ab5467
readd back setup.cfg
lcian Oct 29, 2025
75c6065
use public PyPI for now
lcian Oct 29, 2025
06d8d11
Merge branch 'main' into lcian/feat/python-client-devsetup
lcian Oct 29, 2025
074da70
back to python 3.13
lcian Oct 29, 2025
e1b78e9
use ruff; less pre-commit hooks; less overriding things
lcian Oct 29, 2025
0bbe63b
use uv run for CI
lcian Oct 29, 2025
b592a34
test only on ubuntu-latest
lcian Oct 29, 2025
10d6c92
specify workflow permissions; remove concurrency
lcian Oct 29, 2025
114e0d4
format py file in devenv dir
lcian Oct 29, 2025
96c25d5
move pytest to top level; run uv sync in CI
lcian Oct 29, 2025
664e211
try removing uv run prefix from CI commands
lcian Oct 29, 2025
76c8943
delete gitignore
lcian Oct 29, 2025
395963c
ignore just dist
lcian Oct 29, 2025
0bb4a6f
unify CI
lcian Oct 29, 2025
2e19ec3
fix workflow file
lcian Oct 29, 2025
088fd48
improve
lcian Oct 29, 2025
7d1d979
improve
lcian Oct 29, 2025
6f6a046
improve
lcian Oct 29, 2025
5389be3
change mypy rules slightly
lcian Oct 29, 2025
10fb7cd
pin minor python version
lcian Oct 29, 2025
28f41b4
simplify build requirement
lcian Oct 29, 2025
93ada0e
improve
lcian Oct 29, 2025
1f49192
Merge branch 'lcian/feat/python-client-devsetup' into lcian/feat/pyth…
lcian Oct 29, 2025
1687ac2
remove metrics.timing in favor of distribution
lcian Oct 29, 2025
e861c49
Update .pre-commit-config.yaml
lcian Oct 29, 2025
de40c3e
Merge branch 'lcian/feat/python-client-devsetup' into lcian/feat/pyth…
lcian Oct 29, 2025
e9b2306
remove vendored itertools thingy; satisfy linter
lcian Oct 29, 2025
3fd52f2
Merge branch 'main' into lcian/feat/python-client-initial-code
lcian Oct 29, 2025
bb300b6
remove setup.cfg
lcian Oct 30, 2025
2ea00c5
ref(client): Move clients to a clients subdirectory
lcian Oct 30, 2025
d2d92b6
adjust workflow
lcian Oct 30, 2025
4d445b2
meta(client): Release setup
lcian Oct 30, 2025
357ee69
improve metadata
lcian Oct 30, 2025
cbcde00
improve
lcian Oct 30, 2025
30e5a6c
improve
lcian Oct 30, 2025
38fb9e5
Merge branch 'main' into lcian/feat/move-clients
lcian Oct 30, 2025
441af88
Merge branch 'lcian/feat/move-clients' into lcian/feat/client-release…
lcian Oct 30, 2025
d0a481d
improve
lcian Oct 30, 2025
4a45446
improve
lcian Oct 30, 2025
2408aba
symlink?
lcian Oct 30, 2025
ba6750b
improve
lcian Oct 30, 2025
48cf72c
improve
lcian Oct 30, 2025
7bd3cd9
Merge branch 'main' into lcian/feat/client-release-setup-clean
jan-auer Oct 30, 2025
bc22e83
partially address comments
lcian Oct 31, 2025
1a7eeea
put client build in separate workflow
lcian Oct 31, 2025
74978f0
temporary changes to test release
lcian Oct 31, 2025
13cb559
labeled
lcian Oct 31, 2025
876ef67
fix prerelease commands
lcian Oct 31, 2025
c918beb
fix workflow
lcian Oct 31, 2025
eee2039
temporary change
lcian Oct 31, 2025
2c365f6
undo temporary changes
lcian Oct 31, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/workflows/build-clients.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Build Python client

on:
push:
branches:
- release/**

permissions:
contents: read

jobs:
build:
name: Build and upload artifacts
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2

- name: Build artifacts
run: uv build --package objectstore-client

- uses: actions/upload-artifact@v5
with:
path: dist/*
if-no-files-found: 'error'
44 changes: 44 additions & 0 deletions .github/workflows/release-clients.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Release client libraries

on:
workflow_dispatch:
inputs:
version:
description: Version to release
required: true
force:
description: Force a release even when there are release-blockers (optional)
required: false
merge_target:
description: Target branch to merge into. Uses the default branch as a fallback (optional)
required: false

permissions:
contents: read

jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
id: token
with:
app-id: ${{ vars.SENTRY_RELEASE_BOT_CLIENT_ID }}
private-key: ${{ secrets.SENTRY_RELEASE_BOT_PRIVATE_KEY }}

- uses: actions/checkout@v5
with:
token: ${{ steps.token.outputs.token }}
fetch-depth: 0

- uses: astral-sh/setup-uv@85856786d1ce8acfbcc2f13a5f3fbd6b938f9f41 # v7.1.2

- name: Prepare release
uses: getsentry/action-prepare-release@v1
env:
GITHUB_TOKEN: ${{ steps.token.outputs.token }}
with:
version: ${{ github.event.inputs.version }}
force: ${{ github.event.inputs.force }}
merge_target: ${{ github.event.inputs.merge_target }}
path: clients
13 changes: 13 additions & 0 deletions clients/.craft.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
changelogPolicy: auto
preReleaseCommand: ../scripts/bump-version-clients.sh

targets:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's please double-check if we also need to upload tosentry-sdk-assets.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no idea what that does.
An org-wide search for this bucket name is not very helpful: https://github.com/search?q=org%3Agetsentry%20sentry-sdk-assets&type=code
Any pointers?

- name: github
- name: crates
- name: pypi
- name: sentry-pypi
internalPypiRepo: getsentry/pypi

requireNames:
- /.*objectstore_client.*whl$/
- /.*objectstore_client.*tar\.gz$/
3 changes: 3 additions & 0 deletions clients/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Unreleased

This is the first release of the Objectstore client SDKs.
1 change: 1 addition & 0 deletions clients/python/LICENSE.md
8 changes: 7 additions & 1 deletion clients/python/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
[project]
name = "objectstore-client"
version = "0.1.0"
description = "Python client for the Sentry Objectstore service"
description = "Client SDK for Objectstore, the Sentry object storage platform"
readme = "README.md"
authors = [
{name = "Sentry", email = "[email protected]"},
]
homepage = "https://getsentry.github.io/objectstore/"
repository = "https://github.com/getsentry/objectstore"
license = { file = "LICENSE.md" }
requires-python = ">=3.13.1"
dependencies = [
"sentry-sdk>=2.42.1",
Expand Down
2 changes: 1 addition & 1 deletion clients/rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ authors = ["Sentry <[email protected]>"]
description = "Client SDK for Objectstore, the Sentry object storage platform"
homepage = "https://getsentry.github.io/objectstore/"
repository = "https://github.com/getsentry/objectstore"
license-file = "../LICENSE.md"
license-file = "../../LICENSE.md"
version = "0.1.0"
edition = "2024"
rust-version = "1.89"
Expand Down
25 changes: 25 additions & 0 deletions scripts/bump-version-clients.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/bash
set -euxo pipefail

ROOT_DIR="$(realpath $(dirname "$0")/..)"

OLD_VERSION="${1}"
NEW_VERSION="${2}"

echo "Current version: $OLD_VERSION"
echo "Bumping to version: $NEW_VERSION"

# =================== Rust ===================

cd $ROOT_DIR
cd clients/rust

perl -pi -e "s/^version = \".*?\"/version = \"$NEW_VERSION\"/" Cargo.toml
cargo metadata --format-version 1 >/dev/null # update `Cargo.lock`

# ==================== PY ====================

cd $ROOT_DIR
cd clients/python

uv version "$NEW_VERSION"