v2.6.1
|
• Add one estimated progress bar for API.get_data() and AsyncAPI.get_data(), covering split requests, decoding and final table assembly. The duration estimate accounts for metric families, locations, time range and the request plan. See Estimated query progress. • Keep the Jupyter widget in notebooks and the terminal bar in Python scripts. Show approximate time remaining while requests run and reach 100% only when the result is ready. The percentage is an estimate; cache hits return without an artificial wait. |
API server 16 October 2026 |
• Share valid cached data between users who have access to it, checking each caller’s current permissions before accessing the shared cache. These server improvements are deployed independently of the Python package. • Combine cached data with SQL results across overlapping time windows, locations and metrics. Extending a cached request fetches only the missing coverage from SQL. • Reuse the same cached values for equivalent explicit-metric and data-group/statistic selections, and for JSON and Parquet responses. • Invalidate affected projects and time partitions after application writes, preserving unrelated historical cache entries. Server caching is automatic; no cache=True option is needed. See Server-side caching. |
v2.6.0
|
• Prefer Parquet instead of JSON for data retrieval, improving performance without changing how you call get_data() or use its outputs. PyArrow is included; JSON fallback is supported. Use response_format="json" to request JSON explicitly. • Add optional persistent local request caching to both clients: cache=True retains successful responses for 24 hours by default. Local caching is disabled by default; start with the automatic server cache. Use force_cache_miss=True to refresh local and server entries. See Local query caching. • Use a 128 MiB estimated numeric-data budget per HTTP request, packing compatible locations together and splitting oversized requests by time. Reuse connections and bound concurrency. The budget estimates numeric data size, not compressed transfer size or memory use. • Assemble grouped JSON directly by timestamp, reducing large sparse intermediate tables; improve HTTP compression and response handling. |
v2.5.0
|
• Correct release-pipeline handling of the requested version increment and documentation publication. |
v2.4.1
|
• Add validated put_data() and patch_data() methods to both clients and the pandas accessor. See Write data for payload formats, replacement and merge behavior, and permissions. • Separate the public API and AsyncAPI facades from shared authentication, planning, execution, response and write-validation code. Keep the singular location argument as a deprecated alias for locations. See the client migration guide. |
v2.3.0
|
• Improve multi-location retrieval, query splitting and deterministic assembly of responses across location and timestamp windows. • Normalize API base URLs and correct location handling during data requests. |
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 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 |
v2.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, and restrict it only on the fatigue extra |
v1.4.1
|
• Loosen the dependency on 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 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 |
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-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 |