openstef 3.4.18__py3-none-any.whl → 3.4.20__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- openstef/app_settings.py +5 -3
 - openstef/exceptions.py +1 -1
 - openstef/monitoring/teams.py +3 -0
 - openstef/tasks/calculate_kpi.py +6 -4
 - openstef/tasks/create_basecase_forecast.py +8 -3
 - openstef/tasks/create_components_forecast.py +8 -3
 - openstef/tasks/create_forecast.py +5 -2
 - {openstef-3.4.18.dist-info → openstef-3.4.20.dist-info}/METADATA +28 -35
 - {openstef-3.4.18.dist-info → openstef-3.4.20.dist-info}/RECORD +12 -12
 - {openstef-3.4.18.dist-info → openstef-3.4.20.dist-info}/LICENSE +0 -0
 - {openstef-3.4.18.dist-info → openstef-3.4.20.dist-info}/WHEEL +0 -0
 - {openstef-3.4.18.dist-info → openstef-3.4.20.dist-info}/top_level.txt +0 -0
 
    
        openstef/app_settings.py
    CHANGED
    
    | 
         @@ -9,9 +9,11 @@ from pydantic_settings import BaseSettings, SettingsConfigDict 
     | 
|
| 
       9 
9 
     | 
    
         
             
            class AppSettings(BaseSettings):
         
     | 
| 
       10 
10 
     | 
    
         
             
                """Global app settings."""
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                # Logging settings.
         
     | 
| 
       13 
     | 
    
         
            -
                log_level: str = Field("INFO", description="Log level used for logging statements.")
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
12 
     | 
    
         
             
                model_config = SettingsConfigDict(
         
     | 
| 
       16 
13 
     | 
    
         
             
                    env_prefix="openstef_", env_file=".env", extra="ignore"
         
     | 
| 
       17 
14 
     | 
    
         
             
                )
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                post_teams_messages: bool = True
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                # Logging settings.
         
     | 
| 
      
 19 
     | 
    
         
            +
                log_level: str = Field("INFO", description="Log level used for logging statements.")
         
     | 
    
        openstef/exceptions.py
    CHANGED
    
    
    
        openstef/monitoring/teams.py
    CHANGED
    
    
    
        openstef/tasks/calculate_kpi.py
    CHANGED
    
    | 
         @@ -72,6 +72,8 @@ def check_kpi_task( 
     | 
|
| 
       72 
72 
     | 
    
         
             
                context: TaskContext,
         
     | 
| 
       73 
73 
     | 
    
         
             
                start_time: datetime,
         
     | 
| 
       74 
74 
     | 
    
         
             
                end_time: datetime,
         
     | 
| 
      
 75 
     | 
    
         
            +
                threshold_optimizing=THRESHOLD_OPTIMIZING,
         
     | 
| 
      
 76 
     | 
    
         
            +
                threshold_retraining=THRESHOLD_RETRAINING,
         
     | 
| 
       75 
77 
     | 
    
         
             
            ) -> None:
         
     | 
| 
       76 
78 
     | 
    
         
             
                # Apply default parameters if none are provided
         
     | 
| 
       77 
79 
     | 
    
         
             
                if start_time is None:
         
     | 
