Hydro-Quebec-API-Wrapper 0.6.8__tar.gz → 0.8.1__tar.gz
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.
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/.coveragerc +1 -0
- hydro_quebec_api_wrapper-0.8.1/.devcontainer/Dockerfile +11 -0
- hydro_quebec_api_wrapper-0.8.1/.devcontainer/devcontainer.json +20 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/.gitignore +20 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/.gitlab-ci.yml +136 -54
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/.pre-commit-config.yaml +13 -11
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/.pylintrc +3 -3
- hydro_quebec_api_wrapper-0.8.1/Hydro_Quebec_API_Wrapper.egg-info/PKG-INFO +195 -0
- hydro_quebec_api_wrapper-0.8.1/Hydro_Quebec_API_Wrapper.egg-info/SOURCES.txt +103 -0
- hydro_quebec_api_wrapper-0.8.1/Hydro_Quebec_API_Wrapper.egg-info/entry_points.txt +2 -0
- hydro_quebec_api_wrapper-0.8.1/Hydro_Quebec_API_Wrapper.egg-info/requires.txt +5 -0
- hydro_quebec_api_wrapper-0.8.1/LICENSE +165 -0
- hydro_quebec_api_wrapper-0.8.1/MANIFEST.in +2 -0
- hydro_quebec_api_wrapper-0.8.1/PKG-INFO +195 -0
- hydro_quebec_api_wrapper-0.8.1/README.md +171 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/config.default.yaml +5 -5
- hydro_quebec_api_wrapper-0.8.1/conflict_test_requirements.txt +1 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/Makefile +1 -1
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/conf.py +19 -16
- hydro_quebec_api_wrapper-0.8.1/docs/source/external/description-des-codes-interruption.pdf +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/index.rst +0 -1
- hydro_quebec_api_wrapper-0.8.1/docs/source/reference/hydroqc.contract.rst +85 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/reference/hydroqc.hydro_api.rst +8 -0
- hydro_quebec_api_wrapper-0.8.1/docs/source/reference/hydroqc.peak.cpc.rst +37 -0
- hydro_quebec_api_wrapper-0.8.1/docs/source/reference/hydroqc.peak.dpc.rst +37 -0
- hydro_quebec_api_wrapper-0.8.1/docs/source/reference/hydroqc.peak.rst +19 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/reference/hydroqc.rst +24 -7
- hydro_quebec_api_wrapper-0.8.1/docs/source/reference/hydroqc.types.rst +77 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/todo.rst +0 -1
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/examples/hydro.py +24 -13
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/hydroqc/account.py +26 -13
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/hydroqc/consts.py +2 -2
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/__init__.py +19 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/common.py +476 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/contract_d.py +35 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/contract_d_cpc.py +52 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/contract_dpc.py +214 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/contract_dt.py +56 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/contract_m.py +75 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/contract_m_gdp.py +34 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/contract_residential.py +54 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/contract/outage.py +111 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/customer.py +148 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/diagnostic.py +439 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/error.py +27 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/hydro_api/cache.py +50 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/hydro_api/client.py +1026 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/hydro_api/consts.py +132 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/hydroqc/logger.py +10 -1
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/__init__.py +1 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/basepeak.py +67 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/basepeakhandler.py +276 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/consts.py +3 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/cpc/__init__.py +1 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/cpc/consts.py +17 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/cpc/handler.py +350 -0
- {Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/winter_credit → hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/cpc}/peak.py +34 -88
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/dpc/__init__.py +1 -0
- {Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/winter_credit → hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/dpc}/consts.py +2 -8
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/dpc/handler.py +109 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/peak/dpc/peak.py +48 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/public_client.py +88 -0
- {Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/winter_credit → hydro_quebec_api_wrapper-0.8.1/hydroqc}/timerange.py +1 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/types/__init__.py +62 -0
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/types/info_compte.py → hydro_quebec_api_wrapper-0.8.1/hydroqc/types/account.py +30 -63
- hydro_quebec_api_wrapper-0.8.1/hydroqc/types/common.py +80 -0
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/types/conso.py → hydro_quebec_api_wrapper-0.8.1/hydroqc/types/consump.py +71 -25
- hydro_quebec_api_wrapper-0.8.1/hydroqc/types/contract.py +63 -0
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/types/winter_credit.py → hydro_quebec_api_wrapper-0.8.1/hydroqc/types/cpc.py +9 -7
- hydro_quebec_api_wrapper-0.8.1/hydroqc/types/dpc.py +73 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/types/dt.py +29 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/types/outage.py +146 -0
- hydro_quebec_api_wrapper-0.8.1/hydroqc/utils.py +12 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/hydroqc/webuser.py +51 -43
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/pyproject.toml +13 -15
- hydro_quebec_api_wrapper-0.8.1/renovate.json5 +140 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/setup.cfg +5 -4
- hydro_quebec_api_wrapper-0.8.1/test_requirements.txt +15 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/tests/conftest.py +1 -0
- hydro_quebec_api_wrapper-0.8.1/tests/subtest_common.py +451 -0
- hydro_quebec_api_wrapper-0.8.1/tests/subtest_contract_d.py +84 -0
- hydro_quebec_api_wrapper-0.8.1/tests/subtest_contract_d_cpc.py +239 -0
- hydro_quebec_api_wrapper-0.8.1/tests/subtest_contract_dpc.py +189 -0
- hydro_quebec_api_wrapper-0.8.1/tests/subtest_contract_dt.py +115 -0
- hydro_quebec_api_wrapper-0.8.1/tests/subtest_contract_m.py +103 -0
- hydro_quebec_api_wrapper-0.8.1/tests/subtest_contract_m_gdp.py +94 -0
- hydro_quebec_api_wrapper-0.8.1/tests/test_basic.py +68 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/tests/test_timerange.py +30 -9
- hydro_quebec_api_wrapper-0.8.1/tests/tools.py +127 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/tox.ini +3 -8
- Hydro-Quebec-API-Wrapper-0.6.8/Hydro_Quebec_API_Wrapper.egg-info/PKG-INFO +0 -182
- Hydro-Quebec-API-Wrapper-0.6.8/Hydro_Quebec_API_Wrapper.egg-info/SOURCES.txt +0 -64
- Hydro-Quebec-API-Wrapper-0.6.8/Hydro_Quebec_API_Wrapper.egg-info/requires.txt +0 -4
- Hydro-Quebec-API-Wrapper-0.6.8/LICENSE +0 -21
- Hydro-Quebec-API-Wrapper-0.6.8/MANIFEST.in +0 -2
- Hydro-Quebec-API-Wrapper-0.6.8/PKG-INFO +0 -182
- Hydro-Quebec-API-Wrapper-0.6.8/README.md +0 -163
- Hydro-Quebec-API-Wrapper-0.6.8/conflict_test_requirements.txt +0 -1
- Hydro-Quebec-API-Wrapper-0.6.8/docs/source/reference/hydroqc.config.rst +0 -21
- Hydro-Quebec-API-Wrapper-0.6.8/docs/source/reference/hydroqc.winter_credit.rst +0 -45
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/contract.py +0 -270
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/customer.py +0 -120
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/error.py +0 -17
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/hydro_api/cache.py +0 -29
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/hydro_api/client.py +0 -593
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/hydro_api/consts.py +0 -83
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/hydro_api/hydro-chain.pem +0 -55
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/types/__init__.py +0 -32
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/winter_credit/__init__.py +0 -1
- Hydro-Quebec-API-Wrapper-0.6.8/hydroqc/winter_credit/handler.py +0 -454
- Hydro-Quebec-API-Wrapper-0.6.8/renovate.json +0 -69
- Hydro-Quebec-API-Wrapper-0.6.8/test_requirements.txt +0 -13
- Hydro-Quebec-API-Wrapper-0.6.8/tests/test_basic.py +0 -386
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/.flake8 +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/Hydro_Quebec_API_Wrapper.egg-info/dependency_links.txt +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/Hydro_Quebec_API_Wrapper.egg-info/top_level.txt +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/make.bat +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/_static/custom.css +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/_static/hydroqc-logo-128.png +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/_static/hydroqc-logo.svg +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/docs/source/reference/modules.rst +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/hydroqc/__init__.py +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/hydroqc/hydro_api/__init__.py +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/hydroqc/py.typed +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/logo/hydroqc-logo-128.png +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/logo/hydroqc-logo.svg +0 -0
- {Hydro-Quebec-API-Wrapper-0.6.8 → hydro_quebec_api_wrapper-0.8.1}/tests/__init__.py +0 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
FROM registry.gitlab.com/hydroqc/hydroqc-base-container/3.13:latest
|
|
2
|
+
|
|
3
|
+
# Create devcontainer user with home directory and bash shell, install sudo, and configure passwordless sudo
|
|
4
|
+
RUN useradd -m -s /bin/bash devcontainer \
|
|
5
|
+
&& apt-get update && apt-get install -y sudo gnulib locales \
|
|
6
|
+
&& echo "devcontainer ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/devcontainer
|
|
7
|
+
|
|
8
|
+
WORKDIR /home/devcontainer
|
|
9
|
+
USER devcontainer
|
|
10
|
+
RUN mkdir -p /home/devcontainer/.local/bin \
|
|
11
|
+
&& export PATH=$PATH:/home/devcontainer/.local/bin
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hydroqc",
|
|
3
|
+
"build": {
|
|
4
|
+
"dockerfile": "Dockerfile"
|
|
5
|
+
},
|
|
6
|
+
"features": {
|
|
7
|
+
"ghcr.io/devcontainers/features/docker-in-docker:2": {},
|
|
8
|
+
"ghcr.io/msclock/features/gitlab-ci-local:0": {
|
|
9
|
+
"version": "latest"
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"customizations": {
|
|
13
|
+
"vscode": {
|
|
14
|
+
"extensions": [
|
|
15
|
+
"GitLab.gitlab-workflow"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"remoteUser": "devcontainer"
|
|
20
|
+
}
|
|
@@ -124,9 +124,29 @@ venv.bak/
|
|
|
124
124
|
.mypy_cache/
|
|
125
125
|
.dmypy.json
|
|
126
126
|
dmypy.json
|
|
127
|
+
mypy-html-report/
|
|
128
|
+
mypy-junit.xml
|
|
129
|
+
mypy-txt-report/
|
|
130
|
+
classes.html
|
|
131
|
+
packages.html
|
|
127
132
|
|
|
128
133
|
# Pyre type checker
|
|
129
134
|
.pyre/
|
|
130
135
|
/hydro-env/
|
|
131
136
|
config.yaml
|
|
132
137
|
.idea/
|
|
138
|
+
|
|
139
|
+
# gitlab-ci-local
|
|
140
|
+
.gitlab-ci-local-env
|
|
141
|
+
.gitlab-ci-local/
|
|
142
|
+
.gitlab-ci-local-variables.yml
|
|
143
|
+
|
|
144
|
+
# Tests results
|
|
145
|
+
mypy*
|
|
146
|
+
packages.html
|
|
147
|
+
classes.html
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
diagnostic.zip
|
|
151
|
+
/diagnostic/
|
|
152
|
+
|
|
@@ -1,26 +1,38 @@
|
|
|
1
|
+
include:
|
|
2
|
+
- project: "renovate-bot/renovate-runner"
|
|
3
|
+
file: "/templates/renovate-config-validator.gitlab-ci.yml"
|
|
1
4
|
variables:
|
|
2
5
|
TWINE_USERNAME: __token__
|
|
3
6
|
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
|
|
4
7
|
stages:
|
|
5
|
-
- test
|
|
6
|
-
- private_tests
|
|
7
|
-
- private_tests_done
|
|
8
|
-
- pypi
|
|
8
|
+
- test
|
|
9
|
+
- private_tests
|
|
10
|
+
- private_tests_done
|
|
11
|
+
- pypi
|
|
9
12
|
|
|
10
13
|
cache:
|
|
11
14
|
key: pip-cache
|
|
12
15
|
paths:
|
|
13
16
|
- .cache/pip
|
|
14
17
|
|
|
15
|
-
|
|
18
|
+
renovate-config-validator:
|
|
16
19
|
stage: test
|
|
17
20
|
tags:
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
- hydroqc
|
|
22
|
+
rules:
|
|
23
|
+
# Enable for all other branches if it's a MR pipeline
|
|
24
|
+
- if: "$CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_IID"
|
|
25
|
+
changes:
|
|
26
|
+
- renovate.json5
|
|
27
|
+
when: on_success
|
|
28
|
+
- when: never
|
|
29
|
+
|
|
30
|
+
test:
|
|
31
|
+
stage: test
|
|
32
|
+
# tags:
|
|
33
|
+
# - hydroqc
|
|
34
|
+
image: registry.gitlab.com/hydroqc/hydroqc-base-container/3.13:latest
|
|
20
35
|
script:
|
|
21
|
-
#- apt-get update && apt-get install git --no-install-recommends -y graphviz jq python3.10 python3-venv python3-pip git
|
|
22
|
-
- cat renovate.json |jq > /dev/null 2&>1 || ( echo "renovate.json not valid" && exit 1 )
|
|
23
|
-
#- pip install tox
|
|
24
36
|
- tox -e pylint,flake8,pydocstyle,typing,black,deps-conflict --parallel auto
|
|
25
37
|
- cat mypy-txt-report/index.txt
|
|
26
38
|
artifacts:
|
|
@@ -36,21 +48,30 @@ test:
|
|
|
36
48
|
- packages.mmd
|
|
37
49
|
- packages.html
|
|
38
50
|
rules:
|
|
39
|
-
|
|
51
|
+
# Disable if CI_SKIP is set
|
|
52
|
+
- if: "$CI_SKIP =~ /test/"
|
|
40
53
|
when: never
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- if: '$CI_COMMIT_TAG'
|
|
54
|
+
# Disable if it's a tag pipeline
|
|
55
|
+
- if: "$CI_COMMIT_TAG"
|
|
44
56
|
when: never
|
|
45
|
-
|
|
57
|
+
# Enabled for main branch
|
|
58
|
+
- if: "$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH"
|
|
59
|
+
when: on_success
|
|
60
|
+
# Enable for all other branches if it's a MR pipeline
|
|
61
|
+
- if: "$CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_IID"
|
|
62
|
+
when: on_success
|
|
63
|
+
# Make it manual for external MR
|
|
64
|
+
- if: "$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_PROJECT_PATH != $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH"
|
|
65
|
+
when: manual
|
|
66
|
+
- when: never
|
|
46
67
|
|
|
47
68
|
.private_test_script: &private_test_script
|
|
48
69
|
stage: private_tests
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
70
|
+
# Run on shared runners to lighten the load on the private runners
|
|
71
|
+
# tags:
|
|
72
|
+
# - hydroqc
|
|
73
|
+
image: registry.gitlab.com/hydroqc/hydroqc-base-container/3.13:latest
|
|
52
74
|
script:
|
|
53
|
-
#- apt update && apt install -y jq unzip curl
|
|
54
75
|
- >
|
|
55
76
|
OUTPUT=$(curl
|
|
56
77
|
--globoff
|
|
@@ -58,6 +79,12 @@ test:
|
|
|
58
79
|
--header "PRIVATE-TOKEN: ${HYDROQC_SA_TOKEN}"
|
|
59
80
|
"https://gitlab.com/api/v4/projects/${PROJECT_ID}")
|
|
60
81
|
- PROJECT_PATH=$(echo ${OUTPUT} | jq -r .path_with_namespace)
|
|
82
|
+
- |
|
|
83
|
+
if [[ -z "${CI_MERGE_REQUEST_SOURCE_PROJECT_URL}" ]]; then
|
|
84
|
+
UPSTREAMREPO=${CI_REPOSITORY_URL}
|
|
85
|
+
else
|
|
86
|
+
UPSTREAMREPO=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL}
|
|
87
|
+
fi
|
|
61
88
|
- >
|
|
62
89
|
OUTPUT=$(curl
|
|
63
90
|
--globoff
|
|
@@ -65,7 +92,8 @@ test:
|
|
|
65
92
|
--header "Content-Type: application/json"
|
|
66
93
|
--header "PRIVATE-TOKEN: ${HYDROQC_SA_TOKEN}"
|
|
67
94
|
https://gitlab.com/api/v4/projects/${PROJECT_ID}/pipeline
|
|
68
|
-
--data '{ "ref": "main", "variables": [{ "key": "UPSTREAM_BRANCH", "value": "'${CI_COMMIT_REF_NAME}'" }, { "key": "UPSTREAM_COMMIT_SHA", "value": "'${CI_COMMIT_SHA}'" }, { "key": "UPSTREAM_REPO", "value": "'${
|
|
95
|
+
--data '{ "ref": "main", "variables": [{ "key": "UPSTREAM_BRANCH", "value": "'${CI_COMMIT_REF_NAME}'" }, { "key": "UPSTREAM_COMMIT_SHA", "value": "'${CI_COMMIT_SHA}'" }, { "key": "UPSTREAM_REPO", "value": "'${UPSTREAMREPO}'" }, { "key": "PYTEST_ARG", "value": "'${PYTEST_ARG}'" }] }')
|
|
96
|
+
|
|
69
97
|
- echo ${OUTPUT}
|
|
70
98
|
- PIPELINE_ID=$(echo ${OUTPUT} | jq -r .id)
|
|
71
99
|
- echo ${PIPELINE_ID}
|
|
@@ -139,67 +167,100 @@ test:
|
|
|
139
167
|
reports:
|
|
140
168
|
junit: hydroqc/tests_result_junit.*.xml
|
|
141
169
|
rules:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
- if: '$CI_COMMIT_TAG'
|
|
170
|
+
# Disable if it's a tag pipeline
|
|
171
|
+
- if: "$CI_COMMIT_TAG"
|
|
145
172
|
when: never
|
|
146
|
-
|
|
147
|
-
|
|
173
|
+
# Enabled for main branch
|
|
174
|
+
- if: "$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH"
|
|
175
|
+
when: on_success
|
|
176
|
+
# Enable for all other branches if it's a MR pipeline
|
|
177
|
+
- if: "$CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_IID"
|
|
178
|
+
when: on_success
|
|
179
|
+
# Make it manual for external MR
|
|
180
|
+
- if: "$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_PROJECT_PATH != $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH"
|
|
181
|
+
when: manual
|
|
182
|
+
- when: never
|
|
148
183
|
|
|
149
|
-
|
|
184
|
+
D_CPC_titilambert:
|
|
150
185
|
variables:
|
|
151
186
|
PROJECT_ID: 35085986
|
|
152
187
|
<<: *private_test_script
|
|
153
188
|
rules:
|
|
154
|
-
- if:
|
|
189
|
+
- if: "$CI_SKIP =~ /d_cpc_titilambert/"
|
|
155
190
|
when: never
|
|
156
191
|
- !reference [.private_test_script, rules]
|
|
157
192
|
|
|
158
|
-
|
|
193
|
+
DPC_mdallaire1:
|
|
159
194
|
variables:
|
|
160
195
|
PROJECT_ID: 39503160
|
|
161
196
|
<<: *private_test_script
|
|
162
197
|
rules:
|
|
163
|
-
- if:
|
|
198
|
+
- if: "$CI_SKIP =~ /dpc_mdallaire1/"
|
|
164
199
|
when: never
|
|
165
200
|
- !reference [.private_test_script, rules]
|
|
166
201
|
|
|
167
|
-
|
|
202
|
+
DT_mdallaire1:
|
|
203
|
+
variables:
|
|
204
|
+
PROJECT_ID: 52729124
|
|
205
|
+
<<: *private_test_script
|
|
206
|
+
rules:
|
|
207
|
+
- if: "$CI_SKIP =~ /dt_mdallaire1/"
|
|
208
|
+
when: never
|
|
209
|
+
- !reference [.private_test_script, rules]
|
|
210
|
+
|
|
211
|
+
D_mdallaire1:
|
|
212
|
+
variables:
|
|
213
|
+
PROJECT_ID: 52728916
|
|
214
|
+
<<: *private_test_script
|
|
215
|
+
rules:
|
|
216
|
+
- if: "$CI_SKIP =~ /d_mdallaire1/"
|
|
217
|
+
when: never
|
|
218
|
+
- !reference [.private_test_script, rules]
|
|
219
|
+
|
|
220
|
+
D_weimdall:
|
|
168
221
|
variables:
|
|
169
222
|
PROJECT_ID: 39038345
|
|
170
223
|
<<: *private_test_script
|
|
171
224
|
rules:
|
|
172
|
-
- if:
|
|
225
|
+
- if: "$CI_SKIP =~ /d_weimdall/"
|
|
173
226
|
when: never
|
|
174
227
|
- !reference [.private_test_script, rules]
|
|
175
228
|
|
|
176
|
-
|
|
229
|
+
D_CPC_zepiaf:
|
|
177
230
|
variables:
|
|
178
231
|
PROJECT_ID: 39098670
|
|
179
232
|
<<: *private_test_script
|
|
180
233
|
rules:
|
|
181
|
-
- if:
|
|
234
|
+
- if: "$CI_SKIP =~ /d_cpc_zepiaf/"
|
|
182
235
|
when: never
|
|
183
236
|
- !reference [.private_test_script, rules]
|
|
184
237
|
|
|
185
|
-
|
|
238
|
+
D_devzwf:
|
|
186
239
|
variables:
|
|
187
240
|
PROJECT_ID: 39310934
|
|
188
241
|
<<: *private_test_script
|
|
189
242
|
rules:
|
|
190
|
-
- if:
|
|
243
|
+
- if: "$CI_SKIP =~ /d_devzwf/"
|
|
244
|
+
when: never
|
|
245
|
+
- !reference [.private_test_script, rules]
|
|
246
|
+
|
|
247
|
+
M_hdenergy:
|
|
248
|
+
variables:
|
|
249
|
+
PROJECT_ID: 41155894
|
|
250
|
+
<<: *private_test_script
|
|
251
|
+
rules:
|
|
252
|
+
- if: "$CI_SKIP =~ /m_hdenergy/"
|
|
191
253
|
when: never
|
|
192
254
|
- !reference [.private_test_script, rules]
|
|
193
255
|
|
|
194
256
|
private_tests_done:
|
|
195
257
|
stage: private_tests_done
|
|
196
258
|
tags:
|
|
197
|
-
|
|
198
|
-
image: registry.gitlab.com/hydroqc/hydroqc-base-container/
|
|
259
|
+
- hydroqc
|
|
260
|
+
image: registry.gitlab.com/hydroqc/hydroqc-base-container/3.13:latest
|
|
199
261
|
script:
|
|
200
262
|
#- apt-get update && apt-get install --no-install-recommends -y python3.10 python3-venv python3-pip --no-install-recommends git
|
|
201
263
|
- echo "Private Tests done"
|
|
202
|
-
#- pip install tox
|
|
203
264
|
- find .
|
|
204
265
|
- mv -v hydroqc/.coverage* .
|
|
205
266
|
- mv -v hydroqc/*.xml .
|
|
@@ -217,19 +278,28 @@ private_tests_done:
|
|
|
217
278
|
- "*-badge.svg"
|
|
218
279
|
- "*-job-end-date.svg"
|
|
219
280
|
rules:
|
|
220
|
-
|
|
281
|
+
# Disable if CI_SKIP is set
|
|
282
|
+
- if: "$CI_SKIP =~ /done/"
|
|
221
283
|
when: never
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
- if: '$CI_COMMIT_TAG'
|
|
284
|
+
# Disable if it's a tag pipeline
|
|
285
|
+
- if: "$CI_COMMIT_TAG"
|
|
225
286
|
when: never
|
|
226
|
-
|
|
287
|
+
# Enabled for main branch
|
|
288
|
+
- if: "$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH"
|
|
289
|
+
when: on_success
|
|
290
|
+
# Enable for all other branches if it's a MR pipeline
|
|
291
|
+
- if: "$CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_IID"
|
|
292
|
+
when: on_success
|
|
293
|
+
# Make it manual for external MR
|
|
294
|
+
- if: "$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_PROJECT_PATH != $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH"
|
|
295
|
+
when: manual
|
|
296
|
+
- when: never
|
|
227
297
|
|
|
228
298
|
package:
|
|
229
299
|
stage: test
|
|
230
300
|
tags:
|
|
231
|
-
|
|
232
|
-
image: registry.gitlab.com/hydroqc/hydroqc-base-container/
|
|
301
|
+
- hydroqc
|
|
302
|
+
image: registry.gitlab.com/hydroqc/hydroqc-base-container/3.13:latest
|
|
233
303
|
script:
|
|
234
304
|
# Build a package with a version based on the commmit short sha
|
|
235
305
|
- pip install --upgrade pip
|
|
@@ -238,19 +308,31 @@ package:
|
|
|
238
308
|
- python3 -m twine check --strict dist/*
|
|
239
309
|
- TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python3 -m twine upload --verbose --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
|
|
240
310
|
rules:
|
|
241
|
-
|
|
311
|
+
# Disable if CI_SKIP is set
|
|
312
|
+
- if: "$CI_SKIP =~ /package/"
|
|
313
|
+
when: never
|
|
314
|
+
# Disable if it's a tag pipeline
|
|
315
|
+
- if: "$CI_COMMIT_TAG"
|
|
242
316
|
when: never
|
|
243
|
-
|
|
317
|
+
# Disable if it's a scheduled pipeline
|
|
318
|
+
- if: "$CI_PIPELINE_SOURCE == 'schedule'"
|
|
244
319
|
when: never
|
|
245
|
-
|
|
320
|
+
# Enabled for main branch
|
|
321
|
+
- if: "$CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH"
|
|
322
|
+
when: on_success
|
|
323
|
+
# Enable for all other branches if it's a MR pipeline
|
|
324
|
+
- if: "$CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH && $CI_MERGE_REQUEST_IID"
|
|
246
325
|
when: on_success
|
|
326
|
+
# Make it manual for external MR
|
|
327
|
+
- if: "$CI_MERGE_REQUEST_IID && $CI_MERGE_REQUEST_PROJECT_PATH != $CI_MERGE_REQUEST_SOURCE_PROJECT_PATH"
|
|
328
|
+
when: manual
|
|
247
329
|
- when: never
|
|
248
330
|
|
|
249
331
|
promote2pypi:
|
|
250
332
|
stage: pypi
|
|
251
333
|
tags:
|
|
252
|
-
|
|
253
|
-
image: registry.gitlab.com/hydroqc/hydroqc-base-container/
|
|
334
|
+
- hydroqc
|
|
335
|
+
image: registry.gitlab.com/hydroqc/hydroqc-base-container/3.13:latest
|
|
254
336
|
script:
|
|
255
337
|
# TODO: try to pull the good package from gitlab pypi repo
|
|
256
338
|
# then change the version (promote)
|
|
@@ -265,17 +347,17 @@ promote2pypi:
|
|
|
265
347
|
#- |
|
|
266
348
|
# pip download Hydro-Quebec-API-Wrapper --extra-index-url https://gitlab.com/api/v4/projects/${CI_PROJECT_ID}/packages/pypi/simple --no-deps
|
|
267
349
|
# TODO: open archives edit versions and rebuild archive
|
|
268
|
-
|
|
269
|
-
#- apt-get update && apt-get install --no-install-recommends -y python3.10 python3-venv python3-pip git
|
|
350
|
+
|
|
270
351
|
# Build package that could be promoted
|
|
271
352
|
- pip install --upgrade pip
|
|
272
353
|
- pip install --upgrade build setuptools_scm twine
|
|
273
354
|
- python3 -m build -o dist
|
|
274
355
|
- python3 -m twine check --strict dist/*
|
|
275
356
|
- twine upload --verbose --non-interactive --repository pypi dist/*
|
|
357
|
+
- TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python3 -m twine upload --verbose --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
|
|
276
358
|
rules:
|
|
277
|
-
- if:
|
|
359
|
+
- if: "$CI_SKIP =~ /pypi/"
|
|
278
360
|
when: never
|
|
279
|
-
- if:
|
|
361
|
+
- if: "$CI_COMMIT_TAG"
|
|
280
362
|
when: on_success
|
|
281
363
|
- when: never
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
repos:
|
|
2
2
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
-
rev:
|
|
3
|
+
rev: v6.0.0
|
|
4
4
|
hooks:
|
|
5
5
|
- id: trailing-whitespace
|
|
6
6
|
- id: end-of-file-fixer
|
|
@@ -16,38 +16,40 @@ repos:
|
|
|
16
16
|
- id: check-ast
|
|
17
17
|
|
|
18
18
|
- repo: https://github.com/psf/black
|
|
19
|
-
rev:
|
|
19
|
+
rev: 25.12.0
|
|
20
20
|
hooks:
|
|
21
21
|
- id: black
|
|
22
22
|
language_version: python3
|
|
23
23
|
|
|
24
24
|
- repo: https://github.com/PyCQA/flake8/
|
|
25
|
-
rev:
|
|
25
|
+
rev: 7.3.0
|
|
26
26
|
hooks:
|
|
27
27
|
- id: flake8
|
|
28
28
|
additional_dependencies: [flake8-docstrings]
|
|
29
29
|
|
|
30
30
|
- repo: https://github.com/PyCQA/isort
|
|
31
|
-
rev:
|
|
31
|
+
rev: 7.0.0
|
|
32
32
|
hooks:
|
|
33
33
|
- id: isort
|
|
34
34
|
args: ["--profile", "black", "--filter-files"]
|
|
35
35
|
# additional_dependencies: [toml]
|
|
36
36
|
|
|
37
37
|
- repo: https://github.com/PyCQA/doc8
|
|
38
|
-
rev:
|
|
38
|
+
rev: v2.0.0
|
|
39
39
|
hooks:
|
|
40
40
|
- id: doc8
|
|
41
41
|
|
|
42
42
|
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
43
|
-
rev:
|
|
43
|
+
rev: v1.19.1
|
|
44
44
|
hooks:
|
|
45
45
|
- id: mypy
|
|
46
46
|
args: [--strict, --pretty, --show-error-codes]
|
|
47
47
|
additional_dependencies:
|
|
48
|
-
- "types-pytz==
|
|
49
|
-
- "types-PyYAML==6.0.12.
|
|
50
|
-
- "types-python-dateutil==2.
|
|
48
|
+
- "types-pytz==2025.2.0.20251108"
|
|
49
|
+
- "types-PyYAML==6.0.12.20250915"
|
|
50
|
+
- "types-python-dateutil==2.9.0.20260124"
|
|
51
51
|
- "pytest-stub==1.1.0"
|
|
52
|
-
- "aiohttp==3.
|
|
53
|
-
- "aiocache==0.
|
|
52
|
+
- "aiohttp==3.13.3"
|
|
53
|
+
- "aiocache==0.12.3"
|
|
54
|
+
- "pkce==1.0.3"
|
|
55
|
+
- "pytest-asyncio==1.3.0"
|
|
@@ -239,7 +239,7 @@ max-returns=10
|
|
|
239
239
|
max-branches=20
|
|
240
240
|
|
|
241
241
|
# Maximum number of statements in function / method body
|
|
242
|
-
max-statements=
|
|
242
|
+
max-statements=70
|
|
243
243
|
|
|
244
244
|
# Maximum number of parents for a class (see R0901).
|
|
245
245
|
max-parents=7
|
|
@@ -251,7 +251,7 @@ max-attributes=25
|
|
|
251
251
|
min-public-methods=1
|
|
252
252
|
|
|
253
253
|
# Maximum number of public methods for a class (see R0904).
|
|
254
|
-
max-public-methods=
|
|
254
|
+
max-public-methods=40
|
|
255
255
|
|
|
256
256
|
|
|
257
257
|
[IMPORTS]
|
|
@@ -276,7 +276,7 @@ int-import-graph=
|
|
|
276
276
|
|
|
277
277
|
# Exceptions that will emit a warning when being caught. Defaults to
|
|
278
278
|
# "Exception"
|
|
279
|
-
overgeneral-exceptions=Exception
|
|
279
|
+
overgeneral-exceptions=builtins.Exception
|
|
280
280
|
|
|
281
281
|
max-nested-blocks=7
|
|
282
282
|
max-bool-expr=10
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Hydro-Quebec-API-Wrapper
|
|
3
|
+
Version: 0.8.1
|
|
4
|
+
Summary: A wrapper library to access hydro quebec API and more
|
|
5
|
+
Home-page: https://hydroqc.ca
|
|
6
|
+
Author-email: Hydroqc Team <info@hydroqc.ca>
|
|
7
|
+
License: LGPL-3.0-or-later
|
|
8
|
+
Project-URL: Source Code, https://gitlab.com/hydroqc/hydroqc
|
|
9
|
+
Project-URL: Bug Reports, https://gitlab.com/hydroqc/hydroqc/-/issues
|
|
10
|
+
Project-URL: Home-page, https://hydroqc.ca
|
|
11
|
+
Keywords: hydroquebec,lib
|
|
12
|
+
Platform: any
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Requires-Python: >=3.12.0
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
License-File: LICENSE
|
|
18
|
+
Requires-Dist: aiohttp<4.0.0,>=3.10.0
|
|
19
|
+
Requires-Dist: python-dateutil>=2.8.0
|
|
20
|
+
Requires-Dist: pytz>=2024.1
|
|
21
|
+
Requires-Dist: aiocache>=0.12.0
|
|
22
|
+
Requires-Dist: pkce>=1.0.3
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
# HydroQC - Hydro Quebec API wrapper
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
[](https://gitlab.com/hydroqc/hydroqc/-/commits/main)
|
|
29
|
+
[](https://gitlab.com/hydroqc/hydroqc/-/commits/main)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
**This is a library to use if you want to build your own solution. If you want a user-friendly implementation for your home automation system please use [hydroqc2mqtt](https://gitlab.com/hydroqc/hydroqc2mqtt) which provide a MQTT publisher, docker image and HASS addon.**
|
|
34
|
+
|
|
35
|
+
This is a package to access some functionalities of Hydro Quebec API that are not documented.
|
|
36
|
+
|
|
37
|
+
We started a discord server for the project where you can come to discuss and find help with the project on our [#development](https://discord.gg/NWnfdfRZ7T) channel
|
|
38
|
+
|
|
39
|
+
## Donations
|
|
40
|
+
|
|
41
|
+
We put a lot of heart and effort in this project, any contribution is greatly appreciated!
|
|
42
|
+
|
|
43
|
+
[](https://hydroqc.ca/en/donations)
|
|
44
|
+
|
|
45
|
+
## Tested Rates
|
|
46
|
+
|
|
47
|
+
Each account, contracts and rates are different and we do our best to integrate all available options. Currently the account combinations listed below are supported and tested automaticaly by our CI/CD pipeline. If your account scenario is not currently tested and listed as **Needed** feel free to reach out to us on our discord [#development](https://discord.gg/NWnfdfRZ7T) channel if you want to volunter for testing. We provide a way to setup CI/CD tests in your own account in a way that keep your account info private to you (more details [here](https://gitlab.com/hydroqc/hydroqc-test-template)). Keep in mind that this process is a bit involved technicaly so it is best if you have some working knowledge with Gitlab.
|
|
48
|
+
|
|
49
|
+
### Rate D
|
|
50
|
+
|
|
51
|
+
| Base Rate | Rate Option | Tester | Test result | Last run | Comment |
|
|
52
|
+
| - | - | - | - | - | - |
|
|
53
|
+
| D | - | @weimdall |  |  | |
|
|
54
|
+
| D | - | @mdallaire1 |  |  | |
|
|
55
|
+
| D | - | @devzwf |  |  | Hilo |
|
|
56
|
+
| D | CPC | @titilambert | |  | |
|
|
57
|
+
|
|
58
|
+
#### Flex D (DPC)
|
|
59
|
+
|
|
60
|
+
| Base Rate | Rate Option | Tester | Test result | Last run | Comment |
|
|
61
|
+
| - | - | - | - | - | - |
|
|
62
|
+
| DPC | - | @mdallaire1 |  |  | |
|
|
63
|
+
|
|
64
|
+
#### Dual Energy (DT)
|
|
65
|
+
|
|
66
|
+
| Base Rate | Rate Option | Tester | Test result | Last run | Comment |
|
|
67
|
+
| - | - | - | - | - | - |
|
|
68
|
+
| DT | - | @mdallaire1 |  |  |
|
|
69
|
+
|
|
70
|
+
#### Rate M
|
|
71
|
+
|
|
72
|
+
| Base Rate | Rate Option | Tester | Test result | Last run | Comment |
|
|
73
|
+
| - | - | - | - | - | - |
|
|
74
|
+
| M | - | @hdenergy |  |  | [HD Énergie](https://hd.energy) |
|
|
75
|
+
| M | GDP | @hdenergy |  |  | [HD Énergie](https://hd.energy) |
|
|
76
|
+
|
|
77
|
+
Thanks to [HD Énergie](https://hd.energy) for sponsoring developpement of the Rate M support.
|
|
78
|
+
|
|
79
|
+
### Other plans
|
|
80
|
+
We don't have anyone to test with. Please reach out to us if you have this plan and want to help!
|
|
81
|
+
|
|
82
|
+
## Documentation
|
|
83
|
+
|
|
84
|
+
### Code documentation
|
|
85
|
+
|
|
86
|
+
[https://hydroqc.readthedocs.io/](https://hydroqc.readthedocs.io/)
|
|
87
|
+
|
|
88
|
+
### Architecture / concepts
|
|
89
|
+
|
|
90
|
+
If you need more information about the usage and current integrations of the library please see our website [https://hydroqc.ca](https://hydroqc.ca)
|
|
91
|
+
|
|
92
|
+
## Goal
|
|
93
|
+
|
|
94
|
+
Make it easy to fetch and manipulate data from Hydro-Quebec, especially the winter credit periods
|
|
95
|
+
|
|
96
|
+
## Example folder
|
|
97
|
+
|
|
98
|
+
An example script that extracts the data available from Hydro-Quebec is available in the examples folder.
|
|
99
|
+
|
|
100
|
+
### Basic setup
|
|
101
|
+
|
|
102
|
+
This uses python 3.10
|
|
103
|
+
|
|
104
|
+
1. Clone the repo
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
git clone https://gitlab.com/hydroqc/hydroqc.git
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
2. Create a virtual-env
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
python -m venv env
|
|
114
|
+
. env/bin/activate
|
|
115
|
+
pip install --editable .
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
3. Enter your hydro account credentials in the examples/hydro.py file (line 6)
|
|
119
|
+
|
|
120
|
+
4. Run
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
examples/hydro.py
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## TODO
|
|
127
|
+
|
|
128
|
+
[https://gitlab.com/groups/hydroqc/-/issues](https://gitlab.com/groups/hydroqc/-/issues)
|
|
129
|
+
|
|
130
|
+
## Targeted architecture (might change in the future)
|
|
131
|
+
|
|
132
|
+
```mermaid
|
|
133
|
+
classDiagram
|
|
134
|
+
WebUser <-- Customer
|
|
135
|
+
WebUser <-- HydroClient
|
|
136
|
+
|
|
137
|
+
Customer <-- Account
|
|
138
|
+
|
|
139
|
+
Account <-- Contract
|
|
140
|
+
|
|
141
|
+
Contract <-- HydroClient
|
|
142
|
+
Contract <-- Period
|
|
143
|
+
Contract <-- Event
|
|
144
|
+
Contract <-- WinterCreditHelper
|
|
145
|
+
|
|
146
|
+
WinterCreditHelper <-- HydroClient
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
HydroClient <-- Authenticator
|
|
150
|
+
|
|
151
|
+
class HydroClient{
|
|
152
|
+
|
|
153
|
+
}
|
|
154
|
+
class WinterCreditHelper{
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
class WebUser{
|
|
158
|
+
-HydroClient _hydro_client
|
|
159
|
+
+List~Customer~ customers
|
|
160
|
+
+get_contracts()
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
class Customer{
|
|
164
|
+
-HydroClient _hydro_client
|
|
165
|
+
+List~Account~ accounts
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
class Account{
|
|
169
|
+
-HydroClient _hydro_client
|
|
170
|
+
+List~Contract~ contracts
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
class Config{
|
|
174
|
+
-string config_file_path
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
class Contract{
|
|
178
|
+
-HydroClient _hydro_client
|
|
179
|
+
-int customer_id
|
|
180
|
+
-int webuser_id
|
|
181
|
+
+string subscription_type
|
|
182
|
+
+float balance
|
|
183
|
+
+list~Period~ periods
|
|
184
|
+
+list~Event~ events
|
|
185
|
+
+get_winter_credit()
|
|
186
|
+
+fetch_periods()
|
|
187
|
+
+fetch_summary()
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
class Period{
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
class Event{
|
|
194
|
+
}
|
|
195
|
+
```
|