python-hilo 2026.3.5__tar.gz → 2026.10.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.
- python_hilo-2026.10.1/.bandit.yaml +19 -0
- python_hilo-2026.10.1/.devcontainer/devcontainer-lock.json +14 -0
- python_hilo-2026.10.1/.devcontainer/devcontainer.json +53 -0
- python_hilo-2026.10.1/.editorconfig +12 -0
- python_hilo-2026.10.1/.gitattributes +2 -0
- python_hilo-2026.10.1/.github/ISSUE_TEMPLATE/feature_request.md +16 -0
- python_hilo-2026.10.1/.github/ISSUE_TEMPLATE/issue.md +40 -0
- python_hilo-2026.10.1/.github/dependabot.yml +10 -0
- python_hilo-2026.10.1/.github/labels.yml +66 -0
- python_hilo-2026.10.1/.github/release-drafter.yml +29 -0
- python_hilo-2026.10.1/.github/workflows/labeler.yml +19 -0
- python_hilo-2026.10.1/.github/workflows/release-drafter.yml +14 -0
- python_hilo-2026.10.1/.github/workflows/tests.yaml +56 -0
- python_hilo-2026.10.1/.gitignore +141 -0
- python_hilo-2026.10.1/.pre-commit-config.yaml +61 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/PKG-INFO +24 -38
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/README.md +8 -11
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/ChallengeAdded.json +29 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventAdded.json +30 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventCHConsumptionUpdatedValuesReceived(en cours de d/303/251fi).json" +47 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventCHConsumptionUpdatedValuesReceived.json +17 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventCHDetailsInitialValuesReceived.json +120 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventCHDetailsUpdatedValuesReceived.json +13 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventFlexConsumptionUpdatedValuesReceived.json +41 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventFlexDetailsInitialValuesReceived.json +90 -0
- python_hilo-2026.10.1/doc/Challenge(Event) JSON/EventFlexDetailsUpdatedValuesReceived.json +14 -0
- python_hilo-2026.10.1/doc/Device Replies/DeviceListInitialValuesReceived.json +1 -0
- python_hilo-2026.10.1/doc/Old JSONs (pre 2025-26 season)/ChallengeAdded.json +25 -0
- python_hilo-2026.10.1/doc/Old JSONs (pre 2025-26 season)/ChallengeConsumptionUpdatedValuesReceived.json +979 -0
- python_hilo-2026.10.1/doc/Old JSONs (pre 2025-26 season)/ChallengeDetailsInitialValuesReceived.json +173 -0
- python_hilo-2026.10.1/doc/Old JSONs (pre 2025-26 season)/ChallengeListInitialValuesReceived.json +25 -0
- python_hilo-2026.10.1/doc/Old JSONs (pre 2025-26 season)/ChallengeListUpdatedValuesReceived.json +15 -0
- python_hilo-2026.10.1/doc/Postman/Hilo Prod.postman_environment.json +100 -0
- python_hilo-2026.10.1/doc/Postman/Hilo.postman_collection.json +508 -0
- python_hilo-2026.10.1/doc/Readme.md +111 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/api.py +5 -33
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/const.py +5 -8
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/device/light.py +1 -1
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/device/sensor.py +1 -1
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/device/switch.py +1 -1
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/devices.py +1 -13
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/graphql.py +55 -1
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/signalr.py +20 -4
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/util/state.py +15 -11
- python_hilo-2026.10.1/pyproject.toml +114 -0
- python_hilo-2026.10.1/tests/__init__.py +0 -0
- python_hilo-2026.10.1/tests/conftest.py +18 -0
- python_hilo-2026.10.1/tests/test_device.py +327 -0
- python_hilo-2026.10.1/tests/test_signalr.py +66 -0
- python_hilo-2026.10.1/tests/test_util.py +23 -0
- python_hilo-2026.10.1/tests/test_util_state.py +128 -0
- python_hilo-2026.10.1/uv.lock +1643 -0
- python_hilo-2026.3.5/pyproject.toml +0 -122
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/LICENSE +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/__init__.py +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/device/__init__.py +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/device/climate.py +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/device/graphql_value_mapper.py +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/event.py +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/exceptions.py +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/oauth2helper.py +0 -0
- {python_hilo-2026.3.5 → python_hilo-2026.10.1}/pyhilo/util/__init__.py +0 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"features": {
|
|
3
|
+
"ghcr.io/devcontainers/features/github-cli:1": {
|
|
4
|
+
"version": "1.1.0",
|
|
5
|
+
"resolved": "ghcr.io/devcontainers/features/github-cli@sha256:d22f50b70ed75339b4eed1ba9ecde3a1791f90e88d37936517e3bace0bbad671",
|
|
6
|
+
"integrity": "sha256:d22f50b70ed75339b4eed1ba9ecde3a1791f90e88d37936517e3bace0bbad671"
|
|
7
|
+
},
|
|
8
|
+
"ghcr.io/jsburckhardt/devcontainer-features/uv:1": {
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"resolved": "ghcr.io/jsburckhardt/devcontainer-features/uv@sha256:542a0bc2203205b3c696de650ba862f280b20af3543493cc232edd9ac35791f7",
|
|
11
|
+
"integrity": "sha256:542a0bc2203205b3c696de650ba862f280b20af3543493cc232edd9ac35791f7"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"customizations": {
|
|
3
|
+
"codespaces": {
|
|
4
|
+
"openFiles": [
|
|
5
|
+
"README.md",
|
|
6
|
+
"pyhilo/api.py",
|
|
7
|
+
"pyhilo/devices.py"
|
|
8
|
+
]
|
|
9
|
+
},
|
|
10
|
+
"vscode": {
|
|
11
|
+
"extensions": [
|
|
12
|
+
"charliermarsh.ruff",
|
|
13
|
+
"GitHub.vscode-github-actions",
|
|
14
|
+
"GitHub.vscode-pull-request-github",
|
|
15
|
+
"ms-python.mypy-type-checker",
|
|
16
|
+
"ms-python.python",
|
|
17
|
+
"ms-python.vscode-pylance",
|
|
18
|
+
"redhat.vscode-yaml",
|
|
19
|
+
"ryanluker.vscode-ecoverage-gutters",
|
|
20
|
+
"tamasfe.even-better-toml"
|
|
21
|
+
],
|
|
22
|
+
"settings": {
|
|
23
|
+
"[python]": {
|
|
24
|
+
"editor.codeActionsOnSave": {
|
|
25
|
+
"source.fixAll": true,
|
|
26
|
+
"source.organizeImports": true,
|
|
27
|
+
"files.trimTrailingWhitespace": true
|
|
28
|
+
},
|
|
29
|
+
"editor.defaultFormatter": "charliermarsh.ruff"
|
|
30
|
+
},
|
|
31
|
+
"coverage-gutters.customizable.context-menu": true,
|
|
32
|
+
"coverage-gutters.customizable.status-bar-toggler-watchCoverageAndVisibleEditors-enabled": true,
|
|
33
|
+
"coverage-gutters.showGutterCoverage": false,
|
|
34
|
+
"coverage-gutters.showLineCoverage": true,
|
|
35
|
+
"coverage-gutters.xmlname": "coverage.xml",
|
|
36
|
+
"python.defaultInterpreterPath": ".venv/bin/python",
|
|
37
|
+
"python.testing.cwd": "${workspaceFolder}",
|
|
38
|
+
"python.testing.pytestArgs": ["--cov-report=xml"],
|
|
39
|
+
"python.testing.enabled": true,
|
|
40
|
+
"ruff.importStrategy": "fromEnvironment",
|
|
41
|
+
"ruff.interpreter": [".venv/bin/python"],
|
|
42
|
+
"terminal.integrated.defaultProfile.linux": "zsh"
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"features": {
|
|
47
|
+
"ghcr.io/devcontainers/features/github-cli:1": {},
|
|
48
|
+
"ghcr.io/jsburckhardt/devcontainer-features/uv:1": {}
|
|
49
|
+
},
|
|
50
|
+
"image": "mcr.microsoft.com/devcontainers/python:3.11-bookworm",
|
|
51
|
+
"name": "A Python3, async interface to the Hilo API",
|
|
52
|
+
"postCreateCommand": "uv sync --group dev --group test && uv run pre-commit install"
|
|
53
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature request
|
|
3
|
+
about: Suggest an idea for this project
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
**Is your feature request related to a problem? Please describe.**
|
|
7
|
+
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
|
8
|
+
|
|
9
|
+
**Describe the solution you'd like**
|
|
10
|
+
A clear and concise description of what you want to happen.
|
|
11
|
+
|
|
12
|
+
**Describe alternatives you've considered**
|
|
13
|
+
A clear and concise description of any alternative solutions or features you've considered.
|
|
14
|
+
|
|
15
|
+
**Additional context**
|
|
16
|
+
Add any other context or screenshots about the feature request here.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Issue
|
|
3
|
+
about: Create a report to help us improve
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- Before you open a new issue, search through the existing issues to see if others have had the same problem.
|
|
7
|
+
|
|
8
|
+
Issues not containing the minimum requirements will be closed:
|
|
9
|
+
|
|
10
|
+
- Issues without a description (using the header is not good enough) will be closed.
|
|
11
|
+
- Issues without debug logging will be closed.
|
|
12
|
+
- Issues without configuration will be closed
|
|
13
|
+
|
|
14
|
+
-->
|
|
15
|
+
|
|
16
|
+
## Version of the custom_component
|
|
17
|
+
|
|
18
|
+
<!-- If you are not using the newest version, download and try that before opening an issue
|
|
19
|
+
If you are unsure about the version check the const.py file.
|
|
20
|
+
-->
|
|
21
|
+
|
|
22
|
+
## Configuration
|
|
23
|
+
|
|
24
|
+
```yaml
|
|
25
|
+
Add your logs here.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Describe the bug
|
|
29
|
+
|
|
30
|
+
A clear and concise description of what the bug is.
|
|
31
|
+
|
|
32
|
+
## Debug log
|
|
33
|
+
|
|
34
|
+
<!-- To enable debug logs check this https://www.home-assistant.io/components/logger/ -->
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
|
|
38
|
+
Add your logs here.
|
|
39
|
+
|
|
40
|
+
```
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Labels names are important as they are used by Release Drafter to decide
|
|
3
|
+
# regarding where to record them in changelog or if to skip them.
|
|
4
|
+
#
|
|
5
|
+
# The repository labels will be automatically configured using this file and
|
|
6
|
+
# the GitHub Action https://github.com/marketplace/actions/github-labeler.
|
|
7
|
+
- name: breaking
|
|
8
|
+
description: Breaking Changes
|
|
9
|
+
color: bfd4f2
|
|
10
|
+
- name: bug
|
|
11
|
+
description: Something isn't working
|
|
12
|
+
color: d73a4a
|
|
13
|
+
- name: build
|
|
14
|
+
description: Build System and Dependencies
|
|
15
|
+
color: bfdadc
|
|
16
|
+
- name: ci
|
|
17
|
+
description: Continuous Integration
|
|
18
|
+
color: 4a97d6
|
|
19
|
+
- name: dependencies
|
|
20
|
+
description: Pull requests that update a dependency file
|
|
21
|
+
color: 0366d6
|
|
22
|
+
- name: documentation
|
|
23
|
+
description: Improvements or additions to documentation
|
|
24
|
+
color: 0075ca
|
|
25
|
+
- name: duplicate
|
|
26
|
+
description: This issue or pull request already exists
|
|
27
|
+
color: cfd3d7
|
|
28
|
+
- name: enhancement
|
|
29
|
+
description: New feature or request
|
|
30
|
+
color: a2eeef
|
|
31
|
+
- name: github_actions
|
|
32
|
+
description: Pull requests that update Github_actions code
|
|
33
|
+
color: "000000"
|
|
34
|
+
- name: good first issue
|
|
35
|
+
description: Good for newcomers
|
|
36
|
+
color: 7057ff
|
|
37
|
+
- name: help wanted
|
|
38
|
+
description: Extra attention is needed
|
|
39
|
+
color: 008672
|
|
40
|
+
- name: invalid
|
|
41
|
+
description: This doesn't seem right
|
|
42
|
+
color: e4e669
|
|
43
|
+
- name: performance
|
|
44
|
+
description: Performance
|
|
45
|
+
color: "016175"
|
|
46
|
+
- name: python
|
|
47
|
+
description: Pull requests that update Python code
|
|
48
|
+
color: 2b67c6
|
|
49
|
+
- name: question
|
|
50
|
+
description: Further information is requested
|
|
51
|
+
color: d876e3
|
|
52
|
+
- name: refactoring
|
|
53
|
+
description: Refactoring
|
|
54
|
+
color: ef67c4
|
|
55
|
+
- name: removal
|
|
56
|
+
description: Removals and Deprecations
|
|
57
|
+
color: 9ae7ea
|
|
58
|
+
- name: style
|
|
59
|
+
description: Style
|
|
60
|
+
color: c120e5
|
|
61
|
+
- name: testing
|
|
62
|
+
description: Testing
|
|
63
|
+
color: b1fc6f
|
|
64
|
+
- name: wontfix
|
|
65
|
+
description: This will not be worked on
|
|
66
|
+
color: ffffff
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
categories:
|
|
2
|
+
- title: ":boom: Breaking Changes"
|
|
3
|
+
label: "breaking"
|
|
4
|
+
- title: ":rocket: Features"
|
|
5
|
+
label: "enhancement"
|
|
6
|
+
- title: ":fire: Removals and Deprecations"
|
|
7
|
+
label: "removal"
|
|
8
|
+
- title: ":beetle: Fixes"
|
|
9
|
+
label: "bug"
|
|
10
|
+
- title: ":racehorse: Performance"
|
|
11
|
+
label: "performance"
|
|
12
|
+
- title: ":rotating_light: Testing"
|
|
13
|
+
label: "testing"
|
|
14
|
+
- title: ":construction_worker: Continuous Integration"
|
|
15
|
+
label: "ci"
|
|
16
|
+
- title: ":books: Documentation"
|
|
17
|
+
label: "documentation"
|
|
18
|
+
- title: ":hammer: Refactoring"
|
|
19
|
+
label: "refactoring"
|
|
20
|
+
- title: ":lipstick: Style"
|
|
21
|
+
label: "style"
|
|
22
|
+
- title: ":package: Dependencies"
|
|
23
|
+
labels:
|
|
24
|
+
- "dependencies"
|
|
25
|
+
- "build"
|
|
26
|
+
template: |
|
|
27
|
+
## Changes
|
|
28
|
+
|
|
29
|
+
$CHANGES
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Manage labels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
labeler:
|
|
10
|
+
name: Labeler
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- name: Check out the repository
|
|
14
|
+
uses: actions/checkout@v7
|
|
15
|
+
|
|
16
|
+
- name: Run Labeler
|
|
17
|
+
uses: crazy-max/ghaction-github-labeler@v6.0.0
|
|
18
|
+
with:
|
|
19
|
+
skip-delete: true
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
name: Draft a release note
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
jobs:
|
|
7
|
+
draft_release:
|
|
8
|
+
name: Release Drafter
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- name: Run release-drafter
|
|
12
|
+
uses: release-drafter/release-drafter@v7.10.0
|
|
13
|
+
env:
|
|
14
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
- dev
|
|
8
|
+
pull_request:
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
DEFAULT_PYTHON: 3.13
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
pre-commit:
|
|
15
|
+
runs-on: "ubuntu-latest"
|
|
16
|
+
name: Pre-commit
|
|
17
|
+
steps:
|
|
18
|
+
- name: Check out the repository
|
|
19
|
+
uses: actions/checkout@v7
|
|
20
|
+
|
|
21
|
+
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
|
22
|
+
uses: actions/setup-python@v7.0.0
|
|
23
|
+
with:
|
|
24
|
+
python-version: ${{ env.DEFAULT_PYTHON }}
|
|
25
|
+
|
|
26
|
+
- name: Install uv
|
|
27
|
+
uses: astral-sh/setup-uv@v10.2.0
|
|
28
|
+
|
|
29
|
+
- name: Install dependencies
|
|
30
|
+
run: uv sync --group dev
|
|
31
|
+
|
|
32
|
+
- name: Run pre-commit on all files
|
|
33
|
+
env:
|
|
34
|
+
SKIP: no-commit-to-branch
|
|
35
|
+
run: uv run pre-commit run --all-files --show-diff-on-failure --color=always
|
|
36
|
+
|
|
37
|
+
tests:
|
|
38
|
+
runs-on: "ubuntu-latest"
|
|
39
|
+
name: Tests
|
|
40
|
+
steps:
|
|
41
|
+
- name: Check out the repository
|
|
42
|
+
uses: actions/checkout@v7
|
|
43
|
+
|
|
44
|
+
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
|
45
|
+
uses: actions/setup-python@v7.0.0
|
|
46
|
+
with:
|
|
47
|
+
python-version: ${{ env.DEFAULT_PYTHON }}
|
|
48
|
+
|
|
49
|
+
- name: Install uv
|
|
50
|
+
uses: astral-sh/setup-uv@v10.2.0
|
|
51
|
+
|
|
52
|
+
- name: Install dependencies
|
|
53
|
+
run: uv sync --group test
|
|
54
|
+
|
|
55
|
+
- name: Run tests
|
|
56
|
+
run: uv run pytest -v
|
|
@@ -0,0 +1,141 @@
|
|
|
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
|
+
# OS X specific metadata
|
|
132
|
+
.DS_Store
|
|
133
|
+
|
|
134
|
+
# Pycharm stuff
|
|
135
|
+
*.idea
|
|
136
|
+
|
|
137
|
+
# Optional npm cache directory
|
|
138
|
+
.npm
|
|
139
|
+
|
|
140
|
+
# Dependency directories
|
|
141
|
+
node_modules/
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
repos:
|
|
3
|
+
- repo: https://github.com/PyCQA/bandit
|
|
4
|
+
rev: '1.9.2'
|
|
5
|
+
hooks:
|
|
6
|
+
- id: bandit
|
|
7
|
+
args:
|
|
8
|
+
- --quiet
|
|
9
|
+
- --format=custom
|
|
10
|
+
- --configfile=.bandit.yaml
|
|
11
|
+
files: ^pyhilo/.+\.py$
|
|
12
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
13
|
+
rev: v0.15.9
|
|
14
|
+
hooks:
|
|
15
|
+
- id: ruff-format
|
|
16
|
+
args: [--quiet]
|
|
17
|
+
files: ^pyhilo/.+\.py$
|
|
18
|
+
- id: ruff
|
|
19
|
+
args: [--fix, --exit-non-zero-on-fix]
|
|
20
|
+
files: ^pyhilo/.+\.py$
|
|
21
|
+
- repo: https://github.com/codespell-project/codespell
|
|
22
|
+
rev: v2.4.1
|
|
23
|
+
hooks:
|
|
24
|
+
- id: codespell
|
|
25
|
+
args:
|
|
26
|
+
- --skip="./.*,*.json"
|
|
27
|
+
- --quiet-level=4
|
|
28
|
+
- -L ba,hass,manuel,connexion
|
|
29
|
+
exclude_types: [json]
|
|
30
|
+
- repo: https://github.com/pre-commit/mirrors-mypy
|
|
31
|
+
rev: v1.19.1
|
|
32
|
+
hooks:
|
|
33
|
+
- id: mypy
|
|
34
|
+
files: ^pyhilo/.+\.py$
|
|
35
|
+
additional_dependencies:
|
|
36
|
+
- types-python-dateutil==2.8.0
|
|
37
|
+
- types-aiofiles==23.2.0
|
|
38
|
+
- types-PyYAML
|
|
39
|
+
|
|
40
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
41
|
+
rev: v6.0.0
|
|
42
|
+
hooks:
|
|
43
|
+
- id: check-json
|
|
44
|
+
# Exclude .devcontainer.json and .vscode since it uses JSONC
|
|
45
|
+
exclude: (.vscode|.devcontainer)
|
|
46
|
+
- id: check-yaml
|
|
47
|
+
- id: trailing-whitespace
|
|
48
|
+
- id: no-commit-to-branch
|
|
49
|
+
args:
|
|
50
|
+
- --branch=dev
|
|
51
|
+
- --branch=main
|
|
52
|
+
# - repo: https://github.com/PyCQA/pydocstyle
|
|
53
|
+
# rev: 5.0.2
|
|
54
|
+
# hooks:
|
|
55
|
+
# - id: pydocstyle
|
|
56
|
+
# files: ^((pyhilo|tests)/.+)?[^/]+\.py$
|
|
57
|
+
- repo: https://github.com/gruntwork-io/pre-commit
|
|
58
|
+
rev: v0.1.30
|
|
59
|
+
hooks:
|
|
60
|
+
- id: shellcheck
|
|
61
|
+
files: ^script/.+
|
|
@@ -1,40 +1,29 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: python-hilo
|
|
3
|
-
Version: 2026.
|
|
3
|
+
Version: 2026.10.1
|
|
4
4
|
Summary: A Python3, async interface to the Hilo API
|
|
5
|
-
|
|
5
|
+
Project-URL: Repository, https://github.com/dvd-dev/python-hilo
|
|
6
|
+
Author-email: David Vallee Delisle <me@dvd.dev>
|
|
7
|
+
Maintainer-email: David Vallee Delisle <me@dvd.dev>
|
|
8
|
+
License-Expression: MIT
|
|
6
9
|
License-File: LICENSE
|
|
7
|
-
Author: David Vallee Delisle
|
|
8
|
-
Author-email: me@dvd.dev
|
|
9
|
-
Maintainer: David Vallee Delisle
|
|
10
|
-
Maintainer-email: me@dvd.dev
|
|
11
|
-
Requires-Python: >=3.9.0,<4.0.0
|
|
12
10
|
Classifier: Framework :: aiohttp
|
|
13
11
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
12
|
Classifier: Programming Language :: Python
|
|
15
13
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
22
15
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
23
16
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
24
17
|
Classifier: Topic :: Home Automation
|
|
25
|
-
Requires-
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
34
|
-
Requires-Dist: python-dateutil (>=2.8.2)
|
|
35
|
-
Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
|
|
36
|
-
Requires-Dist: voluptuous (>=0.13.1)
|
|
37
|
-
Project-URL: Repository, https://github.com/dvd-dev/python-hilo
|
|
18
|
+
Requires-Python: >=3.11
|
|
19
|
+
Requires-Dist: aiofiles>=23.2.1
|
|
20
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
21
|
+
Requires-Dist: backoff>=1.11.1
|
|
22
|
+
Requires-Dist: httpx-sse>=0.4.0
|
|
23
|
+
Requires-Dist: httpx[http2]>=0.27.0
|
|
24
|
+
Requires-Dist: pysignalr>=1.3.0
|
|
25
|
+
Requires-Dist: python-dateutil>=2.8.2
|
|
26
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
38
27
|
Description-Content-Type: text/markdown
|
|
39
28
|
|
|
40
29
|
# python-hilo
|
|
@@ -69,21 +58,18 @@ the [Dev Container][devcontainer] feature of Visual Studio Code.
|
|
|
69
58
|
|
|
70
59
|
[![Open in Dev Containers][devcontainer-shield]][devcontainer]
|
|
71
60
|
|
|
72
|
-
This Python project
|
|
73
|
-
|
|
74
|
-
development.
|
|
61
|
+
This Python project uses [uv][uv] for dependency management and [ruff][ruff]
|
|
62
|
+
for formatting and linting.
|
|
75
63
|
|
|
76
64
|
You need at least:
|
|
77
65
|
|
|
78
66
|
- Python 3.11+
|
|
79
|
-
- [
|
|
80
|
-
- NodeJS 20+ (including NPM)
|
|
67
|
+
- [uv][uv]
|
|
81
68
|
|
|
82
69
|
To install all packages, including all development requirements:
|
|
83
70
|
|
|
84
71
|
```bash
|
|
85
|
-
|
|
86
|
-
poetry install
|
|
72
|
+
uv sync --group dev --group test
|
|
87
73
|
```
|
|
88
74
|
|
|
89
75
|
As this repository uses the [pre-commit][pre-commit] framework, all changes
|
|
@@ -91,13 +77,13 @@ are linted and tested with each commit. You can run all checks and tests
|
|
|
91
77
|
manually, using the following command:
|
|
92
78
|
|
|
93
79
|
```bash
|
|
94
|
-
|
|
80
|
+
uv run pre-commit run --all-files
|
|
95
81
|
```
|
|
96
82
|
|
|
97
83
|
To run just the Python tests:
|
|
98
84
|
|
|
99
85
|
```bash
|
|
100
|
-
|
|
86
|
+
uv run pytest
|
|
101
87
|
```
|
|
102
88
|
|
|
103
89
|
## Authors & contributors
|
|
@@ -120,9 +106,9 @@ check [the contributor's page][contributors].
|
|
|
120
106
|
[license-shield]: https://img.shields.io/github/license/dvd-dev/python-hilo.svg
|
|
121
107
|
[devcontainer-shield]: https://img.shields.io/static/v1?label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode
|
|
122
108
|
[devcontainer]: https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/dvd-dev/python-hilo
|
|
123
|
-
[poetry-install]: https://python-poetry.org/docs/#installation
|
|
124
|
-
[poetry]: https://python-poetry.org
|
|
125
109
|
[pre-commit]: https://pre-commit.com/
|
|
110
|
+
[uv]: https://docs.astral.sh/uv/
|
|
111
|
+
[ruff]: https://docs.astral.sh/ruff/
|
|
126
112
|
[dvd-dev]: https://github.com/dvd-dev
|
|
127
113
|
[frenck]: https://github.com/frenck
|
|
128
|
-
[contributors]: https://github.com/dvd-dev/python-hilo/graphs/contributors
|
|
114
|
+
[contributors]: https://github.com/dvd-dev/python-hilo/graphs/contributors
|