Code Duplication    Length = 44-46 lines in 2 locations

src/egon/data/datasets/heat_supply/individual_heating.py 2 locations

@@ 113-158 (lines=46) @@
110
        )
111
112
113
class HeatPumps2035(Dataset):
114
    def __init__(self, dependencies):
115
        def dyn_parallel_tasks_2035():
116
            """Dynamically generate tasks
117
118
            The goal is to speed up tasks by parallelising bulks of mvgds.
119
120
            The number of parallel tasks is defined via parameter
121
            `parallel_tasks` in the dataset config `datasets.yml`.
122
123
            Returns
124
            -------
125
            set of airflow.PythonOperators
126
                The tasks. Each element is of
127
                :func:`egon.data.datasets.heat_supply.individual_heating.
128
                determine_hp_cap_peak_load_mvgd_ts_2035`
129
            """
130
            parallel_tasks = config.datasets()["demand_timeseries_mvgd"].get(
131
                "parallel_tasks", 1
132
            )
133
            tasks = set()
134
            for i in range(parallel_tasks):
135
                tasks.add(
136
                    PythonOperator(
137
                        task_id=(
138
                            "individual_heating."
139
                            f"determine-hp-capacity-2035-"
140
                            f"mvgd-bulk{i}"
141
                        ),
142
                        python_callable=split_mvgds_into_bulks,
143
                        op_kwargs={
144
                            "n": i,
145
                            "max_n": parallel_tasks,
146
                            "func": determine_hp_cap_peak_load_mvgd_ts_2035,
147
                        },
148
                    )
149
                )
150
            return tasks
151
152
        super().__init__(
153
            name="HeatPumps2035",
154
            version="0.0.2",
155
            dependencies=dependencies,
156
            tasks=(
157
                delete_heat_peak_loads_eGon2035,
158
                {*dyn_parallel_tasks_2035()},
159
            ),
160
        )
161
@@ 66-109 (lines=44) @@
63
    hp_capacity = Column(REAL)
64
65
66
class HeatPumpsPypsaEurSec(Dataset):
67
    def __init__(self, dependencies):
68
        def dyn_parallel_tasks_pypsa_eur_sec():
69
            """Dynamically generate tasks
70
            The goal is to speed up tasks by parallelising bulks of mvgds.
71
72
            The number of parallel tasks is defined via parameter
73
            `parallel_tasks` in the dataset config `datasets.yml`.
74
75
            Returns
76
            -------
77
            set of airflow.PythonOperators
78
                The tasks. Each element is of
79
                :func:`egon.data.datasets.heat_supply.individual_heating.
80
                determine_hp_cap_peak_load_mvgd_ts_pypsa_eur_sec`
81
            """
82
            parallel_tasks = config.datasets()["demand_timeseries_mvgd"].get(
83
                "parallel_tasks", 1
84
            )
85
86
            tasks = set()
87
            for i in range(parallel_tasks):
88
                tasks.add(
89
                    PythonOperator(
90
                        task_id=(
91
                            f"individual_heating."
92
                            f"determine-hp-capacity-pypsa-eur-sec-"
93
                            f"mvgd-bulk{i}"
94
                        ),
95
                        python_callable=split_mvgds_into_bulks,
96
                        op_kwargs={
97
                            "n": i,
98
                            "max_n": parallel_tasks,
99
                            "func": determine_hp_cap_peak_load_mvgd_ts_pypsa_eur_sec,  # noqa: E501
100
                        },
101
                    )
102
                )
103
            return tasks
104
105
        super().__init__(
106
            name="HeatPumpsPypsaEurSec",
107
            version="0.0.2",
108
            dependencies=dependencies,
109
            tasks=({*dyn_parallel_tasks_pypsa_eur_sec()},),
110
        )
111
112