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.3

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.3
File Size Uploaded
evo_objects-0.6.3.tar.gz 86.7 kB Details

Built distribution (wheel)

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

Total release size: 215.4 kB

Release files / evo_objects-0.6.3.tar.gz

Download URL evo_objects-0.6.3.tar.gz
Size 86.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b2ea1e4283d44b870b9f44212216e9f5136c88d8769f1bef5da9667413755ded
BLAKE2b-256 checksum
How to use checksums
c0e4f519b602bd549548f4580985156c85f7f8df37281a7738385a36f1973269
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 20, 2026.

Transparency log

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

Download URL evo_objects-0.6.3-py3-none-any.whl
Size 128.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1aa6bded6f489c95e9c4821213d09087de1ee90770e4b623d10bfba01b265b15
BLAKE2b-256 checksum
How to use checksums
ee90e5d2a807a9a797f1f27b6406ca4bfceb74e19cde59420f067b5157408bee
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 20, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.4

2 release files

This release

0.6.3 This release

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