| 
         @@ -102,20 +104,20 @@ def check_kpi_task( 
     | 
|
| 
       102 
104 
     | 
    
         | 
| 
       103 
105 
     | 
    
         
             
                # Add pid to the list of pids that should be retrained or optimized if
         
     | 
| 
       104 
106 
     | 
    
         
             
                # performance is insufficient
         
     | 
| 
       105 
     | 
    
         
            -
                if kpis["47.0h"]["rMAE"] >  
     | 
| 
      
 107 
     | 
    
         
            +
                if kpis["47.0h"]["rMAE"] > threshold_retraining:
         
     | 
| 
       106 
108 
     | 
    
         
             
                    context.logger.warning(
         
     | 
| 
       107 
109 
     | 
    
         
             
                        "Need to retrain model, retraining threshold rMAE 47h exceeded",
         
     | 
| 
       108 
110 
     | 
    
         
             
                        t_ahead="47.0h",
         
     | 
| 
       109 
111 
     | 
    
         
             
                        rMAE=kpis["47.0h"]["rMAE"],
         
     | 
| 
       110 
     | 
    
         
            -
                        retraining_threshold= 
     | 
| 
      
 112 
     | 
    
         
            +
                        retraining_threshold=threshold_retraining,
         
     | 
| 
       111 
113 
     | 
    
         
             
                    )
         
     | 
| 
       112 
114 
     | 
    
         | 
| 
       113 
     | 
    
         
            -
                if kpis["47.0h"]["rMAE"] >  
     | 
| 
      
 115 
     | 
    
         
            +
                if kpis["47.0h"]["rMAE"] > threshold_optimizing:
         
     | 
| 
       114 
116 
     | 
    
         
             
                    context.logger.warning(
         
     | 
| 
       115 
117 
     | 
    
         
             
                        "Need to optimize hyperparameters, optimizing threshold rMAE 47h exceeded",
         
     | 
| 
       116 
118 
     | 
    
         
             
                        t_ahead="47.0h",
         
     | 
| 
       117 
119 
     | 
    
         
             
                        rMAE=kpis["47.0h"]["rMAE"],
         
     | 
| 
       118 
     | 
    
         
            -
                        optimizing_threshold= 
     | 
| 
      
 120 
     | 
    
         
            +
                        optimizing_threshold=threshold_optimizing,
         
     | 
| 
       119 
121 
     | 
    
         
             
                    )
         
     | 
| 
       120 
122 
     | 
    
         | 
| 
       121 
123 
     | 
    
         | 
| 
         @@ -32,7 +32,10 @@ T_AHEAD_DAYS: int = 14 
     | 
|
| 
       32 
32 
     | 
    
         | 
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
            def create_basecase_forecast_task(
         
     | 
| 
       35 
     | 
    
         
            -
                pj: PredictionJobDataClass, 
     | 
| 
      
 35 
     | 
    
         
            +
                pj: PredictionJobDataClass,
         
     | 
| 
      
 36 
     | 
    
         
            +
                context: TaskContext,
         
     | 
| 
      
 37 
     | 
    
         
            +
                t_behind_days=T_BEHIND_DAYS,
         
     | 
| 
      
 38 
     | 
    
         
            +
                t_ahead_days=T_AHEAD_DAYS,
         
     | 
| 
       36 
39 
     | 
    
         
             
            ) -> None:
         
     | 
| 
       37 
40 
     | 
    
         
             
                """Top level task that creates a basecase forecast.
         
     | 
| 
       38 
41 
     | 
    
         | 
| 
         @@ -41,6 +44,8 @@ def create_basecase_forecast_task( 
     | 
|
| 
       41 
44 
     | 
    
         
             
                Args:
         
     | 
| 
       42 
45 
     | 
    
         
             
                    pj: Prediction job
         
     | 
| 
       43 
46 
     | 
    
         
             
                    context: Contect object that holds a config manager and a database connection
         
     | 
| 
      
 47 
     | 
    
         
            +
                    t_behind_days: number of days included as history. This is used to generated lagged features for the to-be-forecasted period
         
     | 
| 
      
 48 
     | 
    
         
            +
                    t_ahead_days: number of days a basecase forecast is created for
         
     | 
| 
       44 
49 
     | 
    
         | 
| 
       45 
50 
     | 
    
         
             
                """
         
     | 
| 
       46 
51 
     | 
    
         
             
                # Check pipeline types
         
     | 
| 
         @@ -63,8 +68,8 @@ def create_basecase_forecast_task( 
     | 
|
| 
       63 
68 
     | 
    
         
             
                    return
         
     | 
| 
       64 
69 
     | 
    
         | 
| 
       65 
70 
     | 
    
         
             
                # Define datetime range for input data
         
     | 
| 
       66 
     | 
    
         
            -
                datetime_start = datetime.utcnow() - timedelta(days= 
     | 
| 
       67 
     | 
    
         
            -
                datetime_end = datetime.utcnow() + timedelta(days= 
     | 
| 
      
 71 
     | 
    
         
            +
                datetime_start = datetime.utcnow() - timedelta(days=t_behind_days)
         
     | 
| 
      
 72 
     | 
    
         
            +
                datetime_end = datetime.utcnow() + timedelta(days=t_ahead_days)
         
     | 
| 
       68 
73 
     | 
    
         | 
| 
       69 
74 
     | 
    
         
             
                # Retrieve input data
         
     | 
| 
       70 
75 
     | 
    
         
             
                input_data = context.database.get_model_input(
         
     | 
| 
         @@ -43,7 +43,10 @@ T_AHEAD_DAYS = 3 
     | 
|
| 
       43 
43 
     | 
    
         | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
45 
     | 
    
         
             
            def create_components_forecast_task(
         
     | 
| 
       46 
     | 
    
         
            -
                pj: PredictionJobDataClass, 
     | 
| 
      
 46 
     | 
    
         
            +
                pj: PredictionJobDataClass,
         
     | 
| 
      
 47 
     | 
    
         
            +
                context: TaskContext,
         
     | 
| 
      
 48 
     | 
    
         
            +
                t_behind_days: int = T_BEHIND_DAYS,
         
     | 
| 
      
 49 
     | 
    
         
            +
                t_ahead_days: int = T_AHEAD_DAYS,
         
     | 
| 
       47 
50 
     | 
    
         
             
            ) -> None:
         
     | 
| 
       48 
51 
     | 
    
         
             
                """Top level task that creates a components forecast.
         
     | 
| 
       49 
52 
     | 
    
         | 
| 
         @@ -52,6 +55,8 @@ def create_components_forecast_task( 
     | 
|
| 
       52 
55 
     | 
    
         
             
                Args:
         
     | 
| 
       53 
56 
     | 
    
         
             
                    pj: Prediction job
         
     | 
| 
       54 
57 
     | 
    
         
             
                    context: Contect object that holds a config manager and a database connection
         
     | 
| 
      
 58 
     | 
    
         
            +
                    t_behind_days: number of days in the past that the component forecast is created for
         
     | 
| 
      
 59 
     | 
    
         
            +
                    t_ahead_days: number of days in the future that the component forecast is created for
         
     | 
| 
       55 
60 
     | 
    
         | 
| 
       56 
61 
     | 
    
         
             
                Raises:
         
     | 
| 
       57 
62 
     | 
    
         
             
                    ComponentForecastTooShortHorizonError: If the forecast horizon is too short
         
     | 
| 
         @@ -71,8 +76,8 @@ def create_components_forecast_task( 
     | 
|
| 
       71 
76 
     | 
    
         
             
                    return
         
     | 
| 
       72 
77 
     | 
    
         | 
| 
       73 
78 
     | 
    
         
             
                # Define datetime range for input data
         
     | 
| 
       74 
     | 
    
         
            -
                datetime_start = datetime.utcnow() - timedelta(days= 
     | 
| 
       75 
     | 
    
         
            -
                datetime_end = datetime.utcnow() + timedelta(days= 
     | 
| 
      
 79 
     | 
    
         
            +
                datetime_start = datetime.utcnow() - timedelta(days=t_behind_days)
         
     | 
| 
      
 80 
     | 
    
         
            +
                datetime_end = datetime.utcnow() + timedelta(days=t_ahead_days)
         
     | 
| 
       76 
81 
     | 
    
         | 
| 
       77 
82 
     | 
    
         
             
                logger.info(
         
     | 
| 
       78 
83 
     | 
    
         
             
                    "Get predicted load", datetime_start=datetime_start, datetime_end=datetime_end
         
     | 
| 
         @@ -34,7 +34,9 @@ from openstef.validation.validation import detect_ongoing_zero_flatliner 
     | 
|
| 
       34 
34 
     | 
    
         
             
            T_BEHIND_DAYS: int = 14
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
            def create_forecast_task( 
     | 
| 
      
 37 
     | 
    
         
            +
            def create_forecast_task(
         
     | 
| 
      
 38 
     | 
    
         
            +
                pj: PredictionJobDataClass, context: TaskContext, t_behind_days: int = T_BEHIND_DAYS
         
     | 
| 
      
 39 
     | 
    
         
            +
            ) -> None:
         
     | 
| 
       38 
40 
     | 
    
         
             
                """Top level task that creates a forecast.
         
     | 
| 
       39 
41 
     | 
    
         | 
| 
       40 
42 
     | 
    
         
             
                On this task level all database and context manager dependencies are resolved.
         
     | 
| 
         @@ -45,6 +47,7 @@ def create_forecast_task(pj: PredictionJobDataClass, context: TaskContext) -> No 
     | 
|
| 
       45 
47 
     | 
    
         
             
                Args:
         
     | 
| 
       46 
48 
     | 
    
         
             
                    pj: Prediction job
         
     | 
| 
       47 
49 
     | 
    
         
             
                    context: Contect object that holds a config manager and a database connection
         
     | 
| 
      
 50 
     | 
    
         
            +
                    t_behind_days: number of days included as history. This is used to generated lagged features for the to-be-forecasted period
         
     | 
| 
       48 
51 
     | 
    
         | 
| 
       49 
52 
     | 
    
         
             
                """
         
     | 
| 
       50 
53 
     | 
    
         
             
                # Check pipeline types
         
     | 
| 
         @@ -70,7 +73,7 @@ def create_forecast_task(pj: PredictionJobDataClass, context: TaskContext) -> No 
     | 
|
| 
       70 
73 
     | 
    
         
             
                mlflow_tracking_uri = context.config.paths_mlflow_tracking_uri
         
     | 
| 
       71 
74 
     | 
    
         | 
| 
       72 
75 
     | 
    
         
             
                # Define datetime range for input data
         
     | 
| 
       73 
     | 
    
         
            -
                datetime_start = datetime.utcnow() - timedelta(days= 
     | 
| 
      
 76 
     | 
    
         
            +
                datetime_start = datetime.utcnow() - timedelta(days=t_behind_days)
         
     | 
| 
       74 
77 
     | 
    
         
             
                datetime_end = datetime.utcnow() + timedelta(seconds=pj.horizon_minutes * 60)
         
     | 
| 
       75 
78 
     | 
    
         | 
| 
       76 
79 
     | 
    
         
             
                # Retrieve input data
         
     | 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Metadata-Version: 2.1
         
     | 
| 
       2 
2 
     | 
    
         
             
            Name: openstef
         
     | 
| 
       3 
     | 
    
         
            -
            Version: 3.4. 
     | 
| 
      
 3 
     | 
    
         
            +
            Version: 3.4.20
         
     | 
| 
       4 
4 
     | 
    
         
             
            Summary: Open short term energy forecaster
         
     | 
| 
       5 
5 
     | 
    
         
             
            Home-page: https://github.com/OpenSTEF/openstef
         
     | 
| 
       6 
6 
     | 
    
         
             
            Author: Alliander N.V
         
     | 
| 
         @@ -41,9 +41,11 @@ SPDX-FileCopyrightText: 2017-2023 Contributors to the OpenSTEF project <korte.te 
     | 
|
| 
       41 
41 
     | 
    
         
             
            SPDX-License-Identifier: MPL-2.0
         
     | 
| 
       42 
42 
     | 
    
         
             
            -->
         
     | 
| 
       43 
43 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
            [](https://pepy.tech/project/openstef)
         
     | 
| 
      
 47 
     | 
    
         
            +
            [](https://pepy.tech/project/openstef)
         
     | 
| 
      
 48 
     | 
    
         
            +
            [](https://bestpractices.coreinfrastructure.org/projects/5585)
         
     | 
| 
       47 
49 
     | 
    
         
             
            <!-- SonarCloud badges -->
         
     | 
| 
       48 
50 
     | 
    
         
             
            [](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
         
     | 
| 
       49 
51 
     | 
    
         
             
            [](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
         
     | 
| 
         @@ -54,11 +56,6 @@ SPDX-License-Identifier: MPL-2.0 
     | 
|
| 
       54 
56 
     | 
    
         
             
            [](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
         
     | 
| 
       55 
57 
     | 
    
         
             
            [](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
         
     | 
| 
       56 
58 
     | 
    
         
             
            [](https://sonarcloud.io/dashboard?id=OpenSTEF_openstef)
         
     | 
| 
       57 
     | 
    
         
            -
            [](https://bestpractices.coreinfrastructure.org/projects/5585)
         
     | 
| 
       58 
     | 
    
         
            -
            [](https://pepy.tech/project/openstef)
         
     | 
| 
       59 
     | 
    
         
            -
            [](https://pepy.tech/project/openstef)
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
     | 
    
         
            -
            # OpenSTEF
         
     | 
| 
       62 
59 
     | 
    
         | 
| 
       63 
60 
     | 
    
         
             
            OpenSTEF is a Python package designed for generating short-term forecasts in the energy sector. The repository includes all the essential components required for machine learning pipelines that facilitate the forecasting process. To utilize the package, users are required to furnish their own data storage and retrieval interface.
         
     | 
| 
       64 
61 
     | 
    
         | 
| 
         @@ -66,26 +63,22 @@ OpenSTEF is a Python package designed for generating short-term forecasts in the 
     | 
|
| 
       66 
63 
     | 
    
         
             
            - [OpenSTEF](#openstef)
         
     | 
| 
       67 
64 
     | 
    
         
             
            - [Table of contents](#table-of-contents)
         
     | 
| 
       68 
65 
     | 
    
         
             
            - [External information sources](#external-information-sources)
         
     | 
| 
       69 
     | 
    
         
            -
            - [Installation](# 
     | 
| 
       70 
     | 
    
         
            -
              - [Install the openstef package](#install-the-openstef-package)
         
     | 
| 
       71 
     | 
    
         
            -
                - [Remark regarding installation within a **conda environment on Windows**:](#remark-regarding-installation-within-a-conda-environment-on-windows)
         
     | 
| 
      
 66 
     | 
    
         
            +
            - [Installation](#install)
         
     | 
| 
       72 
67 
     | 
    
         
             
            - [Usage](#usage)
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
              - [Contact](#contact)
         
     | 
| 
      
 68 
     | 
    
         
            +
                - [Example notebooks](#example-notebooks)
         
     | 
| 
      
 69 
     | 
    
         
            +
                - [Reference Implementation](#reference-implementation)
         
     | 
| 
      
 70 
     | 
    
         
            +
                - [Database connector for OpenSTEF](#database-connector-for-openstef)
         
     | 
| 
      
 71 
     | 
    
         
            +
            - [License](license)
         
     | 
| 
      
 72 
     | 
    
         
            +
            - [Contributing](#contributing)
         
     | 
| 
      
 73 
     | 
    
         
            +
            - [Contact](#contact)
         
     | 
| 
       80 
74 
     | 
    
         | 
| 
       81 
75 
     | 
    
         
             
            # External information sources
         
     | 
| 
       82 
76 
     | 
    
         
             
            - [Documentation website](https://openstef.github.io/openstef/index.html);
         
     | 
| 
       83 
77 
     | 
    
         
             
            - [Python package](https://pypi.org/project/openstef/);
         
     | 
| 
       84 
     | 
    
         
            -
            - [ 
     | 
| 
      
 78 
     | 
    
         
            +
            - [Linux Foundation project page](https://www.lfenergy.org/projects/openstef/);
         
     | 
| 
       85 
79 
     | 
    
         
             
            - [Documentation on dashboard](https://raw.githack.com/OpenSTEF/.github/main/profile/html/openstef_dashboard_doc.html);
         
     | 
| 
       86 
     | 
    
         
            -
            - [Linux Foundation project page](https://openstef.github.io/openstef/index.html)
         
     | 
| 
       87 
80 
     | 
    
         
             
            - [Video about OpenSTEF](https://www.lfenergy.org/forecasting-to-create-a-more-resilient-optimized-grid/);
         
     | 
| 
       88 
     | 
    
         
            -
            - [Teams channel](https://teams.microsoft.com/l/team/19%3ac08a513650524fc988afb296cd0358cc%40thread.tacv2/conversations?groupId=bfcb763a-3a97-4938-81d7-b14512aa537d&tenantId=697f104b-d7cb-48c8-ac9f-bd87105bafdc) 
     | 
| 
      
 81 
     | 
    
         
            +
            - [Teams channel](https://teams.microsoft.com/l/team/19%3ac08a513650524fc988afb296cd0358cc%40thread.tacv2/conversations?groupId=bfcb763a-3a97-4938-81d7-b14512aa537d&tenantId=697f104b-d7cb-48c8-ac9f-bd87105bafdc)
         
     | 
| 
       89 
82 
     | 
    
         | 
| 
       90 
83 
     | 
    
         
             
            # Installation
         
     | 
| 
       91 
84 
     | 
    
         | 
| 
         @@ -105,33 +98,33 @@ For more information on this issue see the [readme of pywin32](https://github.co 
     | 
|
| 
       105 
98 
     | 
    
         | 
| 
       106 
99 
     | 
    
         
             
            # Usage
         
     | 
| 
       107 
100 
     | 
    
         | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
            ```shell
         
     | 
| 
       111 
     | 
    
         
            -
            python -m openstef task <task_name>
         
     | 
| 
       112 
     | 
    
         
            -
            ```
         
     | 
| 
      
 101 
     | 
    
         
            +
            ## Example notebooks
         
     | 
| 
      
 102 
     | 
    
         
            +
            To help you get started, a set of fundamental example notebooks has been created. You can access these offline examples [here](https://github.com/OpenSTEF/openstef-offline-example).
         
     | 
| 
       113 
103 
     | 
    
         | 
| 
       114 
104 
     | 
    
         
             
            ## Reference Implementation
         
     | 
| 
       115 
105 
     | 
    
         
             
            A complete implementation including databases, user interface, example data, etc. is available at: https://github.com/OpenSTEF/openstef-reference
         
     | 
| 
       116 
106 
     | 
    
         | 
| 
       117 
107 
     | 
    
         
             
            
         
     | 
| 
       118 
108 
     | 
    
         
             
            Screenshot of the operational dashboard showing the key functionality of OpenSTEF.
         
     | 
| 
       119 
     | 
    
         
            -
            Dashboard documentation can be found [here](https:// 
     | 
| 
      
 109 
     | 
    
         
            +
            Dashboard documentation can be found [here](https://raw.githack.com/OpenSTEF/.github/main/profile/html/openstef_dashboard_doc.html).
         
     | 
| 
       120 
110 
     | 
    
         | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
            This repository provides an interface to OpenSTEF (reference) databases. The repository can be found [here](https://github.com/OpenSTEF/openstef-dbc).
         
     | 
| 
      
 111 
     | 
    
         
            +
            To run a task use:
         
     | 
| 
       123 
112 
     | 
    
         | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
      
 113 
     | 
    
         
            +
            ```shell
         
     | 
| 
      
 114 
     | 
    
         
            +
            python -m openstef task <task_name>
         
     | 
| 
      
 115 
     | 
    
         
            +
            ```
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
            ## Database connector for openstef
         
     | 
| 
      
 118 
     | 
    
         
            +
            This repository provides an interface to OpenSTEF (reference) databases. The repository can be found [here](https://github.com/OpenSTEF/openstef-dbc).
         
     | 
| 
       126 
119 
     | 
    
         | 
| 
       127 
     | 
    
         
            -
             
     | 
| 
      
 120 
     | 
    
         
            +
            # License
         
     | 
| 
       128 
121 
     | 
    
         
             
            This project is licensed under the Mozilla Public License, version 2.0 - see LICENSE for details.
         
     | 
| 
       129 
122 
     | 
    
         | 
| 
       130 
123 
     | 
    
         
             
            ## Licenses third-party libraries
         
     | 
| 
       131 
124 
     | 
    
         
             
            This project includes third-party libraries, which are licensed under their own respective Open-Source licenses. SPDX-License-Identifier headers are used to show which license is applicable. The concerning license files can be found in the LICENSES directory.
         
     | 
| 
       132 
125 
     | 
    
         | 
| 
       133 
     | 
    
         
            -
             
     | 
| 
      
 126 
     | 
    
         
            +
            # Contributing
         
     | 
| 
       134 
127 
     | 
    
         
             
            Please read [CODE_OF_CONDUCT.md](https://github.com/OpenSTEF/.github/blob/main/CODE_OF_CONDUCT.md), [CONTRIBUTING.md](https://github.com/OpenSTEF/.github/blob/main/CONTRIBUTING.md) and [PROJECT_GOVERNANCE.md](https://github.com/OpenSTEF/.github/blob/main/PROJECT_GOVERNANCE.md) for details on the process for submitting pull requests to us.
         
     | 
| 
       135 
128 
     | 
    
         | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
      
 129 
     | 
    
         
            +
            # Contact
         
     | 
| 
       137 
130 
     | 
    
         
             
            Please read [SUPPORT.md](https://github.com/OpenSTEF/.github/blob/main/SUPPORT.md) for how to connect and get into contact with the OpenSTEF project
         
     | 
| 
         @@ -1,8 +1,8 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            openstef/__init__.py,sha256=93UM6m0LLQhO69-mSqLuUy73jgs4W7Iuxfo3Lm8c98g,419
         
     | 
| 
       2 
2 
     | 
    
         
             
            openstef/__main__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
         
     | 
| 
       3 
     | 
    
         
            -
            openstef/app_settings.py,sha256= 
     | 
| 
      
 3 
     | 
    
         
            +
            openstef/app_settings.py,sha256=EJTDtimctFQQ-3f7ZcOQaRYohpZk3JD6aZBWPFYM2_A,582
         
     | 
| 
       4 
4 
     | 
    
         
             
            openstef/enums.py,sha256=f3Gw-HlNXeqMZahIAEYSZkPKtKWeNt3tfOJBL45Z2fM,629
         
     | 
| 
       5 
     | 
    
         
            -
            openstef/exceptions.py,sha256= 
     | 
| 
      
 5 
     | 
    
         
            +
            openstef/exceptions.py,sha256=U4u2LTcdT6cmzpipT2Jh7kq9nCjT_-6gntn8yjuhGU0,1993
         
     | 
| 
       6 
6 
     | 
    
         
             
            openstef/settings.py,sha256=nSgkBqFxuqB3w7Rwo60i8j37c5ngDbt6vpjHS6QtJXQ,354
         
     | 
| 
       7 
7 
     | 
    
         
             
            openstef/data/dutch_holidays_2020-2022.csv,sha256=pS-CjE0igYXd-2dG-MlqyvR2fgYgXkbNmgCKyTjmwxs,23704
         
     | 
| 
       8 
8 
     | 
    
         
             
            openstef/data/dutch_holidays_2020-2022.csv.license,sha256=AxxHusqwIXU5RHl5ZMU65LyXmgtbj6QlcnFaOEN4kEE,145
         
     | 
| 
         @@ -69,7 +69,7 @@ openstef/model_selection/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYl 
     | 
|
| 
       69 
69 
     | 
    
         
             
            openstef/model_selection/model_selection.py,sha256=R34tJBecZo6IiUwCCRLeBI2ZCX6GP8W7FDBlGFWtmG8,11167
         
     | 
| 
       70 
70 
     | 
    
         
             
            openstef/monitoring/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
         
     | 
| 
       71 
71 
     | 
    
         
             
            openstef/monitoring/performance_meter.py,sha256=6aCGjJFXFq-7qwaJyBkF3MLqjgVK6FMFVcO-bcLLUb4,2803
         
     | 
| 
       72 
     | 
    
         
            -
            openstef/monitoring/teams.py,sha256= 
     | 
| 
      
 72 
     | 
    
         
            +
            openstef/monitoring/teams.py,sha256=A-tlZeuAgolxFHjgT3gGjraxzW2dmuB-UAOz4xgYNIQ,6668
         
     | 
| 
       73 
73 
     | 
    
         
             
            openstef/pipeline/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
         
     | 
| 
       74 
74 
     | 
    
         
             
            openstef/pipeline/create_basecase_forecast.py,sha256=YkpiqohETTAETb4GiVlK_btw5dpixJy2LmFZdm10iaI,4623
         
     | 
| 
       75 
75 
     | 
    
         
             
            openstef/pipeline/create_component_forecast.py,sha256=A0dmILy_BuAAf2U_9i2FOj6KItIdZdGzi6hNDk-da4Q,6416
         
     | 
| 
         @@ -83,10 +83,10 @@ openstef/postprocessing/postprocessing.py,sha256=vJZ57TZ3MbG4c78P2cq8Sxs6VHl6kjF 
     | 
|
| 
       83 
83 
     | 
    
         
             
            openstef/preprocessing/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
         
     | 
| 
       84 
84 
     | 
    
         
             
            openstef/preprocessing/preprocessing.py,sha256=bM_cSSSb2vGTD79RGzUrI6KoELbzlCyJwc7jqQGNEsE,1454
         
     | 
| 
       85 
85 
     | 
    
         
             
            openstef/tasks/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
         
     | 
| 
       86 
     | 
    
         
            -
            openstef/tasks/calculate_kpi.py,sha256= 
     | 
| 
       87 
     | 
    
         
            -
            openstef/tasks/create_basecase_forecast.py,sha256= 
     | 
| 
       88 
     | 
    
         
            -
            openstef/tasks/create_components_forecast.py,sha256= 
     | 
| 
       89 
     | 
    
         
            -
            openstef/tasks/create_forecast.py,sha256= 
     | 
| 
      
 86 
     | 
    
         
            +
            openstef/tasks/calculate_kpi.py,sha256=78DuK30ohWIHuc6oneRXalcNMXQ5mzy2qDr9xsPdSQs,11882
         
     | 
| 
      
 87 
     | 
    
         
            +
            openstef/tasks/create_basecase_forecast.py,sha256=lxor1E3WQ_XAZDYWdNJKE1PY57scz39bKu2Id9U2GwE,4126
         
     | 
| 
      
 88 
     | 
    
         
            +
            openstef/tasks/create_components_forecast.py,sha256=j4m9AGjnMDx23FmsaZGPYn9rBMHsRd_h-m1RAfhF8to,6139
         
     | 
| 
      
 89 
     | 
    
         
            +
            openstef/tasks/create_forecast.py,sha256=NWd2fdbZ9CKDi190v7PF14IUdz6pyME2A-ssRNDdaYs,5750
         
     | 
| 
       90 
90 
     | 
    
         
             
            openstef/tasks/create_solar_forecast.py,sha256=bTr7NThTF6Yj405qAqRaJmlBUrL7HATqVVzsi9hMdMw,15049
         
     | 
| 
       91 
91 
     | 
    
         
             
            openstef/tasks/create_wind_forecast.py,sha256=RhshkmNSyFWx4Y6yQn02GzHjWTREbN5A5GAeWv0JpcE,2907
         
     | 
| 
       92 
92 
     | 
    
         
             
            openstef/tasks/optimize_hyperparameters.py,sha256=s-z8YQJF6Lf3DdYgKHEpAdlbFJ3a-0Gj0Ahsqj1DErc,4758
         
     | 
| 
         @@ -98,8 +98,8 @@ openstef/tasks/utils/predictionjobloop.py,sha256=Ysy3zF5lzPMz_asYDKeF5m0qgVT3tCt 
     | 
|
| 
       98 
98 
     | 
    
         
             
            openstef/tasks/utils/taskcontext.py,sha256=L9K14ycwgVxbIVUjH2DIn_QWbnu-OfxcGtQ1K9T6sus,5630
         
     | 
| 
       99 
99 
     | 
    
         
             
            openstef/validation/__init__.py,sha256=bIyGTSA4V5VoOLTwdaiJJAnozmpSzvQooVYlsf8H4eU,163
         
     | 
| 
       100 
100 
     | 
    
         
             
            openstef/validation/validation.py,sha256=628xaDbAm8B4AYtFOAn8_SXLjejNfULGCfX3hVf_mU0,11119
         
     | 
| 
       101 
     | 
    
         
            -
            openstef-3.4. 
     | 
| 
       102 
     | 
    
         
            -
            openstef-3.4. 
     | 
| 
       103 
     | 
    
         
            -
            openstef-3.4. 
     | 
| 
       104 
     | 
    
         
            -
            openstef-3.4. 
     | 
| 
       105 
     | 
    
         
            -
            openstef-3.4. 
     | 
| 
      
 101 
     | 
    
         
            +
            openstef-3.4.20.dist-info/LICENSE,sha256=7Pm2fWFFHHUG5lDHed1vl5CjzxObIXQglnYsEdtjo_k,14907
         
     | 
| 
      
 102 
     | 
    
         
            +
            openstef-3.4.20.dist-info/METADATA,sha256=iDsbzq_7dlisLeKayBIeemF1EYfPDVYXkquQ3k25Qe4,7392
         
     | 
| 
      
 103 
     | 
    
         
            +
            openstef-3.4.20.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
         
     | 
| 
      
 104 
     | 
    
         
            +
            openstef-3.4.20.dist-info/top_level.txt,sha256=kD0H4PqrQoncZ957FvqwfBxa89kTrun4Z_RAPs_HhLs,9
         
     | 
| 
      
 105 
     | 
    
         
            +
            openstef-3.4.20.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |