Skip to content

Commit ca4a2d4

Browse files
authored
2 parents fc8f8b3 + c2ce322 commit ca4a2d4

File tree

2,036 files changed

+178789
-44940
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

2,036 files changed

+178789
-44940
lines changed

.github/workflows/builder.yml

Lines changed: 162 additions & 142 deletions
Large diffs are not rendered by default.

.github/workflows/ci.yaml

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ on:
3737
type: boolean
3838

3939
env:
40-
CACHE_VERSION: 1
40+
CACHE_VERSION: 2
4141
UV_CACHE_VERSION: 1
4242
MYPY_CACHE_VERSION: 1
43-
HA_SHORT_VERSION: "2025.11"
44-
DEFAULT_PYTHON: "3.13"
45-
ALL_PYTHON_VERSIONS: "['3.13', '3.14']"
43+
HA_SHORT_VERSION: "2025.12"
44+
DEFAULT_PYTHON: "3.13.9"
45+
ALL_PYTHON_VERSIONS: "['3.13.9', '3.14.0']"
4646
# 10.3 is the oldest supported version
4747
# - 10.3.32 is the version currently shipped with Synology (as of 17 Feb 2022)
4848
# 10.6 is the current long-term-support
@@ -99,7 +99,7 @@ jobs:
9999
steps:
100100
- &checkout
101101
name: Check out code from GitHub
102-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
102+
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
103103
- name: Generate partial Python venv restore key
104104
id: generate_python_cache_key
105105
run: |
@@ -257,7 +257,7 @@ jobs:
257257
- &setup-python-default
258258
name: Set up Python ${{ env.DEFAULT_PYTHON }}
259259
id: python
260-
uses: &actions-setup-python actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
260+
uses: &actions-setup-python actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
261261
with:
262262
python-version: ${{ env.DEFAULT_PYTHON }}
263263
check-latest: true
@@ -502,7 +502,6 @@ jobs:
502502
libavfilter-dev \
503503
libavformat-dev \
504504
libavutil-dev \
505-
libgammu-dev \
506505
libswresample-dev \
507506
libswscale-dev \
508507
libudev-dev
@@ -623,7 +622,7 @@ jobs:
623622
steps:
624623
- *checkout
625624
- name: Dependency review
626-
uses: actions/dependency-review-action@40c09b7dc99638e5ddb0bfd91c1673effc064d8a # v4.8.1
625+
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
627626
with:
628627
license-check: false # We use our own license audit checks
629628

@@ -801,8 +800,7 @@ jobs:
801800
-o Dir::State::Lists=${{ env.APT_LIST_CACHE_DIR }} \
802801
bluez \
803802
ffmpeg \
804-
libturbojpeg \
805-
libgammu-dev
803+
libturbojpeg
806804
- *checkout
807805
- *setup-python-default
808806
- *cache-restore-python-default
@@ -853,7 +851,6 @@ jobs:
853851
bluez \
854852
ffmpeg \
855853
libturbojpeg \
856-
libgammu-dev \
857854
libxml2-utils
858855
- *checkout
859856
- *setup-python-matrix
@@ -1233,7 +1230,6 @@ jobs:
12331230
bluez \
12341231
ffmpeg \
12351232
libturbojpeg \
1236-
libgammu-dev \
12371233
libxml2-utils
12381234
- *checkout
12391235
- *setup-python-matrix

.github/workflows/codeql.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ jobs:
2121

2222
steps:
2323
- name: Check out code from GitHub
24-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
24+
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
2525

2626
- name: Initialize CodeQL
27-
uses: github/codeql-action/init@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0
27+
uses: github/codeql-action/init@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
2828
with:
2929
languages: python
3030

3131
- name: Perform CodeQL Analysis
32-
uses: github/codeql-action/analyze@4e94bd11f71e507f7f87df81788dff88d1dacbfb # v4.31.0
32+
uses: github/codeql-action/analyze@fdbfb4d2750291e159f0156def62b853c2798ca2 # v4.31.5
3333
with:
3434
category: "/language:python"

.github/workflows/detect-duplicate-issues.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ jobs:
231231
- name: Detect duplicates using AI
232232
id: ai_detection
233233
if: steps.extract.outputs.should_continue == 'true' && steps.fetch_similar.outputs.has_similar == 'true'
234-
uses: actions/ai-inference@a1c11829223a786afe3b5663db904a3aa1eac3a2 # v2.0.1
234+
uses: actions/ai-inference@5022b33bc1431add9b2831934daf8147a2ad9331 # v2.0.2
235235
with:
236236
model: openai/gpt-4o
237237
system-prompt: |

.github/workflows/detect-non-english-issues.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ jobs:
5757
- name: Detect language using AI
5858
id: ai_language_detection
5959
if: steps.detect_language.outputs.should_continue == 'true'
60-
uses: actions/ai-inference@a1c11829223a786afe3b5663db904a3aa1eac3a2 # v2.0.1
60+
uses: actions/ai-inference@5022b33bc1431add9b2831934daf8147a2ad9331 # v2.0.2
6161
with:
6262
model: openai/gpt-4o-mini
6363
system-prompt: |

