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 ~/.neva/config (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.3.tar.gz (14.7 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.3-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ate_neva_obst-2.0.3.tar.gz
  • Upload date:
  • Size: 14.7 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.3.tar.gz
Algorithm Hash digest
SHA256 6ec4575c2d2ac10c6cd60bc972dca065477958b9206aef1076723033772889fd
MD5 d0ebdcf44a0cdd52a51d30e2d3d388a3
BLAKE2b-256 6b4d6aadf45c5268aa1dbd28f4a87c92f6a76b5b263a51bbcf41a438e016674b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ate_neva_obst-2.0.3-py3-none-any.whl
  • Upload date:
  • Size: 17.6 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7b795c7ad338deb742f3fcac76d393c3657eb9d6f9a914c568d9023407df0a92
MD5 28537407484fcdf1834ac312ca13a923
BLAKE2b-256 f1e024fbf9aa6c3190715756aeca78db6055dfbb38845a1b3cfcad902c7dc722

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