python-hilo 2026.3.5__tar.gz → 2026.9.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.
Files changed (62) hide show
  1. python_hilo-2026.9.1/.bandit.yaml +19 -0
  2. python_hilo-2026.9.1/.devcontainer/devcontainer-lock.json +14 -0
  3. python_hilo-2026.9.1/.devcontainer/devcontainer.json +53 -0
  4. python_hilo-2026.9.1/.editorconfig +12 -0
  5. python_hilo-2026.9.1/.gitattributes +2 -0
  6. python_hilo-2026.9.1/.github/ISSUE_TEMPLATE/feature_request.md +16 -0
  7. python_hilo-2026.9.1/.github/ISSUE_TEMPLATE/issue.md +40 -0
  8. python_hilo-2026.9.1/.github/dependabot.yml +10 -0
  9. python_hilo-2026.9.1/.github/labels.yml +66 -0
  10. python_hilo-2026.9.1/.github/release-drafter.yml +29 -0
  11. python_hilo-2026.9.1/.github/workflows/labeler.yml +19 -0
  12. python_hilo-2026.9.1/.github/workflows/release-drafter.yml +14 -0
  13. python_hilo-2026.9.1/.github/workflows/tests.yaml +56 -0
  14. python_hilo-2026.9.1/.gitignore +141 -0
  15. python_hilo-2026.9.1/.pre-commit-config.yaml +61 -0
  16. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/PKG-INFO +24 -38
  17. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/README.md +8 -11
  18. python_hilo-2026.9.1/doc/Challenge(Event) JSON/ChallengeAdded.json +29 -0
  19. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventAdded.json +30 -0
  20. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventCHConsumptionUpdatedValuesReceived(en cours de d/303/251fi).json" +47 -0
  21. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventCHConsumptionUpdatedValuesReceived.json +17 -0
  22. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventCHDetailsInitialValuesReceived.json +120 -0
  23. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventCHDetailsUpdatedValuesReceived.json +13 -0
  24. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventFlexConsumptionUpdatedValuesReceived.json +41 -0
  25. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventFlexDetailsInitialValuesReceived.json +90 -0
  26. python_hilo-2026.9.1/doc/Challenge(Event) JSON/EventFlexDetailsUpdatedValuesReceived.json +14 -0
  27. python_hilo-2026.9.1/doc/Device Replies/DeviceListInitialValuesReceived.json +1 -0
  28. python_hilo-2026.9.1/doc/Old JSONs (pre 2025-26 season)/ChallengeAdded.json +25 -0
  29. python_hilo-2026.9.1/doc/Old JSONs (pre 2025-26 season)/ChallengeConsumptionUpdatedValuesReceived.json +979 -0
  30. python_hilo-2026.9.1/doc/Old JSONs (pre 2025-26 season)/ChallengeDetailsInitialValuesReceived.json +173 -0
  31. python_hilo-2026.9.1/doc/Old JSONs (pre 2025-26 season)/ChallengeListInitialValuesReceived.json +25 -0
  32. python_hilo-2026.9.1/doc/Old JSONs (pre 2025-26 season)/ChallengeListUpdatedValuesReceived.json +15 -0
  33. python_hilo-2026.9.1/doc/Postman/Hilo Prod.postman_environment.json +100 -0
  34. python_hilo-2026.9.1/doc/Postman/Hilo.postman_collection.json +508 -0
  35. python_hilo-2026.9.1/doc/Readme.md +111 -0
  36. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/api.py +0 -32
  37. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/const.py +5 -8
  38. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/device/light.py +1 -1
  39. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/device/sensor.py +1 -1
  40. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/device/switch.py +1 -1
  41. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/devices.py +1 -13
  42. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/graphql.py +55 -1
  43. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/signalr.py +20 -4
  44. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/util/state.py +1 -3
  45. python_hilo-2026.9.1/pyproject.toml +114 -0
  46. python_hilo-2026.9.1/tests/__init__.py +0 -0
  47. python_hilo-2026.9.1/tests/conftest.py +18 -0
  48. python_hilo-2026.9.1/tests/test_device.py +327 -0
  49. python_hilo-2026.9.1/tests/test_signalr.py +66 -0
  50. python_hilo-2026.9.1/tests/test_util.py +23 -0
  51. python_hilo-2026.9.1/tests/test_util_state.py +128 -0
  52. python_hilo-2026.9.1/uv.lock +1434 -0
  53. python_hilo-2026.3.5/pyproject.toml +0 -122
  54. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/LICENSE +0 -0
  55. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/__init__.py +0 -0
  56. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/device/__init__.py +0 -0
  57. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/device/climate.py +0 -0
  58. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/device/graphql_value_mapper.py +0 -0
  59. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/event.py +0 -0
  60. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/exceptions.py +0 -0
  61. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/oauth2helper.py +0 -0
  62. {python_hilo-2026.3.5 → python_hilo-2026.9.1}/pyhilo/util/__init__.py +0 -0
@@ -0,0 +1,19 @@
1
+ ---
2
+ tests:
3
+ - B103
4
+ - B108
5
+ - B306
6
+ - B307
7
+ - B313
8
+ - B314
9
+ - B315
10
+ - B316
11
+ - B317
12
+ - B318
13
+ - B319
14
+ - B320
15
+ - B601
16
+ - B602
17
+ - B604
18
+ - B608
19
+ - B609
@@ -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,12 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ indent_style = space
7
+ insert_final_newline = true
8
+ trim_trailing_whitespace = true
9
+ indent_size = 2
10
+
11
+ [*.md]
12
+ trim_trailing_whitespace = false
@@ -0,0 +1,2 @@
1
+ * text eol=lf
2
+ *.py whitespace=error
@@ -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,10 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: github-actions
4
+ directory: "/"
5
+ schedule:
6
+ interval: weekly
7
+ - package-ecosystem: uv
8
+ directory: "/"
9
+ schedule:
10
+ interval: weekly
@@ -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.7.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.0.1
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.0.1
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.4
1
+ Metadata-Version: 2.5
2
2
  Name: python-hilo
3
- Version: 2026.3.5
3
+ Version: 2026.9.1
4
4
  Summary: A Python3, async interface to the Hilo API
5
- License: MIT
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-Dist: aiofiles (>=23.2.1)
26
- Requires-Dist: aiohttp (>=3.8.0)
27
- Requires-Dist: aiosignal (>=1.2.0)
28
- Requires-Dist: async-timeout (>=4.0.0)
29
- Requires-Dist: attrs (>=21.2.0)
30
- Requires-Dist: backoff (>=1.11.1)
31
- Requires-Dist: httpx-sse (>=0.4.0)
32
- Requires-Dist: httpx[http2] (>=0.27.0)
33
- Requires-Dist: pysignalr (>=1.3.0)
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 is fully managed using the [Poetry][poetry] dependency
73
- manager. But also relies on the use of NodeJS for certain checks during
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
- - [Poetry][poetry-install]
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
- npm install
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
- poetry run pre-commit run --all-files
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
- poetry run pytest
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