Skip to main content

SDK for Hubble API at Jina AI.

Project description

jina-hubble-sdk

Install

pip install jina-hubble-sdk

Core functionality

  • Python API and CLI.
  • Authentication and token management.
  • Artifact management.

Python API

Get a token

Including login if not.

import hubble
hubble.get_token()

If you are using inside an interactive environment, i.e. user can input via stdin:

import hubble
hubble.get_token(interactive=True)

Login to Hubble

import hubble

# Open browser automatically and login via 3rd party.
# Token will be saved locally.
hubble.login()

Logout

import hubble

# If there is a valid token locally, 
# this will disable that token and remove it from local config.
hubble.logout()

Authentication and Token Management

After calling hubble.login(), you can use the client with:

import hubble

client = hubble.Client(
    max_retries=None,
    jsonify=True
)
# Get current user information.
response = client.get_user_info()
# Create a new personally access token for longer expiration period.
response = client.create_personal_access_token(
    name='my-pat',
    expiration_days=30
)
# Query all personal access tokens.
response = client.list_personal_access_tokens()

Artifact Management

import hubble
import io

client = hubble.Client(
    max_retries=None,
    jsonify=True
)

# Upload artifact to Hubble Artifact Storage by providing path.
response = client.upload_artifact(
    f='~/Documents/my-model.onnx',
    is_public=False
)

# Upload artifact to Hubble Artifact Storage by providing `io.BytesIO`
response = client.upload_artifact(
    f=io.BytesIO(b"some initial binary data: \x00\x01"),
    is_public=False
)

# Get current artifact information.
response = client.get_artifact_info(id='my-artifact-id')

# Download artifact to local directory.
response = client.download_artifact(
    id='my-artifact-id',
    f='my-local-filepath'
)
# Download artifact as an io.BytesIO object
response = client.download_artifact(
    id='my-artifact-id',
    f=io.BytesIO()
)

# Get list of artifacts.
response = client.list_artifacts(filter={'metaData.foo': 'bar'}, sort={'type': -1})

# Delete the artifact.
response = client.delete_artifact(id='my-artifact-id')

Error Handling

import hubble

client = hubble.Client()

try:
    client.get_user_info()
except hubble.excepts.AuthenticationRequiredError:
    print('Please login first.')
except Exception:
    print('Unknown error')

CLI

Login to Jina Cloud

Open browser automatically and login via 3rd party. Token will be saved locally.

jina auth login

Logout

If there is a valid token locally, this will disable that token and remove it from local config.

jina auth logout

Personal access token (PAT) management

Create a new PAT

jina auth token create <name of PAT> -e <expiration days>

List PATs

jina auth token list

Delete PAT

jina auth token delete <name of PAT>

Development

Local test

  • Make a new virtual env. make env
  • Install dependencies. make init
  • The test should be run in a logged in environment. So need to login to Jina. jina auth login
  • Test locally. make test

Release cycle

  • Each time new commits come into main branch, CD workflow will generate a new release both on GitHub and Pypi.
  • Each time new commits come into alpha branch, CD workflow will generate a new pre-release both on GitHub and Pypi.

FAQ (Frequently Asked Questions)

Run into RuntimeError: asyncio.run() cannot be called from a running event loop in Google Colab?

You could run into a problem when you trying to run these codes in Google Colab

import hubble

hubble.login()

The way to bypass this problem is adding nest_asyncio and use it first.

import hubble
import nest_asyncio

nest_asyncio.apply()
hubble.login()

Support

Join Us

Hubble Python SDK is backed by Jina AI and licensed under Apache-2.0. We are actively hiring AI engineers, solution engineers to build the next neural search ecosystem in opensource.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

jina-hubble-sdk-0.12.5.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

jina_hubble_sdk-0.12.5-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file jina-hubble-sdk-0.12.5.tar.gz.

File metadata

  • Download URL: jina-hubble-sdk-0.12.5.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.7.13

File hashes

Hashes for jina-hubble-sdk-0.12.5.tar.gz
Algorithm Hash digest
SHA256 b40ed83be982c51f37577bbf74ca1dca192fa93dfda29fe8393e15163af8c774
MD5 77dc54955df61b8599c6e5ee6dcd7a81
BLAKE2b-256 f2b712abe6475fff8c60b02ffa567af0c794f832dcea2c7095bb7c5162b0ba88

See more details on using hashes here.

File details

Details for the file jina_hubble_sdk-0.12.5-py3-none-any.whl.

File metadata

File hashes

Hashes for jina_hubble_sdk-0.12.5-py3-none-any.whl
Algorithm Hash digest
SHA256 584b65d544ea86d509e72af506a434e1efd8af7f0d62dd1b22060324f52f0128
MD5 ac67f9423761a086e37e9b2fa6faa0aa
BLAKE2b-256 b4f502d7b59a524a1a184a0726f247942fb37d020df4670eb1b8105f27056fa6

See more details on using hashes here.

Supported by

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