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.2.tar.gz (14.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.2-py3-none-any.whl (17.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ate_neva_obst-2.0.2.tar.gz
  • Upload date:
  • Size: 14.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.2.tar.gz
Algorithm Hash digest
SHA256 a4fcedfc377d437d909bd554368ada3552669d370e072aa8f9cb059aa77dbfe5
MD5 a2ee1f3a141b7b3d3230c77d88ecb3ec
BLAKE2b-256 da95da34033763fb7d3ff7fe0e65152bf3c4f575764f2dae963140957f04e74e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ate_neva_obst-2.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3325bc8a1d847b85808091d3a8a5982a71dbc619f4bb3cd7ccbd7defeba65335
MD5 5d4ddc71733d8eaa0d50a83929ce7344
BLAKE2b-256 27f7cb986511a01c5dc45ebc26e09a22c388650b451d3fbebf1257771f1fffe0

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