Skip to content

Commit 11153f3

Browse files
committed
upload ccurves
add support to upload custom curves
1 parent f6d736c commit 11153f3

File tree

3 files changed

+126
-9
lines changed

3 files changed

+126
-9
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "pyetm"
7-
version = "1.4.1"
7+
version = "1.4.2"
88

99
description = "Python-ETM Connector"
1010
authors = [{name = "Rob Calon", email = "[email protected]"}]

src/pyetm/myc/model.py

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from dataclasses import dataclass
77
from os import PathLike
88
from pathlib import Path
9-
from typing import get_args, overload, Hashable, Literal, Sequence, TypedDict
9+
from typing import get_args, overload, Hashable, Literal, Iterable, Sequence, TypedDict
1010

1111
import logging
1212

@@ -376,7 +376,7 @@ def set_parameters(
376376
scenarios: ScenarioSlice | None = None,
377377
**kwargs
378378
) -> None:
379-
"""can be done threaded as well?"""
379+
"""set parameters"""
380380

381381
# collect scenarios
382382
scenarios = self.slice_cases(scenarios=scenarios)
@@ -392,25 +392,59 @@ def set_parameters(
392392
if errors:
393393
raise KeyError(f"unknown cases in dataframe: '{errors}'")
394394

395-
return self.pool.set_parameters(scenarios, parameters, **kwargs)
395+
self.pool.set_parameters(scenarios, parameters, **kwargs)
396+
397+
def upload_custom_curves(
398+
self,
399+
ccurves: pd.Series | pd.DataFrame,
400+
scenarios: ScenarioSlice | None = None,
401+
**kwargs
402+
) -> None:
403+
"""upload custom curves"""
404+
scenarios = self.slice_cases(scenarios=scenarios)
405+
self.pool.upload_custom_curves(ccurves=ccurves, scenarios=scenarios, **kwargs)
406+
407+
def delete_custom_curves(
408+
self,
409+
keys: str | Iterable[str] | None = None,
410+
scenarios: ScenarioSlice | None = None,
411+
**kwargs
412+
) -> None:
413+
"""delete custom curves"""
414+
scenarios = self.slice_cases(scenarios=scenarios)
415+
self.pool.delete_custom_curves(keys=keys, scenarios=scenarios, **kwargs)
416+
417+
def set_custom_curves(
418+
self,
419+
ccurves: pd.Series | pd.DataFrame,
420+
scenarios: ScenarioSlice | None = None,
421+
**kwargs
422+
) -> None:
423+
"""set custom curves"""
424+
scenarios = self.slice_cases(scenarios=scenarios)
425+
self.pool.set_custom_curves(ccurves=ccurves, scenarios=scenarios, **kwargs)
396426

397427
def get_gqueries(
398428
self,
399-
gqueries: Sequence[str] | pd.Series | None = None,
429+
gqueries: Iterable[str] | pd.Series | None = None,
400430
scenarios: ScenarioSlice | None = None,
401431
**kwargs
402432
) -> pd.DataFrame:
403433
"""get gqueries"""
404434

405-
# collect gqueries and scenarios
435+
# collect gqueries
406436
gqueries = gqueries if gqueries else self.gqueries
437+
if gqueries is None:
438+
raise ValueError("no gqueries specified")
439+
440+
# collect scenarios
407441
scenarios = self.slice_cases(scenarios=scenarios)
408442

409443
return self.pool.get_gqueries(scenarios=scenarios, gqueries=gqueries, **kwargs)
410444

411445
def get_price_curves(
412446
self,
413-
carriers: Carrier | Sequence[Carrier] | None = None,
447+
carriers: Carrier | Iterable[Carrier] | None = None,
414448
scenarios: ScenarioSlice | None = None,
415449
**kwargs
416450
) -> pd.DataFrame:

src/pyetm/myc/pool.py

Lines changed: 85 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,15 +230,56 @@ def get_carrier_curves(
230230
# with pool.get_client_from_session_id(scenario_id) as client:
231231
# pass
232232

233+
@staticmethod
234+
def upload_custom_curves(
235+
pool: ClientPool,
236+
scenario_id: int,
237+
ccurves: pd.Series | pd.DataFrame,
238+
) -> pd.Series:
239+
"""upload custom curves"""
240+
241+
with pool.get_client_from_session_id(scenario_id) as client:
242+
client.upload_custom_curves(ccurves=ccurves)
243+
244+
return pd.Series(name=scenario_id)
245+
246+
@staticmethod
247+
def delete_custom_curves(
248+
pool: ClientPool,
249+
scenario_id: int,
250+
keys: str | Iterable[str] | None = None,
251+
) -> pd.Series:
252+
"""delete custom curves"""
253+
254+
with pool.get_client_from_session_id(scenario_id) as client:
255+
client.delete_custom_curves(keys=keys)
256+
257+
return pd.Series(name=scenario_id)
258+
259+
@staticmethod
260+
def set_custom_curves(
261+
pool: ClientPool,
262+
scenario_id: int,
263+
ccurves: pd.Series | pd.DataFrame,
264+
) -> pd.Series:
265+
"""set custom curves"""
266+
267+
with pool.get_client_from_session_id(scenario_id) as client:
268+
client.set_custom_curves(ccurves=ccurves)
269+
270+
return pd.Series(name=scenario_id)
271+
272+
273+
233274
class ClientPool:
234275
"""pool of reusable clients"""
235276

236277
def __init__(
237278
self,
238279
maxsize: int | None = None,
239-
clients: Iterable[Client] | None = None,
280+
clients: list[Client] | None = None,
240281
**kwargs
241-
):
282+
) -> None:
242283

243284
if maxsize is None:
244285
maxsize = len(clients) if clients else 3
@@ -454,3 +495,45 @@ def get_carrier_curves(
454495
invert_sign_convention=invert_sign_convention,
455496
**kwargs,
456497
)
498+
499+
def upload_custom_curves(
500+
self,
501+
scenarios: Scenarios,
502+
ccurves: pd.Series | pd.DataFrame,
503+
**kwargs
504+
) -> None:
505+
"""upload custom curves"""
506+
self.call_threaded(
507+
func=self.tasks.upload_custom_curves,
508+
scenarios=scenarios,
509+
curves=ccurves,
510+
**kwargs,
511+
)
512+
513+
def delete_custom_curves(
514+
self,
515+
scenarios: Scenarios,
516+
keys: str | Iterable[str] | None = None,
517+
**kwargs
518+
) -> None:
519+
"""delete custom curves"""
520+
self.call_threaded(
521+
func=self.tasks.delete_custom_curves,
522+
scenarios=scenarios,
523+
keys=keys,
524+
**kwargs,
525+
)
526+
527+
def set_custom_curves(
528+
self,
529+
scenarios: Scenarios,
530+
ccurves: pd.Series | pd.DataFrame,
531+
**kwargs
532+
) -> None:
533+
"""set custom curves"""
534+
self.call_threaded(
535+
func=self.tasks.set_custom_curves,
536+
scenarios=scenarios,
537+
curves=ccurves,
538+
**kwargs,
539+
)

0 commit comments

Comments
 (0)