{"id":35595747,"url":"https://github.com/seequentevo/evo-python-sdk","last_synced_at":"2026-05-28T01:04:41.774Z","repository":{"id":286006671,"uuid":"922730748","full_name":"SeequentEvo/evo-python-sdk","owner":"SeequentEvo","description":"Python SDK for seamless Evo API integration and manipulation of geoscience data.","archived":false,"fork":false,"pushed_at":"2026-04-13T02:51:32.000Z","size":7120,"stargazers_count":8,"open_issues_count":12,"forks_count":29,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-04-13T15:07:15.846Z","etag":null,"topics":["geoscience","python","seequent"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SeequentEvo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-01-26T23:58:37.000Z","updated_at":"2026-04-13T02:49:49.000Z","dependencies_parsed_at":"2025-06-04T14:36:52.806Z","dependency_job_id":"8c5c3bc2-1a67-4ea2-b896-0e86b2abd153","html_url":"https://github.com/SeequentEvo/evo-python-sdk","commit_stats":null,"previous_names":["seequentevo/evo-python-sdk"],"tags_count":90,"template":false,"template_full_name":null,"purl":"pkg:github/SeequentEvo/evo-python-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeequentEvo%2Fevo-python-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeequentEvo%2Fevo-python-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeequentEvo%2Fevo-python-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeequentEvo%2Fevo-python-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SeequentEvo","download_url":"https://codeload.github.com/SeequentEvo/evo-python-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SeequentEvo%2Fevo-python-sdk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31863499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["geoscience","python","seequent"],"created_at":"2026-01-05T00:19:05.774Z","updated_at":"2026-05-28T01:04:41.760Z","avatar_url":"https://github.com/SeequentEvo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://seequent.com\" target=\"_blank\"\u003e\u003cpicture\u003e\u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://developer.seequent.com/img/seequent-logo-dark.svg\" alt=\"Seequent logo\" width=\"400\" /\u003e\u003cimg src=\"https://developer.seequent.com/img/seequent-logo.svg\" alt=\"Seequent logo\" width=\"400\" /\u003e\u003c/picture\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/SeequentEvo/evo-python-sdk/actions/workflows/run-all-tests.yaml\"\u003e\u003cimg src=\"https://github.com/SeequentEvo/evo-python-sdk/actions/workflows/run-all-tests.yaml/badge.svg\" alt=\"\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://developer.seequent.com/\" target=\"_blank\"\u003eSeequent Developer Portal\u003c/a\u003e\n    \u0026bull; \u003ca href=\"https://community.seequent.com/group/19-evo\" target=\"_blank\"\u003eSeequent Community\u003c/a\u003e\n    \u0026bull; \u003ca href=\"https://seequent.com\" target=\"_blank\"\u003eSeequent website\u003c/a\u003e\n\u003c/p\u003e\n\n## Evo\n\nEvo is a unified platform for geoscience teams. It enables access, connection, computation, and management of subsurface data. This empowers better decision-making, simplified collaboration, and accelerated innovation. Evo is built on open APIs, allowing developers to build custom integrations and applications. Our open schemas, code examples, and SDK are available for the community to use and extend.\n\nEvo is powered by Seequent, a Bentley organisation.\n\n## Prerequisites\n\nBefore you get started, make sure you have:\n\n* **A registered Evo app**\n\n    *Evo apps* provide the credentials necessary to generate Evo access tokens, which in turn provide access to your Evo data. An app can be created by you or by a member of your team.\n    \n    Register an Evo app in the [Seequent Developer Portal](https://developer.seequent.com/my-apps). For in-depth instructions, follow this [guide](https://developer.seequent.com/docs/guides/getting-started/apps-and-tokens).\n\n    NOTE: You must have a **Bentley developer account** in order to create apps. If you try to create an app using the link above but find that you don't have permission, contact your account administrator to get access.\n\n* **A local copy of this repository**\n\n    Clone the repository using Git or download it as a ZIP file from the green **Code** button at the top of the page.\n\n* **A Python code editor, eg. VS Code, PyCharm**\n    \n    For running and editing the sample notebooks and other source code files.\n\n## About this repository\n\n`evo-python-sdk` is designed for developers, data scientists, and technical users who want to work with Seequent Evo APIs and geoscience data. \n\nThis repository contains a number of sub-packages. You may choose to install the `evo-sdk` package, which includes all sub-packages and optional dependencies (e.g. Jupyter notebook support), or choose a specific package to install:\n\n| Package | Version | Import | Description |\n| --- | --- | --- | --- |\n| [evo-sdk](README.md) | \u003ca href=\"https://pypi.org/project/evo-sdk/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-sdk\" /\u003e\u003c/a\u003e | | A metapackage that installs all available Seequent Evo SDKs, including Jupyter notebook examples. |\n| [evo-sdk-common](packages/evo-sdk-common/README.md) | \u003ca href=\"https://pypi.org/project/evo-sdk-common/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-sdk-common\" /\u003e\u003c/a\u003e | `evo.common`, `evo.notebooks` | A shared library that provides common functionality for integrating with Seequent's client SDKs. |\n| [evo-files](packages/evo-files/README.md) | \u003ca href=\"https://pypi.org/project/evo-files/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-files\" /\u003e\u003c/a\u003e | `evo.files` | A service client for interacting with the Evo File API. |\n| [evo-objects](packages/evo-objects/README.md) | \u003ca href=\"https://pypi.org/project/evo-objects/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-objects\" /\u003e\u003c/a\u003e | `evo.objects` | A geoscience object service client library designed to help get up and running with the Geoscience Object API. |\n| [evo-colormaps](packages/evo-colormaps/README.md)  | \u003ca href=\"https://pypi.org/project/evo-colormaps/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-colormaps\" /\u003e\u003c/a\u003e | `evo.colormaps` | A service client to create colour mappings and associate them to geoscience data with the Colormap API.|\n| [evo-blockmodels](packages/evo-blockmodels/README.md) | \u003ca href=\"https://pypi.org/project/evo-blockmodels/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-blockmodels\" /\u003e\u003c/a\u003e | `evo.blockmodels` | The Block Model API provides the ability to manage and report on block models in your Evo workspaces. |\n| [evo-widgets](packages/evo-widgets/README.md) | \u003ca href=\"https://pypi.org/project/evo-widgets/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-widgets\" /\u003e\u003c/a\u003e | `evo.widgets` | Widgets and presentation layer — rich HTML rendering of typed geoscience objects in Jupyter notebooks. |\n| [evo-compute](packages/evo-compute/README.md)  | \u003ca href=\"https://pypi.org/project/evo-compute/\"\u003e\u003cimg alt=\"PyPI - Version\" src=\"https://img.shields.io/pypi/v/evo-compute\" /\u003e\u003c/a\u003e | `evo.compute` | A service client to send jobs to the Compute Tasks API.|\n\n* To quickly learn how to use Evo APIs, start with the [Getting started with Evo code samples](#getting-started-with-evo-code-samples) section, which contains practical, end-to-end Jupyter notebook examples for common workflows. Most new users should begin with this section.\n\n* If you are interested in the underlying SDKs or need to understand the implementation details, explore the [Getting started with Evo SDK development](#getting-started-with-evo-sdk-development) section, which contains the source code for each Evo SDK. \n\n* To learn about contributing to this repository, take a look at the [Contributing](#contributing) section.\n\n## Quick start for notebooks\n\nOnce you have an Evo app registered and the SDK installed, you can load and work with geoscience objects in just a few lines of code:\n\n```python\n# Authenticate with Evo\nfrom evo.notebooks import ServiceManagerWidget\n\nmanager = await ServiceManagerWidget.with_auth_code(\n    client_id=\"\u003cyour-client-id\u003e\",\n    cache_location=\"./notebook-data\",\n).login()\n```\n\n\u003e **Output:**\n\u003e\n\u003e ![ServiceManagerWidget](docs/img/service-manager-widget.png)\n\u003e \n\u003e *A browser window opens for authentication. After login, select your organization, hub, and workspace from the dropdowns.*\n\n```python\n# Enable rich HTML display for Evo objects in Jupyter\n%load_ext evo.widgets\n\n# Load an object by file path or UUID\nfrom evo.objects.typed import object_from_uuid, object_from_path\n\nobj = await object_from_path(manager, \"\u003cyour-object-path\u003e\")\n\n# OR\n\nobj = await object_from_uuid(manager, \"\u003cyour-object-uuid\u003e\")\nobj  # Displays object info with links to Evo Portal and Viewer\n```\n\n\u003e **Output:**\n\u003e\n\u003e ![PointSet object display](docs/img/pointset-output.png)\n\n```python\n# Get data as a pandas DataFrame\ndf = await obj.to_dataframe()\ndf.head()\n```\n\n\u003e **Output:**\n\u003e |   | x | y | z | Ag_ppm Values |\n\u003e |---|---|---|---|---|\n\u003e | 0 | 10584.40 | 100608.98 | 214.70 | 12.5 |\n\u003e | 1 | 10590.21 | 100615.43 | 220.15 | 8.3 |\n\u003e | ... | ... | ... | ... | ... |\n\nTyped objects like `PointSet`, `BlockModel`, and `Variogram` provide pretty-printed output in Jupyter with clickable links to view your data in Evo. As support for more geoscience objects is added, geologists and geostatisticians can interact with points, variograms, block models, grids, and more — all through intuitive Python classes. To determine the path or UUID of an object, visit the [Evo Portal](https://evo.seequent.com) or use the `ObjectSearchWidget`.\n\nFor a hands-on introduction, see the [simplified object interactions](code-samples/geoscience-objects/simplified-object-interactions/) notebook. For a complete geostatistical workflow including variogram modelling and kriging estimation, see the [running kriging compute](code-samples/geoscience-objects/running-kriging-compute/) notebook.\n\n## Getting started with Evo code samples\n\nFor detailed information about creating Evo apps, the authentication setup, available code samples, and step-by-step guides for working with the Jupyter notebooks, please refer to the [**code-samples/README.md**](code-samples/README.md) file. \n\nThis comprehensive guide will walk you through everything required to get started with Evo APIs. \n\n## Getting started with Evo SDK development\n\n\n### Getting started\n\nNow that you have installed the Evo SDK, you can get started by configuring your API connector, and performing a\nbasic API call to list the organizations that you have access to:\n\n```python\nfrom evo.aio import AioTransport\nfrom evo.oauth import OAuthConnector, AuthorizationCodeAuthorizer\nfrom evo.discovery import DiscoveryAPIClient\nfrom evo.common import APIConnector\nimport asyncio\n\ntransport = AioTransport(user_agent=\"Your Application Name\")\nconnector = OAuthConnector(transport=transport, client_id=\"\u003cYOUR_CLIENT_ID\u003e\")\nauthorizer = AuthorizationCodeAuthorizer(oauth_connector=connector, redirect_url=\"http://localhost:3000/signin-callback\")\n\nasync def main():\n    await authorizer.login()\n    await discovery()\n\nasync def discovery():\n    async with APIConnector(\"https://discover.api.seequent.com\", transport, authorizer) as api_connector:\n        discovery_client = DiscoveryAPIClient(api_connector)\n        organizations = await discovery_client.list_organizations()\n        print(\"Organizations:\", organizations)\n\nasyncio.run(main())\n```\n\nFor next steps and more information about using Evo, see:\n* [`evo-sdk-common`](packages/evo-sdk-common/README.md): providing the foundation for all Evo SDKs, as well as tools\n  for performing arbitrary Seequent Evo API requests\n* [`evo-files`](packages/evo-files/README.md): for interacting with the File API\n* [`evo-objects`](packages/evo-objects/README.md): for interacting with the Geoscience Object API\n* [`evo-colormaps`](packages/evo-colormaps/README.md): for interacting with the Colormap API\n* [`evo-blockmodels`](packages/evo-blockmodels/README.md): for interacting with the Block Model API\n* [`evo-compute`](packages/evo-compute/README.md): for interacting with the Compute Tasks API\n* [Seequent Developer Portal](https://developer.seequent.com/docs/guides/getting-started/quick-start-guide): for guides,\n  tutorials, and API references\n\n## Contributing\n\nThank you for your interest in contributing to Seequent software. Please have a look over our [contribution guide](./CONTRIBUTING.md).\n\n### Getting started\n\nAll Python SDKs in this monorepo are managed with [uv](https://docs.astral.sh/uv/).\nWe use [workspaces](https://docs.astral.sh/uv/concepts/projects/workspaces/) in order to manage the different SDKs\npublished out of this repository.\n\nWith workspaces, `uv lock` operates on the entire workspace at once. `uv run` and `uv sync` operate on the workspace root by default, though both accept a `--package` argument allowing you to run a command in a particular workspace member from any workspace directory.\n\n### Install UV\n\nTo install UV on your machine, run one of the following convenience scripts from the root of the repo. These scripts ensure everyone is using the same version.\n\n#### Windows\n```shell\n./scripts/install-uv.ps1\n```\n\n#### Linux / macOS\n```shell\n./scripts/install-uv.sh\n```\nYou can run the same script again whenever the version in the `UV_VERSION` file changes. It will replace your existing installation of UV.\n\n### Install pre-commit hooks\n\nOnce you've installed UV, install pre-commit hooks. These are used to standardise development workflows for all contributors:\n\n```shell\nuv run pre-commit install\n```\n\n### Setting up and running Jupyter notebooks\n\nNotebooks can be run in your tool of choice (e.g. VS Code). To use Jupyter (the default):\n\n```shell\nuv sync --all-packages --all-extras\n```\n\nThen, in the directory of the notebook(s) you want to run:\n\n```shell\nuv run jupyter notebook\n```\n\nA browser should launch where you can open the notebooks for the current directory.\n\n## Code of conduct\n\nWe rely on an open, friendly, inclusive environment. To help us ensure this remains possible, please familiarise yourself with our [code of conduct](./CODE_OF_CONDUCT.md).\n\n## License\n\nThe Python SDK for Evo is open source and licensed under the [Apache 2.0 license](./LICENSE.md).\n\nCopyright © 2025 Bentley Systems, Incorporated.\n\nLicensed under the Apache License, Version 2.0 (the \"License\").\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseequentevo%2Fevo-python-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseequentevo%2Fevo-python-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseequentevo%2Fevo-python-sdk/lists"}