.github/workflows/translations.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ jobs:
1919
runs-on: ubuntu-latest
2020
steps:
2121
- name: Checkout the repository
22-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
22+
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
2323

2424
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
25-
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
25+
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
2626
with:
2727
python-version: ${{ env.DEFAULT_PYTHON }}
2828

.github/workflows/wheels.yml

Lines changed: 8 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,14 @@ jobs:
2828
name: Initialize wheels builder
2929
if: github.repository_owner == 'home-assistant'
3030
runs-on: ubuntu-latest
31-
outputs:
32-
architectures: ${{ steps.info.outputs.architectures }}
3331
steps:
3432
- &checkout
3533
name: Checkout the repository
36-
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
34+
uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v6.0.0
3735

3836
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
3937
id: python
40-
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
38+
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
4139
with:
4240
python-version: ${{ env.DEFAULT_PYTHON }}
4341
check-latest: true
@@ -50,10 +48,6 @@ jobs:
5048
pip install "$(grep '^uv' < requirements.txt)"
5149
uv pip install -r requirements.txt
5250
53-
- name: Get information
54-
id: info
55-
uses: home-assistant/actions/helpers/info@master
56-
5751
- name: Create requirements_diff file
5852
run: |
5953
if [[ ${{ github.event_name }} =~ (schedule|workflow_dispatch) ]]; then
@@ -77,20 +71,8 @@ jobs:
7771
7872
# Use C-Extension for SQLAlchemy
7973
echo "REQUIRE_SQLALCHEMY_CEXT=1"
80-
81-
# Add additional pip wheel build constraints
82-
echo "PIP_CONSTRAINT=build_constraints.txt"
8374
) > .env_file
8475
85-
- name: Write pip wheel build constraints
86-
run: |
87-
(
88-
# ninja 1.11.1.2 + 1.11.1.3 seem to be broken on at least armhf
89-
# this caused the numpy builds to fail
90-
# https://github.com/scikit-build/ninja-python-distributions/issues/274
91-
echo "ninja==1.11.1.1"
92-
) > build_constraints.txt
93-
9476
- name: Upload env_file
9577
uses: &actions-upload-artifact actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
9678
with:
@@ -99,13 +81,6 @@ jobs:
9981
include-hidden-files: true
10082
overwrite: true
10183

102-
- name: Upload build_constraints
103-
uses: *actions-upload-artifact
104-
with:
105-
name: build_constraints
106-
path: ./build_constraints.txt
107-
overwrite: true
108-
10984
- name: Upload requirements_diff
11085
uses: *actions-upload-artifact
11186
with:
@@ -133,18 +108,12 @@ jobs:
133108
fail-fast: false
134109
matrix: &matrix-build
135110
abi: ["cp313", "cp314"]
136-
arch: ${{ fromJson(needs.init.outputs.architectures) }}
111+
arch: ["amd64", "aarch64"]
137112
include:
138-
- os: ubuntu-latest
113+
- arch: amd64
114+
os: ubuntu-latest
139115
- arch: aarch64
140116
os: ubuntu-24.04-arm
141-
exclude:
142-
- abi: cp314
143-
arch: armv7
144-
- abi: cp314
145-
arch: armhf
146-
- abi: cp314
147-
arch: i386
148117
steps:
149118
- *checkout
150119

@@ -154,12 +123,6 @@ jobs:
154123
with:
155124
name: env_file
156125

157-
- &download-build-constraints
158-
name: Download build_constraints
159-
uses: *actions-download-artifact
160-
with:
161-
name: build_constraints
162-
163126
- &download-requirements-diff
164127
name: Download requirements_diff
165128
uses: *actions-download-artifact
@@ -172,9 +135,8 @@ jobs:
172135
sed -i "/uv/d" requirements.txt
173136
sed -i "/uv/d" requirements_diff.txt
174137
175-
# home-assistant/wheels doesn't support sha pinning
176138
- name: Build wheels
177-
uses: &home-assistant-wheels home-assistant/wheels@2025.10.0
139+
uses: &home-assistant-wheels home-assistant/wheels@6066c17a2a4aafcf7bdfeae01717f63adfcdba98 # 2025.11.0
178140
with:
179141
abi: ${{ matrix.abi }}
180142
tag: musllinux_1_2
@@ -199,7 +161,7 @@ jobs:
199161
- *checkout
200162

201163
- *download-env-file
202-
- *download-build-constraints
164+
203165
- *download-requirements-diff
204166

205167
- name: Download requirements_all_wheels
@@ -209,17 +171,12 @@ jobs:
209171

