igloohome-api 0.0.3__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.
- igloohome_api-0.0.3/.gitignore +134 -0
- igloohome_api-0.0.3/.idea/.name +1 -0
- igloohome_api-0.0.3/.idea/igloohome-api.iml +10 -0
- igloohome_api-0.0.3/.idea/inspectionProfiles/profiles_settings.xml +6 -0
- igloohome_api-0.0.3/.idea/misc.xml +7 -0
- igloohome_api-0.0.3/.idea/modules.xml +8 -0
- igloohome_api-0.0.3/.idea/vcs.xml +6 -0
- igloohome_api-0.0.3/.idea/workspace.xml +140 -0
- igloohome_api-0.0.3/LICENSE +21 -0
- igloohome_api-0.0.3/PKG-INFO +46 -0
- igloohome_api-0.0.3/Pipfile +14 -0
- igloohome_api-0.0.3/Pipfile.lock +572 -0
- igloohome_api-0.0.3/README.md +30 -0
- igloohome_api-0.0.3/_test.py +25 -0
- igloohome_api-0.0.3/pyproject.toml +27 -0
- igloohome_api-0.0.3/src/igloohome_api/__init__.py +140 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution / packaging
|
|
10
|
+
.Python
|
|
11
|
+
build/
|
|
12
|
+
develop-eggs/
|
|
13
|
+
dist/
|
|
14
|
+
downloads/
|
|
15
|
+
eggs/
|
|
16
|
+
.eggs/
|
|
17
|
+
lib/
|
|
18
|
+
lib64/
|
|
19
|
+
parts/
|
|
20
|
+
sdist/
|
|
21
|
+
var/
|
|
22
|
+
wheels/
|
|
23
|
+
pip-wheel-metadata/
|
|
24
|
+
share/python-wheels/
|
|
25
|
+
*.egg-info/
|
|
26
|
+
.installed.cfg
|
|
27
|
+
*.egg
|
|
28
|
+
MANIFEST
|
|
29
|
+
|
|
30
|
+
# PyInstaller
|
|
31
|
+
# Usually these files are written by a python script from a template
|
|
32
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
33
|
+
*.manifest
|
|
34
|
+
*.spec
|
|
35
|
+
|
|
36
|
+
# Installer logs
|
|
37
|
+
pip-log.txt
|
|
38
|
+
pip-delete-this-directory.txt
|
|
39
|
+
|
|
40
|
+
# Unit test / coverage reports
|
|
41
|
+
htmlcov/
|
|
42
|
+
.tox/
|
|
43
|
+
.nox/
|
|
44
|
+
.coverage
|
|
45
|
+
.coverage.*
|
|
46
|
+
.cache
|
|
47
|
+
nosetests.xml
|
|
48
|
+
coverage.xml
|
|
49
|
+
*.cover
|
|
50
|
+
*.py,cover
|
|
51
|
+
.hypothesis/
|
|
52
|
+
.pytest_cache/
|
|
53
|
+
|
|
54
|
+
# Translations
|
|
55
|
+
*.mo
|
|
56
|
+
*.pot
|
|
57
|
+
|
|
58
|
+
# Django stuff:
|
|
59
|
+
*.log
|
|
60
|
+
local_settings.py
|
|
61
|
+
db.sqlite3
|
|
62
|
+
db.sqlite3-journal
|
|
63
|
+
|
|
64
|
+
# Flask stuff:
|
|
65
|
+
instance/
|
|
66
|
+
.webassets-cache
|
|
67
|
+
|
|
68
|
+
# Scrapy stuff:
|
|
69
|
+
.scrapy
|
|
70
|
+
|
|
71
|
+
# Sphinx documentation
|
|
72
|
+
docs/_build/
|
|
73
|
+
|
|
74
|
+
# PyBuilder
|
|
75
|
+
target/
|
|
76
|
+
|
|
77
|
+
# Jupyter Notebook
|
|
78
|
+
.ipynb_checkpoints
|
|
79
|
+
|
|
80
|
+
# IPython
|
|
81
|
+
profile_default/
|
|
82
|
+
ipython_config.py
|
|
83
|
+
|
|
84
|
+
# pyenv
|
|
85
|
+
.python-version
|
|
86
|
+
|
|
87
|
+
# pipenv
|
|
88
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
89
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
90
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
91
|
+
# install all needed dependencies.
|
|
92
|
+
#Pipfile.lock
|
|
93
|
+
|
|
94
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
95
|
+
__pypackages__/
|
|
96
|
+
|
|
97
|
+
# Celery stuff
|
|
98
|
+
celerybeat-schedule
|
|
99
|
+
celerybeat.pid
|
|
100
|
+
|
|
101
|
+
# SageMath parsed files
|
|
102
|
+
*.sage.py
|
|
103
|
+
|
|
104
|
+
# Environments
|
|
105
|
+
.env
|
|
106
|
+
.venv
|
|
107
|
+
env/
|
|
108
|
+
venv/
|
|
109
|
+
ENV/
|
|
110
|
+
env.bak/
|
|
111
|
+
venv.bak/
|
|
112
|
+
|
|
113
|
+
# Spyder project settings
|
|
114
|
+
.spyderproject
|
|
115
|
+
.spyproject
|
|
116
|
+
|
|
117
|
+
# Rope project settings
|
|
118
|
+
.ropeproject
|
|
119
|
+
|
|
120
|
+
# mkdocs documentation
|
|
121
|
+
/site
|
|
122
|
+
|
|
123
|
+
# mypy
|
|
124
|
+
.mypy_cache/
|
|
125
|
+
.dmypy.json
|
|
126
|
+
dmypy.json
|
|
127
|
+
|
|
128
|
+
# Pyre type checker
|
|
129
|
+
.pyre/
|
|
130
|
+
|
|
131
|
+
# VS code
|
|
132
|
+
.vscode/
|
|
133
|
+
|
|
134
|
+
test.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
iglooaccess-api
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<module type="PYTHON_MODULE" version="4">
|
|
3
|
+
<component name="NewModuleRootManager">
|
|
4
|
+
<content url="file://$MODULE_DIR$">
|
|
5
|
+
<excludeFolder url="file://$MODULE_DIR$/.venv" />
|
|
6
|
+
</content>
|
|
7
|
+
<orderEntry type="jdk" jdkName="Python 3.9" jdkType="Python SDK" />
|
|
8
|
+
<orderEntry type="sourceFolder" forTests="false" />
|
|
9
|
+
</component>
|
|
10
|
+
</module>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="Black">
|
|
4
|
+
<option name="sdkName" value="Python 3.9 (igloohome-api)" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (igloohome-api)" project-jdk-type="Python SDK" />
|
|
7
|
+
</project>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/igloohome-api.iml" filepath="$PROJECT_DIR$/.idea/igloohome-api.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="AutoImportSettings">
|
|
4
|
+
<option name="autoReloadType" value="SELECTIVE" />
|
|
5
|
+
</component>
|
|
6
|
+
<component name="ChangeListManager">
|
|
7
|
+
<list default="true" id="42911ce8-778c-4a1e-a340-3e07485e3588" name="Changes" comment="- Created initial copy of auth.py">
|
|
8
|
+
<change afterPath="$PROJECT_DIR$/api.py" afterDir="false" />
|
|
9
|
+
<change afterPath="$PROJECT_DIR$/test.py" afterDir="false" />
|
|
10
|
+
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
|
11
|
+
<change beforePath="$PROJECT_DIR$/auth.py" beforeDir="false" afterPath="$PROJECT_DIR$/auth.py" afterDir="false" />
|
|
12
|
+
</list>
|
|
13
|
+
<option name="SHOW_DIALOG" value="false" />
|
|
14
|
+
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
|
15
|
+
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
|
16
|
+
<option name="LAST_RESOLUTION" value="IGNORE" />
|
|
17
|
+
</component>
|
|
18
|
+
<component name="FileTemplateManagerImpl">
|
|
19
|
+
<option name="RECENT_TEMPLATES">
|
|
20
|
+
<list>
|
|
21
|
+
<option value="HTTP Request" />
|
|
22
|
+
<option value="Python Script" />
|
|
23
|
+
</list>
|
|
24
|
+
</option>
|
|
25
|
+
</component>
|
|
26
|
+
<component name="Git.Settings">
|
|
27
|
+
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
|
28
|
+
</component>
|
|
29
|
+
<component name="ProjectColorInfo"><![CDATA[{
|
|
30
|
+
"associatedIndex": 6
|
|
31
|
+
}]]></component>
|
|
32
|
+
<component name="ProjectId" id="2obWi1Fw56PuO1DKR2NwEbqgAUH" />
|
|
33
|
+
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
|
34
|
+
<component name="ProjectViewState">
|
|
35
|
+
<option name="hideEmptyMiddlePackages" value="true" />
|
|
36
|
+
<option name="showLibraryContents" value="true" />
|
|
37
|
+
</component>
|
|
38
|
+
<component name="PropertiesComponent"><![CDATA[{
|
|
39
|
+
"keyToString": {
|
|
40
|
+
"Python.test.executor": "Run",
|
|
41
|
+
"RunOnceActivity.ShowReadmeOnStart": "true",
|
|
42
|
+
"git-widget-placeholder": "main",
|
|
43
|
+
"node.js.detected.package.eslint": "true",
|
|
44
|
+
"node.js.detected.package.tslint": "true",
|
|
45
|
+
"node.js.selected.package.eslint": "(autodetect)",
|
|
46
|
+
"node.js.selected.package.tslint": "(autodetect)",
|
|
47
|
+
"nodejs_package_manager_path": "npm",
|
|
48
|
+
"vue.rearranger.settings.migration": "true"
|
|
49
|
+
}
|
|
50
|
+
}]]></component>
|
|
51
|
+
<component name="RunManager">
|
|
52
|
+
<configuration name="test" type="PythonConfigurationType" factoryName="Python" temporary="true" nameIsGenerated="true">
|
|
53
|
+
<module name="igloohome-api" />
|
|
54
|
+
<option name="ENV_FILES" value="" />
|
|
55
|
+
<option name="INTERPRETER_OPTIONS" value="" />
|
|
56
|
+
<option name="PARENT_ENVS" value="true" />
|
|
57
|
+
<envs>
|
|
58
|
+
<env name="PYTHONUNBUFFERED" value="1" />
|
|
59
|
+
</envs>
|
|
60
|
+
<option name="SDK_HOME" value="" />
|
|
61
|
+
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
|
62
|
+
<option name="IS_MODULE_SDK" value="true" />
|
|
63
|
+
<option name="ADD_CONTENT_ROOTS" value="true" />
|
|
64
|
+
<option name="ADD_SOURCE_ROOTS" value="true" />
|
|
65
|
+
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
|
|
66
|
+
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/test.py" />
|
|
67
|
+
<option name="PARAMETERS" value="" />
|
|
68
|
+
<option name="SHOW_COMMAND_LINE" value="false" />
|
|
69
|
+
<option name="EMULATE_TERMINAL" value="false" />
|
|
70
|
+
<option name="MODULE_MODE" value="false" />
|
|
71
|
+
<option name="REDIRECT_INPUT" value="false" />
|
|
72
|
+
<option name="INPUT_FILE" value="" />
|
|
73
|
+
<method v="2" />
|
|
74
|
+
</configuration>
|
|
75
|
+
<recent_temporary>
|
|
76
|
+
<list>
|
|
77
|
+
<item itemvalue="Python.test" />
|
|
78
|
+
</list>
|
|
79
|
+
</recent_temporary>
|
|
80
|
+
</component>
|
|
81
|
+
<component name="SharedIndexes">
|
|
82
|
+
<attachedChunks>
|
|
83
|
+
<set>
|
|
84
|
+
<option value="bundled-js-predefined-1d06a55b98c1-0b3e54e931b4-JavaScript-PY-241.18034.82" />
|
|
85
|
+
<option value="bundled-python-sdk-975db3bf15a3-2767605e8bc2-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-241.18034.82" />
|
|
86
|
+
</set>
|
|
87
|
+
</attachedChunks>
|
|
88
|
+
</component>
|
|
89
|
+
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
|
|
90
|
+
<component name="TaskManager">
|
|
91
|
+
<task active="true" id="Default" summary="Default task">
|
|
92
|
+
<changelist id="42911ce8-778c-4a1e-a340-3e07485e3588" name="Changes" comment="" />
|
|
93
|
+
<created>1731138878771</created>
|
|
94
|
+
<option name="number" value="Default" />
|
|
95
|
+
<option name="presentableId" value="Default" />
|
|
96
|
+
<updated>1731138878771</updated>
|
|
97
|
+
<workItem from="1731138882266" duration="4657000" />
|
|
98
|
+
</task>
|
|
99
|
+
<task id="LOCAL-00001" summary="- initial commit">
|
|
100
|
+
<option name="closed" value="true" />
|
|
101
|
+
<created>1731139036712</created>
|
|
102
|
+
<option name="number" value="00001" />
|
|
103
|
+
<option name="presentableId" value="LOCAL-00001" />
|
|
104
|
+
<option name="project" value="LOCAL" />
|
|
105
|
+
<updated>1731139036712</updated>
|
|
106
|
+
</task>
|
|
107
|
+
<task id="LOCAL-00002" summary="- Created initial copy of auth.py">
|
|
108
|
+
<option name="closed" value="true" />
|
|
109
|
+
<created>1731141171029</created>
|
|
110
|
+
<option name="number" value="00002" />
|
|
111
|
+
<option name="presentableId" value="LOCAL-00002" />
|
|
112
|
+
<option name="project" value="LOCAL" />
|
|
113
|
+
<updated>1731141171029</updated>
|
|
114
|
+
</task>
|
|
115
|
+
<option name="localTasksCounter" value="3" />
|
|
116
|
+
<servers />
|
|
117
|
+
</component>
|
|
118
|
+
<component name="TypeScriptGeneratedFilesManager">
|
|
119
|
+
<option name="version" value="3" />
|
|
120
|
+
</component>
|
|
121
|
+
<component name="Vcs.Log.Tabs.Properties">
|
|
122
|
+
<option name="TAB_STATES">
|
|
123
|
+
<map>
|
|
124
|
+
<entry key="MAIN">
|
|
125
|
+
<value>
|
|
126
|
+
<State />
|
|
127
|
+
</value>
|
|
128
|
+
</entry>
|
|
129
|
+
</map>
|
|
130
|
+
</option>
|
|
131
|
+
</component>
|
|
132
|
+
<component name="VcsManagerConfiguration">
|
|
133
|
+
<MESSAGE value="- initial commit" />
|
|
134
|
+
<MESSAGE value="- Created initial copy of auth.py" />
|
|
135
|
+
<option name="LAST_COMMIT_MESSAGE" value="- Created initial copy of auth.py" />
|
|
136
|
+
</component>
|
|
137
|
+
<component name="com.intellij.coverage.CoverageDataManagerImpl">
|
|
138
|
+
<SUITE FILE_PATH="coverage/igloohome_api$test.coverage" NAME="test Coverage Results" MODIFIED="1731142917061" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="false" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
|
|
139
|
+
</component>
|
|
140
|
+
</project>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Keith Leow
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: igloohome-api
|
|
3
|
+
Version: 0.0.3
|
|
4
|
+
Summary: A python package for iglooaccess' API
|
|
5
|
+
Project-URL: Homepage, https://github.com/keithle888/igloohome-api
|
|
6
|
+
Project-URL: Issues, https://github.com/keithle888/igloohome-api/issues
|
|
7
|
+
Author-email: keithle888 <keithle888@gmail.com>
|
|
8
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
9
|
+
Classifier: Operating System :: OS Independent
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Requires-Python: >=3.8
|
|
12
|
+
Requires-Dist: aiohttp~=3.10.10
|
|
13
|
+
Requires-Dist: dacite~=1.8.1
|
|
14
|
+
Requires-Dist: pyjwt~=2.9.0
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
|
|
17
|
+
# igloohome-api
|
|
18
|
+
A python HTTP library based on `aiohttp` to make use of [igloohome's REST API](https://igloocompany.stoplight.io/docs/igloohome-api/1w1cuv56ge5xq-overview).
|
|
19
|
+
This library is designed to be used via the [iglooaccess](https://www.igloocompany.co/iglooaccess) service.
|
|
20
|
+
|
|
21
|
+
## Requirements
|
|
22
|
+
An account on the iglooaccess portal needs to be created to get a `client_id` & `client_secret` for authentication.
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
### Authentication
|
|
27
|
+
```python
|
|
28
|
+
from igloohome_api import Auth
|
|
29
|
+
from aiohttp import ClientSession
|
|
30
|
+
|
|
31
|
+
session = ClientSession()
|
|
32
|
+
auth = Auth(
|
|
33
|
+
client_id="<client_id>",
|
|
34
|
+
client_secret="<client_secret>",
|
|
35
|
+
session=session,
|
|
36
|
+
)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### API usage
|
|
40
|
+
```python
|
|
41
|
+
frim igloohome_api import Api
|
|
42
|
+
|
|
43
|
+
api = Api(auth)
|
|
44
|
+
|
|
45
|
+
devices = await api.get_devices()
|
|
46
|
+
```
|
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"hash": {
|
|
4
|
+
"sha256": "6c155d30b4a27f109d86c2e6c0539722c939b44b50cf9ccac3c94fce6f0500ba"
|
|
5
|
+
},
|
|
6
|
+
"pipfile-spec": 6,
|
|
7
|
+
"requires": {
|
|
8
|
+
"python_version": "3.9"
|
|
9
|
+
},
|
|
10
|
+
"sources": [
|
|
11
|
+
{
|
|
12
|
+
"name": "pypi",
|
|
13
|
+
"url": "https://pypi.org/simple",
|
|
14
|
+
"verify_ssl": true
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
},
|
|
18
|
+
"default": {
|
|
19
|
+
"aiohappyeyeballs": {
|
|
20
|
+
"hashes": [
|
|
21
|
+
"sha256:75cf88a15106a5002a8eb1dab212525c00d1f4c0fa96e551c9fbe6f09a621586",
|
|
22
|
+
"sha256:8a7a83727b2756f394ab2895ea0765a0a8c475e3c71e98d43d76f22b4b435572"
|
|
23
|
+
],
|
|
24
|
+
"markers": "python_version >= '3.8'",
|
|
25
|
+
"version": "==2.4.3"
|
|
26
|
+
},
|
|
27
|
+
"aiohttp": {
|
|
28
|
+
"hashes": [
|
|
29
|
+
"sha256:007ec22fbc573e5eb2fb7dec4198ef8f6bf2fe4ce20020798b2eb5d0abda6138",
|
|
30
|
+
"sha256:00819de9e45d42584bed046314c40ea7e9aea95411b38971082cad449392b08c",
|
|
31
|
+
"sha256:01948b1d570f83ee7bbf5a60ea2375a89dfb09fd419170e7f5af029510033d24",
|
|
32
|
+
"sha256:038f514fe39e235e9fef6717fbf944057bfa24f9b3db9ee551a7ecf584b5b480",
|
|
33
|
+
"sha256:03a42ac7895406220124c88911ebee31ba8b2d24c98507f4a8bf826b2937c7f2",
|
|
34
|
+
"sha256:05646ebe6b94cc93407b3bf34b9eb26c20722384d068eb7339de802154d61bc5",
|
|
35
|
+
"sha256:0631dd7c9f0822cc61c88586ca76d5b5ada26538097d0f1df510b082bad3411a",
|
|
36
|
+
"sha256:0b00807e2605f16e1e198f33a53ce3c4523114059b0c09c337209ae55e3823a8",
|
|
37
|
+
"sha256:0e1b370d8007c4ae31ee6db7f9a2fe801a42b146cec80a86766e7ad5c4a259cf",
|
|
38
|
+
"sha256:15ecd889a709b0080f02721255b3f80bb261c2293d3c748151274dfea93ac871",
|
|
39
|
+
"sha256:1b66ccafef7336a1e1f0e389901f60c1d920102315a56df85e49552308fc0486",
|
|
40
|
+
"sha256:1bbb122c557a16fafc10354b9d99ebf2f2808a660d78202f10ba9d50786384b9",
|
|
41
|
+
"sha256:1eb89d3d29adaf533588f209768a9c02e44e4baf832b08118749c5fad191781d",
|
|
42
|
+
"sha256:258c5dd01afc10015866114e210fb7365f0d02d9d059c3c3415382ab633fcbcb",
|
|
43
|
+
"sha256:2609e9ab08474702cc67b7702dbb8a80e392c54613ebe80db7e8dbdb79837c68",
|
|
44
|
+
"sha256:274cfa632350225ce3fdeb318c23b4a10ec25c0e2c880eff951a3842cf358ac1",
|
|
45
|
+
"sha256:28529e08fde6f12eba8677f5a8608500ed33c086f974de68cc65ab218713a59d",
|
|
46
|
+
"sha256:2b606353da03edcc71130b52388d25f9a30a126e04caef1fd637e31683033abd",
|
|
47
|
+
"sha256:30ca7c3b94708a9d7ae76ff281b2f47d8eaf2579cd05971b5dc681db8caac6e1",
|
|
48
|
+
"sha256:333cf6cf8e65f6a1e06e9eb3e643a0c515bb850d470902274239fea02033e9a8",
|
|
49
|
+
"sha256:3455522392fb15ff549d92fbf4b73b559d5e43dc522588f7eb3e54c3f38beee7",
|
|
50
|
+
"sha256:362f641f9071e5f3ee6f8e7d37d5ed0d95aae656adf4ef578313ee585b585959",
|
|
51
|
+
"sha256:3bcd391d083f636c06a68715e69467963d1f9600f85ef556ea82e9ef25f043f7",
|
|
52
|
+
"sha256:3dffb610a30d643983aeb185ce134f97f290f8935f0abccdd32c77bed9388b42",
|
|
53
|
+
"sha256:3fe407bf93533a6fa82dece0e74dbcaaf5d684e5a51862887f9eaebe6372cd79",
|
|
54
|
+
"sha256:413251f6fcf552a33c981c4709a6bba37b12710982fec8e558ae944bfb2abd38",
|
|
55
|
+
"sha256:438cd072f75bb6612f2aca29f8bd7cdf6e35e8f160bc312e49fbecab77c99e3a",
|
|
56
|
+
"sha256:4470c73c12cd9109db8277287d11f9dd98f77fc54155fc71a7738a83ffcc8ea8",
|
|
57
|
+
"sha256:45c3b868724137f713a38376fef8120c166d1eadd50da1855c112fe97954aed8",
|
|
58
|
+
"sha256:486f7aabfa292719a2753c016cc3a8f8172965cabb3ea2e7f7436c7f5a22a151",
|
|
59
|
+
"sha256:4f05e9727ce409358baa615dbeb9b969db94324a79b5a5cea45d39bdb01d82e6",
|
|
60
|
+
"sha256:50aed5155f819873d23520919e16703fc8925e509abbb1a1491b0087d1cd969e",
|
|
61
|
+
"sha256:50edbcad60d8f0e3eccc68da67f37268b5144ecc34d59f27a02f9611c1d4eec7",
|
|
62
|
+
"sha256:54ca74df1be3c7ca1cf7f4c971c79c2daf48d9aa65dea1a662ae18926f5bc8ce",
|
|
63
|
+
"sha256:578a4b875af3e0daaf1ac6fa983d93e0bbfec3ead753b6d6f33d467100cdc67b",
|
|
64
|
+
"sha256:597a079284b7ee65ee102bc3a6ea226a37d2b96d0418cc9047490f231dc09fe8",
|
|
65
|
+
"sha256:59bb3c54aa420521dc4ce3cc2c3fe2ad82adf7b09403fa1f48ae45c0cbde6628",
|
|
66
|
+
"sha256:5c6a5b8c7926ba5d8545c7dd22961a107526562da31a7a32fa2456baf040939f",
|
|
67
|
+
"sha256:64f6c17757251e2b8d885d728b6433d9d970573586a78b78ba8929b0f41d045a",
|
|
68
|
+
"sha256:679abe5d3858b33c2cf74faec299fda60ea9de62916e8b67e625d65bf069a3b7",
|
|
69
|
+
"sha256:741a46d58677d8c733175d7e5aa618d277cd9d880301a380fd296975a9cdd7bc",
|
|
70
|
+
"sha256:7789050d9e5d0c309c706953e5e8876e38662d57d45f936902e176d19f1c58ab",
|
|
71
|
+
"sha256:77abf6665ae54000b98b3c742bc6ea1d1fb31c394bcabf8b5d2c1ac3ebfe7f3b",
|
|
72
|
+
"sha256:79019094f87c9fb44f8d769e41dbb664d6e8fcfd62f665ccce36762deaa0e911",
|
|
73
|
+
"sha256:7b06b7843929e41a94ea09eb1ce3927865387e3e23ebe108e0d0d09b08d25be9",
|
|
74
|
+
"sha256:7e338c0523d024fad378b376a79faff37fafb3c001872a618cde1d322400a572",
|
|
75
|
+
"sha256:7ea7ffc6d6d6f8a11e6f40091a1040995cdff02cfc9ba4c2f30a516cb2633554",
|
|
76
|
+
"sha256:8105fd8a890df77b76dd3054cddf01a879fc13e8af576805d667e0fa0224c35d",
|
|
77
|
+
"sha256:84afcdea18eda514c25bc68b9af2a2b1adea7c08899175a51fe7c4fb6d551257",
|
|
78
|
+
"sha256:9294bbb581f92770e6ed5c19559e1e99255e4ca604a22c5c6397b2f9dd3ee42c",
|
|
79
|
+
"sha256:93429602396f3383a797a2a70e5f1de5df8e35535d7806c9f91df06f297e109b",
|
|
80
|
+
"sha256:9627cc1a10c8c409b5822a92d57a77f383b554463d1884008e051c32ab1b3742",
|
|
81
|
+
"sha256:998f3bd3cfc95e9424a6acd7840cbdd39e45bc09ef87533c006f94ac47296090",
|
|
82
|
+
"sha256:9c72109213eb9d3874f7ac8c0c5fa90e072d678e117d9061c06e30c85b4cf0e6",
|
|
83
|
+
"sha256:9fc1500fd2a952c5c8e3b29aaf7e3cc6e27e9cfc0a8819b3bce48cc1b849e4cc",
|
|
84
|
+
"sha256:a3f00003de6eba42d6e94fabb4125600d6e484846dbf90ea8e48a800430cc142",
|
|
85
|
+
"sha256:a45d85cf20b5e0d0aa5a8dca27cce8eddef3292bc29d72dcad1641f4ed50aa16",
|
|
86
|
+
"sha256:a7d8d14fe962153fc681f6366bdec33d4356f98a3e3567782aac1b6e0e40109a",
|
|
87
|
+
"sha256:a8fa23fe62c436ccf23ff930149c047f060c7126eae3ccea005f0483f27b2e28",
|
|
88
|
+
"sha256:aa6658732517ddabe22c9036479eabce6036655ba87a0224c612e1ae6af2087e",
|
|
89
|
+
"sha256:aafc8ee9b742ce75044ae9a4d3e60e3d918d15a4c2e08a6c3c3e38fa59b92d94",
|
|
90
|
+
"sha256:ab5a5a0c7a7991d90446a198689c0535be89bbd6b410a1f9a66688f0880ec026",
|
|
91
|
+
"sha256:acd48d5b80ee80f9432a165c0ac8cbf9253eaddb6113269a5e18699b33958dbb",
|
|
92
|
+
"sha256:ad7593bb24b2ab09e65e8a1d385606f0f47c65b5a2ae6c551db67d6653e78c28",
|
|
93
|
+
"sha256:baa42524a82f75303f714108fea528ccacf0386af429b69fff141ffef1c534f9",
|
|
94
|
+
"sha256:bdfcf6443637c148c4e1a20c48c566aa694fa5e288d34b20fcdc58507882fed3",
|
|
95
|
+
"sha256:be7443669ae9c016b71f402e43208e13ddf00912f47f623ee5994e12fc7d4b3f",
|
|
96
|
+
"sha256:c02a30b904282777d872266b87b20ed8cc0d1501855e27f831320f471d54d983",
|
|
97
|
+
"sha256:c1277cd707c465cd09572a774559a3cc7c7a28802eb3a2a9472588f062097205",
|
|
98
|
+
"sha256:c30a0eafc89d28e7f959281b58198a9fa5e99405f716c0289b7892ca345fe45f",
|
|
99
|
+
"sha256:c5ce2ce7c997e1971b7184ee37deb6ea9922ef5163c6ee5aa3c274b05f9e12fa",
|
|
100
|
+
"sha256:c823bc3971c44ab93e611ab1a46b1eafeae474c0c844aff4b7474287b75fe49c",
|
|
101
|
+
"sha256:ce0cdc074d540265bfeb31336e678b4e37316849d13b308607efa527e981f5c2",
|
|
102
|
+
"sha256:d1720b4f14c78a3089562b8875b53e36b51c97c51adc53325a69b79b4b48ebcb",
|
|
103
|
+
"sha256:d183cf9c797a5291e8301790ed6d053480ed94070637bfaad914dd38b0981f67",
|
|
104
|
+
"sha256:d9010c31cd6fa59438da4e58a7f19e4753f7f264300cd152e7f90d4602449762",
|
|
105
|
+
"sha256:d9e5e4a85bdb56d224f412d9c98ae4cbd032cc4f3161818f692cd81766eee65a",
|
|
106
|
+
"sha256:da1dee8948d2137bb51fbb8a53cce6b1bcc86003c6b42565f008438b806cccd8",
|
|
107
|
+
"sha256:df9270660711670e68803107d55c2b5949c2e0f2e4896da176e1ecfc068b974a",
|
|
108
|
+
"sha256:e00e3505cd80440f6c98c6d69269dcc2a119f86ad0a9fd70bccc59504bebd68a",
|
|
109
|
+
"sha256:e48d5021a84d341bcaf95c8460b152cfbad770d28e5fe14a768988c461b821bc",
|
|
110
|
+
"sha256:e7f8b04d83483577fd9200461b057c9f14ced334dcb053090cea1da9c8321a91",
|
|
111
|
+
"sha256:edfe3341033a6b53a5c522c802deb2079eee5cbfbb0af032a55064bd65c73a23",
|
|
112
|
+
"sha256:ef9c33cc5cbca35808f6c74be11eb7f5f6b14d2311be84a15b594bd3e58b5527",
|
|
113
|
+
"sha256:f2d4324a98062be0525d16f768a03e0bbb3b9fe301ceee99611dc9a7953124e6",
|
|
114
|
+
"sha256:f3935f82f6f4a3820270842e90456ebad3af15810cf65932bd24da4463bc0a4c",
|
|
115
|
+
"sha256:f614ab0c76397661b90b6851a030004dac502e48260ea10f2441abd2207fbcc7",
|
|
116
|
+
"sha256:f7db54c7914cc99d901d93a34704833568d86c20925b2762f9fa779f9cd2e70f",
|
|
117
|
+
"sha256:fbc6264158392bad9df19537e872d476f7c57adf718944cc1e4495cbabf38e2a",
|
|
118
|
+
"sha256:fe2fb38c2ed905a2582948e2de560675e9dfbee94c6d5ccdb1301c6d0a5bf092",
|
|
119
|
+
"sha256:ffe595f10566f8276b76dc3a11ae4bb7eba1aac8ddd75811736a15b0d5311414"
|
|
120
|
+
],
|
|
121
|
+
"index": "pypi",
|
|
122
|
+
"markers": "python_version >= '3.8'",
|
|
123
|
+
"version": "==3.10.10"
|
|
124
|
+
},
|
|
125
|
+
"aiosignal": {
|
|
126
|
+
"hashes": [
|
|
127
|
+
"sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc",
|
|
128
|
+
"sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17"
|
|
129
|
+
],
|
|
130
|
+
"markers": "python_version >= '3.7'",
|
|
131
|
+
"version": "==1.3.1"
|
|
132
|
+
},
|
|
133
|
+
"async-timeout": {
|
|
134
|
+
"hashes": [
|
|
135
|
+
"sha256:4640d96be84d82d02ed59ea2b7105a0f7b33abe8703703cd0ab0bf87c427522f",
|
|
136
|
+
"sha256:7405140ff1230c310e51dc27b3145b9092d659ce68ff733fb0cefe3ee42be028"
|
|
137
|
+
],
|
|
138
|
+
"markers": "python_version >= '3.7'",
|
|
139
|
+
"version": "==4.0.3"
|
|
140
|
+
},
|
|
141
|
+
"attrs": {
|
|
142
|
+
"hashes": [
|
|
143
|
+
"sha256:5cfb1b9148b5b086569baec03f20d7b6bf3bcacc9a42bebf87ffaaca362f6346",
|
|
144
|
+
"sha256:81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2"
|
|
145
|
+
],
|
|
146
|
+
"markers": "python_version >= '3.7'",
|
|
147
|
+
"version": "==24.2.0"
|
|
148
|
+
},
|
|
149
|
+
"dacite": {
|
|
150
|
+
"hashes": [
|
|
151
|
+
"sha256:cc31ad6fdea1f49962ea42db9421772afe01ac5442380d9a99fcf3d188c61afe"
|
|
152
|
+
],
|
|
153
|
+
"index": "pypi",
|
|
154
|
+
"markers": "python_version >= '3.6'",
|
|
155
|
+
"version": "==1.8.1"
|
|
156
|
+
},
|
|
157
|
+
"frozenlist": {
|
|
158
|
+
"hashes": [
|
|
159
|
+
"sha256:000a77d6034fbad9b6bb880f7ec073027908f1b40254b5d6f26210d2dab1240e",
|
|
160
|
+
"sha256:03d33c2ddbc1816237a67f66336616416e2bbb6beb306e5f890f2eb22b959cdf",
|
|
161
|
+
"sha256:04a5c6babd5e8fb7d3c871dc8b321166b80e41b637c31a995ed844a6139942b6",
|
|
162
|
+
"sha256:0996c66760924da6e88922756d99b47512a71cfd45215f3570bf1e0b694c206a",
|
|
163
|
+
"sha256:0cc974cc93d32c42e7b0f6cf242a6bd941c57c61b618e78b6c0a96cb72788c1d",
|
|
164
|
+
"sha256:0f253985bb515ecd89629db13cb58d702035ecd8cfbca7d7a7e29a0e6d39af5f",
|
|
165
|
+
"sha256:11aabdd62b8b9c4b84081a3c246506d1cddd2dd93ff0ad53ede5defec7886b28",
|
|
166
|
+
"sha256:12f78f98c2f1c2429d42e6a485f433722b0061d5c0b0139efa64f396efb5886b",
|
|
167
|
+
"sha256:140228863501b44b809fb39ec56b5d4071f4d0aa6d216c19cbb08b8c5a7eadb9",
|
|
168
|
+
"sha256:1431d60b36d15cda188ea222033eec8e0eab488f39a272461f2e6d9e1a8e63c2",
|
|
169
|
+
"sha256:15538c0cbf0e4fa11d1e3a71f823524b0c46299aed6e10ebb4c2089abd8c3bec",
|
|
170
|
+
"sha256:15b731db116ab3aedec558573c1a5eec78822b32292fe4f2f0345b7f697745c2",
|
|
171
|
+
"sha256:17dcc32fc7bda7ce5875435003220a457bcfa34ab7924a49a1c19f55b6ee185c",
|
|
172
|
+
"sha256:1893f948bf6681733aaccf36c5232c231e3b5166d607c5fa77773611df6dc336",
|
|
173
|
+
"sha256:189f03b53e64144f90990d29a27ec4f7997d91ed3d01b51fa39d2dbe77540fd4",
|
|
174
|
+
"sha256:1a8ea951bbb6cacd492e3948b8da8c502a3f814f5d20935aae74b5df2b19cf3d",
|
|
175
|
+
"sha256:1b96af8c582b94d381a1c1f51ffaedeb77c821c690ea5f01da3d70a487dd0a9b",
|
|
176
|
+
"sha256:1e76bfbc72353269c44e0bc2cfe171900fbf7f722ad74c9a7b638052afe6a00c",
|
|
177
|
+
"sha256:2150cc6305a2c2ab33299453e2968611dacb970d2283a14955923062c8d00b10",
|
|
178
|
+
"sha256:226d72559fa19babe2ccd920273e767c96a49b9d3d38badd7c91a0fdeda8ea08",
|
|
179
|
+
"sha256:237f6b23ee0f44066219dae14c70ae38a63f0440ce6750f868ee08775073f942",
|
|
180
|
+
"sha256:29d94c256679247b33a3dc96cce0f93cbc69c23bf75ff715919332fdbb6a32b8",
|
|
181
|
+
"sha256:2b5e23253bb709ef57a8e95e6ae48daa9ac5f265637529e4ce6b003a37b2621f",
|
|
182
|
+
"sha256:2d0da8bbec082bf6bf18345b180958775363588678f64998c2b7609e34719b10",
|
|
183
|
+
"sha256:2f3f7a0fbc219fb4455264cae4d9f01ad41ae6ee8524500f381de64ffaa077d5",
|
|
184
|
+
"sha256:30c72000fbcc35b129cb09956836c7d7abf78ab5416595e4857d1cae8d6251a6",
|
|
185
|
+
"sha256:31115ba75889723431aa9a4e77d5f398f5cf976eea3bdf61749731f62d4a4a21",
|
|
186
|
+
"sha256:31a9ac2b38ab9b5a8933b693db4939764ad3f299fcaa931a3e605bc3460e693c",
|
|
187
|
+
"sha256:366d8f93e3edfe5a918c874702f78faac300209a4d5bf38352b2c1bdc07a766d",
|
|
188
|
+
"sha256:374ca2dabdccad8e2a76d40b1d037f5bd16824933bf7bcea3e59c891fd4a0923",
|
|
189
|
+
"sha256:44c49271a937625619e862baacbd037a7ef86dd1ee215afc298a417ff3270608",
|
|
190
|
+
"sha256:45e0896250900b5aa25180f9aec243e84e92ac84bd4a74d9ad4138ef3f5c97de",
|
|
191
|
+
"sha256:498524025a5b8ba81695761d78c8dd7382ac0b052f34e66939c42df860b8ff17",
|
|
192
|
+
"sha256:50cf5e7ee9b98f22bdecbabf3800ae78ddcc26e4a435515fc72d97903e8488e0",
|
|
193
|
+
"sha256:52ef692a4bc60a6dd57f507429636c2af8b6046db8b31b18dac02cbc8f507f7f",
|
|
194
|
+
"sha256:561eb1c9579d495fddb6da8959fd2a1fca2c6d060d4113f5844b433fc02f2641",
|
|
195
|
+
"sha256:5a3ba5f9a0dfed20337d3e966dc359784c9f96503674c2faf015f7fe8e96798c",
|
|
196
|
+
"sha256:5b6a66c18b5b9dd261ca98dffcb826a525334b2f29e7caa54e182255c5f6a65a",
|
|
197
|
+
"sha256:5c28f4b5dbef8a0d8aad0d4de24d1e9e981728628afaf4ea0792f5d0939372f0",
|
|
198
|
+
"sha256:5d7f5a50342475962eb18b740f3beecc685a15b52c91f7d975257e13e029eca9",
|
|
199
|
+
"sha256:6321899477db90bdeb9299ac3627a6a53c7399c8cd58d25da094007402b039ab",
|
|
200
|
+
"sha256:6482a5851f5d72767fbd0e507e80737f9c8646ae7fd303def99bfe813f76cf7f",
|
|
201
|
+
"sha256:666534d15ba8f0fda3f53969117383d5dc021266b3c1a42c9ec4855e4b58b9d3",
|
|
202
|
+
"sha256:683173d371daad49cffb8309779e886e59c2f369430ad28fe715f66d08d4ab1a",
|
|
203
|
+
"sha256:6e9080bb2fb195a046e5177f10d9d82b8a204c0736a97a153c2466127de87784",
|
|
204
|
+
"sha256:73f2e31ea8dd7df61a359b731716018c2be196e5bb3b74ddba107f694fbd7604",
|
|
205
|
+
"sha256:7437601c4d89d070eac8323f121fcf25f88674627505334654fd027b091db09d",
|
|
206
|
+
"sha256:76e4753701248476e6286f2ef492af900ea67d9706a0155335a40ea21bf3b2f5",
|
|
207
|
+
"sha256:7707a25d6a77f5d27ea7dc7d1fc608aa0a478193823f88511ef5e6b8a48f9d03",
|
|
208
|
+
"sha256:7948140d9f8ece1745be806f2bfdf390127cf1a763b925c4a805c603df5e697e",
|
|
209
|
+
"sha256:7a1a048f9215c90973402e26c01d1cff8a209e1f1b53f72b95c13db61b00f953",
|
|
210
|
+
"sha256:7d57d8f702221405a9d9b40f9da8ac2e4a1a8b5285aac6100f3393675f0a85ee",
|
|
211
|
+
"sha256:7f3c8c1dacd037df16e85227bac13cca58c30da836c6f936ba1df0c05d046d8d",
|
|
212
|
+
"sha256:81d5af29e61b9c8348e876d442253723928dce6433e0e76cd925cd83f1b4b817",
|
|
213
|
+
"sha256:828afae9f17e6de596825cf4228ff28fbdf6065974e5ac1410cecc22f699d2b3",
|
|
214
|
+
"sha256:87f724d055eb4785d9be84e9ebf0f24e392ddfad00b3fe036e43f489fafc9039",
|
|
215
|
+
"sha256:8969190d709e7c48ea386db202d708eb94bdb29207a1f269bab1196ce0dcca1f",
|
|
216
|
+
"sha256:90646abbc7a5d5c7c19461d2e3eeb76eb0b204919e6ece342feb6032c9325ae9",
|
|
217
|
+
"sha256:91d6c171862df0a6c61479d9724f22efb6109111017c87567cfeb7b5d1449fdf",
|
|
218
|
+
"sha256:9272fa73ca71266702c4c3e2d4a28553ea03418e591e377a03b8e3659d94fa76",
|
|
219
|
+
"sha256:92b5278ed9d50fe610185ecd23c55d8b307d75ca18e94c0e7de328089ac5dcba",
|
|
220
|
+
"sha256:97160e245ea33d8609cd2b8fd997c850b56db147a304a262abc2b3be021a9171",
|
|
221
|
+
"sha256:977701c081c0241d0955c9586ffdd9ce44f7a7795df39b9151cd9a6fd0ce4cfb",
|
|
222
|
+
"sha256:9b7dc0c4338e6b8b091e8faf0db3168a37101943e687f373dce00959583f7439",
|
|
223
|
+
"sha256:9b93d7aaa36c966fa42efcaf716e6b3900438632a626fb09c049f6a2f09fc631",
|
|
224
|
+
"sha256:9bbcdfaf4af7ce002694a4e10a0159d5a8d20056a12b05b45cea944a4953f972",
|
|
225
|
+
"sha256:9c2623347b933fcb9095841f1cc5d4ff0b278addd743e0e966cb3d460278840d",
|
|
226
|
+
"sha256:a2fe128eb4edeabe11896cb6af88fca5346059f6c8d807e3b910069f39157869",
|
|
227
|
+
"sha256:a72b7a6e3cd2725eff67cd64c8f13335ee18fc3c7befc05aed043d24c7b9ccb9",
|
|
228
|
+
"sha256:a9fe0f1c29ba24ba6ff6abf688cb0b7cf1efab6b6aa6adc55441773c252f7411",
|
|
229
|
+
"sha256:b97f7b575ab4a8af9b7bc1d2ef7f29d3afee2226bd03ca3875c16451ad5a7723",
|
|
230
|
+
"sha256:bdac3c7d9b705d253b2ce370fde941836a5f8b3c5c2b8fd70940a3ea3af7f4f2",
|
|
231
|
+
"sha256:c03eff4a41bd4e38415cbed054bbaff4a075b093e2394b6915dca34a40d1e38b",
|
|
232
|
+
"sha256:c16d2fa63e0800723139137d667e1056bee1a1cf7965153d2d104b62855e9b99",
|
|
233
|
+
"sha256:c1fac3e2ace2eb1052e9f7c7db480818371134410e1f5c55d65e8f3ac6d1407e",
|
|
234
|
+
"sha256:ce3aa154c452d2467487765e3adc730a8c153af77ad84096bc19ce19a2400840",
|
|
235
|
+
"sha256:cee6798eaf8b1416ef6909b06f7dc04b60755206bddc599f52232606e18179d3",
|
|
236
|
+
"sha256:d1b3eb7b05ea246510b43a7e53ed1653e55c2121019a97e60cad7efb881a97bb",
|
|
237
|
+
"sha256:d994863bba198a4a518b467bb971c56e1db3f180a25c6cf7bb1949c267f748c3",
|
|
238
|
+
"sha256:dd47a5181ce5fcb463b5d9e17ecfdb02b678cca31280639255ce9d0e5aa67af0",
|
|
239
|
+
"sha256:dd94994fc91a6177bfaafd7d9fd951bc8689b0a98168aa26b5f543868548d3ca",
|
|
240
|
+
"sha256:de537c11e4aa01d37db0d403b57bd6f0546e71a82347a97c6a9f0dcc532b3a45",
|
|
241
|
+
"sha256:df6e2f325bfee1f49f81aaac97d2aa757c7646534a06f8f577ce184afe2f0a9e",
|
|
242
|
+
"sha256:e66cc454f97053b79c2ab09c17fbe3c825ea6b4de20baf1be28919460dd7877f",
|
|
243
|
+
"sha256:e79225373c317ff1e35f210dd5f1344ff31066ba8067c307ab60254cd3a78ad5",
|
|
244
|
+
"sha256:f1577515d35ed5649d52ab4319db757bb881ce3b2b796d7283e6634d99ace307",
|
|
245
|
+
"sha256:f1e6540b7fa044eee0bb5111ada694cf3dc15f2b0347ca125ee9ca984d5e9e6e",
|
|
246
|
+
"sha256:f2ac49a9bedb996086057b75bf93538240538c6d9b38e57c82d51f75a73409d2",
|
|
247
|
+
"sha256:f47c9c9028f55a04ac254346e92977bf0f166c483c74b4232bee19a6697e4778",
|
|
248
|
+
"sha256:f5f9da7f5dbc00a604fe74aa02ae7c98bcede8a3b8b9666f9f86fc13993bc71a",
|
|
249
|
+
"sha256:fd74520371c3c4175142d02a976aee0b4cb4a7cc912a60586ffd8d5929979b30",
|
|
250
|
+
"sha256:feeb64bc9bcc6b45c6311c9e9b99406660a9c05ca8a5b30d14a78555088b0b3a"
|
|
251
|
+
],
|
|
252
|
+
"markers": "python_version >= '3.8'",
|
|
253
|
+
"version": "==1.5.0"
|
|
254
|
+
},
|
|
255
|
+
"idna": {
|
|
256
|
+
"hashes": [
|
|
257
|
+
"sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9",
|
|
258
|
+
"sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3"
|
|
259
|
+
],
|
|
260
|
+
"markers": "python_version >= '3.6'",
|
|
261
|
+
"version": "==3.10"
|
|
262
|
+
},
|
|
263
|
+
"multidict": {
|
|
264
|
+
"hashes": [
|
|
265
|
+
"sha256:052e10d2d37810b99cc170b785945421141bf7bb7d2f8799d431e7db229c385f",
|
|
266
|
+
"sha256:06809f4f0f7ab7ea2cabf9caca7d79c22c0758b58a71f9d32943ae13c7ace056",
|
|
267
|
+
"sha256:071120490b47aa997cca00666923a83f02c7fbb44f71cf7f136df753f7fa8761",
|
|
268
|
+
"sha256:0c3f390dc53279cbc8ba976e5f8035eab997829066756d811616b652b00a23a3",
|
|
269
|
+
"sha256:0e2b90b43e696f25c62656389d32236e049568b39320e2735d51f08fd362761b",
|
|
270
|
+
"sha256:0e5f362e895bc5b9e67fe6e4ded2492d8124bdf817827f33c5b46c2fe3ffaca6",
|
|
271
|
+
"sha256:10524ebd769727ac77ef2278390fb0068d83f3acb7773792a5080f2b0abf7748",
|
|
272
|
+
"sha256:10a9b09aba0c5b48c53761b7c720aaaf7cf236d5fe394cd399c7ba662d5f9966",
|
|
273
|
+
"sha256:16e5f4bf4e603eb1fdd5d8180f1a25f30056f22e55ce51fb3d6ad4ab29f7d96f",
|
|
274
|
+
"sha256:188215fc0aafb8e03341995e7c4797860181562380f81ed0a87ff455b70bf1f1",
|
|
275
|
+
"sha256:189f652a87e876098bbc67b4da1049afb5f5dfbaa310dd67c594b01c10388db6",
|
|
276
|
+
"sha256:1ca0083e80e791cffc6efce7660ad24af66c8d4079d2a750b29001b53ff59ada",
|
|
277
|
+
"sha256:1e16bf3e5fc9f44632affb159d30a437bfe286ce9e02754759be5536b169b305",
|
|
278
|
+
"sha256:2090f6a85cafc5b2db085124d752757c9d251548cedabe9bd31afe6363e0aff2",
|
|
279
|
+
"sha256:20b9b5fbe0b88d0bdef2012ef7dee867f874b72528cf1d08f1d59b0e3850129d",
|
|
280
|
+
"sha256:22ae2ebf9b0c69d206c003e2f6a914ea33f0a932d4aa16f236afc049d9958f4a",
|
|
281
|
+
"sha256:22f3105d4fb15c8f57ff3959a58fcab6ce36814486500cd7485651230ad4d4ef",
|
|
282
|
+
"sha256:23bfd518810af7de1116313ebd9092cb9aa629beb12f6ed631ad53356ed6b86c",
|
|
283
|
+
"sha256:27e5fc84ccef8dfaabb09d82b7d179c7cf1a3fbc8a966f8274fcb4ab2eb4cadb",
|
|
284
|
+
"sha256:3380252550e372e8511d49481bd836264c009adb826b23fefcc5dd3c69692f60",
|
|
285
|
+
"sha256:3702ea6872c5a2a4eeefa6ffd36b042e9773f05b1f37ae3ef7264b1163c2dcf6",
|
|
286
|
+
"sha256:37bb93b2178e02b7b618893990941900fd25b6b9ac0fa49931a40aecdf083fe4",
|
|
287
|
+
"sha256:3914f5aaa0f36d5d60e8ece6a308ee1c9784cd75ec8151062614657a114c4478",
|
|
288
|
+
"sha256:3a37ffb35399029b45c6cc33640a92bef403c9fd388acce75cdc88f58bd19a81",
|
|
289
|
+
"sha256:3c8b88a2ccf5493b6c8da9076fb151ba106960a2df90c2633f342f120751a9e7",
|
|
290
|
+
"sha256:3e97b5e938051226dc025ec80980c285b053ffb1e25a3db2a3aa3bc046bf7f56",
|
|
291
|
+
"sha256:3ec660d19bbc671e3a6443325f07263be452c453ac9e512f5eb935e7d4ac28b3",
|
|
292
|
+
"sha256:3efe2c2cb5763f2f1b275ad2bf7a287d3f7ebbef35648a9726e3b69284a4f3d6",
|
|
293
|
+
"sha256:483a6aea59cb89904e1ceabd2b47368b5600fb7de78a6e4a2c2987b2d256cf30",
|
|
294
|
+
"sha256:4867cafcbc6585e4b678876c489b9273b13e9fff9f6d6d66add5e15d11d926cb",
|
|
295
|
+
"sha256:48e171e52d1c4d33888e529b999e5900356b9ae588c2f09a52dcefb158b27506",
|
|
296
|
+
"sha256:4a9cb68166a34117d6646c0023c7b759bf197bee5ad4272f420a0141d7eb03a0",
|
|
297
|
+
"sha256:4b820514bfc0b98a30e3d85462084779900347e4d49267f747ff54060cc33925",
|
|
298
|
+
"sha256:4e18b656c5e844539d506a0a06432274d7bd52a7487e6828c63a63d69185626c",
|
|
299
|
+
"sha256:4e9f48f58c2c523d5a06faea47866cd35b32655c46b443f163d08c6d0ddb17d6",
|
|
300
|
+
"sha256:50b3a2710631848991d0bf7de077502e8994c804bb805aeb2925a981de58ec2e",
|
|
301
|
+
"sha256:55b6d90641869892caa9ca42ff913f7ff1c5ece06474fbd32fb2cf6834726c95",
|
|
302
|
+
"sha256:57feec87371dbb3520da6192213c7d6fc892d5589a93db548331954de8248fd2",
|
|
303
|
+
"sha256:58130ecf8f7b8112cdb841486404f1282b9c86ccb30d3519faf301b2e5659133",
|
|
304
|
+
"sha256:5845c1fd4866bb5dd3125d89b90e57ed3138241540897de748cdf19de8a2fca2",
|
|
305
|
+
"sha256:59bfeae4b25ec05b34f1956eaa1cb38032282cd4dfabc5056d0a1ec4d696d3aa",
|
|
306
|
+
"sha256:5b48204e8d955c47c55b72779802b219a39acc3ee3d0116d5080c388970b76e3",
|
|
307
|
+
"sha256:5c09fcfdccdd0b57867577b719c69e347a436b86cd83747f179dbf0cc0d4c1f3",
|
|
308
|
+
"sha256:6180c0ae073bddeb5a97a38c03f30c233e0a4d39cd86166251617d1bbd0af436",
|
|
309
|
+
"sha256:682b987361e5fd7a139ed565e30d81fd81e9629acc7d925a205366877d8c8657",
|
|
310
|
+
"sha256:6b5d83030255983181005e6cfbac1617ce9746b219bc2aad52201ad121226581",
|
|
311
|
+
"sha256:6bb5992037f7a9eff7991ebe4273ea7f51f1c1c511e6a2ce511d0e7bdb754492",
|
|
312
|
+
"sha256:73eae06aa53af2ea5270cc066dcaf02cc60d2994bbb2c4ef5764949257d10f43",
|
|
313
|
+
"sha256:76f364861c3bfc98cbbcbd402d83454ed9e01a5224bb3a28bf70002a230f73e2",
|
|
314
|
+
"sha256:820c661588bd01a0aa62a1283f20d2be4281b086f80dad9e955e690c75fb54a2",
|
|
315
|
+
"sha256:82176036e65644a6cc5bd619f65f6f19781e8ec2e5330f51aa9ada7504cc1926",
|
|
316
|
+
"sha256:87701f25a2352e5bf7454caa64757642734da9f6b11384c1f9d1a8e699758057",
|
|
317
|
+
"sha256:9079dfc6a70abe341f521f78405b8949f96db48da98aeb43f9907f342f627cdc",
|
|
318
|
+
"sha256:90f8717cb649eea3504091e640a1b8568faad18bd4b9fcd692853a04475a4b80",
|
|
319
|
+
"sha256:957cf8e4b6e123a9eea554fa7ebc85674674b713551de587eb318a2df3e00255",
|
|
320
|
+
"sha256:99f826cbf970077383d7de805c0681799491cb939c25450b9b5b3ced03ca99f1",
|
|
321
|
+
"sha256:9f636b730f7e8cb19feb87094949ba54ee5357440b9658b2a32a5ce4bce53972",
|
|
322
|
+
"sha256:a114d03b938376557927ab23f1e950827c3b893ccb94b62fd95d430fd0e5cf53",
|
|
323
|
+
"sha256:a185f876e69897a6f3325c3f19f26a297fa058c5e456bfcff8015e9a27e83ae1",
|
|
324
|
+
"sha256:a7a9541cd308eed5e30318430a9c74d2132e9a8cb46b901326272d780bf2d423",
|
|
325
|
+
"sha256:aa466da5b15ccea564bdab9c89175c762bc12825f4659c11227f515cee76fa4a",
|
|
326
|
+
"sha256:aaed8b0562be4a0876ee3b6946f6869b7bcdb571a5d1496683505944e268b160",
|
|
327
|
+
"sha256:ab7c4ceb38d91570a650dba194e1ca87c2b543488fe9309b4212694174fd539c",
|
|
328
|
+
"sha256:ac10f4c2b9e770c4e393876e35a7046879d195cd123b4f116d299d442b335bcd",
|
|
329
|
+
"sha256:b04772ed465fa3cc947db808fa306d79b43e896beb677a56fb2347ca1a49c1fa",
|
|
330
|
+
"sha256:b1c416351ee6271b2f49b56ad7f308072f6f44b37118d69c2cad94f3fa8a40d5",
|
|
331
|
+
"sha256:b225d95519a5bf73860323e633a664b0d85ad3d5bede6d30d95b35d4dfe8805b",
|
|
332
|
+
"sha256:b2f59caeaf7632cc633b5cf6fc449372b83bbdf0da4ae04d5be36118e46cc0aa",
|
|
333
|
+
"sha256:b58c621844d55e71c1b7f7c498ce5aa6985d743a1a59034c57a905b3f153c1ef",
|
|
334
|
+
"sha256:bf6bea52ec97e95560af5ae576bdac3aa3aae0b6758c6efa115236d9e07dae44",
|
|
335
|
+
"sha256:c08be4f460903e5a9d0f76818db3250f12e9c344e79314d1d570fc69d7f4eae4",
|
|
336
|
+
"sha256:c7053d3b0353a8b9de430a4f4b4268ac9a4fb3481af37dfe49825bf45ca24156",
|
|
337
|
+
"sha256:c943a53e9186688b45b323602298ab727d8865d8c9ee0b17f8d62d14b56f0753",
|
|
338
|
+
"sha256:ce2186a7df133a9c895dea3331ddc5ddad42cdd0d1ea2f0a51e5d161e4762f28",
|
|
339
|
+
"sha256:d093be959277cb7dee84b801eb1af388b6ad3ca6a6b6bf1ed7585895789d027d",
|
|
340
|
+
"sha256:d094ddec350a2fb899fec68d8353c78233debde9b7d8b4beeafa70825f1c281a",
|
|
341
|
+
"sha256:d1a9dd711d0877a1ece3d2e4fea11a8e75741ca21954c919406b44e7cf971304",
|
|
342
|
+
"sha256:d569388c381b24671589335a3be6e1d45546c2988c2ebe30fdcada8457a31008",
|
|
343
|
+
"sha256:d618649d4e70ac6efcbba75be98b26ef5078faad23592f9b51ca492953012429",
|
|
344
|
+
"sha256:d83a047959d38a7ff552ff94be767b7fd79b831ad1cd9920662db05fec24fe72",
|
|
345
|
+
"sha256:d8fff389528cad1618fb4b26b95550327495462cd745d879a8c7c2115248e399",
|
|
346
|
+
"sha256:da1758c76f50c39a2efd5e9859ce7d776317eb1dd34317c8152ac9251fc574a3",
|
|
347
|
+
"sha256:db7457bac39421addd0c8449933ac32d8042aae84a14911a757ae6ca3eef1392",
|
|
348
|
+
"sha256:e27bbb6d14416713a8bd7aaa1313c0fc8d44ee48d74497a0ff4c3a1b6ccb5167",
|
|
349
|
+
"sha256:e617fb6b0b6953fffd762669610c1c4ffd05632c138d61ac7e14ad187870669c",
|
|
350
|
+
"sha256:e9aa71e15d9d9beaad2c6b9319edcdc0a49a43ef5c0a4c8265ca9ee7d6c67774",
|
|
351
|
+
"sha256:ec2abea24d98246b94913b76a125e855eb5c434f7c46546046372fe60f666351",
|
|
352
|
+
"sha256:f179dee3b863ab1c59580ff60f9d99f632f34ccb38bf67a33ec6b3ecadd0fd76",
|
|
353
|
+
"sha256:f4c035da3f544b1882bac24115f3e2e8760f10a0107614fc9839fd232200b875",
|
|
354
|
+
"sha256:f67f217af4b1ff66c68a87318012de788dd95fcfeb24cc889011f4e1c7454dfd",
|
|
355
|
+
"sha256:f90c822a402cb865e396a504f9fc8173ef34212a342d92e362ca498cad308e28",
|
|
356
|
+
"sha256:ff3827aef427c89a25cc96ded1759271a93603aba9fb977a6d264648ebf989db"
|
|
357
|
+
],
|
|
358
|
+
"markers": "python_version >= '3.8'",
|
|
359
|
+
"version": "==6.1.0"
|
|
360
|
+
},
|
|
361
|
+
"propcache": {
|
|
362
|
+
"hashes": [
|
|
363
|
+
"sha256:00181262b17e517df2cd85656fcd6b4e70946fe62cd625b9d74ac9977b64d8d9",
|
|
364
|
+
"sha256:0e53cb83fdd61cbd67202735e6a6687a7b491c8742dfc39c9e01e80354956763",
|
|
365
|
+
"sha256:1235c01ddaa80da8235741e80815ce381c5267f96cc49b1477fdcf8c047ef325",
|
|
366
|
+
"sha256:140fbf08ab3588b3468932974a9331aff43c0ab8a2ec2c608b6d7d1756dbb6cb",
|
|
367
|
+
"sha256:191db28dc6dcd29d1a3e063c3be0b40688ed76434622c53a284e5427565bbd9b",
|
|
368
|
+
"sha256:1e41d67757ff4fbc8ef2af99b338bfb955010444b92929e9e55a6d4dcc3c4f09",
|
|
369
|
+
"sha256:1ec43d76b9677637a89d6ab86e1fef70d739217fefa208c65352ecf0282be957",
|
|
370
|
+
"sha256:20a617c776f520c3875cf4511e0d1db847a076d720714ae35ffe0df3e440be68",
|
|
371
|
+
"sha256:218db2a3c297a3768c11a34812e63b3ac1c3234c3a086def9c0fee50d35add1f",
|
|
372
|
+
"sha256:22aa8f2272d81d9317ff5756bb108021a056805ce63dd3630e27d042c8092798",
|
|
373
|
+
"sha256:25a1f88b471b3bc911d18b935ecb7115dff3a192b6fef46f0bfaf71ff4f12418",
|
|
374
|
+
"sha256:25c8d773a62ce0451b020c7b29a35cfbc05de8b291163a7a0f3b7904f27253e6",
|
|
375
|
+
"sha256:2a60ad3e2553a74168d275a0ef35e8c0a965448ffbc3b300ab3a5bb9956c2162",
|
|
376
|
+
"sha256:2a66df3d4992bc1d725b9aa803e8c5a66c010c65c741ad901e260ece77f58d2f",
|
|
377
|
+
"sha256:2ccc28197af5313706511fab3a8b66dcd6da067a1331372c82ea1cb74285e036",
|
|
378
|
+
"sha256:2e900bad2a8456d00a113cad8c13343f3b1f327534e3589acc2219729237a2e8",
|
|
379
|
+
"sha256:2ee7606193fb267be4b2e3b32714f2d58cad27217638db98a60f9efb5efeccc2",
|
|
380
|
+
"sha256:33ac8f098df0585c0b53009f039dfd913b38c1d2edafed0cedcc0c32a05aa110",
|
|
381
|
+
"sha256:3444cdba6628accf384e349014084b1cacd866fbb88433cd9d279d90a54e0b23",
|
|
382
|
+
"sha256:363ea8cd3c5cb6679f1c2f5f1f9669587361c062e4899fce56758efa928728f8",
|
|
383
|
+
"sha256:375a12d7556d462dc64d70475a9ee5982465fbb3d2b364f16b86ba9135793638",
|
|
384
|
+
"sha256:388f3217649d6d59292b722d940d4d2e1e6a7003259eb835724092a1cca0203a",
|
|
385
|
+
"sha256:3947483a381259c06921612550867b37d22e1df6d6d7e8361264b6d037595f44",
|
|
386
|
+
"sha256:39e104da444a34830751715f45ef9fc537475ba21b7f1f5b0f4d71a3b60d7fe2",
|
|
387
|
+
"sha256:3c997f8c44ec9b9b0bcbf2d422cc00a1d9b9c681f56efa6ca149a941e5560da2",
|
|
388
|
+
"sha256:3dfafb44f7bb35c0c06eda6b2ab4bfd58f02729e7c4045e179f9a861b07c9850",
|
|
389
|
+
"sha256:3ebbcf2a07621f29638799828b8d8668c421bfb94c6cb04269130d8de4fb7136",
|
|
390
|
+
"sha256:3f88a4095e913f98988f5b338c1d4d5d07dbb0b6bad19892fd447484e483ba6b",
|
|
391
|
+
"sha256:439e76255daa0f8151d3cb325f6dd4a3e93043e6403e6491813bcaaaa8733887",
|
|
392
|
+
"sha256:4569158070180c3855e9c0791c56be3ceeb192defa2cdf6a3f39e54319e56b89",
|
|
393
|
+
"sha256:466c219deee4536fbc83c08d09115249db301550625c7fef1c5563a584c9bc87",
|
|
394
|
+
"sha256:4a9d9b4d0a9b38d1c391bb4ad24aa65f306c6f01b512e10a8a34a2dc5675d348",
|
|
395
|
+
"sha256:4c7dde9e533c0a49d802b4f3f218fa9ad0a1ce21f2c2eb80d5216565202acab4",
|
|
396
|
+
"sha256:53d1bd3f979ed529f0805dd35ddaca330f80a9a6d90bc0121d2ff398f8ed8861",
|
|
397
|
+
"sha256:55346705687dbd7ef0d77883ab4f6fabc48232f587925bdaf95219bae072491e",
|
|
398
|
+
"sha256:56295eb1e5f3aecd516d91b00cfd8bf3a13991de5a479df9e27dd569ea23959c",
|
|
399
|
+
"sha256:56bb5c98f058a41bb58eead194b4db8c05b088c93d94d5161728515bd52b052b",
|
|
400
|
+
"sha256:5a5b3bb545ead161be780ee85a2b54fdf7092815995661947812dde94a40f6fb",
|
|
401
|
+
"sha256:5f2564ec89058ee7c7989a7b719115bdfe2a2fb8e7a4543b8d1c0cc4cf6478c1",
|
|
402
|
+
"sha256:608cce1da6f2672a56b24a015b42db4ac612ee709f3d29f27a00c943d9e851de",
|
|
403
|
+
"sha256:63f13bf09cc3336eb04a837490b8f332e0db41da66995c9fd1ba04552e516354",
|
|
404
|
+
"sha256:662dd62358bdeaca0aee5761de8727cfd6861432e3bb828dc2a693aa0471a563",
|
|
405
|
+
"sha256:676135dcf3262c9c5081cc8f19ad55c8a64e3f7282a21266d05544450bffc3a5",
|
|
406
|
+
"sha256:67aeb72e0f482709991aa91345a831d0b707d16b0257e8ef88a2ad246a7280bf",
|
|
407
|
+
"sha256:67b69535c870670c9f9b14a75d28baa32221d06f6b6fa6f77a0a13c5a7b0a5b9",
|
|
408
|
+
"sha256:682a7c79a2fbf40f5dbb1eb6bfe2cd865376deeac65acf9beb607505dced9e12",
|
|
409
|
+
"sha256:6994984550eaf25dd7fc7bd1b700ff45c894149341725bb4edc67f0ffa94efa4",
|
|
410
|
+
"sha256:69d3a98eebae99a420d4b28756c8ce6ea5a29291baf2dc9ff9414b42676f61d5",
|
|
411
|
+
"sha256:6e2e54267980349b723cff366d1e29b138b9a60fa376664a157a342689553f71",
|
|
412
|
+
"sha256:73e4b40ea0eda421b115248d7e79b59214411109a5bc47d0d48e4c73e3b8fcf9",
|
|
413
|
+
"sha256:74acd6e291f885678631b7ebc85d2d4aec458dd849b8c841b57ef04047833bed",
|
|
414
|
+
"sha256:7665f04d0c7f26ff8bb534e1c65068409bf4687aa2534faf7104d7182debb336",
|
|
415
|
+
"sha256:7735e82e3498c27bcb2d17cb65d62c14f1100b71723b68362872bca7d0913d90",
|
|
416
|
+
"sha256:77a86c261679ea5f3896ec060be9dc8e365788248cc1e049632a1be682442063",
|
|
417
|
+
"sha256:7cf18abf9764746b9c8704774d8b06714bcb0a63641518a3a89c7f85cc02c2ad",
|
|
418
|
+
"sha256:83928404adf8fb3d26793665633ea79b7361efa0287dfbd372a7e74311d51ee6",
|
|
419
|
+
"sha256:8e40876731f99b6f3c897b66b803c9e1c07a989b366c6b5b475fafd1f7ba3fb8",
|
|
420
|
+
"sha256:8f188cfcc64fb1266f4684206c9de0e80f54622c3f22a910cbd200478aeae61e",
|
|
421
|
+
"sha256:91997d9cb4a325b60d4e3f20967f8eb08dfcb32b22554d5ef78e6fd1dda743a2",
|
|
422
|
+
"sha256:91ee8fc02ca52e24bcb77b234f22afc03288e1dafbb1f88fe24db308910c4ac7",
|
|
423
|
+
"sha256:92fe151145a990c22cbccf9ae15cae8ae9eddabfc949a219c9f667877e40853d",
|
|
424
|
+
"sha256:945db8ee295d3af9dbdbb698cce9bbc5c59b5c3fe328bbc4387f59a8a35f998d",
|
|
425
|
+
"sha256:9517d5e9e0731957468c29dbfd0f976736a0e55afaea843726e887f36fe017df",
|
|
426
|
+
"sha256:952e0d9d07609d9c5be361f33b0d6d650cd2bae393aabb11d9b719364521984b",
|
|
427
|
+
"sha256:97a58a28bcf63284e8b4d7b460cbee1edaab24634e82059c7b8c09e65284f178",
|
|
428
|
+
"sha256:97e48e8875e6c13909c800fa344cd54cc4b2b0db1d5f911f840458a500fde2c2",
|
|
429
|
+
"sha256:9e0f07b42d2a50c7dd2d8675d50f7343d998c64008f1da5fef888396b7f84630",
|
|
430
|
+
"sha256:a3dc1a4b165283bd865e8f8cb5f0c64c05001e0718ed06250d8cac9bec115b48",
|
|
431
|
+
"sha256:a3ebe9a75be7ab0b7da2464a77bb27febcb4fab46a34f9288f39d74833db7f61",
|
|
432
|
+
"sha256:a64e32f8bd94c105cc27f42d3b658902b5bcc947ece3c8fe7bc1b05982f60e89",
|
|
433
|
+
"sha256:a6ed8db0a556343d566a5c124ee483ae113acc9a557a807d439bcecc44e7dfbb",
|
|
434
|
+
"sha256:ad9c9b99b05f163109466638bd30ada1722abb01bbb85c739c50b6dc11f92dc3",
|
|
435
|
+
"sha256:b33d7a286c0dc1a15f5fc864cc48ae92a846df287ceac2dd499926c3801054a6",
|
|
436
|
+
"sha256:bc092ba439d91df90aea38168e11f75c655880c12782facf5cf9c00f3d42b562",
|
|
437
|
+
"sha256:c436130cc779806bdf5d5fae0d848713105472b8566b75ff70048c47d3961c5b",
|
|
438
|
+
"sha256:c5869b8fd70b81835a6f187c5fdbe67917a04d7e52b6e7cc4e5fe39d55c39d58",
|
|
439
|
+
"sha256:c5ecca8f9bab618340c8e848d340baf68bcd8ad90a8ecd7a4524a81c1764b3db",
|
|
440
|
+
"sha256:cfac69017ef97db2438efb854edf24f5a29fd09a536ff3a992b75990720cdc99",
|
|
441
|
+
"sha256:d2f0d0f976985f85dfb5f3d685697ef769faa6b71993b46b295cdbbd6be8cc37",
|
|
442
|
+
"sha256:d5bed7f9805cc29c780f3aee05de3262ee7ce1f47083cfe9f77471e9d6777e83",
|
|
443
|
+
"sha256:d6a21ef516d36909931a2967621eecb256018aeb11fc48656e3257e73e2e247a",
|
|
444
|
+
"sha256:d9b6ddac6408194e934002a69bcaadbc88c10b5f38fb9307779d1c629181815d",
|
|
445
|
+
"sha256:db47514ffdbd91ccdc7e6f8407aac4ee94cc871b15b577c1c324236b013ddd04",
|
|
446
|
+
"sha256:df81779732feb9d01e5d513fad0122efb3d53bbc75f61b2a4f29a020bc985e70",
|
|
447
|
+
"sha256:e4a91d44379f45f5e540971d41e4626dacd7f01004826a18cb048e7da7e96544",
|
|
448
|
+
"sha256:e63e3e1e0271f374ed489ff5ee73d4b6e7c60710e1f76af5f0e1a6117cd26394",
|
|
449
|
+
"sha256:e70fac33e8b4ac63dfc4c956fd7d85a0b1139adcfc0d964ce288b7c527537fea",
|
|
450
|
+
"sha256:ecddc221a077a8132cf7c747d5352a15ed763b674c0448d811f408bf803d9ad7",
|
|
451
|
+
"sha256:f45eec587dafd4b2d41ac189c2156461ebd0c1082d2fe7013571598abb8505d1",
|
|
452
|
+
"sha256:f52a68c21363c45297aca15561812d542f8fc683c85201df0bebe209e349f793",
|
|
453
|
+
"sha256:f571aea50ba5623c308aa146eb650eebf7dbe0fd8c5d946e28343cb3b5aad577",
|
|
454
|
+
"sha256:f60f0ac7005b9f5a6091009b09a419ace1610e163fa5deaba5ce3484341840e7",
|
|
455
|
+
"sha256:f6475a1b2ecb310c98c28d271a30df74f9dd436ee46d09236a6b750a7599ce57",
|
|
456
|
+
"sha256:f6d5749fdd33d90e34c2efb174c7e236829147a2713334d708746e94c4bde40d",
|
|
457
|
+
"sha256:f902804113e032e2cdf8c71015651c97af6418363bea8d78dc0911d56c335032",
|
|
458
|
+
"sha256:fa1076244f54bb76e65e22cb6910365779d5c3d71d1f18b275f1dfc7b0d71b4d",
|
|
459
|
+
"sha256:fc2db02409338bf36590aa985a461b2c96fce91f8e7e0f14c50c5fcc4f229016",
|
|
460
|
+
"sha256:ffcad6c564fe6b9b8916c1aefbb37a362deebf9394bd2974e9d84232e3e08504"
|
|
461
|
+
],
|
|
462
|
+
"markers": "python_version >= '3.8'",
|
|
463
|
+
"version": "==0.2.0"
|
|
464
|
+
},
|
|
465
|
+
"pyjwt": {
|
|
466
|
+
"hashes": [
|
|
467
|
+
"sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850",
|
|
468
|
+
"sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c"
|
|
469
|
+
],
|
|
470
|
+
"index": "pypi",
|
|
471
|
+
"markers": "python_version >= '3.8'",
|
|
472
|
+
"version": "==2.9.0"
|
|
473
|
+
},
|
|
474
|
+
"typing-extensions": {
|
|
475
|
+
"hashes": [
|
|
476
|
+
"sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d",
|
|
477
|
+
"sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8"
|
|
478
|
+
],
|
|
479
|
+
"markers": "python_version >= '3.8'",
|
|
480
|
+
"version": "==4.12.2"
|
|
481
|
+
},
|
|
482
|
+
"yarl": {
|
|
483
|
+
"hashes": [
|
|
484
|
+
"sha256:06157fb3c58f2736a5e47c8fcbe1afc8b5de6fb28b14d25574af9e62150fcaac",
|
|
485
|
+
"sha256:067a63fcfda82da6b198fa73079b1ca40b7c9b7994995b6ee38acda728b64d47",
|
|
486
|
+
"sha256:0b1794853124e2f663f0ea54efb0340b457f08d40a1cef78edfa086576179c91",
|
|
487
|
+
"sha256:0bdff5e0995522706c53078f531fb586f56de9c4c81c243865dd5c66c132c3b5",
|
|
488
|
+
"sha256:117ed8b3732528a1e41af3aa6d4e08483c2f0f2e3d3d7dca7cf538b3516d93df",
|
|
489
|
+
"sha256:14bc88baa44e1f84164a392827b5defb4fa8e56b93fecac3d15315e7c8e5d8b3",
|
|
490
|
+
"sha256:1654ec814b18be1af2c857aa9000de7a601400bd4c9ca24629b18486c2e35463",
|
|
491
|
+
"sha256:16bca6678a83657dd48df84b51bd56a6c6bd401853aef6d09dc2506a78484c7b",
|
|
492
|
+
"sha256:1a3b91c44efa29e6c8ef8a9a2b583347998e2ba52c5d8280dbd5919c02dfc3b5",
|
|
493
|
+
"sha256:1a52a1ffdd824fb1835272e125385c32fd8b17fbdefeedcb4d543cc23b332d74",
|
|
494
|
+
"sha256:1ce36ded585f45b1e9bb36d0ae94765c6608b43bd2e7f5f88079f7a85c61a4d3",
|
|
495
|
+
"sha256:299f11b44d8d3a588234adbe01112126010bd96d9139c3ba7b3badd9829261c3",
|
|
496
|
+
"sha256:2b24ec55fad43e476905eceaf14f41f6478780b870eda5d08b4d6de9a60b65b4",
|
|
497
|
+
"sha256:2d374d70fdc36f5863b84e54775452f68639bc862918602d028f89310a034ab0",
|
|
498
|
+
"sha256:2d9f0606baaec5dd54cb99667fcf85183a7477f3766fbddbe3f385e7fc253299",
|
|
499
|
+
"sha256:2e7ba4c9377e48fb7b20dedbd473cbcbc13e72e1826917c185157a137dac9df2",
|
|
500
|
+
"sha256:2f0a6423295a0d282d00e8701fe763eeefba8037e984ad5de44aa349002562ac",
|
|
501
|
+
"sha256:327828786da2006085a4d1feb2594de6f6d26f8af48b81eb1ae950c788d97f61",
|
|
502
|
+
"sha256:380e6c38ef692b8fd5a0f6d1fa8774d81ebc08cfbd624b1bca62a4d4af2f9931",
|
|
503
|
+
"sha256:3b74ff4767d3ef47ffe0cd1d89379dc4d828d4873e5528976ced3b44fe5b0a21",
|
|
504
|
+
"sha256:3e844be8d536afa129366d9af76ed7cb8dfefec99f5f1c9e4f8ae542279a6dc3",
|
|
505
|
+
"sha256:459e81c2fb920b5f5df744262d1498ec2c8081acdcfe18181da44c50f51312f7",
|
|
506
|
+
"sha256:46ddf6e0b975cd680eb83318aa1d321cb2bf8d288d50f1754526230fcf59ba96",
|
|
507
|
+
"sha256:482c122b72e3c5ec98f11457aeb436ae4aecca75de19b3d1de7cf88bc40db82f",
|
|
508
|
+
"sha256:561c87fea99545ef7d692403c110b2f99dced6dff93056d6e04384ad3bc46243",
|
|
509
|
+
"sha256:578d00c9b7fccfa1745a44f4eddfdc99d723d157dad26764538fbdda37209857",
|
|
510
|
+
"sha256:58c8e9620eb82a189c6c40cb6b59b4e35b2ee68b1f2afa6597732a2b467d7e8f",
|
|
511
|
+
"sha256:5b29beab10211a746f9846baa39275e80034e065460d99eb51e45c9a9495bcca",
|
|
512
|
+
"sha256:5d1d42556b063d579cae59e37a38c61f4402b47d70c29f0ef15cee1acaa64488",
|
|
513
|
+
"sha256:5f236cb5999ccd23a0ab1bd219cfe0ee3e1c1b65aaf6dd3320e972f7ec3a39da",
|
|
514
|
+
"sha256:62a91aefff3d11bf60e5956d340eb507a983a7ec802b19072bb989ce120cd948",
|
|
515
|
+
"sha256:64cc6e97f14cf8a275d79c5002281f3040c12e2e4220623b5759ea7f9868d6a5",
|
|
516
|
+
"sha256:6f4c9156c4d1eb490fe374fb294deeb7bc7eaccda50e23775b2354b6a6739934",
|
|
517
|
+
"sha256:7294e38f9aa2e9f05f765b28ffdc5d81378508ce6dadbe93f6d464a8c9594473",
|
|
518
|
+
"sha256:7615058aabad54416ddac99ade09a5510cf77039a3b903e94e8922f25ed203d7",
|
|
519
|
+
"sha256:7e48cdb8226644e2fbd0bdb0a0f87906a3db07087f4de77a1b1b1ccfd9e93685",
|
|
520
|
+
"sha256:7f63d176a81555984e91f2c84c2a574a61cab7111cc907e176f0f01538e9ff6e",
|
|
521
|
+
"sha256:7f6595c852ca544aaeeb32d357e62c9c780eac69dcd34e40cae7b55bc4fb1147",
|
|
522
|
+
"sha256:7fac95714b09da9278a0b52e492466f773cfe37651cf467a83a1b659be24bf71",
|
|
523
|
+
"sha256:81713b70bea5c1386dc2f32a8f0dab4148a2928c7495c808c541ee0aae614d67",
|
|
524
|
+
"sha256:846dd2e1243407133d3195d2d7e4ceefcaa5f5bf7278f0a9bda00967e6326b04",
|
|
525
|
+
"sha256:84c063af19ef5130084db70ada40ce63a84f6c1ef4d3dbc34e5e8c4febb20822",
|
|
526
|
+
"sha256:881764d610e3269964fc4bb3c19bb6fce55422828e152b885609ec176b41cf11",
|
|
527
|
+
"sha256:8994b29c462de9a8fce2d591028b986dbbe1b32f3ad600b2d3e1c482c93abad6",
|
|
528
|
+
"sha256:8c79e9d7e3d8a32d4824250a9c6401194fb4c2ad9a0cec8f6a96e09a582c2cc0",
|
|
529
|
+
"sha256:8ee427208c675f1b6e344a1f89376a9613fc30b52646a04ac0c1f6587c7e46ec",
|
|
530
|
+
"sha256:949681f68e0e3c25377462be4b658500e85ca24323d9619fdc41f68d46a1ffda",
|
|
531
|
+
"sha256:9e275792097c9f7e80741c36de3b61917aebecc08a67ae62899b074566ff8556",
|
|
532
|
+
"sha256:9fb815155aac6bfa8d86184079652c9715c812d506b22cfa369196ef4e99d1b4",
|
|
533
|
+
"sha256:a2a64e62c7a0edd07c1c917b0586655f3362d2c2d37d474db1a509efb96fea1c",
|
|
534
|
+
"sha256:a7ac5b4984c468ce4f4a553df281450df0a34aefae02e58d77a0847be8d1e11f",
|
|
535
|
+
"sha256:aa46dce75078fceaf7cecac5817422febb4355fbdda440db55206e3bd288cfb8",
|
|
536
|
+
"sha256:ae3476e934b9d714aa8000d2e4c01eb2590eee10b9d8cd03e7983ad65dfbfcba",
|
|
537
|
+
"sha256:b0341e6d9a0c0e3cdc65857ef518bb05b410dbd70d749a0d33ac0f39e81a4258",
|
|
538
|
+
"sha256:b40d1bf6e6f74f7c0a567a9e5e778bbd4699d1d3d2c0fe46f4b717eef9e96b95",
|
|
539
|
+
"sha256:b5c4804e4039f487e942c13381e6c27b4b4e66066d94ef1fae3f6ba8b953f383",
|
|
540
|
+
"sha256:b5d6a6c9602fd4598fa07e0389e19fe199ae96449008d8304bf5d47cb745462e",
|
|
541
|
+
"sha256:b5f1ac7359e17efe0b6e5fec21de34145caef22b260e978336f325d5c84e6938",
|
|
542
|
+
"sha256:c0167540094838ee9093ef6cc2c69d0074bbf84a432b4995835e8e5a0d984374",
|
|
543
|
+
"sha256:c180ac742a083e109c1a18151f4dd8675f32679985a1c750d2ff806796165b55",
|
|
544
|
+
"sha256:c73df5b6e8fabe2ddb74876fb82d9dd44cbace0ca12e8861ce9155ad3c886139",
|
|
545
|
+
"sha256:c7e177c619342e407415d4f35dec63d2d134d951e24b5166afcdfd1362828e17",
|
|
546
|
+
"sha256:cbad927ea8ed814622305d842c93412cb47bd39a496ed0f96bfd42b922b4a217",
|
|
547
|
+
"sha256:cc353841428d56b683a123a813e6a686e07026d6b1c5757970a877195f880c2d",
|
|
548
|
+
"sha256:cc7c92c1baa629cb03ecb0c3d12564f172218fb1739f54bf5f3881844daadc6d",
|
|
549
|
+
"sha256:cc7d768260f4ba4ea01741c1b5fe3d3a6c70eb91c87f4c8761bbcce5181beafe",
|
|
550
|
+
"sha256:d0eea830b591dbc68e030c86a9569826145df485b2b4554874b07fea1275a199",
|
|
551
|
+
"sha256:d216e5d9b8749563c7f2c6f7a0831057ec844c68b4c11cb10fc62d4fd373c26d",
|
|
552
|
+
"sha256:d401f07261dc5aa36c2e4efc308548f6ae943bfff20fcadb0a07517a26b196d8",
|
|
553
|
+
"sha256:d6324274b4e0e2fa1b3eccb25997b1c9ed134ff61d296448ab8269f5ac068c4c",
|
|
554
|
+
"sha256:d8a8b74d843c2638f3864a17d97a4acda58e40d3e44b6303b8cc3d3c44ae2d29",
|
|
555
|
+
"sha256:d9b6b28a57feb51605d6ae5e61a9044a31742db557a3b851a74c13bc61de5172",
|
|
556
|
+
"sha256:de599af166970d6a61accde358ec9ded821234cbbc8c6413acfec06056b8e860",
|
|
557
|
+
"sha256:e594b22688d5747b06e957f1ef822060cb5cb35b493066e33ceac0cf882188b7",
|
|
558
|
+
"sha256:e5b078134f48552c4d9527db2f7da0b5359abd49393cdf9794017baec7506170",
|
|
559
|
+
"sha256:eb6dce402734575e1a8cc0bb1509afca508a400a57ce13d306ea2c663bad1138",
|
|
560
|
+
"sha256:f1790a4b1e8e8e028c391175433b9c8122c39b46e1663228158e61e6f915bf06",
|
|
561
|
+
"sha256:f5efe0661b9fcd6246f27957f6ae1c0eb29bc60552820f01e970b4996e016004",
|
|
562
|
+
"sha256:f9cbfbc5faca235fbdf531b93aa0f9f005ec7d267d9d738761a4d42b744ea159",
|
|
563
|
+
"sha256:fbea1751729afe607d84acfd01efd95e3b31db148a181a441984ce9b3d3469da",
|
|
564
|
+
"sha256:fca4b4307ebe9c3ec77a084da3a9d1999d164693d16492ca2b64594340999988",
|
|
565
|
+
"sha256:ff5c6771c7e3511a06555afa317879b7db8d640137ba55d6ab0d0c50425cab75"
|
|
566
|
+
],
|
|
567
|
+
"markers": "python_version >= '3.9'",
|
|
568
|
+
"version": "==1.17.1"
|
|
569
|
+
}
|
|
570
|
+
},
|
|
571
|
+
"develop": {}
|
|
572
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# igloohome-api
|
|
2
|
+
A python HTTP library based on `aiohttp` to make use of [igloohome's REST API](https://igloocompany.stoplight.io/docs/igloohome-api/1w1cuv56ge5xq-overview).
|
|
3
|
+
This library is designed to be used via the [iglooaccess](https://www.igloocompany.co/iglooaccess) service.
|
|
4
|
+
|
|
5
|
+
## Requirements
|
|
6
|
+
An account on the iglooaccess portal needs to be created to get a `client_id` & `client_secret` for authentication.
|
|
7
|
+
|
|
8
|
+
## Usage
|
|
9
|
+
|
|
10
|
+
### Authentication
|
|
11
|
+
```python
|
|
12
|
+
from igloohome_api import Auth
|
|
13
|
+
from aiohttp import ClientSession
|
|
14
|
+
|
|
15
|
+
session = ClientSession()
|
|
16
|
+
auth = Auth(
|
|
17
|
+
client_id="<client_id>",
|
|
18
|
+
client_secret="<client_secret>",
|
|
19
|
+
session=session,
|
|
20
|
+
)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### API usage
|
|
24
|
+
```python
|
|
25
|
+
frim igloohome_api import Api
|
|
26
|
+
|
|
27
|
+
api = Api(auth)
|
|
28
|
+
|
|
29
|
+
devices = await api.get_devices()
|
|
30
|
+
```
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import aiohttp
|
|
2
|
+
import asyncio
|
|
3
|
+
|
|
4
|
+
from src.igloohome_api import Api
|
|
5
|
+
from src.igloohome_api import Auth
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
async def run():
|
|
9
|
+
trace = aiohttp.TraceConfig()
|
|
10
|
+
session = aiohttp.ClientSession(trace_configs=[trace])
|
|
11
|
+
try:
|
|
12
|
+
auth = Auth(
|
|
13
|
+
client_id="74s4953upvhp8o7kenvul8qick",
|
|
14
|
+
client_secret="hoouddc2ackch07h9juq3f1kn2kpjvql5ic2jrdjhmi7tmnfr6u",
|
|
15
|
+
session=session,
|
|
16
|
+
)
|
|
17
|
+
api = Api(auth=auth)
|
|
18
|
+
print(f'response={(await api.get_devices()).payload[0].deviceId}')
|
|
19
|
+
finally:
|
|
20
|
+
await session.close()
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
if __name__ == '__main__':
|
|
24
|
+
loop = asyncio.get_event_loop()
|
|
25
|
+
loop.run_until_complete(run())
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "igloohome-api"
|
|
7
|
+
version = "0.0.3"
|
|
8
|
+
authors = [
|
|
9
|
+
{ name="keithle888", email="keithle888@gmail.com" },
|
|
10
|
+
]
|
|
11
|
+
description = "A python package for iglooaccess' API"
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
requires-python = ">=3.8"
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"License :: OSI Approved :: MIT License",
|
|
17
|
+
"Operating System :: OS Independent",
|
|
18
|
+
]
|
|
19
|
+
dependencies = [
|
|
20
|
+
"pyjwt~=2.9.0",
|
|
21
|
+
"dacite~=1.8.1",
|
|
22
|
+
"aiohttp~=3.10.10"
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
[project.urls]
|
|
26
|
+
Homepage = "https://github.com/keithle888/igloohome-api"
|
|
27
|
+
Issues = "https://github.com/keithle888/igloohome-api/issues"
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"""Library for accessing igloohome API"""
|
|
2
|
+
from typing import Any
|
|
3
|
+
from dacite import from_dict
|
|
4
|
+
|
|
5
|
+
import aiohttp
|
|
6
|
+
import jwt
|
|
7
|
+
from dataclasses import dataclass
|
|
8
|
+
|
|
9
|
+
_OAUTH2_HOST = "https://auth.igloohome.co"
|
|
10
|
+
_OAUTH2_TOKEN_PATH = "/oauth2/token"
|
|
11
|
+
_OAUTH2_SCOPE_EVERYTHING = OAUTH2_SCOPE = "igloohomeapi/algopin-hourly igloohomeapi/algopin-daily igloohomeapi/algopin-permanent igloohomeapi/algopin-onetime igloohomeapi/create-pin-bridge-proxied-job igloohomeapi/delete-pin-bridge-proxied-job igloohomeapi/lock-bridge-proxied-job igloohomeapi/unlock-bridge-proxied-job igloohomeapi/get-devices igloohomeapi/get-job-status igloohomeapi/get-properties"
|
|
12
|
+
|
|
13
|
+
_BASE_URL = "https://api.igloodeveloper.co"
|
|
14
|
+
_BASE_PATH = "igloohome"
|
|
15
|
+
_DEVICES_PATH_SEGMENT = "devices"
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class GetDevicesResponsePayload:
|
|
19
|
+
id: str
|
|
20
|
+
type: str
|
|
21
|
+
deviceId: str
|
|
22
|
+
deviceName: str
|
|
23
|
+
pairedAt: str
|
|
24
|
+
homeId: Any
|
|
25
|
+
linkedDevices: Any
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass
|
|
29
|
+
class GetDevicesResponse:
|
|
30
|
+
nextCursor: str
|
|
31
|
+
payload: list[GetDevicesResponsePayload]
|
|
32
|
+
|
|
33
|
+
class Auth:
|
|
34
|
+
def __init__(
|
|
35
|
+
self,
|
|
36
|
+
session: aiohttp.ClientSession,
|
|
37
|
+
client_id: str,
|
|
38
|
+
client_secret: str,
|
|
39
|
+
host: str = _OAUTH2_HOST,
|
|
40
|
+
scope: str = _OAUTH2_SCOPE_EVERYTHING,
|
|
41
|
+
) -> None:
|
|
42
|
+
self.access_token = None
|
|
43
|
+
self.session = session
|
|
44
|
+
self.client_id = client_id
|
|
45
|
+
self.client_secret = client_secret
|
|
46
|
+
self.host = host
|
|
47
|
+
self.scope = scope
|
|
48
|
+
|
|
49
|
+
async def async_get_access_token(self) -> str:
|
|
50
|
+
form = aiohttp.FormData()
|
|
51
|
+
form.add_field("grant_type", "client_credentials")
|
|
52
|
+
form.add_field("scope", self.scope)
|
|
53
|
+
response = await self.session.post(
|
|
54
|
+
url=self.host + _OAUTH2_TOKEN_PATH,
|
|
55
|
+
auth=aiohttp.BasicAuth(
|
|
56
|
+
login=self.client_id, password=self.client_secret
|
|
57
|
+
),
|
|
58
|
+
data=form,
|
|
59
|
+
)
|
|
60
|
+
json = await response.json()
|
|
61
|
+
if response.status == 200:
|
|
62
|
+
self.access_token = json["access_token"]
|
|
63
|
+
return self.access_token
|
|
64
|
+
else:
|
|
65
|
+
raise AuthException(f'Failed to get access token. responseCode=${response.status}')
|
|
66
|
+
|
|
67
|
+
async def async_get_valid_access_token(self) -> str:
|
|
68
|
+
"""Gets a valid access token."""
|
|
69
|
+
if self.access_token is None:
|
|
70
|
+
access_token = await self.async_get_access_token()
|
|
71
|
+
return access_token
|
|
72
|
+
elif is_access_token_valid(self.access_token):
|
|
73
|
+
return self.access_token
|
|
74
|
+
else:
|
|
75
|
+
return await self.async_get_access_token()
|
|
76
|
+
|
|
77
|
+
async def request(self, method: str, url: str, **kwargs) -> aiohttp.ClientResponse:
|
|
78
|
+
"""Make a request."""
|
|
79
|
+
headers = kwargs.get("headers")
|
|
80
|
+
|
|
81
|
+
if headers is None:
|
|
82
|
+
headers = {}
|
|
83
|
+
else:
|
|
84
|
+
headers = dict(headers)
|
|
85
|
+
|
|
86
|
+
headers["Authorization"] = f"Bearer {await self.async_get_valid_access_token()}"
|
|
87
|
+
headers["Accept"] = "application/json"
|
|
88
|
+
|
|
89
|
+
return await self.session.request(
|
|
90
|
+
method, url, **kwargs, headers=headers,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def is_access_token_valid(access_token: str) -> bool:
|
|
95
|
+
"""Check if the access token is valid."""
|
|
96
|
+
try:
|
|
97
|
+
# Expiry is automatically verified during decoding. Will raise ExpiredSignatureError.
|
|
98
|
+
# See: https://pyjwt.readthedocs.io/en/stable/usage.html#expiration-time-claim-exp
|
|
99
|
+
claims = jwt.decode(access_token, options={"require": ["exp"]})
|
|
100
|
+
except Exception:
|
|
101
|
+
return False
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
class AuthException(Exception):
|
|
105
|
+
pass
|
|
106
|
+
|
|
107
|
+
class Api:
|
|
108
|
+
def __init__(
|
|
109
|
+
self,
|
|
110
|
+
auth: Auth,
|
|
111
|
+
host: str = _BASE_URL
|
|
112
|
+
):
|
|
113
|
+
self.auth = auth
|
|
114
|
+
self.host = host
|
|
115
|
+
|
|
116
|
+
async def get_devices(self) -> GetDevicesResponse:
|
|
117
|
+
response = await self.auth.request(
|
|
118
|
+
"get",
|
|
119
|
+
f'{self.host}/{_BASE_PATH}/{_DEVICES_PATH_SEGMENT}',
|
|
120
|
+
)
|
|
121
|
+
if response.status == 200:
|
|
122
|
+
return from_dict(GetDevicesResponse, await response.json())
|
|
123
|
+
else:
|
|
124
|
+
raise ApiException("Response failure", response.status)
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class ApiException(Exception):
|
|
128
|
+
def __init__(self, message: str, response_code: int):
|
|
129
|
+
self.message = message
|
|
130
|
+
self.response_code = response_code
|
|
131
|
+
|
|
132
|
+
def __str__(self):
|
|
133
|
+
return f'ApiException(message={self.message}, response_code={self.response_code})'
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
async def _create_exception(response: aiohttp.ClientResponse) -> ApiException:
|
|
137
|
+
return ApiException(
|
|
138
|
+
message=f'Unsuccessful request. code={response.status}, message={await response.text()}',
|
|
139
|
+
response_code=response.status
|
|
140
|
+
)
|