Improvements
Update border allocations for these borders: -
FI-NO4is flow-based -RO-BGis both explicit and implicit - Various borders in the Nordics and between the Nordics and the Continent had wrongallocations (all changed to flow-based where applicable)
Added
threshold_pctparameters for percentage-based aggregation thresholds
Improvements
- Minor improvements in the documentation for relative forecasts
- Update supported Python versions in the documentation to 3.10+
Bugfixes
- Set
price_area=Truefor areaXK
Bugfixes
- Patch
PeriodSeries.to_timeseries()due to a regression with iterator behaviour in Python versions >=3.13.1, <3.13.4
Improvements
- Add
__len__()method toTimeseriesandPeriodSeriesclasses. This allows users to use the built-inlen()function to get the number of values in a time series or period-based series.
Bugfixes
- Fix a bug in
PeriodSeries.to_timeseries()that caused a crash for python version 3.13 and above. Thank you to @igramatk for reporting this issue.
Deprecations
Deprecate method parameter
exlude_tagsand addexclude_tagsas method parameter - Deprecated parameter will be removed in the next major release - Affected methods:eq.instances.list()eq.instances.load()eq.period_instances.list()eq.period_instances.load()
Improvements
- Lower the minimum supported
frontvalue for OHLC data from1to0
Improvements
- Update the documentation with instance tag filtering in the push feed
Improvements
- Add
tagsandexclude_tagsto curve event filters, for filtering events by instance tags
Dependencies
- Unpin
websocket-clientto allow for the latest version (until next major release)
Improvements
- Minor documentation improvements
- Added support for Polars data frames conversion
- Introduced new methods:
to_pl_df()andto_polars_dataframe() - Renamed Pandas data frame conversion methods for clarity and consistency
-
to_df()→to_pd_df()(old method deprecated) -to_dataframe()→to_pandas_dataframe()(old method deprecated)
Bugfixes
- Instances from
eq.instances.list()previously had theirissuedtime parsed in the UTC timezone. This has been fixed to be parsed in the curve'sinstance_issued_timezoneif a curve object is provided to the method, otherwise (curve name) it will be parsed as a datetime with offset.
Improvements
- Add parameters
sourceandonly_subscribedtoeq.metadata.curves()for filtering by source and subscribed curves, respectively. - Update curve search documentation with examples on how to filter by source and subscribed curves.
Bugfixes
- Fix typo in
InstancesAPI.load()
Improvements
- Update border definitions
Bugfixes
- Fix a bug in
TimeseriesList.to_df()sorting in the wrong order
Dependencies
- Upgrade
python-dateutillatest from<=2.9to<2.10
Dependencies
- Upgrade
dateutillatest from 2.8 to 2.9
Improvements
- Add
issued_time_of_dayparameter toeq.instances.list(),eq.instances.load()andeq.instances.latest()for filtering instances based on issued time
Bugfixes
- Adjust date formatting in
AbsoluteResult.to_df()to be consistent with the rest of the client
Improvements
- Add
AbsoluteResult.to_df()andAbsoluteResult.to_dataframe()
Bugfixes
- The
kindparameter oneq.metadata.places()did nothing. It is now fixed.
Improvements
- Modify the
User-Agentheader to comply with standard conventions
Bugfixes
- Fix deadlock in push feed preventing the client to resubscribe after recovery from a connection loss
Improvements
- Add new border:
DK1 – GBExplicit
Bugfixes
- Remove call to
logging.basicConfig()inenergyquantified/api/events.pyas it was causing issues with the logging configuration in the client's parent application
Improvements
- Parse Instance's
createdandmodifiedin the Curve's time zone. - Add
eq.instances.rolling()for rolling forecasts
Bugfixes
- Remove code setting default log level to
DEBUG - Fix a bug introduced in v0.12 that caused parsing of curve events to fail
Improvements
- Add
PeriodInstancesAPI.relative()for relative queries - Add
modified-at-latestparameter foreq.instances.relative() - Implement absolute forecasts for instances
eq.instances.absolute() - Add
unitanddenominatorattributes toSeriesandOHLCList - Add support for unit conversion when loading data from the API
- Add
curve_typeparameter foreq.metadata.curves() - Add
Subscription,SubscriptionAccess,SubscriptionTypeandSubscriptionCollectionPermmodels - Add
Curve.subscriptionfield, providing the user with subscription information for curves - Add
User,OrganizationandAccountManagermodels - Add
UserAPIandeq.user.user()to get details of the current user
Bugfixes
- Remove unnecessary limitation from
eq.instances.relative()for parameterstime_of_day,after_time_of_dayandbefore_time_of_day
Breaking changes
- Removed
Place.area. UsePlace.areasinstead.
Improvements
- Implement
EventsAPIfor streaming events from Energy Quantified's WebSocket API (push feed). - Add timezone conversion.
- Add
thresholdparameter to define how many values are allowed to be missing while performing an aggregation.
Dependencies
- Add
websocket-clientv1.5.1 - Upgrade
requeststo minimum 2.31 due to security fixes
Bugfixes
- Fixed a bug introduced in v0.10 in
PeriodSeries.to_timeseries()
Improvements
- Add areas
ISandLU - Update borders:
- Set
SI – HUandSI – HUas Flow-based
- Set
- Increase rate limits.
- Increase default request timeout.
- Add option to include
proxiesinEnergyQuantifiedandRealtoConnection. - Add support for using periods installed capacity instead of values when
converting a
PeriodSeriesto aTimeseriesor aDataFrame.
Bugfixes
- Fixed an error where SRMC responses failed to parse empty lists in the response
Improvements
- Improve
Border.__hash__,Border.__eq__andBorder.__ne__methods - Add new areas:
MAMoroccoLYLibyaDZAlgeria
- Add new border:
SI – HUFlow-based
- Borders that no longer has commercial capacity:
LV – RUFI – RULT – RU_KGD
- Borders that have changed to flow-based:
AT – SIHR – HUCZ – DECZ – PLHU – SKPL – SKPL – DECZ – SKHU – RO
- Border updated to flowed-based and explicit:
SI – HR
Bugfixes
- When invoking
timeseries.to_dataframe(single_level_header=True)the resulting column index was still aMultiIndexbut with a single level. Now the resulting column index is a normalIndextype.
Dependencies
requests: Use the latest v2.x available, as requests is very stable library.python-dateutil: Use the latest v2.8.x available.
Improvements
- Add
eq.metadata.curve()which returns a Curve object for the corresponding curve name. - Add a section in the metadata documentation on the
eq.metadata.curve()method. - Add
eq.metadata.curves()andeq.metadata.curve()to reference page in the documentation. - Add
Area.short_tagwhich is a shorter tag thanArea.tag. It is typically used for TSO areas. Example: The area with tagDE-Amprionhas the short tagAmprion. - Changes in capacity allocation for these borders:
- AT-CZ Implicit only
- AT-HU Implicit only
- NO2-GB Implicit
- Add borders:
- RS-XK Explicit
- TR-GE Explicit
More gas data preparations.
Improvements
- Add
Place.areas(list of areas), as some places (i.e. gas interconnectors) are places on borders and should be listed for both areas. - Add three new place types:
PlaceType.GAS_STORAGE,PlaceType.GAS_LNG_TERMINALandPlaceType.GAS_INTERCONNECTOR - Add
Curve.commodity(str) which is eitherPower,Gas,Coal,Oil,CarbonorNoneat this time. - Add a
commodityfilter foreq.metadata.curves().
Deprecations
- Add
Place.areais deprecated and will eventually be replaced byPlace.areas. It will be removed in a future release.
Implementing Acer's non-standard Gas Day timezone.
Improvements
- Define new timezone in
pytzcalledEurope/Gas_Day. It follows Acer's Gas Day, which is from 06:00 – 06:00 in CET/CEST. This timezone is used for the natural gas market in the European Union. Import it withfrom energyquantified.time import GAS_DAY, or look it up inpytzlike so:pytz.timezone("Europe/Gas_Day").
Bugfixes
- When invoking
timeseries.to_dataframe(name="foo", single_level_header=True), the resulting column header in pandas' DataFrame no longer includes the instance identifier. However, the ensemble/scenario name is still appended at the end.
Improvements
- Increase rate limits.
Bugfixes
- Set
has_instances = TrueinCurveType.INSTANCE_PERIOD(wasFalse).
Improvements
- Add new area Kosovo (
Area.XK) with these borders: - XK–AL Explicit
- XK–ME Explicit
- XK–MK Explicit
- Add new area Kosovo (
- Add new border:
- NO2–GB Explicit
- Changes in capacity allocation for these borders:
- IT-Sud–GR Implict and Explicit
- BG–GR Implict and Explicit
- PL–DE Implict and Explicit
- PL–SK Implict and Explicit
- PL–CZ Implict and Explicit
- DE–CZ Implict and Explicit
- AT–CZ Implict
- AT–HU Implict
- GB–FR Explicit
- GB–BE Explicit
- GB–NL Explicit
- Remove border:
- RS–AL
Improvements
- Add
ContractPeriod.WEEKENDfor OHLC data.
Bugfixes
- Fix crashes in
Border.__str__andBorder.__repr__due to missing implementations of__lt__and__gt__in classAllocation(thanks to stanton119).
A release with lots of small improvements.
Improvements
- Add borders and parent-child relationships for the Italian price zone Calabria. The price zone has been in the client for a while, but haven't placed in the exchange neighbour list for the other price zones in Italy until now.
- Add the new parameter
single_level_headerto allto_dataframe()methods. By default, theto_dataframe()-method will createpandas.DataFrameobjects with three column headers. Whensingle_level_header=True, the client will merge all three levels into one header. The parameter defaults toFalse(to not break the old behaviour). - Remove the parameter
hhv_to_lhvfor all SRMC API operations. - Add a new class
RealtoConnection. This class is a drop-in replacement for theEnergyQuantified-class. It lets Realto users connect to the Energy Quantified's API on Realto's marketplace. - Update the documentation on how to authenticate for Realto users.
- Add a quickstart chapter for Realto users.
- Add a section in the pandas documentation on the effects of setting the
single_level_headerparameter toTrueinto_dataframe(). - Add documentation on the
fillparameter ineq.ohlc.load_delivery_as_timeseries()andeq.ohlc.load_front_as_timeseries(). - Other minor improvements in the documentation.
Breaking change
- Remove the HHV-to-LHV option for gas in the SRMC API.
Bugfixes
- Slashes (/) weren't escaped in curve names in the URL. While this didn't cause issues for Energy Quantified's API, it caused an issue while integrating the client with Realto's marketplace.
Dependencies
- Upgrade
requeststo v2.25.1.
Introducing support for short-run marginal cost (SRMC) calculations from OHLC data.
Improvements
- Add
OhlcAPI#latest_as_periods()method for generating a "forward curve" from all closing prices in a market. - Add
fillparameter toOhlcAPI#load_front_as_timeseries()andOhlcAPI#load_front_as_timeseries(). - Add
SRMCandSRMCOptionsdata classes. - Implement the SRMC API:
load_front(),load_delivery(),load_front_as_timeseries(),load_delivery_as_timeseries(),latest(), andlatest_as_periods(). - Add section in the OHLC documentation on how to load "forward curves".
- Add new chapter on SRMC in the documentation.
Bugfixes
- Fix a crash in the
ContractJSON parser that occured only for SRMC operations.
Dependencies
- Upgrade
requeststo v2.25.0.
Improvements
- Update border configurations (such as the AELGrO cable between Belgium and Germany, for instance).
Bugfixes
- Add missing area (SEM).
Bugfixes
- Fix a crash in
TimeseriesList#to_dataframe().
Improve pandas integration with more utility methods.
Improvements
Pageobjects are now immutable (for curve and place search responses).- Add
Series.set_name()to let users set a custom name for time series' and period-based series'. - Add
TimeseriesListwith ato_dataframe()method for converting a list of time series to a pandas data frame. It subclasses Python's built-in list and overrides its methods with extra validations. - Add
PeriodseriesList. Similar toTimeseriesList, it subclasses Python's list. It has two methods: (1)to_timeseries()which converts this list to aTimeseriesList, and (2)to_dataframe(frequency)which converts this list to a data frame. - Add
Periodseries#to_dataframe(frequency). Previously, you would have to first convert the period-based series to a time series and then callto_dataframe. - Update headers in pandas data frames.
- Add
OHLCList#to_dataframe()for converting OHLC data to a data frame. - Update documentation where applicable with a short description on how to convert time series, period-based series and OHLC data to data frames.
- Add own chapter on how to convert data to
pandas.DataFrame. - Add own chapter on packages and where to find the different classes and enumerators.
Breaking change
With better pandas integration, we changed column headers for data frames. As of v0.4, data frames have three column header levels for time series data:
- Curve name
- Instance or contract
- Scenario (ensemble)
We did this to better describe the data when converted from time series' to pandas data frames. Refer to the chapter on pandas integration for more details.
Introducing support for OHLC data (open, high, low, close).
Improvements
- Implement operations in the OHLC API:
load(),latest().load_delivery_as_timeseries(), andload_front_as_timeseries() - Add data and metadata classes for OHLC:
OHLCField,ContractPeriod,Product,OHLC,OHLCList, andContract. - Add member
Series#contract, which is a reference to a set by theload_*_as_timeseries()-operations. - Add documentation for OHLC.
- Add new curve data type:
DataType.SCENARIO.
Bugfixes
- Fix runtime error in
Series#name()(Seriesis superclass ofTimeseriesandPeriodseries). ValidationErrorexceptions occuring on the server-side didn't include which parameter that failed due to a bug in the JSON error message parser.
A small release with two improvements.
Improvements
- Add
Periodseries#print()method. - Increase 1-10 days-ahead constraints for relative queries to 0-10000.
The first public release of Energy Quantified's Python client. Woho!
Improvements
- Add utilities for working with date-times, frequencies, timezones and resolutions.
- Add metadata classes for areas, curves, instances, places and more.
- Add classes for time series and period-based series.
- Add wrapper around requests with rate-limiting, auto-retry on failure and authentication.
- Implement APIs for metadata, timeseries, instances, periods and period-instances.
- Add support for timeseries-to-pandas conversion.
- Add meaningful exceptions.
- Add a few examples to the git repo.
- Write tons of documentation.
Dependencies
- Add
pytz,tzlocal,python-dateutil,requests. - Not adding
pandas, as it is optional.
Bugfixes
- (None in this release, but probably introduced some!)