Python wrapper for the Sumo API
Project description
sumo-wrapper-python
Python wrappers for Sumo APIs
Install:
pip install sumo-wrapper-python
For internal Equinor users, this package is available through the Komodo distribution.
:warning:
CallSumoApiis deprecated.
Table of contents
SumoClient
A thin wrapper class for the Sumo API.
Initialization
from sumo.wrapper import SumoClient
sumo = SumoClient(env="dev")
Parameters
class SumoClient:
def __init__(
self,
env:str,
token:str=None,
interactive:bool=False,
verbosity:str="CRITICAL"
):
env: sumo environmenttoken: bearer token or refresh tokeninteractive: use interactive flow when authenticatingverbosity: "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"
token logic
If an access token is provided in the token parameter, it will be used as long
as it's valid. An error will be raised when it expires.
If we are unable to decode the provided token as a JWT, we treat it as a
refresh token and attempt to use it to retrieve an access token.
If no token is provided, an authentication code flow/interactive flow is
triggered to retrieve a token.
Methods
SumoClient has one method for each HTTP-method that is used in the sumo-core
API. See examples of how to use these methods below.
All methods accepts a path argument. Path parameters can be interpolated into the path string. Example:
object_id = "1234"
# GET/objects('{obejctid}')
sumo.get(f"/objects('{object_id}')")
get(path, **params)
Performs a GET-request to sumo-core. Accepts query parameters as keyword arguments.
# Retrieve userdata
user_data = sumo.get("/userdata")
# Search for objects
results = sumo.get("/search",
query="class:surface",
size:3,
select=["_id"]
)
# Get object by id
object_id = "159405ba-0046-b321-55ce-542f383ba5c7"
obj = sumo.get(f"/objects('{object_id}')")
post(path, json, blob)
Performs a POST-request to sumo-core. Accepts json and blob, but not both at the same time.
# Upload new parent object
parent_object = sumo.post("/objects", json=parent_meta_data)
# Upload child object
parent_id = parent_object["_id"]
child_object = sumo.post(f"/objects('{parent_id}')", json=child_meta_data)
put(path, json, blob)
Performs a PUT-request to sumo-core. Accepts json and blob, but not both at the same time.
# Upload blob to child object
child_id = child_object["_id"]
sumo.put(f"/objects('{child_id}')/blob", blob=blob)
delete(path)
Performs a DELETE-request to sumo-core.
# Delete blob
sumo.delete(f"/objects('{child_id}')/blob")
# Delete child object
sumo.delete(f"/objects('{child_id}')")
# Delete parent object
sumo.delete(f"/objects('{parent_id}')")
Async methods
SumoClient also has async alternatives get_async, post_async, put_async and delete_async.
These accept the same parameters as their synchronous counterparts, but have to be awaited.
# Retrieve userdata
user_data = await sumo.get_async("/userdata")
CallSumoApi (deprecated)
Predefined methods for various sumo operations. I.e uploading, searching for and deleting metadata and blobs.
Initialization
from sumo.wrapper import CallSumoApi
sumo = CallSumoApi()
Parameters
class CallSumoApi:
def __init__(
self,
env="dev",
resource_id=None,
client_id=None,
outside_token=False,
writeback=False,
):
Examples
All CallSumoApi methods accept a bearer argument which lets the user use an
existing access token instead of generating a new one.
search()
Search all objects in sumo.
Parameters
def search(
self,
query,
select=None,
buckets=None,
search_from=0,
search_size="100",
search_after=None,
bearer=None,
):
Usage
# Find objects where class = surface
search_results = sumo.search(query="class:surface", search_size="10")
# Get child objects for a specific object
parent_id = "1234"
children = sumo.search(query=f"_sumo.parent_object:{parent_id}")
# Get buckets for child object classes (i.e surface, table, polygon)
# This will return a count for every class value
buckets = sumo.search(
query=f"_sumo.parent_object:{parent_id}",
buckets=["class.keyword"]
)
searchroot()
Search for parent objects (object without parent)
Parameters
def searchroot(
self,
query,
select=None,
buckets=None,
search_from=0,
search_size="100",
bearer=None,
):
Usage
# Get 3 top level objects for a specific user
peesv_objects = sumo.searchroot(
query="fmu.case.user.id:peesv",
search_size=3
)
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sumo-wrapper-python-0.4.1.tar.gz.
File metadata
- Download URL: sumo-wrapper-python-0.4.1.tar.gz
- Upload date:
- Size: 31.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7018c0162b9510937c976c1d7179bca7a71ae06278c219407ff27ed4bbee4037
|
|
| MD5 |
477cca713fbe924174d3cf737e490d70
|
|
| BLAKE2b-256 |
744276702037c039d9acc1d59011e1a66487e79951ac8f55245fbea0cebf9e54
|
File details
Details for the file sumo_wrapper_python-0.4.1-py3-none-any.whl.
File metadata
- Download URL: sumo_wrapper_python-0.4.1-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7cc4c7331cc486b836fa0f39d0eb016b8fb7463f847f71e525a066da18ffce5
|
|
| MD5 |
e1a93e3fd33072d2eca82bb727ebcb77
|
|
| BLAKE2b-256 |
efcf06d74868ad22a8dd9d3135285fac81772f8f2efb51fbca16bfd4a8578330
|