From b997f1c22e17beef64e899a431df0bb0153332ab Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Thu, 21 Mar 2024 18:25:05 -0500 Subject: [PATCH 1/8] support for http timeout argument --- README.md | 19 ++++++++++--------- src/enerbitdso/cli.py | 8 ++++++++ src/enerbitdso/enerbit.py | 3 +++ 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 43da16a..747d7f7 100644 --- a/README.md +++ b/README.md @@ -130,14 +130,15 @@ También tiene opción `--help` que muestra la ayuda particular de este sub-coma │ frts [FRTS]... List of frt codes separated by ' ' [default: None] │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─ Options ──────────────────────────────────────────────────────────────────────────────────────────────────────╮ -│ * --api-base-url TEXT [env var: ENERBIT_API_BASE_URL] [default: None] [required] │ -│ * --api-username TEXT [env var: ENERBIT_API_USERNAME] [default: None] [required] │ -│ * --api-password TEXT [env var: ENERBIT_API_PASSWORD] [default: None] [required] │ -│ --since [%Y-%m-%d|%Y%m%d] [default: (yesterday)] │ -│ --until [%Y-%m-%d|%Y%m%d] [default: (today)] │ -│ --timezone TEXT [default: America/Bogota] │ -│ --out-format [csv|jsonl] Output file format [default: jsonl] │ -│ --frt-file PATH Path file with one frt code per line [default: None] │ -│ --help Show this message and exit. │ +│ * --api-base-url TEXT [env var: ENERBIT_API_BASE_URL] [default: None] [required] │ +│ * --api-username TEXT [env var: ENERBIT_API_USERNAME] [default: None] [required] │ +│ * --api-password TEXT [env var: ENERBIT_API_PASSWORD] [default: None] [required] │ +│ --since [%Y-%m-%d|%Y%m%d] [default: (yesterday)] │ +│ --until [%Y-%m-%d|%Y%m%d] [default: (today)] │ +│ --timezone TEXT [default: America/Bogota] │ +│ --out-format [csv|jsonl] Output file format [default: jsonl] │ +│ --frt-file PATH Path file with one frt code per line [default: None] │ +│ --timeout INTEGER RANGE [0<=x<=20] [default: 5] │ +│ --help Show this message and exit. │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ``` diff --git a/src/enerbitdso/cli.py b/src/enerbitdso/cli.py index c8f45fd..f77f0ba 100644 --- a/src/enerbitdso/cli.py +++ b/src/enerbitdso/cli.py @@ -60,8 +60,16 @@ def fetch( frt_file: pathlib.Path = typer.Option( None, help="Path file with one frt code per line" ), + timeout: int = typer.Option( + 5, + min=0, + max=20, + ), frts: list[str] = typer.Argument(None, help="List of frt codes separated by ' '"), ): + if timeout is not None: + enerbit.set_http_timeout(timeout) + try: ebclient = enerbit.get_client(api_base_url, api_username, api_password) except Exception: diff --git a/src/enerbitdso/enerbit.py b/src/enerbitdso/enerbit.py index 849495a..5fc3365 100644 --- a/src/enerbitdso/enerbit.py +++ b/src/enerbitdso/enerbit.py @@ -37,6 +37,9 @@ class ScheduleMeasurementRecord(pydantic.BaseModel): reactive_energy_imported: float reactive_energy_exported: float +def set_http_timeout(timeout): + global TIMEOUT + TIMEOUT = httpx.Timeout(timeout, read=60) def get_auth_token(base_url, username, password): path = "/auth/token/" From ded79a7e68b7ffbb2103f4d2c28ddd665d53a8b5 Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Thu, 21 Mar 2024 18:25:49 -0500 Subject: [PATCH 2/8] update version --- src/enerbitdso/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/enerbitdso/VERSION b/src/enerbitdso/VERSION index 82551ad..345f8cc 100644 --- a/src/enerbitdso/VERSION +++ b/src/enerbitdso/VERSION @@ -1 +1 @@ -0.1.9 \ No newline at end of file +0.1.10 \ No newline at end of file From f6a408a01f3db5a592a77d494c19599fe1fee6e5 Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Wed, 17 Apr 2024 15:43:55 -0500 Subject: [PATCH 3/8] print exception --- src/enerbitdso/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/enerbitdso/cli.py b/src/enerbitdso/cli.py index f77f0ba..5625517 100644 --- a/src/enerbitdso/cli.py +++ b/src/enerbitdso/cli.py @@ -107,7 +107,7 @@ def fetch( ) except Exception: err_console.print(f"Failed to fetch usage records for frt code '{f}'") - # err_console.print_exception() + err_console.print_exception() continue match out_format: From 2195daea1cfba322143bbaf47e7a7c9d0ca9071b Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Wed, 17 Apr 2024 16:02:00 -0500 Subject: [PATCH 4/8] remove model validation --- src/enerbitdso/enerbit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/enerbitdso/enerbit.py b/src/enerbitdso/enerbit.py index 5fc3365..f9a3956 100644 --- a/src/enerbitdso/enerbit.py +++ b/src/enerbitdso/enerbit.py @@ -91,7 +91,7 @@ def get_schedule_usage_records( response.raise_for_status() records = response.json() records = sorted(records, key=lambda r: r["time_start"]) - usage_records = [ScheduleUsageRecord.model_validate(r) for r in records] + usage_records = records usage_records = scale_usage_records(usage_records, scale=WATT_HOUR_TO_KILOWATT_HOUR) return usage_records @@ -109,7 +109,7 @@ def get_schedule_measurement_records( response.raise_for_status() records = response.json() records = sorted(records, key=lambda r: r["time_local_utc"]) - measurement_records = [ScheduleMeasurementRecord.model_validate(r) for r in records] + measurement_records = records measurement_records = scale_measurement_records( measurement_records, scale=WATT_HOUR_TO_KILOWATT_HOUR ) From c3e6440b6d91e4719bda122911db0a5f390e2f3f Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Wed, 17 Apr 2024 16:04:54 -0500 Subject: [PATCH 5/8] print records --- src/enerbitdso/enerbit.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/enerbitdso/enerbit.py b/src/enerbitdso/enerbit.py index f9a3956..a543786 100644 --- a/src/enerbitdso/enerbit.py +++ b/src/enerbitdso/enerbit.py @@ -109,6 +109,7 @@ def get_schedule_measurement_records( response.raise_for_status() records = response.json() records = sorted(records, key=lambda r: r["time_local_utc"]) + print(f"Estos son los records: {records}") measurement_records = records measurement_records = scale_measurement_records( measurement_records, scale=WATT_HOUR_TO_KILOWATT_HOUR From 1a60780695cbc33070c7ba19291c54bc21fa24c1 Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Wed, 17 Apr 2024 16:11:52 -0500 Subject: [PATCH 6/8] add total response --- src/enerbitdso/enerbit.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/enerbitdso/enerbit.py b/src/enerbitdso/enerbit.py index a543786..7aa883a 100644 --- a/src/enerbitdso/enerbit.py +++ b/src/enerbitdso/enerbit.py @@ -87,9 +87,11 @@ def get_schedule_usage_records( "period-string": "hour", "period-number": 1, } + print(f"Params: {params}") response = client.get(path, params=params) response.raise_for_status() records = response.json() + print(f"Estos son los records: {records}") records = sorted(records, key=lambda r: r["time_start"]) usage_records = records usage_records = scale_usage_records(usage_records, scale=WATT_HOUR_TO_KILOWATT_HOUR) From c75bb1ea83cca8d38b89b2de222093f3c2864bcc Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Wed, 17 Apr 2024 16:40:47 -0500 Subject: [PATCH 7/8] increase pydantic version --- setup.py | 2 +- src/enerbitdso/enerbit.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index 489ca4c..8f0a05a 100644 --- a/setup.py +++ b/setup.py @@ -148,7 +148,7 @@ install_requires=[ "httpx", "typer", - "pydantic", + "pydantic>2", "tzdata", "urlpath", "rich", diff --git a/src/enerbitdso/enerbit.py b/src/enerbitdso/enerbit.py index 7aa883a..448b96c 100644 --- a/src/enerbitdso/enerbit.py +++ b/src/enerbitdso/enerbit.py @@ -93,7 +93,7 @@ def get_schedule_usage_records( records = response.json() print(f"Estos son los records: {records}") records = sorted(records, key=lambda r: r["time_start"]) - usage_records = records + usage_records = [ScheduleUsageRecord.model_validate(r) for r in records] usage_records = scale_usage_records(usage_records, scale=WATT_HOUR_TO_KILOWATT_HOUR) return usage_records From d2630157121b0f543d848502e99ca0511f4554b4 Mon Sep 17 00:00:00 2001 From: David Vallejo Date: Wed, 17 Apr 2024 16:43:35 -0500 Subject: [PATCH 8/8] remove unuse prints --- src/enerbitdso/enerbit.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/enerbitdso/enerbit.py b/src/enerbitdso/enerbit.py index 448b96c..e0afd8d 100644 --- a/src/enerbitdso/enerbit.py +++ b/src/enerbitdso/enerbit.py @@ -87,11 +87,9 @@ def get_schedule_usage_records( "period-string": "hour", "period-number": 1, } - print(f"Params: {params}") response = client.get(path, params=params) response.raise_for_status() records = response.json() - print(f"Estos son los records: {records}") records = sorted(records, key=lambda r: r["time_start"]) usage_records = [ScheduleUsageRecord.model_validate(r) for r in records] usage_records = scale_usage_records(usage_records, scale=WATT_HOUR_TO_KILOWATT_HOUR) @@ -111,7 +109,6 @@ def get_schedule_measurement_records( response.raise_for_status() records = response.json() records = sorted(records, key=lambda r: r["time_local_utc"]) - print(f"Estos son los records: {records}") measurement_records = records measurement_records = scale_measurement_records( measurement_records, scale=WATT_HOUR_TO_KILOWATT_HOUR