210172
- name: Adjust build env
211173
run: |
212-
if [ "${{ matrix.arch }}" = "i386" ]; then
213-
echo "NPY_DISABLE_SVML=1" >> .env_file
214-
fi
215-
216174
# Do not pin numpy in wheels building
217175
sed -i "/numpy/d" homeassistant/package_constraints.txt
218176
# Don't build wheels for uv as uv requires a greater version of rust as currently available on alpine
219177
sed -i "/uv/d" requirements.txt
220178
sed -i "/uv/d" requirements_diff.txt
221179
222-
# home-assistant/wheels doesn't support sha pinning
223180
- name: Build wheels
224181
uses: *home-assistant-wheels
225182
with:
@@ -228,7 +185,7 @@ jobs:
228185
arch: ${{ matrix.arch }}
229186
wheels-key: ${{ secrets.WHEELS_KEY }}
230187
env-file: true
231-
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;cups-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;gammu-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm;zlib-ng-dev"
188+
apk: "bluez-dev;libffi-dev;openssl-dev;glib-dev;eudev-dev;libxml2-dev;libxslt-dev;libpng-dev;libjpeg-turbo-dev;tiff-dev;gmp-dev;mpfr-dev;mpc1-dev;ffmpeg-dev;yaml-dev;openblas-dev;fftw-dev;lapack-dev;gfortran;blas-dev;eigen-dev;freetype-dev;glew-dev;harfbuzz-dev;hdf5-dev;libdc1394-dev;libtbb-dev;mesa-dev;openexr-dev;openjpeg-dev;uchardet-dev;nasm;zlib-ng-dev"
232189
skip-binary: aiohttp;charset-normalizer;grpcio;multidict;SQLAlchemy;propcache;protobuf;pymicro-vad;yarl
233190
constraints: "homeassistant/package_constraints.txt"
234191
requirements-diff: "requirements_diff.txt"

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,14 @@ repos:
8787
pass_filenames: false
8888
language: script
8989
types: [text]
90-
files: ^(homeassistant/.+/(icons|manifest|strings)\.json|homeassistant/.+/(quality_scale)\.yaml|homeassistant/brands/.*\.json|homeassistant/.+/services\.yaml|script/hassfest/(?!metadata|mypy_config).+\.py|requirements.+\.txt)$
90+
files: ^(homeassistant/.+/(icons|manifest|strings)\.json|homeassistant/.+/(conditions|quality_scale|services|triggers)\.yaml|homeassistant/brands/.*\.json|script/hassfest/(?!metadata|mypy_config).+\.py|requirements.+\.txt)$
9191
- id: hassfest-metadata
9292
name: hassfest-metadata
9393
entry: script/run-in-env.sh python3 -m script.hassfest -p metadata,docker
9494
pass_filenames: false
9595
language: script
9696
types: [text]
97-
files: ^(script/hassfest/metadata\.py|homeassistant/const\.py$|pyproject\.toml|homeassistant/components/go2rtc/const\.py)$
97+
files: ^(script/hassfest/(metadata|docker)\.py|homeassistant/const\.py$|pyproject\.toml)$
9898
- id: hassfest-mypy-config
9999
name: hassfest-mypy-config
100100
entry: script/run-in-env.sh python3 -m script.hassfest -p mypy_config

.strict-typing

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ homeassistant.components.automation.*
107107
homeassistant.components.awair.*
108108
homeassistant.components.axis.*
109109
homeassistant.components.azure_storage.*
110+
homeassistant.components.backblaze_b2.*
110111
homeassistant.components.backup.*
111112
homeassistant.components.baf.*
112113
homeassistant.components.bang_olufsen.*
@@ -119,7 +120,6 @@ homeassistant.components.blueprint.*
119120
homeassistant.components.bluesound.*
120121
homeassistant.components.bluetooth.*
121122
homeassistant.components.bluetooth_adapters.*
122-
homeassistant.components.bluetooth_tracker.*
123123
homeassistant.components.bmw_connected_drive.*
124124
homeassistant.components.bond.*
125125
homeassistant.components.bosch_alarm.*
@@ -187,6 +187,7 @@ homeassistant.components.elkm1.*
187187
homeassistant.components.emulated_hue.*
188188
homeassistant.components.energenie_power_sockets.*
189189
homeassistant.components.energy.*
190+
homeassistant.components.energyid.*
190191
homeassistant.components.energyzero.*
191192
homeassistant.components.enigma2.*
192193
homeassistant.components.enphase_envoy.*
@@ -230,6 +231,7 @@ homeassistant.components.google_cloud.*
230231
homeassistant.components.google_drive.*
231232
homeassistant.components.google_photos.*
232233
homeassistant.components.google_sheets.*
234+
homeassistant.components.google_weather.*
233235
homeassistant.components.govee_ble.*
234236
homeassistant.components.gpsd.*
235237
homeassistant.components.greeneye_monitor.*
@@ -395,7 +397,6 @@ homeassistant.components.otbr.*
395397
homeassistant.components.overkiz.*
396398
homeassistant.components.overseerr.*
397399
homeassistant.components.p1_monitor.*
398-
homeassistant.components.pandora.*
399400
homeassistant.components.panel_custom.*
400401
homeassistant.components.paperless_ngx.*
401402
homeassistant.components.peblar.*
@@ -578,6 +579,7 @@ homeassistant.components.wiz.*
578579
homeassistant.components.wled.*
579580
homeassistant.components.workday.*
580581
homeassistant.components.worldclock.*
582+
homeassistant.components.xbox.*
581583
homeassistant.components.xiaomi_ble.*
582584
homeassistant.components.yale_smart_alarm.*
583585
homeassistant.components.yalexs_ble.*

0 commit comments

Comments
 (0)