```{raw} html
```
# Release notes
| Version | Changelog |
|---|---|
| `v2.2.1` | • Add support for `PUT`, `PATCH`, and `DELETE` requests in both the sync and async data retrieval APIs. This enhancement allows users to perform a wider range of operations on the API, such as updating existing data or deleting resources, in addition to retrieving data with `GET` requests. Currently `get_data` method is only tested with `GET` and `POST`, but the underlying request handling functions have been updated to support all the mentioned HTTP methods. `POST` is default to get data without the URI length limitations, but users can now specify the method they want to use when making requests to the API. |
| | • Bugfix for the `location` parameter in `handle_request_async` and `handle_request_sync` utility functions. Now the `location` parameter is correctly passed to the API when making requests, ensuring that the AiPI requests can properly perform inference on specific locations as intended. This fix resolves issues where the `location` parameter was not being correctly handled, leading to error 500s when making AiPI requests with specific locations. |
| | • Revamp documentation according to diàtaxis principles, with a more structured and user-friendly layout. The documentation now includes a clear separation between tutorials, how-to guides, and explanations of the architecture, making it easier for users to find the information they need. Additionally, the documentation has been enriched with more examples, detailed explanations, and interactive elements to enhance the learning experience for users of all levels. |
| `v2.2.0` | • Refactor API and AsyncAPI methods to embrace the new API behavior, allowing for multi-location request in the same request. This change does not imply a breaking change in the API of the package, as the refactor is internal and the public methods remain unchanged. Moreover, old functionality is kept as deprecated. However, it allows for better performance and efficiency when making requests to the API, as multiple locations can now be queried in a single request. |
| | • Add an optional `method` parameter to the sync and async data-retrieval APIs, allowing `GET`, `POST`, `PUT`, `PATCH`, and `DELETE` requests while keeping `GET` as the default. |
| | • Add non-blocking Pyodide loading in the interactive example, allowing the user to interact with the page while Pyodide is loading in the background. This change improves the user experience by reducing the initial loading time and allowing users to start exploring the documentation and examples without having to wait for Pyodide to load completely. |
| | • Add notebooks with examples in the Sphinx documentation via the [nbsphinx](https://nbsphinx.readthedocs.io/en/0.8.2/) extension. |
| | • Add `force_cache_miss` parameter to the `get_data` method of both the core API and the datasignals accessor. This parameter allows users to bypass any cache in the API and perform a fresh hit to the database, which can be useful in scenarios where data is frequently updated or when users want to ensure they are working with the most recent data. |
| | • Add tests for the above changes |
| `v2.1.6 ← v2.1.5` | • Increase maximum supported python version from 3.11 to 3.13 |
| | • Update pyodide version (`0.29.0 ← 0.27.4`) in interactive notebook |
| `v2.1.4 ← v2.1.1` | • Improve behavior of `api_24sea.utils.estimate_chunk_size` to better handle edge cases |
| | • Handle tqdm when running in Jupyter notebooks or other interactive environments |
| | • Add tests for the above changes |
| | • Increase test coverage |
| `v2.1.1` | • Add `calendarmonth` availability to the `api_24sea.datasignals.core.API.get_availability` endpoint. This allows users to retrieve availability data aggregated by calendar month. |
| | • Add tests for the above change |
| `v2.1.0` | • Add `HTTPError` exception to catch all httpx-related errors |
| | • Improve HTTP error handling in both core API and datasignals accessor |
| | • Add tests for the above changes |
| | • Add `utils.handle_request_async` `method` to handle requests other than GET. Currently used by the `ai` extension |
| `v3.0.3 ← v2.0.0` | • Move `api_24sea.core.API` to `api_24sea.datasignals.core.API`, hence allowing multiple API classes, e.g. from the ai or annotations extensions. |
| `v1.7.0` | • Add `api_24sea.core.API.get_availability` endpoint to check availability of resources |
| `v1.6.1 ← v1.6.0` | • Add `api_24sea.core.API.get_stats` endpoint to get 10-minute metrics statistics |
| | • Add `api_24sea.core.API.get_stats_predefined_intervals` endpoint |
| | • Add `api_24sea.core.API.get_oldest_timestamp` endpoint |
| `v1.5.19 ← v1.5.14` | • Source code and pipelines migration to Bitbucket Cloud |
| `v1.5.13` | • Add error message when invalid sites/locations/metrics combos are requested |
| `v1.5.12 ← v1.5.7` | • Pipeline: CICD now orchestrates CI and DOCS pipelines |
| | • Fix logging level in get_data |
| | • Fix bug in get_data when as_star_schema is True |
| | • Add smart chunking to get_data when the forecasted query size exceeds 10 MB |
| `v1.5.6` | • Tests: Change test metrics normalization |
| | • Metrics: Allow underscore in regex |
| `v1.5.5` | • Add max workers/threads for parallel API requests |
| `v1.5.4` | • Fix Python version/classifiers in pyproject |
| `v1.5.3` | • Add timeout param in core.API.get_data (httpx-sync) |
| | • Increase default timeout (httpx-sync) |
| `v1.5.2` | • Docs: Add recursive GET button, bending moments, vibration dims |
| `v1.5.1` | • Add sample dashboard to the documentation |
| | • Fix remaining imports of the requests library |
| | • Reset API base URL from dev to prod address |
| `v1.5.0` | • Add support to the httpx library in favor of requests. Add async support |
| | • Adapt the interactive example to the new httpx-dependent environment |
| `v1.4.21` | • Full fix matplotlib + matplotlib pyodide compatibility in interactive example |
| | • Set pyodide version to stable |
| `v1.4.20` | • Add a retry strategy to overcome temporary server unavailability (502 Bad gateway) |
| | • Partial fix matlab incompatibility in interactive example |
| `v1.4.19 ← v1.4.17` | • Fix misplaced dependencies broke pyodide env |
| | • Add the possibility to unselect "convert_object_columns_to_string" option |
| | • Adapt CICD to new pyproject.toml |
| `v1.4.16` | Migration to full uv/flit-core project |
| `v1.4.15` | Add multiple API authentication environment variable prefixes. Now the API can authenticate using the following environment variables: (`24SEA_API_USERNAME`, `24SEA_API_PASSWORD`), (`API_24SEA_USERNAME`, `API_24SEA_PASSWORD`), (`TWOFOURSEA_API_USERNAME`, `TWOFOURSEA_API_PASSWORD`), (`API_TWOFOURSEA_USERNAME`, `API_TWOFOURSEA_PASSWORD`) |
| `v1.4.14 – v1.4.13` | • Coerce return type of column `value` in `api_24sea.core.to_star_schema` `FactData` table to float, and convert all non-numeric values to NaN |
| | • In the `api_24sea.core.to_star_schema` `FactPivotData` table, convert all JSON columns to string for SQL compatibility |
| | • Add tests for the above changes |
| `v1.4.12 ← v1.4.11` | • Edit `api_24sea.utils.parse_timestamp` to test for additional timestamp formats that can be support by older versions of pandas |
| | • Using older version of pandas also implies an additional fix to `api_24sea.core.to_category_value` |
| `v1.4.10 ← v1.4.5` | • Fix bug in `get_data` that makes the site and location parameters fully case insensitive |
| | • `24sea_api.core.API().authenticate()` method now returns `self` to allow method chaining |
| | • `24sea_api.DataSignals().authenticate()` method now returns `self._obj` (`pandas.DataFrame`) to allow method chaining |
| | • Try to still load data when timestamp format is invalid by using the `format="mixed"` option in the `DataSignals.get_data()` method |
| `v1.4.4` | Fix bug in `to_star_schema` function for `FactPivotData`. Add related tests |
| `v1.4.3` | Add fallback to single-threaded mode when a RuntimeError is raised by the `concurrent.futures` module |
| `v1.4.2` | Loosen the dependency on [numpy](https://pypi.org/project/numpy/), and restrict it only on the `fatigue` extra |
| `v1.4.1` | Loosen the dependency on [pydantic](https://pypi.org/project/pydantic/) to allow the use of both V1 and V2 |
| `v1.4.0` | • Remove option `as_star_schema` from datasignals accessor to preserve consistency between function output and dataframe content. Now star schema output can be obtained by importing `to_star_schema` function from the `api_24sea.core` module, and passing the dataframe and metrics_overview as argument |
| | • Rename `outer_join_on_timestamp` to `split_by_location` in the `api_24sea.datasignals.DataSignals.get_data()` method |
| | • Improve lazy authentication behavior for both the core API and the datasignals accessor |
| `v1.3.0` | Add option `metrics="all"` to get all metrics available in the API for a specific site and location |
| `v1.2.0` | Add `FactPivotData` table to the star schema |
| `v1.1.0` | Add get data as star schema feature. This feature allows to get data in a [star schema](https://en.wikipedia.org/wiki/Star_schema) format, where Dimensions are DimWindFarm, DimCalendar, DimDataGroup, DimMetric, and the Fact table is the DataFrame with the data |
| `v1.0.0` | Add data normalization feature |
| `v0.11.1` | Update the README to reflect the latest changes |
| `v0.11.0` | Add `_auto_authenticate` method when `24SEA_API_USERNAME` and `24SEA_API_PASSWORD` are loaded and / or available in the system |
| `v0.10.0` | Update dependency to latest version of [shorthand_datetime](https://pypi.org/project/shorthand-datetime/) |
| `v0.9.3` | Change project's documentation homepage |
| `v0.9.2` | Add test to core API |
| `v0.9.1` | Make `drop_site`, `drop_location` parameters optional in `DataSignals.get_data()` |
| `v0.9.0` | Add core API to the package so that data now can also be retrieved without instantiating a `DataFrame`. Useful for third-party apps integration |
| `v0.8.2` | Change metrics overview `DataFrame` index for better compatibility with third-party apps |
| `v0.8.1` | Increase test coverage |
| `v0.8.0` | Add [shorthand_datetime package](https://pypi.org/project/shorthand-datetime/)-compatible timestamp formats |
| `v0.7.1 – v0.7.6` | Add CICD pipeline |
| `v0.7.0` | Refactor `DataSignals.get_data()` internal architecture |
| `v0.6.0` | Add site and location casting to str when parsing |
| `v0.5.0` | Add fatigue extra for analyzing cycle-count metrics |
| `v0.4.1-beta1` | Rename a backlog to release notes |
| `v0.4.1` | Bugfix in DataSignals.authenticate() method to get always `site_id` and `location_id` |
| `v0.4.0` | Add DataSignals.as_dict() method and move exceptions to dedicated module |
| `v0.3.1` | Minor bugfix |
| `v0.3.0` | Convert automatically `DataFrame` index to `DateTimeIndex` when the attribute `outer_join_on_timestamp=True` in `DataSignals.get_data()` class |
| `v0.2.2 – v0.2.4` | Relax requirements |
| `v0.2.1` | Add documentation |
| `v0.2.0` | Add support for Python 3.8 onwards |
| `v0.1.0` | Initial release |