Skip to main content

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

Project description

ate-neva-obst

PyPI Python License

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


Installation

pip install ate-neva-obst

SDK Usage

from neva_obst import ObjectsClient
from neva_obst.client import ObjectsConfig

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

with ObjectsClient(config) as client:

    # Upload file
    key = client.upload("./photo.jpg")
    print(f"Uploaded: {key}")

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

    # Check if object exists
    if client.object_exists("photo.jpg"):
        print("Object exists!")

    # List all objects
    for obj in client.list():
        print(f"{obj.key}  {obj.size} bytes  {obj.last_modified}")

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

    # Download object
    client.download(object_key="photo.jpg", local_path="./photo.jpg")

    # Generate download URL (default expiry)
    url = client.get_download_url("photo.jpg")

    # Generate download URL with custom expiry (1 hour)
    url = client.get_download_url("photo.jpg", expires_in=3600)

    # Delete object
    client.delete("photo.jpg")

Error Handling

from neva_obst import ObjectsClient, UploadError, ListError, DownloadError, ObjectsError

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 ObjectsError as e:
    print(f"General error: {e}")

Full Configuration

config = ObjectsConfig(
    access_key="YOUR_ACCESS_KEY",
    secret_key="YOUR_SECRET_KEY",
    bucket="my-bucket",
    endpoint="https://s3.nevaobjects.id",  # default
    default_expiry=3600,                   # URL expiry in seconds
)

CLI Usage

Set credentials once, then use any command.

nevaobst configure

Credentials can also be set via environment variables or flags on each command.

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 (set via nevaobst configure)

Priority: flagsenv varsconfig file

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

Every command supports:

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-obstate-neva-obst

2026-02-28

  • Initial release of ate-neva-obst SDK

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 (except the target storage endpoint).
  • The official project website is currently under development and will include guides and full documentation.

About

ate-neva-obst is an open-source project built by AzzTE.
Licensed under the Apache 2.0 License.

Made with passion for developers who want a simple and clean Python SDK for Neva Object Storage.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ate_neva_obst-2.0.6.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ate_neva_obst-2.0.6-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file ate_neva_obst-2.0.6.tar.gz.

File metadata

  • Download URL: ate_neva_obst-2.0.6.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for ate_neva_obst-2.0.6.tar.gz
Algorithm Hash digest
SHA256 2ec091271a2283bf66518b066e72b8c98be89a49398be47c922392423c91a814
MD5 f3b72fc0f2f572f8350e98d8fb3ed257
BLAKE2b-256 391134f0e9970bfa1a16adf47a153449a6fe05b50c00e828c590b7b8d782f935

See more details on using hashes here.

File details

Details for the file ate_neva_obst-2.0.6-py3-none-any.whl.

File metadata

  • Download URL: ate_neva_obst-2.0.6-py3-none-any.whl
  • Upload date:
  • Size: 14.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for ate_neva_obst-2.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 1f3acd67a5855f827552e899d73615c5669325cfa8a7d1c5300f56c3335eb786
MD5 97ff7f8f7c36eafcb06584dadc32336c
BLAKE2b-256 36903c640cf02e31cf7348168b858b187383a404ed8257a4fe586f4834da1854

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page