> ## Documentation Index
> Fetch the complete documentation index at: https://docs.activeviam.com/llms.txt
> Use this file to discover all available pages before exploring further.

> Release notes

# Release notes

This is a high level list of the most notable changes.
Refer to the [changelog](./changelog) for more details.

## 6.2.0b0

<Warning>
  This is a preproduction release, see [https://docs.activeviam.com/preproduction-releases](https://docs.activeviam.com/preproduction-releases)
</Warning>

Released on Jul 03, 2026.

### Summary

* [Error handling when loading data](#error-handling-when-loading-data)
* [Feeding configuration](#feeding-configuration)
* [Conda packages no longer published](#conda-packages-no-longer-published)
* [Removed deprecated APIs](#removed-deprecated-apis)
* [Parquet loading now requires a plugin](#parquet-loading-now-requires-a-plugin)
* [Migration to Pandas 3](#migration-to-pandas-3)
* [Embedded Java runtime upgraded to Java 25](#embedded-java-runtime-upgraded-to-java-25)
* [JupyterLab minimum version raised to 4.6.0](#jupyterlab-minimum-version-raised-to-4-6-0)

### New features

#### Error handling when loading data

[`atoti_jdbc.JdbcLoad.error_handling`](./api/atoti_jdbc.jdbc_load#atoti_jdbc.JdbcLoad.error_handling) and [`atoti.CsvLoad.error_handling`](./api/atoti.data_load.csv_load#atoti.CsvLoad.error_handling) control what happens when a row cannot be loaded.

* `"fail"` raises an error on the first invalid row and stops the load.
* `"warn"` skips invalid rows and raises a warning if any were found.
* `"log"` skips invalid rows and logs each of them.

The default is now `"fail"`, so invalid rows are no longer skipped silently.

### Improvements

#### Feeding configuration

[`atoti.Cube.feeding`](./api/atoti.Cube.feeding#atoti.Cube.feeding) and [`create_cube()`](./api/atoti.Session.create_cube#atoti.Session.create_cube)’s *feeding* parameter control whether a cube is fed from its table right after creation.
Feeding can be disabled to finish defining the data model before paying the cost of feeding it, then enabled once the model is ready.

#### Conda packages no longer published

Atoti packages are no longer published to Conda.
Install them with [uv](https://docs.astral.sh/uv/) or `pip` instead.
A Conda environment can still be used by installing the packages with `pip`.

#### Removed deprecated APIs

Atoti 6.2.0 is a breaking release that removes APIs deprecated in earlier versions.
For example, the [`Table`](./api/atoti.table#atoti.Table) data-loading shortcuts such as `table.load_csv(...)` have been replaced by `table.load(tt.CsvLoad(...))`.
The cloud storage extras have also been renamed: `atoti[aws]`, `atoti[azure]`, and `atoti[gcp]` are now `atoti[storage-aws]`, `atoti[storage-azure]`, and `atoti[storage-gcp]`.
See the [changelog](./changelog) for the full list of removed APIs and how to migrate.

#### Parquet loading now requires a plugin

Loading Apache Parquet files now requires the [`atoti-parquet`](./api/atoti_parquet#module-atoti_parquet) plugin, installed with the `atoti[parquet]` extra.
This plugin is no longer installed by default, so projects that load Parquet files must add the extra explicitly.
See the [changelog](./changelog) for migration details.

#### Migration to Pandas 3

The minimum required Pandas version is now 3.0.3.

* Datetime and timedelta columns now use microsecond precision instead of nanosecond precision. This applies both when loading [`DataFrame`](https://pandas.pydata.org/pandas-docs/version/2.3/reference/api/pandas.DataFrame.html#pandas.DataFrame) objects into Atoti and when query results are returned as DataFrames.
* Arrow `large_string` columns are accepted on read, in addition to the existing `string` type.

#### Embedded Java runtime upgraded to Java 25

The Java runtime embedded in Atoti is now Java 25.

#### JupyterLab minimum version raised to 4.6.0

[`atoti-jupyterlab`](./api/atoti_jupyterlab#module-atoti_jupyterlab) now requires JupyterLab 4.6.0 or later.

## 0.9.14

Released on April 17, 2026.

### Summary

* [OpenTelemetry instrumentation](#opentelemetry-instrumentation)

### New features

#### OpenTelemetry instrumentation

The main functions and methods of the library emit OpenTelemetry spans.
See [`atoti_observability`](./api/atoti_observability#module-atoti_observability) for example traces.
The spans help identify where time is spent while building the data model of a [`Session`](./api/atoti.session#atoti.Session) and loading data into it.

Applications are encouraged to create their own OpenTelemetry spans around their own key operations instead of relying on primitives such as [`timeit`](https://docs.python.org/3/library/timeit.html#module-timeit).

## 0.9.13

Released on March 10, 2026.

### Summary

* [New switch mode](#new-switch-mode)
* [Distributed tracing](#distributed-tracing)
* [Cloud storage packages renamed](#cloud-storage-packages-renamed)

### New features

#### New switch mode

Pass `mode="hierarchy"` [`shift()`](./api/atoti.function.shift#atoti.shift) to drive the shift by the members of the hierarchy instead of by the values of the input measure in the query result.

#### Distributed tracing

[`atoti-observability`](./api/atoti_observability#module-atoti_observability) shows how to configure OpenTelemetry to export both the Atoti Python SDK and Atoti Server spans to the same trace.

### Improvements

#### Cloud storage packages renamed

To avoid confusion with the upcoming Atoti Intelligence plugins, the cloud storage plugins have been renamed to better reflect their purpose:

* `atoti-aws` → [`atoti-storage-aws`](./api/atoti_storage_aws#module-atoti_storage_aws)
* `atoti-azure` → [`atoti-storage-aws`](./api/atoti_storage_azure#module-atoti_storage_azure)
* `atoti-gcp` → [`atoti-storage-aws`](./api/atoti_storage_gcp#module-atoti_storage_gcp)

The old packages are still supported but using them will raise a [`FutureWarning`](https://docs.python.org/3/library/exceptions.html#FutureWarning).

## 0.9.12

Released on January 23, 2026.

### Summary

* [Parquet source offloaded to a plugin](#parquet-source-offloaded-to-a-plugin)
* [Default to query timeout defined server-side](#default-to-query-timeout-defined-server-side)

### Improvements

#### Parquet source offloaded to a plugin

The Java dependencies required to load Parquet files are heavy (tens of MBs).
To avoid bloating projects that do not use Parquet files, the support for loading Parquet files has been moved to the `atoti-parquet` plugin.
For retro-compatibility the plugin is installed by default until the next breaking release.

#### Default to query timeout defined server-side

Unless specified otherwise, [`atoti.Session.query_mdx()`](./api/atoti.Session.query_mdx#atoti.Session.query_mdx) and [`atoti.Cube.query()`](./api/atoti.Cube.query#atoti.Cube.query) will use the timeout defined in [`shared_context`](./api/atoti.Cube.shared_context#atoti.Cube.shared_context) instead of a hardcoded default of 30 seconds.

## 0.9.11

Released on December 16, 2025.

### Summary

* [Hierarchy description](#hierarchy-description)
* [Faster security configuration](#faster-security-configuration)

### New features

#### Hierarchy description

The [`atoti.Hierarchy.description`](./api/atoti.Hierarchy.description#atoti.Hierarchy.description) property allows configuring the description of a hierarchy to help end users understand its purpose.

### Improvements

#### Faster security configuration

The security configuration is kept in memory for faster access, both when editing it and when executing queries.

## 0.9.10

Released on October 31, 2025.

### Summary

* [Python 3.14](#python-3-14)

### New features

#### Python 3.14

Added support for [Python 3.14](https://docs.python.org/3/whatsnew/3.14.html).

## 0.9.9.2

Released on October 20, 2025.

Special bugfix and improvement release.
Refer to the [changelog](./changelog#id73) for more details.

## 0.9.9.1

Released on September 30, 2025.

Special bugfix and improvement release.
Refer to the [changelog](./changelog#id81) for more details.

## 0.9.9

Released on September 22, 2025.

### Summary

* [HTTP client](#http-client)
* [Custom measures](#custom-measures)
* [Spring Boot Admin](#spring-boot-admin)
* [Smarter session URL detection in JupyterLab extension](#smarter-session-url-detection-in-jupyterlab-extension)

### New features

#### HTTP client

[`atoti.Session.client`](./api/atoti.Session.client#atoti.Session.client) provides:

* [`http_client`](./api/atoti.Client.http_client#atoti.Client.http_client): an HTTP client able to make authenticated HTTP requests on Atoti Server.
* [`get_path_and_version_id()`](./api/atoti.Client.get_path_and_version_id#atoti.Client.get_path_and_version_id): a utility to get the path to a specific endpoint.

#### Custom measures

[`plugin_measure()`](./api/atoti.function.plugin_measure#atoti.plugin_measure) allows defining measures based on Java measure plugins contributed through [`extra_jars`](./api/atoti.config.session_config#atoti.SessionConfig.extra_jars).

#### Spring Boot Admin

[`Spring Boot Admin plugin`](./api/atoti_spring_boot_admin#module-atoti_spring_boot_admin) exposes a web interface to monitor resource usage, manage loggers, interact with JMX beans, and more.

### Improvements

#### Smarter session URL detection in JupyterLab extension

[`atoti.Session.link`](./api/atoti.Session.link#atoti.Session.link) and [`atoti.Session.widget`](./api/atoti.Session.widget#atoti.Session.widget) more reliably detect the URL at which they can connect to the session from the browser running JupyterLab.

## 0.9.8

Released on August 12, 2025.

### Summary

* [Proxy](#proxy)
* [Increased generated JWT key pair size](#increased-generated-jwt-key-pair-size)

### New features

#### Proxy

[`atoti.Session.proxy`](./api/atoti.Session.proxy#atoti.Session.proxy) provides a way to forward requests made to Atoti Server to another server.
This is used internally by [`atoti.Session.endpoint()`](./api/atoti.Session.endpoint#atoti.Session.endpoint).

### Improvements

#### Increased generated JWT key pair size

When [`atoti.JwtConfig.key_pair`](./api/atoti.config.security.jwt_config#atoti.JwtConfig.key_pair) is `None`, the automatically generated key pair will use 3072 bits instead of the old 2048 bits.

## 0.9.7

Released on July 01, 2025.

### Summary

* [Role-based hierarchy visibility](#role-based-hierarchy-visibility)
* [Hierarchy organization through folders](#hierarchy-organization-through-folders)
* [Pre-aggregate all measures](#pre-aggregate-all-measures)

### New features

#### Role-based hierarchy visibility

[`atoti.Hierarchy.viewers`](./api/atoti.Hierarchy.viewers#atoti.Hierarchy.viewers) can be changed to control which user can see each hierarchy in Atoti UI (or other compatible clients).

#### Hierarchy organization through folders

[`atoti.Hierarchy.folder`](./api/atoti.Hierarchy.folder#atoti.Hierarchy.folder) can be changed to indicate to Atoti UI (or other compatible clients) in which data model folder each hierarchy should be displayed.

### Improvements

#### Pre-aggregate all measures

Setting [`atoti.AggregateProvider.measures`](./api/atoti.aggregate_provider.aggregate_provider#atoti.AggregateProvider.measures) to `None` will pre-aggregate all eligible measures.

## 0.9.6

Released on May 17, 2025.

### Summary

* [Distributed data overlap](#distributed-data-overlap)
* [Distributed data rollover](#distributed-data-rollover)
* [Context manager to unlock experimental features](#context-manager-to-unlock-experimental-features)
* [Query filter on hierarchy members](#query-filter-on-hierarchy-members)
* [Dense date shift](#dense-date-shift)

### New features

#### Distributed data overlap

[`allow_data_duplication`](./api/atoti.distribution.query_cube_definition#atoti.QueryCubeDefinition.allow_data_duplication) makes it possible to have several data cubes with duplicated data.

#### Distributed data rollover

`atoti.QueryCube.unload_members_from_data_cube`, paired with the data overlap feature, can be used to move data from one cube to another seamlessly (without downtime).

#### Context manager to unlock experimental features

[`experimental()`](./api/atoti.experimental#atoti.experimental) provides granular selection of allowed experimental features.

### Improvements

#### Query filter on hierarchy members

Previously, hierarchy conditions passed to [`atoti.Cube.query()`](./api/atoti.Cube.query#atoti.Cube.query)’s *filter* parameter only accepted member paths.
This release allows passing hierarchy conditions on members too.

#### Dense date shift

[`date_shift()`](./api/atoti.function.date_shift#atoti.date_shift) has a new *dense* parameter to get values even when the input measure has no contribution on the original date.
