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
Detecting logging status
import hubble
if hubble.is_logged_in():
print('yeah')
else:
print('no')
Get a token
Notice that the token you got from this function is always valid. If the token is invalid or expired, the result is None
.
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)
Mark a function as login required,
import hubble
@hubble.login_required
def foo():
pass
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
- Use Discussions to talk about your use cases, questions, and support queries.
- Join our Slack community and chat with other Jina community members about ideas.
- Join our Engineering All Hands meet-up to discuss your use case and learn Jina's new features.
- When? The second Tuesday of every month
- Where? Zoom (see our public events calendar/.ical) and live stream on YouTube
- Subscribe to the latest video tutorials on our YouTube channel
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
Built Distribution
File details
Details for the file jina-hubble-sdk-0.19.2.tar.gz
.
File metadata
- Download URL: jina-hubble-sdk-0.19.2.tar.gz
- Upload date:
- Size: 45.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.7.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 820c355e5c845aef4585dead526abfaf78aa6471b1c1dd873f56fa1ab29213ff |
|
MD5 | 740cb007b9d7456c94a7b870b5c21d21 |
|
BLAKE2b-256 | 87605b24619823367f6019cd17b2f8eb0a2587bae538c2d676e647de592b3a7c |
File details
Details for the file jina_hubble_sdk-0.19.2-py3-none-any.whl
.
File metadata
- Download URL: jina_hubble_sdk-0.19.2-py3-none-any.whl
- Upload date:
- Size: 54.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.7.14
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c91ed05e773d52a9b25c612720b434ffec300739e87ece65c8b6d7a51116a9c |
|
MD5 | 263e63ad3a53797492ac01a7f7d8e3fc |
|
BLAKE2b-256 | 6a8bcf968ec3ae0b0ef630df7a6b46a3d4cc74fcc9d1c1ad0b20e0a24cab67dd |