Skip to content

devalog/python-sdk

Repository files navigation

Devintest Python Library

fern shield pypi

Welcome to my API

Installation

pip install devin-new-test-package

Reference

A full reference for this library is available here.

Usage

Instantiate and use the client with the following:

from devintest import MyClientNameDevin

client = MyClientNameDevin(
    base_url="https://yourhost.com/path/to/api",
)
client.imdb.create_movie(
    title="title",
    rating=1.1,
)

Async Client

The SDK also exports an async client so that you can make non-blocking calls to our API.

import asyncio

from devintest import AsyncMyClientNameDevin

client = AsyncMyClientNameDevin(
    base_url="https://yourhost.com/path/to/api",
)


async def main() -> None:
    await client.imdb.create_movie(
        title="title",
        rating=1.1,
    )


asyncio.run(main())

Exception Handling

When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error will be thrown.

from devintest.core.api_error import ApiError

try:
    client.imdb.create_movie(...)
except ApiError as e:
    print(e.status_code)
    print(e.body)

Advanced

Access Raw Response Data

The SDK provides access to raw response data, including headers, through the .with_raw_response property. The .with_raw_response property returns a "raw" client that can be used to access the .headers and .data attributes.

from devintest import MyClientNameDevin

client = MyClientNameDevin(
    ...,
)
response = client.imdb.with_raw_response.create_movie(...)
print(response.headers)  # access the response headers
print(response.data)  # access the underlying object

Retries

The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long as the request is deemed retryable and the number of retry attempts has not grown larger than the configured retry limit (default: 2).

A request is deemed retryable when any of the following HTTP status codes is returned:

  • 408 (Timeout)
  • 429 (Too Many Requests)
  • 5XX (Internal Server Errors)

Use the max_retries request option to configure this behavior.

client.imdb.create_movie(..., request_options={
    "max_retries": 1
})

Timeouts

The SDK defaults to a 60 second timeout. You can configure this with a timeout option at the client or request level.

from devintest import MyClientNameDevin

client = MyClientNameDevin(
    ...,
    timeout=20.0,
)


# Override timeout for a specific method
client.imdb.create_movie(..., request_options={
    "timeout_in_seconds": 1
})

Custom Client

You can override the httpx client to customize it for your use-case. Some common use-cases include support for proxies and transports.

import httpx
from devintest import MyClientNameDevin

client = MyClientNameDevin(
    ...,
    httpx_client=httpx.Client(
        proxies="http://my.test.proxy.example.com",
        transport=httpx.HTTPTransport(local_address="0.0.0.0"),
    ),
)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages