Releases: Tideseed/eptr2
v1.3.7 - New Ceiling Price, New Cost Functions, Bulk DPP/KGUP Composite Function
This version is accelerated a bit ahead of schedule due to new day ahead and imbalance prices being increased to 4500 TL/MWh*.
- New price floor and ceiling prices [0,4500] are defined at
contract_to_floor_ceil_prices. This part is important because contract/datetime sensitive cost functions use this function to determine ceiling prices (you can override). - Two new cost functions are added:
calculate_unit_price_and_costs_by_datetimeandcalculate_diff_costs_by_datetime. They are wrappers aroundcalculate_unit_price_and_costs_by_contract,calculate_diff_costs_by_contract.include_dynamic_floor_ceilparameter is also set toTrueas default value. - A new composite function for bulk KGUP/DPP calls is added:
get_kgup_bulk_range. You can now get bulk KGUP calls in a time range. You can see an example below.
## You must have EPTR_USERNAME and EPTR_PASSWORD defined in your `.env` file
from eptr2.composite import get_kgup_bulk_range
df = get_kgup_bulk_range(
start_date="2026-04-01",
end_date="2026-04-03",
uevcb_ids=[3204384, 3204385], ## BOZCAADA RES, BOZCAADA RES2
verbose=True,
)* Official announcement on April 2, starting from April 4 but effective from April 3 (due to "day ahead" prices being determined on the previous day)
v.1.3.6 - Under the Hood Changes and Ancillary Composite Function
This release is intended to bolster the repository's inner workings and to increase its capabilities and convenience of use.
- Logger is used instead of print in many parts
- Skills, Agents.md and other parts are refreshed
- A new composite function (
get_ancillary_reserve_data) to call all ancillary services data (PFK/SFK reserve amounts and prices) - Metadata improvements and project links
- Added a changelog.md
from eptr2.composite import get_ancillary_reserve_data
df = get_ancillary_reserve_data(
start_date="2026-01-01",
end_date="2026-01-02",
verbose=True,
)v1.3.5 - Better Portfolio Costs and improved imbalance pricing
This version is focused on easier portfolio cost calculations with a seriously improved portfolio cost calculation function. There is now reduced amount of information required (even fewer under some conditions), more calculations and comparisons such as "before portfolio" and "after portfolio" with advantages reported. The function is still in progress but this version is quite helpful.
See the example file for a fully reproducible code snippet.
There are several changes on the costs functions as well. Under current regulations it is not always possible to obtain correct positive and negative imbalance prices when MCP and SMP are equal. This is mainly due to system balance cannot be directly observed when MCP == SMP. So, in new functions system direction can be given as a parameter (-1 for negative imbalance, 0 for balanced and 1 for positive imbalance). If not provided the function will infer the system direction from MCP and SMP. Contradictory inputs (e.g. MCP > SMP but negative imbalance) will be overridden by the function with a warning. As a possible breaking change, ambiguous "pos" and "neg" labels are changed to "pos_imb_price" / "neg_imb_price" and "unit_pos_imb_cost" / "unit_neg_imb_cost" wherever applicable.
There are infrastructure changes as well. One significant change is now retries on timeout are at the core of the calls instead of composite functions. There are several other minor fixes and improvements as well.
v1.3.4 - Reorganization, Portfolio Costs Composite Function
This version includes a set of connected composite functions around portfolio cost calculations.
- Now with the aggregators, portfolio costs are increasingly important.
calculate_portfolio_costsundercompose.plant_costshandles this automatically with a given id dataframe (id_df) as input. Template ofid_dfcan be gathered fromcreate_template_id_df. Both functions have explicity export to excel functionalites. - You need a set of ids to get
calculate_portfolio_costs. You can get all relevant ID lists fromget_all_important_idsfunctions with excel export attribute. - A new cost function
calculate_diff_costs_by_contractis added to make it easier to calculate costs. - There are some minor and major fixes. It is worth to mention that
calculate_unit_imbalance_price_2026had a little bug when mcp==smp and neither of them were at the extremes. - Added a documentation page generated by AI. You can reach it from https://tideseed.github.io/eptr2/
- Added more unit tests with new functions and functionalities
v1.3.3 - Cost Functions Update, Breaking Changes, Improvements and Fixes
Starting from version 1.3.3 to 1.4.0 expect breaking changes as we are having an early spring cleaning on eptr2 for improved performance and compatibility with AI agents.
recycle_tgtis notTrueby default. We encourage you to use the .env approach.- Thanks to new recycling methodology, composite functions no longer need eptr2 object strictly as an input.
- Cost functions went under serious update. In order to make them compatible between distinct regulation periods (currently 2025 and 2026) automatically we added multiple wrapper functions both by indicating directly the regulation period and implied by contract. Deprecated a lot of old code to be removed by 1.4.0.
- Changed composite functions as well. There might be breaking changes here, too.
- Added tests for cost functions, composite functions.
- Some interim fixes and improvements.
v1.3.2 - Agent Skills, Cost Functions Update and New Time Function
eptr2is following the latest AI trends and in this version we include Agent Skills. See here on how to enable them on VS Code. (Experimental)- Some cost function changes and name deprecations due to the finalization of relevant regulations. More information and better functions will come in the next version.
- A new time function
contract_open_timeis added to the time functions.
v1.3.1 - Minor Release
This is a minor release with some fixes.
- Tutorials are out of the package now, because of emojis included in file names not agreeing with some systems (just to be safe).
- Added new time function
date_str_to_contractand added documentation to time functions. - TGT operations now come with timeout and improvements in TGT recycling
- Some additional information in the README.md
v1.3.0 - AI Preview and ID Composite Function
This is a major version update mainly because of the new AI capabilities of eptr2.
- MCP Server (fastMCP based) is added to be used with Claude Desktop, Cursor or other compatible AI.
- Lots of documents (e.g. AGENTS.md), examples and explanations are added for LLMs and AI agents to correctly assume knowledge of the library.
- A new composite function to get organization and UEVCB ids belonging to different periods. Also a lot of supplementary functions.
## Make sure you have a .env file in the project folder with EPTR_USERNAME and EPTR_PASSWORD keys and respective values
from eptr2.composite import get_multiperiod_generation_org_and_uevcb_wrapper
res_df = get_multiperiod_generation_org_and_uevcb_wrapper(
start_date="2025-06-01", end_date="2025-08-30", verbose=True
)Alternatively
from eptr2.composite import get_multiperiod_generation_org_and_uevcb_wrapper
from eptr2 import EPTR2
eptr = EPTR2(username="EPTR_USERNAME", password="EPTR_PASSWORD")
res_df = get_multiperiod_generation_org_and_uevcb_wrapper(
start_date="2025-06-01", end_date="2025-08-30", verbose=True, eptr=eptr
)v1.2.4 - [CRITICAL] Authentication Method Changes
This update is a CRITICAL update due to authentication method changes. Authentication (TGT calling) method is changed by EPIAS, so this version reflects the changes. It will be less likely to authorize (get TGT) with the previous versions.
v1.2.3 - Improved Authentication Method
Improved EPTR2 object creation and and authentication with environment file (".env") (enabled by default) and TGT recycling (not enabled by default) for multi-use without carrying EPTR2 objects around.
Details of this new authentication method.