Skip to main content

ate-neva-obst

PyPI Python License

Unofficial Python SDK for Neva Object Storage (S3-compatible).


Installation

pip install ate-neva-obst

SDK Usage

Basic Setup

from neva_obst import NevaObjectsClient
from neva_obst.client import NevaObjectsConfig

config = NevaObjectsConfig(
    access_key="YOUR_ACCESS_KEY",
    secret_key="YOUR_SECRET_KEY",
    bucket="my-bucket",
)

client = NevaObjectsClient(config)

Supports context manager:

with NevaObjectsClient(config) as client:
    ...

Full Configuration

config = NevaObjectsConfig(
    access_key="YOUR_ACCESS_KEY",
    secret_key="YOUR_SECRET_KEY",
    bucket="my-bucket",
    endpoint="https://s3.nevaobjects.id",  # default
    default_expiry=86400,                  # pre-signed URL expiry in seconds (default: 24h)
    extra_boto_config={},                  # extra kwargs forwarded to botocore.client.Config
)

Upload

# Upload with auto key (uses filename)
key = client.upload("./photo.jpg")
print(f"Uploaded: {key}")

# Upload with custom object key
client.upload("./document.pdf", object_key="reports/2024/document.pdf")

# Upload with extra boto3 args (e.g. set Content-Type manually)
client.upload("./photo.jpg", extra_args={"ContentType": "image/jpeg"})

Returns the object key as a string. Raises FileNotFoundError if the local file does not exist.


List Objects

# List all objects
for obj in client.list():
    print(obj.key, obj.size, obj.last_modified, obj.etag)

# Filter by prefix
for obj in client.list(prefix="reports/"):
    print(obj.key)

# Limit results
objects = client.list(max_keys=100)

# Get keys only
keys = client.list_keys()
keys = client.list_keys(prefix="uploads/")

list() returns a list of ObjectInfo:

@dataclass
class ObjectInfo:
    key: str
    size: int          # bytes
    last_modified: str
    etag: str

Pre-signed Download URL

# Default expiry (from config.default_expiry, default 24h)
url = client.get_download_url("photo.jpg")

# Custom expiry in seconds
url = client.get_download_url("photo.jpg", expires_in=3600)

Check Object Existence

if client.object_exists("photo.jpg"):
    print("exists")

Returns True or False. Only raises on non-404 errors.


Delete

client.delete("photo.jpg")

Error Handling

from neva_obst.exceptions import NevaObjectsError, UploadError, DownloadError, ListError

try:
    client.upload("./file.txt")
except FileNotFoundError as e:
    print(f"File not found: {e}")
except UploadError as e:
    print(f"Upload failed [{e.code}]: {e}")
except NevaObjectsError as e:
    print(f"General error [{e.code}]: {e}")

All custom exceptions expose .code (S3 error code string) and .original (original ClientError). Exception hierarchy:

NevaObjectsError
├── UploadError
├── DownloadError
└── ListError

CLI Usage

Configure Credentials

nevaobst configure

Credentials are resolved in this priority order: flags → env vars → config file

Source Variables
Environment NEVA_ACCESS_KEY, NEVA_SECRET_KEY, NEVA_BUCKET, NEVA_ENDPOINT
Flags --access-key, --secret-key, --bucket, --endpoint
Config file ~/.azzte/neva-obst.conf

Commands

upload

nevaobst upload photo.jpg
nevaobst upload "images/*" --prefix uploads/2024/
nevaobst upload report.pdf --key docs/report-q1.pdf

list

nevaobst list
nevaobst list -fs                # show size + last modified
nevaobst list --prefix uploads/
nevaobst list --json

Output is displayed as a file tree:

📄 text.txt
📄 readme.md
📁 reports/
   📄 q1.pdf
   📄 q2.pdf
📁 uploads/
   📁 2024/
      📄 photo.jpg

info

nevaobst info photo.jpg
nevaobst info photo.jpg --json

get-url

nevaobst get-url photo.jpg
nevaobst get-url report.pdf --expires 3600

delete

nevaobst delete photo.jpg
nevaobst delete a.jpg b.jpg c.jpg --force

Global Flags

Flag Description
--json Output as JSON
--profile Use a named config profile (default: default)
--help Show help for the command

Changelog

2026-03-09

  • Improved error handling (better 404 detection)
  • Added automatic Content-Type detection during upload
  • Added CLI (nevaobst)

2026-03-07

  • Project renamed from ate-dme-obst → ate-neva-obst

2026-02-28

  • Initial release

Disclaimer

This package is not officially affiliated with Neva Cloud or Domainesia. The SDK is stateless and does not transmit user data to third-party servers outside the target storage endpoint.


About

ate-neva-obst is an open-source project by AzzTE. Licensed under the BSD-3-Clause License.

Metadata

Release files for ate-neva-obst 2.0.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ate-neva-obst 2.0.7
File Size Uploaded
ate_neva_obst-2.0.7.tar.gz 11.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ate-neva-obst 2.0.7
File Interpreter ABI Platform
ate_neva_obst-2.0.7-py3-none-any.whl Python 3 none any Details

Total release size: 26.8 kB

Release files / ate_neva_obst-2.0.7.tar.gz

Download URL ate_neva_obst-2.0.7.tar.gz
Size 11.7 kB
Tags Source
SHA-256 checksum
How to use checksums
bf242c54d1e1d0d1876d5daf62abd642826f3ee8dae66361839b21d79caf135d
BLAKE2b-256 checksum
How to use checksums
211ec18c72f896aabd40317972fda29fd7dd6e95dbcd7d2a820c6ef5cafa022c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / ate_neva_obst-2.0.7-py3-none-any.whl

Download URL ate_neva_obst-2.0.7-py3-none-any.whl
Size 15.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
90b8ecbdd4b500a0923555b40bb0de044cdeec978428e39add4342a543c36352
BLAKE2b-256 checksum
How to use checksums
7c74a66dd865e9e4d4c769f1bdfd6467f3085d66069539adbbfc74eb748a27af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

2.0.7 This release

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page