.. _whats_new: .. include:: substitutions.rst What's New =========== Reports ******** * 15-min products partial support * Reports not yet supported: XXX_ResultsSummary, XXX_MarketCoupling, DAM_PreMarketSummary, ISPx Load and RES Forecasts * Demand-Supply Curves parsing only utilizes 60-min duration bids and offers * XBID parsing only utilizes 15-min duration bids and offers post 01-Oct-25 * IPTO: ISP Results, ISP Unit Availabilities upgrade * HEnEx: * Support for Intraday IDA Reports * Bug fix in XXX_Results (DAM, LIDA, CRIDA) when both Buy & Sell orders present from Renewables Python ******* - Support for Python >=3.10 (including 3.13.0) Documentation ************* - Dedicated documentation page in `Read the Docs <(https://exso.readthedocs.io/en/latest/)>`_ API *** General Usage """"""""""""" * Provision of the |xlsm| high-level api, which is an excel-based GUI to install and use exso * Reports Selection and Filtering: * More intuitive and powerful filtering * You can combine multiple filters to select which reports to include, which to exclude, from which publishers, and which groups, in an intersectional manner:: exso.Updater(*args, which:str|list|None, exclude: str|list|None, publishers: str|list|None, groups: str|list|None) * Report names are now, case insensitive: * e.g. DAM_Results = dam_ReSultS = dam_results * Auto-propose similar report-names in case the inputted report name does not exist DataBase Tree Access """""""""""""""""""""" * exso Database initialization made simpler:: #old: tree = exso.Tree(*args).make_tree() #new: tree = exso.Tree(*args) * "DNA" locators are case insensitive henex.DAM_Results.DAM_Results.Results = henex.dam_results.dam_results.results * Support for shorter dna chains, if the report supports it: * If a file name is unique in the whole database, you can directly access it, without specifying the whole chain:: tree['unique_file_name'] * If a report has only a single file, you can access it quicker through the "fast forward" operator (">>"):: tree['dam_results.>>'] * In case of entering an invalid DNA, the error message will auto-suggest most similar dna chains to the one you entered. * Support for combining nodes:: tree.combine((node1, node2, ..., nodeN), **kwargs) * Support for non-exso csv files in the database * You can now use exso as an api for your own files! * Store your custom csv files :file:`exso_root_database/your_custom_folder_name` * access your files as normal exso.Nodes, and make transformations/visualizations :: tree = exso.Tree(root_base) tree['your_custom_folder_name.your_custom_file_paths'].plot(***kwargs) DataBase Node Manipulation """"""""""""""""""""""""""" * .plot() and .export() methods of Node objects *to_path* argument can be either a directory or a file: If directory, the proper file names will be auto-created. If filepath, the given filepath will be used * Added optional arguments in the Node.plot() method: * You can now enter a string for the chart’s title and ylabel * By default, a plot's title will be: . * Improved timezone handling input arguments: Now, all you need to do is leave the tz = None, or specify a string-timezone. :: #old node(start_date, end_date, tz_pipe = ['UTC', 'EET', 'None']) #new node(start_date, end_date, tz='EET', truncate_tz=True) * :ref:`Plotting ` enhancements: * Line or area chart, input argument simplification :: #old node.plot(*args, **kwargs, area=bool) #new node.plot(*args, **kwargs, kind = 'line'|'area') * node.plot allows for a transformation function input, to be applied prior to plotting * Support for plotting demand-supply market bids: .. figure:: figs/exso_demand_supply_plot.png :scale: 50 %