Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "3.0.0-beta.6"
".": "3.0.0"
}
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
# Changelog

## 3.0.0 (2025-09-18)

Full Changelog: [v3.0.0-beta.6...v3.0.0](https://github.com/digitalocean/gradient-python/compare/v3.0.0-beta.6...v3.0.0)

### Chores

* remove deprecated env vars ([#50](https://github.com/digitalocean/gradient-python/issues/50)) ([32292f5](https://github.com/digitalocean/gradient-python/commit/32292f5d7cab21cfaa68577a6f838d134842e3fc))
* remove old folders ([60545d7](https://github.com/digitalocean/gradient-python/commit/60545d7857d8c78c23fba888cc5eae29330eb521))
* update author ([695cc57](https://github.com/digitalocean/gradient-python/commit/695cc572e7f506617b1a37ed600f4e485dbe26c0))


### Refactors

* **api:** consistently rename user_agent parameter to user_agent_package in Gradient and AsyncGradient classes for clarity ([af7420c](https://github.com/digitalocean/gradient-python/commit/af7420c654bd30af4e30a939e31960ba6414adb7))
* **api:** rename user_agent parameter to user_agent_package in BaseClient, SyncAPIClient, and AsyncAPIClient for better clarity ([dba36f7](https://github.com/digitalocean/gradient-python/commit/dba36f7bae0b3d28a0013f5d23c482b7be5e238a))

## 3.0.0-beta.6 (2025-09-17)

Full Changelog: [v3.0.0-beta.5...v3.0.0-beta.6](https://github.com/digitalocean/gradient-python/compare/v3.0.0-beta.5...v3.0.0-beta.6)
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The full API of this library can be found in [api.md](api.md).

```sh
# install from PyPI
pip install --pre gradient
pip install gradient
```

## Usage
Expand Down Expand Up @@ -141,7 +141,7 @@ You can enable this by installing `aiohttp`:

```sh
# install from PyPI
pip install --pre gradient[aiohttp]
pip install gradient[aiohttp]
```

Then you can enable it by instantiating the client with `http_client=DefaultAioHttpClient()`:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "gradient"
version = "3.0.0-beta.6"
version = "3.0.0"
description = "The official Python library for the Gradient API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
4 changes: 0 additions & 4 deletions src/do_gradientai/lib/.keep

This file was deleted.

72 changes: 12 additions & 60 deletions src/gradient/_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,9 +80,6 @@ class Gradient(SyncAPIClient):
def __init__(
self,
*,
api_key: str | None = None, # deprecated, use `access_token` instead
inference_key: str | None = None, # deprecated, use `model_access_key` instead
agent_key: str | None = None, # deprecated, use `agent_access_key` instead
access_token: str | None = None,
model_access_key: str | None = None,
agent_access_key: str | None = None,
Expand Down Expand Up @@ -120,33 +117,15 @@ def __init__(
- `inference_endpoint` from `GRADIENT_INFERENCE_ENDPOINT`
"""
if access_token is None:
if api_key is not None:
access_token = api_key
else:
access_token = os.environ.get("DIGITALOCEAN_ACCESS_TOKEN")
# support for legacy environment variable
if access_token is None:
access_token = os.environ.get("GRADIENT_API_KEY")
access_token = os.environ.get("DIGITALOCEAN_ACCESS_TOKEN")
self.access_token = access_token

if model_access_key is None:
if inference_key is not None:
model_access_key = inference_key
else:
model_access_key = os.environ.get("GRADIENT_INFERENCE_KEY")
# support for legacy environment variable
if model_access_key is None:
model_access_key = os.environ.get("GRADIENT_MODEL_ACCESS_KEY")
model_access_key = os.environ.get("GRADIENT_MODEL_ACCESS_KEY")
self.model_access_key = model_access_key

if agent_access_key is None:
if agent_key is not None:
agent_access_key = agent_key
else:
agent_access_key = os.environ.get("GRADIENT_AGENT_ACCESS_KEY")
# support for legacy environment variable
if agent_access_key is None:
agent_access_key = os.environ.get("GRADIENT_AGENT_KEY")
agent_access_key = os.environ.get("GRADIENT_AGENT_ACCESS_KEY")
self.agent_access_key = agent_access_key

if agent_endpoint is None:
Expand Down Expand Up @@ -283,9 +262,6 @@ def _validate_headers(self, headers: Headers, custom_headers: Headers) -> None:
def copy(
self,
*,
api_key: str | None = None, # deprecated, use `access_token` instead
inference_key: str | None = None, # deprecated, use `model_access_key` instead
agent_key: str | None = None, # deprecated, use `agent_access_key` instead
access_token: str | None = None,
model_access_key: str | None = None,
agent_access_key: str | None = None,
Expand Down Expand Up @@ -326,9 +302,9 @@ def copy(

http_client = http_client or self._client
client = self.__class__(
access_token=access_token or api_key or self.access_token,
model_access_key=model_access_key or inference_key or self.model_access_key,
agent_access_key=agent_access_key or agent_key or self.agent_access_key,
access_token=access_token or self.access_token,
model_access_key=model_access_key or self.model_access_key,
agent_access_key=agent_access_key or self.agent_access_key,
agent_endpoint=agent_endpoint or self._agent_endpoint,
inference_endpoint=inference_endpoint or self.inference_endpoint,
base_url=base_url or self.base_url,
Expand Down Expand Up @@ -393,9 +369,6 @@ class AsyncGradient(AsyncAPIClient):
def __init__(
self,
*,
api_key: str | None = None, # deprecated, use `access_token` instead
inference_key: str | None = None, # deprecated, use `model_access_key` instead
agent_key: str | None = None, # deprecated, use `agent_access_key` instead
access_token: str | None = None,
model_access_key: str | None = None,
agent_access_key: str | None = None,
Expand Down Expand Up @@ -433,33 +406,15 @@ def __init__(
- `inference_endpoint` from `GRADIENT_INFERENCE_ENDPOINT`
"""
if access_token is None:
if api_key is not None:
access_token = api_key
else:
access_token = os.environ.get("DIGITALOCEAN_ACCESS_TOKEN")
# support for legacy environment variable
if access_token is None:
access_token = os.environ.get("GRADIENT_API_KEY")
access_token = os.environ.get("DIGITALOCEAN_ACCESS_TOKEN")
self.access_token = access_token

if model_access_key is None:
if inference_key is not None:
model_access_key = inference_key
else:
model_access_key = os.environ.get("GRADIENT_INFERENCE_KEY")
# support for legacy environment variable
if model_access_key is None:
model_access_key = os.environ.get("GRADIENT_MODEL_ACCESS_KEY")
model_access_key = os.environ.get("GRADIENT_MODEL_ACCESS_KEY")
self.model_access_key = model_access_key

if agent_access_key is None:
if agent_key is not None:
agent_access_key = agent_key
else:
agent_access_key = os.environ.get("GRADIENT_AGENT_ACCESS_KEY")
# support for legacy environment variable
if agent_access_key is None:
agent_access_key = os.environ.get("GRADIENT_AGENT_KEY")
agent_access_key = os.environ.get("GRADIENT_AGENT_ACCESS_KEY")
self.agent_access_key = agent_access_key

if agent_endpoint is None:
Expand Down Expand Up @@ -596,9 +551,6 @@ def _validate_headers(self, headers: Headers, custom_headers: Headers) -> None:
def copy(
self,
*,
api_key: str | None = None, # deprecated, use `access_token` instead
inference_key: str | None = None, # deprecated, use `model_access_key` instead
agent_key: str | None = None, # deprecated, use `agent_access_key` instead
agent_endpoint: str | None = None,
access_token: str | None = None,
model_access_key: str | None = None,
Expand Down Expand Up @@ -639,9 +591,9 @@ def copy(

http_client = http_client or self._client
client = self.__class__(
access_token=access_token or api_key or self.access_token,
model_access_key=model_access_key or inference_key or self.model_access_key,
agent_access_key=agent_access_key or agent_key or self.agent_access_key,
access_token=access_token or self.access_token,
model_access_key=model_access_key or self.model_access_key,
agent_access_key=agent_access_key or self.agent_access_key,
agent_endpoint=agent_endpoint or self._agent_endpoint,
inference_endpoint=inference_endpoint or self.inference_endpoint,
base_url=base_url or self.base_url,
Expand Down
2 changes: 1 addition & 1 deletion src/gradient/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "gradient"
__version__ = "3.0.0-beta.6" # x-release-please-version
__version__ = "3.0.0" # x-release-please-version
4 changes: 0 additions & 4 deletions src/gradientai/lib/.keep

This file was deleted.