Skip to main content

Seequent logo

PyPI - Version

Seequent Developer Portal • Seequent Community • Seequent website

Evo Object API Client

The Geoscience Object API is Seequent's next-generation cloud offering for geoscience data, empowering our users to build responsive modern workflows.

Pre-requisites

Installation

pip install evo-objects

Usage

See the evo-sdk-common documentation for information on how to authenticate, then select the organisation, hub and workspace that you would like to use.

Interacting with the Geoscience Object API

To get up and running quickly with the Evo Objects SDK, start by configuring your environment and API connector.

from evo.objects import ObjectAPIClient

service_client = ObjectAPIClient(environment, connector)
service_health = await service_client.get_service_health()
service_health.raise_for_status()

# The data client is an optional utility that provides helpers for uploading and downloading
# parquet data via pyarrow.Table objects.
data_client = service_client.get_data_client(manager.cache)
...

Listing objects is simple, just call the ObjectAPIClient.list_objects() method.

offset = 0
while True:
    page = await service_client.list_objects(offset=offset, limit=10)
    if offset == 0:
        print(f"Found {page.total} object{'' if page.total == 1 else 's'}")
    for object in page:
        print(f"{object.path}: <{object.schema_id}> ({object.id})")

    if page.is_last:
        break
    else:
        offset = page.next_offset

You can also get a list of all objects. Internally, this recursively calls the list_objects() method until all objects are fetched.

Check out the other methods on the ObjectAPIClient for more details on how to upload and download objects, or get object versions.

Typed downhole collections

DownholeCollection provides a DataFrame-based API for creating and reading downhole objects. A collection can contain distance tables, interval tables, or both. hole_index is an integer key in the object's hole_id lookup table, not a row position or a pandas categorical code. The creation helper uses dense zero-based keys in sorted hole-ID order unless an explicit hole_indices mapping is supplied. Persisted objects may use arbitrary integer keys. Collection holes may contain a subset or repeated chunks.

import pandas as pd

from evo.objects.typed import DownholeCollection, DownholeCollectionData
from evo.objects.typed.downhole_collection import IntervalCollection
from evo.objects.utils.downhole import hole_chunks_from_ids

intervals = pd.DataFrame({"from": [0.0], "to": [1.5], "lithology": ["sandstone"]})
collections = [
    IntervalCollection(
        name="geology",
        holes=hole_chunks_from_ids(pd.Series(["DH-01"])),
        table=intervals,
        unit="m",  # Collection coordinate units are set explicitly here.
    )
]

# Build DownholeCollectionData with matching path, location-hole chunks, and collar properties,
# then create it with: await DownholeCollection.create(context, data)

Use await dhc.location.to_dataframe() and await dhc.location.path_to_dataframe() to read collars and paths. Distance and interval tables provide to_dataframe() and to_dataframe_by_hole(). Before reading a large object, call await dhc.prefetch_collections("geology") to warm only the requested collection data (and location data by default). Attribute descriptions for ordinary attributes round-trip through DataFrame.attrs["attribute_descriptions"]. Collection coordinate units come only from DistanceCollection.unit or IntervalCollection.unit; unit metadata on the distance or from column is ignored.

Contributing

For instructions on contributing to the development of this library, please refer to the evo-python-sdk documentation.

License

The Python SDK for Evo is open source and licensed under the Apache 2.0 license..

Copyright © 2025 Bentley Systems, Incorporated.

Licensed under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for evo-objects 0.6.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evo-objects 0.6.4
File Size Uploaded
evo_objects-0.6.4.tar.gz 86.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evo-objects 0.6.4
File Interpreter ABI Platform
evo_objects-0.6.4-py3-none-any.whl Python 3 none any Details

Total release size: 215.5 kB

Release files / evo_objects-0.6.4.tar.gz

Download URL evo_objects-0.6.4.tar.gz
Size 86.7 kB
Tags Source
SHA-256 checksum
How to use checksums
afe4a95ed1d3f7b955c244198316d277bb0b8c9da67e5740eefd9d484fb2f488
BLAKE2b-256 checksum
How to use checksums
0637724e82b6bcf3fcdf28accf4279c366f8f8b9c9ceab20e80b778657d18af8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release files / evo_objects-0.6.4-py3-none-any.whl

Download URL evo_objects-0.6.4-py3-none-any.whl
Size 128.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
724f57895ffa11c8062239685774907c559bb06a255861a325d1b50fed075d01
BLAKE2b-256 checksum
How to use checksums
76d2d80dff887aed2a056878b9c189500a464946c0d39d2a324cf9e83c5eaf9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 23, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.6.4 This release

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page