mirror of
https://github.com/home-assistant/core.git
synced 2025-10-03 08:49:29 +00:00
Compare commits
2560 Commits
2022.11.2
...
otbr_user_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
18dae08244 | ||
![]() |
5d21b6e7a7 | ||
![]() |
eea98b22e0 | ||
![]() |
072517f17e | ||
![]() |
3cd6bd87a7 | ||
![]() |
0f3221eac7 | ||
![]() |
8485588aca | ||
![]() |
11b9a0b383 | ||
![]() |
9b835f88c7 | ||
![]() |
cb36905ce5 | ||
![]() |
8e7e210693 | ||
![]() |
b7f484a84f | ||
![]() |
1918f21fb1 | ||
![]() |
6c5f9c6fcb | ||
![]() |
1e9de194d3 | ||
![]() |
566c0f63bd | ||
![]() |
f7d69ee325 | ||
![]() |
551e098177 | ||
![]() |
14a32cd63b | ||
![]() |
ec1b4d5651 | ||
![]() |
4aba3fdad6 | ||
![]() |
2ed6df9003 | ||
![]() |
8b3a6514a3 | ||
![]() |
d2e11797f8 | ||
![]() |
26c419705e | ||
![]() |
f0e6f45e43 | ||
![]() |
abc8b891be | ||
![]() |
851eef1144 | ||
![]() |
15db63bb3b | ||
![]() |
d949f51f10 | ||
![]() |
b85d6e6ede | ||
![]() |
c3c9ed6835 | ||
![]() |
a818ef6411 | ||
![]() |
788edc21fb | ||
![]() |
612f93d636 | ||
![]() |
b5956eb8dd | ||
![]() |
2087c53fa5 | ||
![]() |
c1f08256e2 | ||
![]() |
156307f3f2 | ||
![]() |
c6f60bf45d | ||
![]() |
5fbc005224 | ||
![]() |
156c815499 | ||
![]() |
3aad153913 | ||
![]() |
b087c1e734 | ||
![]() |
7636477760 | ||
![]() |
89d085a69c | ||
![]() |
d8c3b87d44 | ||
![]() |
1945ba06ba | ||
![]() |
3d4b1fb689 | ||
![]() |
a35a4efaaa | ||
![]() |
fe583b7c4a | ||
![]() |
1afb4897a8 | ||
![]() |
c5dedb7a79 | ||
![]() |
5b2c1d701a | ||
![]() |
b229347625 | ||
![]() |
6a89b3a135 | ||
![]() |
9205020fa4 | ||
![]() |
9f0bed0f0c | ||
![]() |
c3e27f6812 | ||
![]() |
83591704b5 | ||
![]() |
ee85a23d19 | ||
![]() |
bcef0d66ac | ||
![]() |
1a8933d59d | ||
![]() |
0328e8954d | ||
![]() |
0a367359f4 | ||
![]() |
8165f487c7 | ||
![]() |
c1589d3c89 | ||
![]() |
6859a9ebdd | ||
![]() |
54d570a9cf | ||
![]() |
c26d620ab1 | ||
![]() |
dd18708b63 | ||
![]() |
2b037efee2 | ||
![]() |
13cfd60019 | ||
![]() |
11a81dc485 | ||
![]() |
f9662e0af0 | ||
![]() |
3179101fbc | ||
![]() |
ccd8bc14e0 | ||
![]() |
ce43a53585 | ||
![]() |
affea9a305 | ||
![]() |
fa0d653216 | ||
![]() |
719f2e650c | ||
![]() |
233332c3a0 | ||
![]() |
9709391b52 | ||
![]() |
0b02abf708 | ||
![]() |
d3c41bc31c | ||
![]() |
8c235357a4 | ||
![]() |
176eb01016 | ||
![]() |
dfc33f858a | ||
![]() |
b81453cb6b | ||
![]() |
a7ebec4d02 | ||
![]() |
65ca62c991 | ||
![]() |
cd31624768 | ||
![]() |
05c1aff0f6 | ||
![]() |
64c2340fab | ||
![]() |
8e5236528f | ||
![]() |
01e1e254e2 | ||
![]() |
28804b7ecc | ||
![]() |
91ac6400b9 | ||
![]() |
9828b2d13f | ||
![]() |
03d9d30eca | ||
![]() |
3cb56211f8 | ||
![]() |
209c47383d | ||
![]() |
1a0bce715a | ||
![]() |
104f74054b | ||
![]() |
e35ab75c0b | ||
![]() |
72d3fa6d89 | ||
![]() |
e5f67c9119 | ||
![]() |
cef1809536 | ||
![]() |
2850583085 | ||
![]() |
b20eb54800 | ||
![]() |
d92b423127 | ||
![]() |
10829fdadb | ||
![]() |
476de319ea | ||
![]() |
314576048d | ||
![]() |
508b93c17f | ||
![]() |
64ee0cf627 | ||
![]() |
ef4b7c8a22 | ||
![]() |
19426ec18a | ||
![]() |
3ae4e98204 | ||
![]() |
a81045653d | ||
![]() |
a653ea30bd | ||
![]() |
8117f4af3a | ||
![]() |
3627a98602 | ||
![]() |
77f9548e51 | ||
![]() |
913bc827ba | ||
![]() |
c478e503e5 | ||
![]() |
6938f791f9 | ||
![]() |
43fb68ed79 | ||
![]() |
768c3e163d | ||
![]() |
8fbcb93ab4 | ||
![]() |
1fcd25130f | ||
![]() |
5f67e79ad9 | ||
![]() |
bca462401c | ||
![]() |
8b893b7062 | ||
![]() |
dffc913f9e | ||
![]() |
ec61f5f998 | ||
![]() |
9b5ac5b173 | ||
![]() |
be899b6ab6 | ||
![]() |
c191daedc3 | ||
![]() |
67716edb0c | ||
![]() |
21cdb6ece3 | ||
![]() |
bce7bd771e | ||
![]() |
b2b6ae417d | ||
![]() |
d35c4f8d82 | ||
![]() |
8dadbe45fa | ||
![]() |
a5a079fb06 | ||
![]() |
7953c4a6d5 | ||
![]() |
4c2b20db68 | ||
![]() |
6baa905448 | ||
![]() |
87aacf9fbe | ||
![]() |
d748894b88 | ||
![]() |
ae302bbec0 | ||
![]() |
d44210e573 | ||
![]() |
e75c85f679 | ||
![]() |
80714c544a | ||
![]() |
4c31317c06 | ||
![]() |
1deb4c68f3 | ||
![]() |
9927bb3330 | ||
![]() |
8e26c048a7 | ||
![]() |
28bea53afe | ||
![]() |
f941864308 | ||
![]() |
2ca73be9d0 | ||
![]() |
9415e7e51b | ||
![]() |
686258acd5 | ||
![]() |
49031b8fa7 | ||
![]() |
cb04a52220 | ||
![]() |
db5edfcf64 | ||
![]() |
578a1cdc02 | ||
![]() |
1f6efe8c3e | ||
![]() |
107461df0d | ||
![]() |
4f20b15742 | ||
![]() |
596f779254 | ||
![]() |
e18117fd63 | ||
![]() |
b5a9e682be | ||
![]() |
cc016c9bba | ||
![]() |
4895f2e7c2 | ||
![]() |
8418a30cc0 | ||
![]() |
e4e96d3394 | ||
![]() |
e18a6e376c | ||
![]() |
45a41421b6 | ||
![]() |
5a4df9d870 | ||
![]() |
64e235285d | ||
![]() |
a7fb3c82fb | ||
![]() |
305fb86d50 | ||
![]() |
679e971131 | ||
![]() |
b0d4b73874 | ||
![]() |
a176de6d4b | ||
![]() |
b71d332a10 | ||
![]() |
c625051665 | ||
![]() |
255a8362a1 | ||
![]() |
43cc8a1ebf | ||
![]() |
ae9a57b2a8 | ||
![]() |
0ae855d345 | ||
![]() |
b14c141fe3 | ||
![]() |
05590f63c9 | ||
![]() |
2757f97114 | ||
![]() |
6f92c5381d | ||
![]() |
77feaecbfa | ||
![]() |
3ee73f0fea | ||
![]() |
e603645b90 | ||
![]() |
42a4dd98f1 | ||
![]() |
c8cd41b5d4 | ||
![]() |
06bc9c7b22 | ||
![]() |
a2f6299fc1 | ||
![]() |
a575dfb5c3 | ||
![]() |
ccd7f09de6 | ||
![]() |
f9dcb2ea84 | ||
![]() |
2286029b5d | ||
![]() |
82ec769ec5 | ||
![]() |
1a4cac95a1 | ||
![]() |
0200327fa8 | ||
![]() |
941f82b60c | ||
![]() |
3d7c61bbed | ||
![]() |
1afb30344a | ||
![]() |
db428f2141 | ||
![]() |
856895ddf5 | ||
![]() |
d3249432c9 | ||
![]() |
7af23698bc | ||
![]() |
6e3cf896f7 | ||
![]() |
caa8fc4d10 | ||
![]() |
67b238c8d1 | ||
![]() |
85ba8a6cde | ||
![]() |
667fde997d | ||
![]() |
de2588f6e0 | ||
![]() |
02357193ad | ||
![]() |
4889373819 | ||
![]() |
d01a62fec5 | ||
![]() |
a7647fee28 | ||
![]() |
7621c450c7 | ||
![]() |
3d02b5af21 | ||
![]() |
67f8d82818 | ||
![]() |
2ae986d45b | ||
![]() |
4eddd8b75a | ||
![]() |
298d7504fd | ||
![]() |
d313d82eb7 | ||
![]() |
65750fec9b | ||
![]() |
4d660f926d | ||
![]() |
105b34bd77 | ||
![]() |
5d7f33ad76 | ||
![]() |
5fdf78ed30 | ||
![]() |
fa7d7415d7 | ||
![]() |
b64d14004a | ||
![]() |
0a8380cbe1 | ||
![]() |
9eb06fd59d | ||
![]() |
b86c58b0ea | ||
![]() |
bba9ad3243 | ||
![]() |
d40a4aa970 | ||
![]() |
05c32c51fd | ||
![]() |
6aa44d5b82 | ||
![]() |
f9dbce8bf4 | ||
![]() |
6a801fc058 | ||
![]() |
bf67458d83 | ||
![]() |
db8a94d5e2 | ||
![]() |
ca0fe488ba | ||
![]() |
4a22b463d1 | ||
![]() |
e24989b446 | ||
![]() |
f2df72e014 | ||
![]() |
77542fc842 | ||
![]() |
069d8024a4 | ||
![]() |
07bd208c7d | ||
![]() |
6970a8a87a | ||
![]() |
2c95c0b3a1 | ||
![]() |
02897fb9a3 | ||
![]() |
57239769ba | ||
![]() |
818253ced4 | ||
![]() |
b6316b4904 | ||
![]() |
8983f665cf | ||
![]() |
a8f95c36a6 | ||
![]() |
3bb435c292 | ||
![]() |
e35b21823e | ||
![]() |
9491de2bd1 | ||
![]() |
b933a53aa3 | ||
![]() |
174cc23309 | ||
![]() |
c181fb6de0 | ||
![]() |
86ab5f76e0 | ||
![]() |
8747d01e7b | ||
![]() |
1766df3faa | ||
![]() |
aa5b29c560 | ||
![]() |
72c9ca2567 | ||
![]() |
1cdd535f21 | ||
![]() |
54168c9bdb | ||
![]() |
a332cd8aba | ||
![]() |
60604f7905 | ||
![]() |
02f1dce137 | ||
![]() |
a0e18051c7 | ||
![]() |
c225ed0a1a | ||
![]() |
f1895fa826 | ||
![]() |
88356a95e6 | ||
![]() |
186151008f | ||
![]() |
7adb8d5ddc | ||
![]() |
aa1c539683 | ||
![]() |
a8cdb86b23 | ||
![]() |
cdafd94550 | ||
![]() |
1f86a0a76f | ||
![]() |
dfa9f0e11d | ||
![]() |
05187d7bf4 | ||
![]() |
7bdfa7b9ec | ||
![]() |
c4c64a8bed | ||
![]() |
6ce88cd5af | ||
![]() |
112b2c22f7 | ||
![]() |
06a35fb7db | ||
![]() |
cf5fca0464 | ||
![]() |
9d7e99eeb7 | ||
![]() |
318871f8a9 | ||
![]() |
4162dfdc4e | ||
![]() |
36f16b0ff2 | ||
![]() |
8f7aca7b69 | ||
![]() |
b0270f1ab7 | ||
![]() |
2511402400 | ||
![]() |
90e55cd711 | ||
![]() |
7eb1b8c2fe | ||
![]() |
487782a6d1 | ||
![]() |
800b8abe39 | ||
![]() |
1b592e6885 | ||
![]() |
d81febd3f4 | ||
![]() |
45eb1efc6f | ||
![]() |
fc00c6d885 | ||
![]() |
30c9f4f926 | ||
![]() |
5d6634906d | ||
![]() |
5eb7aed0ca | ||
![]() |
2a965a6e44 | ||
![]() |
d2c733628f | ||
![]() |
a18a629c19 | ||
![]() |
0b163aac7d | ||
![]() |
07fa7504fb | ||
![]() |
8b6e54a01b | ||
![]() |
dc000d2289 | ||
![]() |
da51765f5c | ||
![]() |
ecaec0332d | ||
![]() |
3a905f80df | ||
![]() |
3ad4caa3d7 | ||
![]() |
ad65fc27bc | ||
![]() |
d2537dacc6 | ||
![]() |
1804006da0 | ||
![]() |
5000c426c6 | ||
![]() |
e3e64c103d | ||
![]() |
c3991b591a | ||
![]() |
2e989b16ad | ||
![]() |
a2ef0caa07 | ||
![]() |
e99840f82c | ||
![]() |
b27e89b40e | ||
![]() |
dddba4ba45 | ||
![]() |
0fbb334ad9 | ||
![]() |
b257de57d9 | ||
![]() |
f215ae9dd9 | ||
![]() |
c3716015c4 | ||
![]() |
ee3ab45012 | ||
![]() |
7f2b7340b9 | ||
![]() |
dfca3c2448 | ||
![]() |
757e4cf9e1 | ||
![]() |
d3c7cbbfb0 | ||
![]() |
4025ac712f | ||
![]() |
21c0e93ee9 | ||
![]() |
015281078a | ||
![]() |
6d012ea7c0 | ||
![]() |
cf3ca816a8 | ||
![]() |
2976f843b5 | ||
![]() |
9ad05b55d9 | ||
![]() |
194adcde9c | ||
![]() |
d75087ede5 | ||
![]() |
968cf641b8 | ||
![]() |
f12ffe1e49 | ||
![]() |
9d45071e3f | ||
![]() |
8bb5763ea0 | ||
![]() |
bd8cb4f166 | ||
![]() |
31bf0a0105 | ||
![]() |
4b178e88a4 | ||
![]() |
d9be9fe6d5 | ||
![]() |
b9339a290a | ||
![]() |
220ec1906c | ||
![]() |
52032c6c7f | ||
![]() |
0d5bdaf037 | ||
![]() |
aace1da358 | ||
![]() |
3ecbb235cc | ||
![]() |
39b110b9b0 | ||
![]() |
9ed629d838 | ||
![]() |
f620d2bb2f | ||
![]() |
5cc3636be7 | ||
![]() |
1e78314638 | ||
![]() |
9e68117a33 | ||
![]() |
cf92142b64 | ||
![]() |
bdcccd9d83 | ||
![]() |
2507ec1f4b | ||
![]() |
5b8b6167ac | ||
![]() |
b5d5a720dc | ||
![]() |
1fbdb80430 | ||
![]() |
c4d03088c0 | ||
![]() |
bdd87bcc87 | ||
![]() |
77dd0b2fd3 | ||
![]() |
f61d605d6d | ||
![]() |
21fbe07218 | ||
![]() |
57f792d88f | ||
![]() |
3ac5b780ff | ||
![]() |
a36709cc8d | ||
![]() |
18a18aa6c4 | ||
![]() |
f4a71ea83f | ||
![]() |
ef759e9c63 | ||
![]() |
11df364b10 | ||
![]() |
146b43f8c5 | ||
![]() |
829c8e611e | ||
![]() |
28ad27a3b3 | ||
![]() |
4a48f0d659 | ||
![]() |
26a964b90a | ||
![]() |
4335a7c653 | ||
![]() |
377396ba16 | ||
![]() |
8ffeffd9d2 | ||
![]() |
b578d08e8a | ||
![]() |
83f6e168e5 | ||
![]() |
ab6535382d | ||
![]() |
49885757db | ||
![]() |
6b68d3d365 | ||
![]() |
280f6e4752 | ||
![]() |
e8b68e67a7 | ||
![]() |
c1075ebb8c | ||
![]() |
3a02c627fa | ||
![]() |
240b4078cd | ||
![]() |
433c0defbe | ||
![]() |
8bb964e1bd | ||
![]() |
e33c743f4a | ||
![]() |
01e99c0229 | ||
![]() |
8805a7e555 | ||
![]() |
80c357c00f | ||
![]() |
6e9d3bf8e9 | ||
![]() |
9c88dea584 | ||
![]() |
b80997cc43 | ||
![]() |
439b35c310 | ||
![]() |
a9640d9c94 | ||
![]() |
a5225a3606 | ||
![]() |
ee21bc5d7f | ||
![]() |
a981117f2d | ||
![]() |
d3b1a2c95e | ||
![]() |
f5c35ac0c1 | ||
![]() |
22dbbd4b71 | ||
![]() |
0239938d99 | ||
![]() |
9f24897814 | ||
![]() |
b29c96639b | ||
![]() |
49b1d6e7fe | ||
![]() |
e150b0cf0f | ||
![]() |
5169721916 | ||
![]() |
dd0f11a062 | ||
![]() |
516cb31635 | ||
![]() |
6718b40181 | ||
![]() |
799d527fb5 | ||
![]() |
7fdf00a9fb | ||
![]() |
7d54620f34 | ||
![]() |
38f183a683 | ||
![]() |
a75bad3a83 | ||
![]() |
45fbbbaea1 | ||
![]() |
d89c259d7e | ||
![]() |
6490dcf099 | ||
![]() |
6349760a2c | ||
![]() |
c1a6f83f12 | ||
![]() |
171e114ec1 | ||
![]() |
b5664f9eaf | ||
![]() |
ca7384f96e | ||
![]() |
11b03b5669 | ||
![]() |
34798189ca | ||
![]() |
3737170d37 | ||
![]() |
6af07aa348 | ||
![]() |
5caef34209 | ||
![]() |
d1935603a9 | ||
![]() |
58b36514ad | ||
![]() |
4cea5420b3 | ||
![]() |
a0d41e1d97 | ||
![]() |
e7e1a7d46e | ||
![]() |
2a9526de17 | ||
![]() |
fed8f905c8 | ||
![]() |
0d290ac21e | ||
![]() |
8a0fb21988 | ||
![]() |
605619a5ee | ||
![]() |
972eb34ed9 | ||
![]() |
6b95fa5942 | ||
![]() |
94e6743a7b | ||
![]() |
c4a5d12df4 | ||
![]() |
8db086f65b | ||
![]() |
b470c3484b | ||
![]() |
94b80db968 | ||
![]() |
240e1fd8f3 | ||
![]() |
5d6ca6dd44 | ||
![]() |
5cfa98e400 | ||
![]() |
9c36f05ac4 | ||
![]() |
b8a1537b58 | ||
![]() |
0ad16e25ef | ||
![]() |
3dd342baf3 | ||
![]() |
472c23d35f | ||
![]() |
1724fcc150 | ||
![]() |
be9010f459 | ||
![]() |
2176281894 | ||
![]() |
323810e31a | ||
![]() |
c9efebbf0c | ||
![]() |
3b84dba72e | ||
![]() |
987e77780a | ||
![]() |
b302d1f3fc | ||
![]() |
534bb74069 | ||
![]() |
02b5da710b | ||
![]() |
f999258a42 | ||
![]() |
6ecf2e8c71 | ||
![]() |
aaa78259b5 | ||
![]() |
2371a6cc72 | ||
![]() |
46166160fe | ||
![]() |
7da434f455 | ||
![]() |
0a77232444 | ||
![]() |
9af17fa5a0 | ||
![]() |
11c174aca3 | ||
![]() |
9cf86b234b | ||
![]() |
bcbae1388d | ||
![]() |
f740312247 | ||
![]() |
f79ffb2981 | ||
![]() |
0ae55fb58b | ||
![]() |
812665cda4 | ||
![]() |
a1588cd6af | ||
![]() |
6220804639 | ||
![]() |
c0d5ceb18c | ||
![]() |
ec33f6fe78 | ||
![]() |
b72e0f1d87 | ||
![]() |
b65d4a9efd | ||
![]() |
f56f391f81 | ||
![]() |
2d4625ad69 | ||
![]() |
ed0e583556 | ||
![]() |
e5b6f05e5b | ||
![]() |
45e9b8b119 | ||
![]() |
a9fa9a5dd3 | ||
![]() |
e62ee331c7 | ||
![]() |
34b5928707 | ||
![]() |
fdf2f8a2ea | ||
![]() |
d51f483855 | ||
![]() |
208b281505 | ||
![]() |
a168df342d | ||
![]() |
5c7120aa36 | ||
![]() |
6d4489e822 | ||
![]() |
d90ec3ccca | ||
![]() |
82977a43d3 | ||
![]() |
c6a0c7eccc | ||
![]() |
ad51952802 | ||
![]() |
e7cb3f1979 | ||
![]() |
9c348b6330 | ||
![]() |
f275389ffe | ||
![]() |
2dd9229dc4 | ||
![]() |
fd78373b5c | ||
![]() |
6b6f115d7e | ||
![]() |
fbb406842e | ||
![]() |
e141374831 | ||
![]() |
896526c24b | ||
![]() |
11b5de9463 | ||
![]() |
f6991cd4dc | ||
![]() |
d12857c68c | ||
![]() |
f8467d253e | ||
![]() |
9b3d727e8e | ||
![]() |
0a8514d7cd | ||
![]() |
34dc47ad10 | ||
![]() |
60de2a82c7 | ||
![]() |
8ffd540c85 | ||
![]() |
28eda7d1f0 | ||
![]() |
06095b1fec | ||
![]() |
7abff358a5 | ||
![]() |
3e18d70483 | ||
![]() |
02f64ada2d | ||
![]() |
f8fa676ac8 | ||
![]() |
7a7f986444 | ||
![]() |
8cbbdf21f3 | ||
![]() |
7440c34901 | ||
![]() |
3ac7c687be | ||
![]() |
1b3d3d5cc3 | ||
![]() |
eba64f84ef | ||
![]() |
a9be2adf06 | ||
![]() |
55885f49f2 | ||
![]() |
e4f692ce6f | ||
![]() |
005bc8994d | ||
![]() |
df2d0cd3e3 | ||
![]() |
b2388b74d9 | ||
![]() |
bcf32f8331 | ||
![]() |
f68a7636c5 | ||
![]() |
0e98e0f65f | ||
![]() |
0e8164c07a | ||
![]() |
7aadcc1f97 | ||
![]() |
381480813d | ||
![]() |
1fc9eb6629 | ||
![]() |
6374cc6480 | ||
![]() |
dd560a517c | ||
![]() |
5d4216d648 | ||
![]() |
c0da80b567 | ||
![]() |
e33cea9ff7 | ||
![]() |
0defe97892 | ||
![]() |
9f399a1bbe | ||
![]() |
f51cf87361 | ||
![]() |
d8cbff65f1 | ||
![]() |
570824100c | ||
![]() |
ee66ffc8de | ||
![]() |
8678b36e71 | ||
![]() |
187b03446e | ||
![]() |
3312a041fd | ||
![]() |
235a34c10c | ||
![]() |
f84533838a | ||
![]() |
5fbe36d43e | ||
![]() |
1dec6854e5 | ||
![]() |
bfdca4b274 | ||
![]() |
e164fdbef8 | ||
![]() |
77e71cf18b | ||
![]() |
d849dab7ba | ||
![]() |
7768084655 | ||
![]() |
b90a51490f | ||
![]() |
2049993941 | ||
![]() |
bd9f03010f | ||
![]() |
6261994fcf | ||
![]() |
e693ba17e0 | ||
![]() |
bfb509ccb8 | ||
![]() |
c4b45fb110 | ||
![]() |
b8a4399078 | ||
![]() |
50f05ac51a | ||
![]() |
fa7018bbec | ||
![]() |
9c2c57831b | ||
![]() |
fb1702647d | ||
![]() |
b3ab0a0199 | ||
![]() |
65aaea6ec6 | ||
![]() |
72671b93d2 | ||
![]() |
2512eb1e4c | ||
![]() |
5c43f0861f | ||
![]() |
345081ba15 | ||
![]() |
de5c7b0414 | ||
![]() |
cbcfeee322 | ||
![]() |
cb982294bd | ||
![]() |
551d52103d | ||
![]() |
128ccbaa57 | ||
![]() |
580f2058a7 | ||
![]() |
03ca50f292 | ||
![]() |
5e2753d2fc | ||
![]() |
46e02ebaff | ||
![]() |
c354868270 | ||
![]() |
3f3ffe3060 | ||
![]() |
ba24cb6e72 | ||
![]() |
0e9c6b2bba | ||
![]() |
5bdaad9c13 | ||
![]() |
cb37df6a61 | ||
![]() |
7feb0807e2 | ||
![]() |
5d4591a3ec | ||
![]() |
29797b93f7 | ||
![]() |
850c082649 | ||
![]() |
af875eec50 | ||
![]() |
0854f29b7c | ||
![]() |
0c7eb431e6 | ||
![]() |
8827d9e88f | ||
![]() |
059ecd10a2 | ||
![]() |
5e04a87cc6 | ||
![]() |
2bcf9717ed | ||
![]() |
64cf4b2258 | ||
![]() |
599569bc53 | ||
![]() |
94a02e7613 | ||
![]() |
94d1375be3 | ||
![]() |
4296f227cf | ||
![]() |
cc27986cac | ||
![]() |
5ebbeff42d | ||
![]() |
e383533ff3 | ||
![]() |
694fa3d014 | ||
![]() |
e170681016 | ||
![]() |
06db5476e4 | ||
![]() |
1de41ab123 | ||
![]() |
5a5f01fcd4 | ||
![]() |
4d69cf1cc3 | ||
![]() |
cf598bb5fd | ||
![]() |
1624cb1046 | ||
![]() |
572af57ffe | ||
![]() |
d441fb2ec5 | ||
![]() |
624c93bb38 | ||
![]() |
b01efc55a2 | ||
![]() |
44e37a8026 | ||
![]() |
1cad55f721 | ||
![]() |
b8f83074ce | ||
![]() |
511f3335a1 | ||
![]() |
54ba09ec1c | ||
![]() |
24a34b1739 | ||
![]() |
a06b1eaf69 | ||
![]() |
f5c56152d5 | ||
![]() |
7ef145d4ce | ||
![]() |
a752232de8 | ||
![]() |
c99025be26 | ||
![]() |
653805584b | ||
![]() |
acd31d4ae3 | ||
![]() |
6c32337c8e | ||
![]() |
eae8154753 | ||
![]() |
d1489fe76f | ||
![]() |
633c82d9fe | ||
![]() |
a83d577b42 | ||
![]() |
dea513cdbd | ||
![]() |
76f92cc985 | ||
![]() |
5058272818 | ||
![]() |
4c8e3aa7c4 | ||
![]() |
2215adf5cf | ||
![]() |
5990bd7ca3 | ||
![]() |
d4f69a3652 | ||
![]() |
3149c52be1 | ||
![]() |
03112bbeea | ||
![]() |
f1466a3b86 | ||
![]() |
16bff198de | ||
![]() |
941d175087 | ||
![]() |
0cebf1acb1 | ||
![]() |
08586868f5 | ||
![]() |
3aa759fc49 | ||
![]() |
b96330df03 | ||
![]() |
101118a60e | ||
![]() |
cf92d8c536 | ||
![]() |
a70163042d | ||
![]() |
1baaf621be | ||
![]() |
2b12aac24e | ||
![]() |
ca457ccf3c | ||
![]() |
8819634b61 | ||
![]() |
ac1359b3d8 | ||
![]() |
ffb1722ca8 | ||
![]() |
75739d8621 | ||
![]() |
79cacade5c | ||
![]() |
1807f44e03 | ||
![]() |
55b46bfa7a | ||
![]() |
8c70e5aaad | ||
![]() |
5872b72f80 | ||
![]() |
5bc9ea0e47 | ||
![]() |
31a3f1100a | ||
![]() |
c737378ee1 | ||
![]() |
e4c610af62 | ||
![]() |
070aa714a0 | ||
![]() |
f39f3b612a | ||
![]() |
139dd22ce6 | ||
![]() |
94755a5773 | ||
![]() |
a8f09b4063 | ||
![]() |
e2e272aeb6 | ||
![]() |
6cfd991e91 | ||
![]() |
9830cbfd5d | ||
![]() |
f9779d3e97 | ||
![]() |
96533e4c8f | ||
![]() |
6234190cfe | ||
![]() |
1b803454ce | ||
![]() |
490d2cfb71 | ||
![]() |
5874b4cdcf | ||
![]() |
e575fffd23 | ||
![]() |
f17a42dc27 | ||
![]() |
24e11c6dcb | ||
![]() |
12e7ea3a39 | ||
![]() |
20b5e92656 | ||
![]() |
2e195d848f | ||
![]() |
a2935654b9 | ||
![]() |
cdeb91ea12 | ||
![]() |
53637d486d | ||
![]() |
f7a6eb4f69 | ||
![]() |
6ee8c8b60e | ||
![]() |
d9c19e6e11 | ||
![]() |
baef267f33 | ||
![]() |
30df9e7706 | ||
![]() |
3c07f92e72 | ||
![]() |
da1f9c2823 | ||
![]() |
2c02abfdd4 | ||
![]() |
cb13418bab | ||
![]() |
7e682af472 | ||
![]() |
4e2cebc6d6 | ||
![]() |
7b26a952bd | ||
![]() |
8051e5d4f4 | ||
![]() |
b0cee0bc46 | ||
![]() |
41341c76cf | ||
![]() |
2bd1a68559 | ||
![]() |
df58b5d9bd | ||
![]() |
b8ce10f9a1 | ||
![]() |
17d674e1cc | ||
![]() |
98f84c7c17 | ||
![]() |
1f0ea73463 | ||
![]() |
0d874899ea | ||
![]() |
10e796e9d5 | ||
![]() |
298ea3ff46 | ||
![]() |
a6217ca9b9 | ||
![]() |
ac183b1394 | ||
![]() |
93cd73246a | ||
![]() |
2e92fefc0a | ||
![]() |
92beab82e2 | ||
![]() |
370e458f2a | ||
![]() |
5c794234e7 | ||
![]() |
fa55ba72a4 | ||
![]() |
682501eb47 | ||
![]() |
19acbf0d2a | ||
![]() |
2205006d31 | ||
![]() |
d41fe01736 | ||
![]() |
4e1b399efd | ||
![]() |
06b4c82a37 | ||
![]() |
c832982d94 | ||
![]() |
93fe77de8d | ||
![]() |
588211223b | ||
![]() |
b85e175812 | ||
![]() |
d2ee08c6fe | ||
![]() |
6a1c59be2c | ||
![]() |
97efcab310 | ||
![]() |
d6fc2d9452 | ||
![]() |
99b4c9d5f4 | ||
![]() |
115dc4fa4b | ||
![]() |
7de11cfcfa | ||
![]() |
7f0a9a5897 | ||
![]() |
e8e4f6a515 | ||
![]() |
93cffe8631 | ||
![]() |
39a47c939c | ||
![]() |
3bdf80574d | ||
![]() |
756070cd81 | ||
![]() |
55133b3a27 | ||
![]() |
8619bdeec6 | ||
![]() |
cf196c09ac | ||
![]() |
73a43bfd1d | ||
![]() |
fa33f27153 | ||
![]() |
c7cc4bcbd5 | ||
![]() |
d58852be66 | ||
![]() |
8ab945a67f | ||
![]() |
ecbcb9496d | ||
![]() |
af7a487706 | ||
![]() |
316f187bee | ||
![]() |
2f45e6c2ae | ||
![]() |
9a488cf250 | ||
![]() |
255f35b979 | ||
![]() |
fc94569a0d | ||
![]() |
d0a389ce36 | ||
![]() |
f4fb4bc91c | ||
![]() |
869cdc399f | ||
![]() |
de8575c890 | ||
![]() |
e900918e51 | ||
![]() |
bbecf6ca37 | ||
![]() |
cb3ab9b51e | ||
![]() |
1a42bd5c4c | ||
![]() |
556c355e9c | ||
![]() |
61e13bf84d | ||
![]() |
a1ed09f2cc | ||
![]() |
ba94485ca1 | ||
![]() |
8a3fc2e82b | ||
![]() |
0265aae247 | ||
![]() |
e0bb26e964 | ||
![]() |
057bb6ea0a | ||
![]() |
79d3d4ceae | ||
![]() |
ba043c9ebb | ||
![]() |
d60fe7e7cd | ||
![]() |
a6ddac9004 | ||
![]() |
9580c4f1ec | ||
![]() |
d89ba40010 | ||
![]() |
82efbee443 | ||
![]() |
b67009dee3 | ||
![]() |
4ef7bb9bbe | ||
![]() |
78cc547782 | ||
![]() |
63807e443a | ||
![]() |
1661daa911 | ||
![]() |
5df7cb0fb5 | ||
![]() |
bd65258905 | ||
![]() |
68857dc272 | ||
![]() |
55a5e17cf2 | ||
![]() |
6a8d9a91cb | ||
![]() |
fba13dcc90 | ||
![]() |
1f3da9cf1a | ||
![]() |
8ca92254b6 | ||
![]() |
fd9124279b | ||
![]() |
f88ed6b69e | ||
![]() |
7142b4ecac | ||
![]() |
2c238baa24 | ||
![]() |
3fc667f55d | ||
![]() |
3884e16b46 | ||
![]() |
3405fa60ec | ||
![]() |
c212e317c3 | ||
![]() |
074dec36ad | ||
![]() |
53363cf7e8 | ||
![]() |
7f8c4293b4 | ||
![]() |
ace20782f1 | ||
![]() |
0d8cd2d067 | ||
![]() |
af272c6730 | ||
![]() |
88ef8cc51a | ||
![]() |
5651f4a3fe | ||
![]() |
f988a1164d | ||
![]() |
0ccac69ce1 | ||
![]() |
1a476258c7 | ||
![]() |
df23f03131 | ||
![]() |
09ae02fd56 | ||
![]() |
7c13e7cdfd | ||
![]() |
6e612a45ff | ||
![]() |
418be1eeb6 | ||
![]() |
026f660889 | ||
![]() |
4ad589dcf6 | ||
![]() |
952bf5497f | ||
![]() |
f4c13645d2 | ||
![]() |
3351846b0e | ||
![]() |
ee10f9c4ce | ||
![]() |
099a653bed | ||
![]() |
bb3feceb57 | ||
![]() |
1ab6352a87 | ||
![]() |
b4274e4a26 | ||
![]() |
429dbd4215 | ||
![]() |
cce438951d | ||
![]() |
4461e0f262 | ||
![]() |
fe2e357ae9 | ||
![]() |
e618a8cc0c | ||
![]() |
627a208d9f | ||
![]() |
2f19b56d5e | ||
![]() |
0f40a73bb4 | ||
![]() |
f1fc54d29d | ||
![]() |
a29aaebd4c | ||
![]() |
1f60296415 | ||
![]() |
52594717ca | ||
![]() |
20f0abacc0 | ||
![]() |
0dd20fb309 | ||
![]() |
ebdf9a8658 | ||
![]() |
3168b30535 | ||
![]() |
292294fb96 | ||
![]() |
884fbdd5ce | ||
![]() |
b96eab3e5e | ||
![]() |
14a47f5dff | ||
![]() |
5e5e89ea18 | ||
![]() |
d423cbf8eb | ||
![]() |
168b3b50cd | ||
![]() |
4c73826baf | ||
![]() |
47522546e6 | ||
![]() |
ecdbddc1fa | ||
![]() |
f99d26231f | ||
![]() |
10a6c56fec | ||
![]() |
487d84c8f9 | ||
![]() |
119664b55e | ||
![]() |
e7064bda25 | ||
![]() |
bf66f39ca4 | ||
![]() |
d95a843d93 | ||
![]() |
76d33fdaf1 | ||
![]() |
0b4d1fe641 | ||
![]() |
1e70901b9e | ||
![]() |
dac8560e14 | ||
![]() |
5e949b062a | ||
![]() |
2d2318438c | ||
![]() |
6ce2bf6be5 | ||
![]() |
b32ba33250 | ||
![]() |
c97b48cf3b | ||
![]() |
2b3123b925 | ||
![]() |
5f160be8f6 | ||
![]() |
a3ab6a99e3 | ||
![]() |
571a63f86e | ||
![]() |
6e5d4b592d | ||
![]() |
f29024795b | ||
![]() |
d6158c0fcc | ||
![]() |
ed8aa51c76 | ||
![]() |
813226e331 | ||
![]() |
02fa5656bb | ||
![]() |
5c272583e7 | ||
![]() |
d9903c4cf9 | ||
![]() |
768d147cb2 | ||
![]() |
2d9095263e | ||
![]() |
9f10bd46ac | ||
![]() |
089906790e | ||
![]() |
6b858ce8af | ||
![]() |
8e3953a9d5 | ||
![]() |
1af72e3671 | ||
![]() |
b41d0be952 | ||
![]() |
f5a8ce4aca | ||
![]() |
186e3a6d98 | ||
![]() |
e479fbed0c | ||
![]() |
c70faeae96 | ||
![]() |
09a83b90ea | ||
![]() |
80b3572627 | ||
![]() |
c51c8f7e8f | ||
![]() |
14ee3f1ddc | ||
![]() |
7f3f271a59 | ||
![]() |
93dd971b39 | ||
![]() |
650d4d7faa | ||
![]() |
e94da1ad0f | ||
![]() |
dcea8a6ced | ||
![]() |
b0b3b36392 | ||
![]() |
30ac390471 | ||
![]() |
c4a01cf8d2 | ||
![]() |
0184aadb09 | ||
![]() |
d72c28a135 | ||
![]() |
bf4c399b19 | ||
![]() |
033a16b67e | ||
![]() |
cfa08c5229 | ||
![]() |
d375361072 | ||
![]() |
f02b6f1119 | ||
![]() |
9a25e75947 | ||
![]() |
6b751de7ad | ||
![]() |
bf18ff9fb9 | ||
![]() |
3d7a3afca7 | ||
![]() |
360f36eb71 | ||
![]() |
9f1c5d70bc | ||
![]() |
cc40c6d16a | ||
![]() |
283349f17e | ||
![]() |
59b6d56207 | ||
![]() |
353fb3be7d | ||
![]() |
bedb587290 | ||
![]() |
4ef2e91fd5 | ||
![]() |
a0518295d5 | ||
![]() |
774ebc760c | ||
![]() |
ae9506d0bb | ||
![]() |
c0a7934828 | ||
![]() |
227330563a | ||
![]() |
4d885b71ff | ||
![]() |
e16b874469 | ||
![]() |
9aaeefeb8e | ||
![]() |
c7d1402320 | ||
![]() |
98eabd2f68 | ||
![]() |
da62528526 | ||
![]() |
b7c7e7f57b | ||
![]() |
45a9c1ca8c | ||
![]() |
5a970e0a2b | ||
![]() |
961c8cc167 | ||
![]() |
0e2ebfe5c4 | ||
![]() |
b97ec8125f | ||
![]() |
62d22d7a2d | ||
![]() |
47a7807cbd | ||
![]() |
b7b7cdcfcf | ||
![]() |
c75bf20a3c | ||
![]() |
edffb794f7 | ||
![]() |
412e9d34d9 | ||
![]() |
700dbcf2a4 | ||
![]() |
fcbb40092a | ||
![]() |
42a9069338 | ||
![]() |
4a848e8222 | ||
![]() |
fed308b59d | ||
![]() |
0e95875912 | ||
![]() |
9f67eb1aaa | ||
![]() |
85235ea5f6 | ||
![]() |
fc43fb17a9 | ||
![]() |
534d343f67 | ||
![]() |
946d5535b4 | ||
![]() |
0f5c678708 | ||
![]() |
cc5d319369 | ||
![]() |
b5107a3f1d | ||
![]() |
1ad4cb40df | ||
![]() |
69bc95a715 | ||
![]() |
677f0dc335 | ||
![]() |
9733d31cd0 | ||
![]() |
e32074c74e | ||
![]() |
aa23a125bf | ||
![]() |
05c429bcd7 | ||
![]() |
e64973c7cc | ||
![]() |
31d0e5e316 | ||
![]() |
8fb400e7ca | ||
![]() |
a3fb8a6514 | ||
![]() |
4c2975ad99 | ||
![]() |
7c6806e75d | ||
![]() |
692a732555 | ||
![]() |
b9753a9f92 | ||
![]() |
812db974c7 | ||
![]() |
9b5c5938ce | ||
![]() |
938475d988 | ||
![]() |
1ee2959e4e | ||
![]() |
a3e62c9ecf | ||
![]() |
3d4ee5906d | ||
![]() |
38ab48b4fd | ||
![]() |
463edd984b | ||
![]() |
0a2fa9984d | ||
![]() |
89efc455e3 | ||
![]() |
3fe2f4f572 | ||
![]() |
712cb1157f | ||
![]() |
4452a84ee0 | ||
![]() |
753a4e9e5e | ||
![]() |
41041cb673 | ||
![]() |
22e5d86324 | ||
![]() |
5ef972c5d9 | ||
![]() |
aa27d2ec2a | ||
![]() |
a99a92a2e9 | ||
![]() |
2d206e7e31 | ||
![]() |
b8a5869f76 | ||
![]() |
583b4aef07 | ||
![]() |
52d4a358a0 | ||
![]() |
eb6310f7bb | ||
![]() |
f65e18c019 | ||
![]() |
b23f505130 | ||
![]() |
876258e68a | ||
![]() |
1667b4b19e | ||
![]() |
4fe025b297 | ||
![]() |
431df618c3 | ||
![]() |
3b117998fb | ||
![]() |
cc7ce8ec45 | ||
![]() |
2b647bcd5b | ||
![]() |
87d24d4cbe | ||
![]() |
a48741d891 | ||
![]() |
3edb0969de | ||
![]() |
f24f0c2954 | ||
![]() |
22b4c445a0 | ||
![]() |
254d46b80f | ||
![]() |
fa06398721 | ||
![]() |
a30f14a15e | ||
![]() |
9cd159ee01 | ||
![]() |
d91e44485c | ||
![]() |
80a8d5443d | ||
![]() |
ec47f7b6ff | ||
![]() |
95641fa780 | ||
![]() |
0f68a57913 | ||
![]() |
531873fb4d | ||
![]() |
39fecb523d | ||
![]() |
87432be102 | ||
![]() |
858cf8ca33 | ||
![]() |
1c0543bcd5 | ||
![]() |
6745f0c56a | ||
![]() |
9b4d86399e | ||
![]() |
9008006ac8 | ||
![]() |
d61be9a0eb | ||
![]() |
3838c2ab62 | ||
![]() |
c9611303d5 | ||
![]() |
00655ef21c | ||
![]() |
c169654bdf | ||
![]() |
e1505339a5 | ||
![]() |
3a2fb402a4 | ||
![]() |
d8982116fb | ||
![]() |
4c346697f0 | ||
![]() |
eb03307bce | ||
![]() |
77336427a4 | ||
![]() |
169b7c91c3 | ||
![]() |
b22bcc568a | ||
![]() |
fbab7413a5 | ||
![]() |
1f6e2511f8 | ||
![]() |
4fbaefe55a | ||
![]() |
127eca3c35 | ||
![]() |
5fa9da25f2 | ||
![]() |
188ce9bf49 | ||
![]() |
0aa4d0fb7b | ||
![]() |
7178cacdc2 | ||
![]() |
d3df4dd3c1 | ||
![]() |
bd342ddc13 | ||
![]() |
5976de6b7a | ||
![]() |
a65ce7e6c6 | ||
![]() |
f19a1147fe | ||
![]() |
9094d73df1 | ||
![]() |
642cefb035 | ||
![]() |
5c79dae4c0 | ||
![]() |
119f2a90b7 | ||
![]() |
c467b890fe | ||
![]() |
3c704ba8da | ||
![]() |
1ac7f5f013 | ||
![]() |
af1c326cff | ||
![]() |
456c5515c8 | ||
![]() |
68efa37bff | ||
![]() |
f53145c540 | ||
![]() |
c196fefe31 | ||
![]() |
d2fc3a22e2 | ||
![]() |
535aba10ee | ||
![]() |
3970da0ad3 | ||
![]() |
c947152c48 | ||
![]() |
b17391014a | ||
![]() |
2cfdae0c45 | ||
![]() |
e53758c1bb | ||
![]() |
ab3f0fc63b | ||
![]() |
2a6162a34d | ||
![]() |
df0f694b01 | ||
![]() |
fec887420d | ||
![]() |
ea95f74d6d | ||
![]() |
ca5dc01207 | ||
![]() |
1e0345a377 | ||
![]() |
5c700916d3 | ||
![]() |
d5c322732f | ||
![]() |
376db101d6 | ||
![]() |
cd487ccaed | ||
![]() |
09f9bb05dc | ||
![]() |
b63359b186 | ||
![]() |
e15388a2a0 | ||
![]() |
a1758a71d2 | ||
![]() |
55b996f5db | ||
![]() |
b44e8673a8 | ||
![]() |
5d31673465 | ||
![]() |
d63a1ab511 | ||
![]() |
9ba0809852 | ||
![]() |
9a97784168 | ||
![]() |
a77d9af989 | ||
![]() |
b4984ea255 | ||
![]() |
6b43c457ff | ||
![]() |
e3aca53899 | ||
![]() |
01ee066163 | ||
![]() |
549d1151b7 | ||
![]() |
4192e2377c | ||
![]() |
7c3ca38eb7 | ||
![]() |
cc132bfad6 | ||
![]() |
4e73063ed3 | ||
![]() |
8f761f44bd | ||
![]() |
b172abaeeb | ||
![]() |
061cef1a5e | ||
![]() |
e9796547c6 | ||
![]() |
558dceac42 | ||
![]() |
9c7b80090a | ||
![]() |
ea8511bcfc | ||
![]() |
19ddf478e2 | ||
![]() |
5cdcbcd5fe | ||
![]() |
803d4a9998 | ||
![]() |
e71eb8dfe2 | ||
![]() |
52f754e83d | ||
![]() |
8193ddf61a | ||
![]() |
b922e9331f | ||
![]() |
f25017313a | ||
![]() |
6c8823fc14 | ||
![]() |
911863ebf4 | ||
![]() |
7f345e7672 | ||
![]() |
26080fbb89 | ||
![]() |
51ea3ff400 | ||
![]() |
8ccc77eb3d | ||
![]() |
5994dd558b | ||
![]() |
b548be35bc | ||
![]() |
2cf1235b78 | ||
![]() |
609fc9196f | ||
![]() |
b7396a736e | ||
![]() |
a64e56c8ad | ||
![]() |
94160903a7 | ||
![]() |
f4948e8f48 | ||
![]() |
ec7302ef1b | ||
![]() |
16f94e68b3 | ||
![]() |
4f63eab453 | ||
![]() |
0f2097595e | ||
![]() |
0edcb26844 | ||
![]() |
5d71afef85 | ||
![]() |
ec0af2f25d | ||
![]() |
248d5ff541 | ||
![]() |
f5334c5aed | ||
![]() |
96c442349f | ||
![]() |
38f62ae622 | ||
![]() |
500b00bd66 | ||
![]() |
54fb4df3aa | ||
![]() |
de09792cdd | ||
![]() |
9864d9e0d2 | ||
![]() |
3ba264c318 | ||
![]() |
c4326ed1ef | ||
![]() |
90438edc17 | ||
![]() |
0eacd84ff3 | ||
![]() |
9987f7a125 | ||
![]() |
c4afc33fc5 | ||
![]() |
7091781692 | ||
![]() |
ac87528bec | ||
![]() |
ee8a2d1e25 | ||
![]() |
25961d71ef | ||
![]() |
25feac1bc4 | ||
![]() |
b2edf9b598 | ||
![]() |
5e81f853e6 | ||
![]() |
997d4fbe53 | ||
![]() |
844a9fb817 | ||
![]() |
2ca7d0dd97 | ||
![]() |
c2fa1bdd49 | ||
![]() |
3de8185506 | ||
![]() |
694cec3459 | ||
![]() |
7b462e1b8e | ||
![]() |
f5cfd0329c | ||
![]() |
92bc93466e | ||
![]() |
54dd556459 | ||
![]() |
8553faf3c8 | ||
![]() |
1631d10365 | ||
![]() |
141f37504d | ||
![]() |
f97795fbb9 | ||
![]() |
ebf133ef80 | ||
![]() |
886525112b | ||
![]() |
9a15494e69 | ||
![]() |
047012d167 | ||
![]() |
dfb0887765 | ||
![]() |
fccf7fe1ca | ||
![]() |
8ed6fcd58e | ||
![]() |
f6f89b6c5a | ||
![]() |
12a81cc9f4 | ||
![]() |
31725d5411 | ||
![]() |
7af18ac0ad | ||
![]() |
41e4f10977 | ||
![]() |
b031905956 | ||
![]() |
e11917b7cb | ||
![]() |
fa98685b1e | ||
![]() |
8703e14cab | ||
![]() |
5992361717 | ||
![]() |
54748cec82 | ||
![]() |
c8d560946b | ||
![]() |
07c60686b1 | ||
![]() |
7795cc7fe8 | ||
![]() |
172d587f84 | ||
![]() |
7903f01f0c | ||
![]() |
b665a060f7 | ||
![]() |
41d5256533 | ||
![]() |
1f3e5fb4fc | ||
![]() |
b4b136b43e | ||
![]() |
111a38589e | ||
![]() |
1a9302b8f6 | ||
![]() |
9f7fd8956f | ||
![]() |
511fd293b6 | ||
![]() |
552a87dfcc | ||
![]() |
9d96a021c7 | ||
![]() |
e7a06046a7 | ||
![]() |
46669a1704 | ||
![]() |
8d1a70391e | ||
![]() |
dc3401c94e | ||
![]() |
65b391e651 | ||
![]() |
ced9248051 | ||
![]() |
52ed121970 | ||
![]() |
a2ba126be1 | ||
![]() |
1cfd292075 | ||
![]() |
048553cd02 | ||
![]() |
3a7efddb4b | ||
![]() |
861a8ee3c7 | ||
![]() |
2b0c0cc6d2 | ||
![]() |
75c5137e77 | ||
![]() |
4819576b62 | ||
![]() |
e1923bc13b | ||
![]() |
874315c3fc | ||
![]() |
4c8f7bbf50 | ||
![]() |
91d6d620c2 | ||
![]() |
d715aa6867 | ||
![]() |
c507ad86d1 | ||
![]() |
ba0d6fe611 | ||
![]() |
647469f472 | ||
![]() |
cb69364ad2 | ||
![]() |
46caefca7b | ||
![]() |
8cdadd1552 | ||
![]() |
91cf2e2792 | ||
![]() |
923fa473e1 | ||
![]() |
9f36412076 | ||
![]() |
04793978d3 | ||
![]() |
985c1b31e1 | ||
![]() |
96e9bf13fe | ||
![]() |
de352c520c | ||
![]() |
72fd57a685 | ||
![]() |
10db0d8bb1 | ||
![]() |
6c74809400 | ||
![]() |
c25ba19ffd | ||
![]() |
d62bdbb9ff | ||
![]() |
a3c4996291 | ||
![]() |
8a1a341b3a | ||
![]() |
b8613ec09d | ||
![]() |
55d1474e4a | ||
![]() |
87e2bbbfab | ||
![]() |
4f94ad475f | ||
![]() |
9856a811ae | ||
![]() |
11609a63e3 | ||
![]() |
a14e465246 | ||
![]() |
d915fd3052 | ||
![]() |
0c9a78fb8e | ||
![]() |
7ed1d4988b | ||
![]() |
3de7b439b8 | ||
![]() |
d1bbd241aa | ||
![]() |
c2da664bcc | ||
![]() |
d14655d891 | ||
![]() |
1f31e621c8 | ||
![]() |
afd27792da | ||
![]() |
7fc3708f76 | ||
![]() |
351bdff531 | ||
![]() |
604c4588cc | ||
![]() |
218046bfa5 | ||
![]() |
fed08a9d80 | ||
![]() |
f951808863 | ||
![]() |
c34f8dc246 | ||
![]() |
8985a3cc06 | ||
![]() |
b30c98c525 | ||
![]() |
8c02c778d4 | ||
![]() |
5121952a85 | ||
![]() |
1ee9c0cb8d | ||
![]() |
587381440f | ||
![]() |
3ab9a14ce7 | ||
![]() |
30db947d99 | ||
![]() |
3f891ef4ee | ||
![]() |
aa37f6c934 | ||
![]() |
bc9f86f342 | ||
![]() |
762eb57636 | ||
![]() |
91cdf0ecf7 | ||
![]() |
67192d4ea7 | ||
![]() |
7eda67be11 | ||
![]() |
f1ce8a9004 | ||
![]() |
2c4f9ca037 | ||
![]() |
171bed7637 | ||
![]() |
e918adb25d | ||
![]() |
8fdf35b80a | ||
![]() |
6295cf3dc4 | ||
![]() |
d97bcfdca9 | ||
![]() |
106a405733 | ||
![]() |
399f0ea161 | ||
![]() |
150e49f4c2 | ||
![]() |
b97f95efc4 | ||
![]() |
1011c30cc5 | ||
![]() |
4f4d60c105 | ||
![]() |
9682249830 | ||
![]() |
6053b6f94a | ||
![]() |
7b98656bcd | ||
![]() |
069c1f35ca | ||
![]() |
eb13f2b724 | ||
![]() |
ff7a70d31b | ||
![]() |
bd04c1d9f9 | ||
![]() |
f125fd5772 | ||
![]() |
67875b99a3 | ||
![]() |
1f7a7d5cb5 | ||
![]() |
1ca9824191 | ||
![]() |
f801fe307e | ||
![]() |
aa4a0df194 | ||
![]() |
73162e6fb5 | ||
![]() |
03dc527a85 | ||
![]() |
06c8b838b5 | ||
![]() |
303f203c2a | ||
![]() |
e015f8bf8f | ||
![]() |
b75eb71764 | ||
![]() |
42c6920a91 | ||
![]() |
32dfc59d9e | ||
![]() |
226a880645 | ||
![]() |
2602b45ec8 | ||
![]() |
f0f4e4595c | ||
![]() |
63e8dd58ef | ||
![]() |
1c86a543b7 | ||
![]() |
c8fbdde3b8 | ||
![]() |
efc637cb2b | ||
![]() |
68e454712d | ||
![]() |
40d337479e | ||
![]() |
c7a6b5983f | ||
![]() |
ee5de654ab | ||
![]() |
1f30d761a6 | ||
![]() |
7e2960a973 | ||
![]() |
ee7022dc67 | ||
![]() |
ec24b93c17 | ||
![]() |
88c8eef4eb | ||
![]() |
e862caa704 | ||
![]() |
8d433aa481 | ||
![]() |
d89d2d3b33 | ||
![]() |
8c92f99cda | ||
![]() |
17cd7d0a85 | ||
![]() |
7da31f6ee4 | ||
![]() |
5d8650484b | ||
![]() |
1aa2820c63 | ||
![]() |
c1e808cc84 | ||
![]() |
d6b691e3e1 | ||
![]() |
eb0450ad0c | ||
![]() |
d14324c792 | ||
![]() |
d32c32608b | ||
![]() |
be94e67ecc | ||
![]() |
fe170ccd44 | ||
![]() |
f396d66386 | ||
![]() |
c70388869b | ||
![]() |
34fd64addf | ||
![]() |
3044e78d43 | ||
![]() |
1efc71624a | ||
![]() |
5f9290e572 | ||
![]() |
64a72daa27 | ||
![]() |
0f83db82d9 | ||
![]() |
8f9baafac1 | ||
![]() |
6c896adcff | ||
![]() |
f1ee920463 | ||
![]() |
c617e7da31 | ||
![]() |
6499f5460a | ||
![]() |
e436f6a7b2 | ||
![]() |
db0dfe875a | ||
![]() |
7378277212 | ||
![]() |
4ca6db825c | ||
![]() |
cefdce5002 | ||
![]() |
1577f6ea50 | ||
![]() |
de77132a5a | ||
![]() |
44d3f2192c | ||
![]() |
aace084931 | ||
![]() |
90f2a54165 | ||
![]() |
e139470c56 | ||
![]() |
a1eab7f842 | ||
![]() |
0d1506c3cf | ||
![]() |
cd0037a780 | ||
![]() |
766c2f8bb4 | ||
![]() |
ffbde4ac90 | ||
![]() |
7f5ae00d58 | ||
![]() |
ccd5783daf | ||
![]() |
f19322b1f3 | ||
![]() |
c63bb0e1d5 | ||
![]() |
284c226cc0 | ||
![]() |
5c918e9053 | ||
![]() |
1a2f23f110 | ||
![]() |
b015c5ab0c | ||
![]() |
31725df4d5 | ||
![]() |
968a3c4eb2 | ||
![]() |
75038d420c | ||
![]() |
bb827a60ed | ||
![]() |
a7993e0640 | ||
![]() |
fcb3445b8e | ||
![]() |
96cb856308 | ||
![]() |
0cacfef325 | ||
![]() |
9321c2191e | ||
![]() |
237a1d50d9 | ||
![]() |
c6ad48e236 | ||
![]() |
b735e66d2f | ||
![]() |
955d4abf13 | ||
![]() |
5422a17a35 | ||
![]() |
2a0496a3a9 | ||
![]() |
f88d22b833 | ||
![]() |
0dfc0af08c | ||
![]() |
6cef37641c | ||
![]() |
949ebeeb97 | ||
![]() |
58f2fc8610 | ||
![]() |
b40923a4cd | ||
![]() |
a63dd811dd | ||
![]() |
627f337e1e | ||
![]() |
5c8ccc89b1 | ||
![]() |
2b4587a7a8 | ||
![]() |
f5de016f25 | ||
![]() |
81c7a24133 | ||
![]() |
e13413ee09 | ||
![]() |
0be9391d79 | ||
![]() |
daad93dd31 | ||
![]() |
f635751020 | ||
![]() |
67d03031d5 | ||
![]() |
83af8434cd | ||
![]() |
f13f165d64 | ||
![]() |
1f804e2eed | ||
![]() |
52b3a309f8 | ||
![]() |
ee467e0f3a | ||
![]() |
305dfda9ac | ||
![]() |
e6b0d93c1d | ||
![]() |
4a23216e1e | ||
![]() |
652fedf4d1 | ||
![]() |
ee0fbae2ca | ||
![]() |
4a56461d3c | ||
![]() |
6651dfaf9b | ||
![]() |
de1e97a81f | ||
![]() |
03154e1d83 | ||
![]() |
cc105e5c27 | ||
![]() |
144f1b918b | ||
![]() |
5a8cf38552 | ||
![]() |
aab0c4eb71 | ||
![]() |
8b867d612f | ||
![]() |
d3b35ca2a7 | ||
![]() |
832bc15daa | ||
![]() |
ef588a556a | ||
![]() |
bd97f59395 | ||
![]() |
e325ec26d0 | ||
![]() |
155db2f2e1 | ||
![]() |
8eeba490d1 | ||
![]() |
a4a80f367b | ||
![]() |
46500beefc | ||
![]() |
80debae96d | ||
![]() |
21c051935f | ||
![]() |
5789790d32 | ||
![]() |
bf7e50eb32 | ||
![]() |
fc93521e02 | ||
![]() |
4edebacba5 | ||
![]() |
faea29a268 | ||
![]() |
c6796494b4 | ||
![]() |
484756c834 | ||
![]() |
ce00f093d6 | ||
![]() |
3feea879dd | ||
![]() |
ccb5910db0 | ||
![]() |
56c0eacb08 | ||
![]() |
3e71436267 | ||
![]() |
c9c2886b26 | ||
![]() |
6e4551f73f | ||
![]() |
68f5a3a82c | ||
![]() |
9cf2bd0794 | ||
![]() |
90dfa9d2af | ||
![]() |
6fb9bdec93 | ||
![]() |
e23007322d | ||
![]() |
5192b20a7c | ||
![]() |
095cc77bf9 | ||
![]() |
1bf5925cdf | ||
![]() |
47af4a6753 | ||
![]() |
a9e1c14024 | ||
![]() |
88072512d8 | ||
![]() |
5147beb475 | ||
![]() |
b14dc306cf | ||
![]() |
cc2ab25916 | ||
![]() |
18e4c065eb | ||
![]() |
5d1ca73a34 | ||
![]() |
e2308fd15c | ||
![]() |
845ce5c6ea | ||
![]() |
1d1b59b800 | ||
![]() |
87b6bb45d0 | ||
![]() |
fa31192448 | ||
![]() |
5533368171 | ||
![]() |
f4a58c7dc7 | ||
![]() |
8e357faa4d | ||
![]() |
8e617bbc1d | ||
![]() |
843f537109 | ||
![]() |
817bbfe6aa | ||
![]() |
38b9d896b2 | ||
![]() |
c91417e71f | ||
![]() |
4bef6ac191 | ||
![]() |
f0d8168db7 | ||
![]() |
9f236c4ca5 | ||
![]() |
0d1f476bee | ||
![]() |
a5afe47df7 | ||
![]() |
f4ee38687c | ||
![]() |
40009ffa19 | ||
![]() |
a3fe08b62b | ||
![]() |
b283015987 | ||
![]() |
d620b199fc | ||
![]() |
b3deb476ef | ||
![]() |
e158546425 | ||
![]() |
671e6b3832 | ||
![]() |
4239923ea2 | ||
![]() |
532ab12a48 | ||
![]() |
8acc114cd9 | ||
![]() |
0d00e9c2d0 | ||
![]() |
7f96fbb035 | ||
![]() |
182c4bbc05 | ||
![]() |
a43d944309 | ||
![]() |
949dede16b | ||
![]() |
cad04bff99 | ||
![]() |
dffdc78915 | ||
![]() |
a12568440d | ||
![]() |
5599ab6e4a | ||
![]() |
5be961f07f | ||
![]() |
89a7d5fecc | ||
![]() |
13a4541b7b | ||
![]() |
cbf8a41eed | ||
![]() |
92fef0f2ba | ||
![]() |
cd2bb292ab | ||
![]() |
f180f15bde | ||
![]() |
4167edc52d | ||
![]() |
98f263c289 | ||
![]() |
490aec0b11 | ||
![]() |
20b73d8724 | ||
![]() |
f76e6d7ab3 | ||
![]() |
688b643ed6 | ||
![]() |
78ba1cbb32 | ||
![]() |
97a7745e0a | ||
![]() |
8c63639905 | ||
![]() |
d7be666293 | ||
![]() |
7a1c5066a7 | ||
![]() |
b7f0cba843 | ||
![]() |
e3d1851343 | ||
![]() |
c91ef833f4 | ||
![]() |
6c88574dee | ||
![]() |
a7315477ef | ||
![]() |
0316800347 | ||
![]() |
d243da99c7 | ||
![]() |
2f91e2d6a5 | ||
![]() |
c2d372dd13 | ||
![]() |
663482fb10 | ||
![]() |
200f29563a | ||
![]() |
b5aac9a1c7 | ||
![]() |
e88e8862db | ||
![]() |
f2180de7c0 | ||
![]() |
8c8994352d | ||
![]() |
fcf60a3b53 | ||
![]() |
fb57785ca6 | ||
![]() |
a28214caec | ||
![]() |
6c5aa3b8f9 | ||
![]() |
1908feab79 | ||
![]() |
a3ec9529ec | ||
![]() |
43c8adc5ec | ||
![]() |
197e71203b | ||
![]() |
73cd2636dd | ||
![]() |
c576a68d33 | ||
![]() |
b7652c78ee | ||
![]() |
16fc2972d3 | ||
![]() |
205a2ee215 | ||
![]() |
368694d6bf | ||
![]() |
2785b2b52f | ||
![]() |
b4e30c4033 | ||
![]() |
c36dd17780 | ||
![]() |
573320a0b4 | ||
![]() |
1c0f9cf941 | ||
![]() |
10e7d6e04d | ||
![]() |
4ab6f97341 | ||
![]() |
c092f2be04 | ||
![]() |
4ad9633dfb | ||
![]() |
0561c14d53 | ||
![]() |
d769359b4f | ||
![]() |
db9e8d2fa1 | ||
![]() |
a69e0defe6 | ||
![]() |
2d7701cab5 | ||
![]() |
2173075004 | ||
![]() |
211dd64df1 | ||
![]() |
9a2b608d85 | ||
![]() |
f9364c4e01 | ||
![]() |
a3b346b560 | ||
![]() |
982966a3d9 | ||
![]() |
f0b979556c | ||
![]() |
412c12b992 | ||
![]() |
9805d8a6cc | ||
![]() |
d8a7336a3f | ||
![]() |
79b400d71b | ||
![]() |
f8e1cb5bcf | ||
![]() |
e6333c15eb | ||
![]() |
23831d746e | ||
![]() |
ce1b2f45c7 | ||
![]() |
7ebd279e14 | ||
![]() |
424febbbed | ||
![]() |
d885e45ebb | ||
![]() |
e5c48edddd | ||
![]() |
a888ce9282 | ||
![]() |
060102832e | ||
![]() |
33cd59d3c2 | ||
![]() |
9f8dea10f7 | ||
![]() |
987c7a28a9 | ||
![]() |
596016c2ac | ||
![]() |
a5890b2374 | ||
![]() |
f88487be25 | ||
![]() |
1453308bc4 | ||
![]() |
f869ce9d06 | ||
![]() |
724a79a8e8 | ||
![]() |
53e05dec02 | ||
![]() |
258b9fe663 | ||
![]() |
fcccc44ccb | ||
![]() |
026a222d16 | ||
![]() |
46b18367f7 | ||
![]() |
1748a19242 | ||
![]() |
fb98128b9f | ||
![]() |
230b50d099 | ||
![]() |
7c82b78f8c | ||
![]() |
82b2aaaa3e | ||
![]() |
eb25968b31 | ||
![]() |
71eb45072c | ||
![]() |
5d4c4a1293 | ||
![]() |
35e81cf982 | ||
![]() |
b842e26d36 | ||
![]() |
892be99ca0 | ||
![]() |
58b3a00b16 | ||
![]() |
a038314d8b | ||
![]() |
3a65537c5e | ||
![]() |
1000f500df | ||
![]() |
2c43873317 | ||
![]() |
9849735dc5 | ||
![]() |
63d519c1a8 | ||
![]() |
d72802cfb0 | ||
![]() |
42701a6872 | ||
![]() |
effa9940ff | ||
![]() |
69d519418e | ||
![]() |
f887aeedfe | ||
![]() |
db480191ad | ||
![]() |
4c3d481b7b | ||
![]() |
15f95a0787 | ||
![]() |
7dff44b3e9 | ||
![]() |
fa08916a0a | ||
![]() |
476821bbf8 | ||
![]() |
caa981bbea | ||
![]() |
49879fd257 | ||
![]() |
e8a03ea870 | ||
![]() |
a747a8f936 | ||
![]() |
6a17937dc3 | ||
![]() |
4bf1475c95 | ||
![]() |
7ba234a7ad | ||
![]() |
ac896121d3 | ||
![]() |
19abba7f6b | ||
![]() |
9ecbcd2d8f | ||
![]() |
9802c2a646 | ||
![]() |
841c408344 | ||
![]() |
cee716b892 | ||
![]() |
622466b3d3 | ||
![]() |
7a1907e540 | ||
![]() |
afe01c2434 | ||
![]() |
e738df502b | ||
![]() |
8a20a90324 | ||
![]() |
67e4f2c202 | ||
![]() |
b2b3e14810 | ||
![]() |
6e37aa425b | ||
![]() |
b7f1ebe13c | ||
![]() |
ff67374901 | ||
![]() |
3e35d869d2 | ||
![]() |
9ea8e0a7ca | ||
![]() |
5be36912b2 | ||
![]() |
a236836796 | ||
![]() |
f97ac9fdcd | ||
![]() |
ec823582eb | ||
![]() |
cb06f8b668 | ||
![]() |
d451a74c2d | ||
![]() |
367b5e586b | ||
![]() |
b65d8cc1b3 | ||
![]() |
4517af509c | ||
![]() |
d6e287f47a | ||
![]() |
873b903cf0 | ||
![]() |
8a1805fa89 | ||
![]() |
e1572872a1 | ||
![]() |
3853182ccf | ||
![]() |
4928c3d683 | ||
![]() |
f0ae1cc6ce | ||
![]() |
3e3138ef1b | ||
![]() |
682486c864 | ||
![]() |
31ad208500 | ||
![]() |
444ad52757 | ||
![]() |
6662dbf3c8 | ||
![]() |
27bd1520e8 | ||
![]() |
093bd00807 | ||
![]() |
cf249d85ee | ||
![]() |
8345176ccc | ||
![]() |
4becb9454b | ||
![]() |
528a4819f0 | ||
![]() |
c2d52f8fcb | ||
![]() |
6cfb40f080 | ||
![]() |
9390359fe3 | ||
![]() |
05f89efd2c | ||
![]() |
dcf50e5e90 | ||
![]() |
987cf8b9d0 | ||
![]() |
2fe8e95309 | ||
![]() |
405c2ca82d | ||
![]() |
5adfae2235 | ||
![]() |
8ed4ce64c3 | ||
![]() |
e1a0f8314e | ||
![]() |
daf56e92a0 | ||
![]() |
6f1208b07f | ||
![]() |
fb132f8a26 | ||
![]() |
797dc51bc5 | ||
![]() |
1c9b068331 | ||
![]() |
e9a9ab9025 | ||
![]() |
7b5c80720a | ||
![]() |
35dbc3151a | ||
![]() |
3c3f48fe28 | ||
![]() |
0a4549e202 | ||
![]() |
20474e500c | ||
![]() |
5381f9f92f | ||
![]() |
424d38ecc7 | ||
![]() |
4335b0db25 | ||
![]() |
34757fa539 | ||
![]() |
283ee94cf3 | ||
![]() |
e00808bea8 | ||
![]() |
e9ce08763c | ||
![]() |
13458dc722 | ||
![]() |
fd3e996a1e | ||
![]() |
be13f3fbcf | ||
![]() |
fcba9974e5 | ||
![]() |
6c615016b8 | ||
![]() |
95e6faad0a | ||
![]() |
5d7f9aee27 | ||
![]() |
5257875ac6 | ||
![]() |
c715035016 | ||
![]() |
e7d4f745ec | ||
![]() |
ea1868b7b9 | ||
![]() |
9feb64cebd | ||
![]() |
01b0f4d565 | ||
![]() |
a4dbb9a24e | ||
![]() |
f3b3193f7a | ||
![]() |
e1338adf1a | ||
![]() |
09c3df7eb2 | ||
![]() |
47cec8da8e | ||
![]() |
fcfc0e64d5 | ||
![]() |
6cb004b770 | ||
![]() |
9995cef0f9 | ||
![]() |
b94e1e9ef8 | ||
![]() |
9f9114cb4a | ||
![]() |
6c024c8875 | ||
![]() |
18dd605a74 | ||
![]() |
c30ce12c49 | ||
![]() |
a63581b5c8 | ||
![]() |
e4fbbdfa05 | ||
![]() |
3b0a42f8f4 | ||
![]() |
815dfe9134 | ||
![]() |
978122c882 | ||
![]() |
635d8c01fb | ||
![]() |
cf681cd921 | ||
![]() |
6e2803a6d8 | ||
![]() |
5e32abd04e | ||
![]() |
003e4224c8 | ||
![]() |
9132c42037 | ||
![]() |
34633b0ede | ||
![]() |
dfa1ecd032 | ||
![]() |
cd2377bc05 | ||
![]() |
1e68e8c4b4 | ||
![]() |
caa99ea9fb | ||
![]() |
285aff154d | ||
![]() |
8577310e6d | ||
![]() |
bba119affa | ||
![]() |
bb517c269e | ||
![]() |
e386bab682 | ||
![]() |
d0390860fb | ||
![]() |
a856abf47f | ||
![]() |
c0425619e2 | ||
![]() |
ba18571cbe | ||
![]() |
072bbcf203 | ||
![]() |
4c38a5d773 | ||
![]() |
7f90fb1cd1 | ||
![]() |
b525259878 | ||
![]() |
9dd1b85cbb | ||
![]() |
8a8732f0bc | ||
![]() |
697b5db3f2 | ||
![]() |
621068211f | ||
![]() |
ae07e2a9a8 | ||
![]() |
33d391a110 | ||
![]() |
845bcf3f7d | ||
![]() |
d7f0b904d0 | ||
![]() |
f43f0c4bcc | ||
![]() |
8bd4125390 | ||
![]() |
25c7754edb | ||
![]() |
f1ffb25d99 | ||
![]() |
f91e250e90 | ||
![]() |
6b85d17e7c | ||
![]() |
23bc39b7f4 | ||
![]() |
27e6b69656 | ||
![]() |
8704f1aa47 | ||
![]() |
97b40b5f49 | ||
![]() |
0b5357de44 | ||
![]() |
a969f69fd5 | ||
![]() |
aa02a53ac6 | ||
![]() |
95cbf7cca7 | ||
![]() |
4f3919cb95 | ||
![]() |
a55fb445b0 | ||
![]() |
32d68f375b | ||
![]() |
4ea9926497 | ||
![]() |
3738135e0b | ||
![]() |
c68149c75b | ||
![]() |
188cdd1bac | ||
![]() |
eaf6d43508 | ||
![]() |
f20c8c657a | ||
![]() |
7c36f1409d | ||
![]() |
22f6a72694 | ||
![]() |
00afcffbf9 | ||
![]() |
4a089b5c28 | ||
![]() |
9c1e8486c5 | ||
![]() |
157222126e | ||
![]() |
687d162a94 | ||
![]() |
9d192643ee | ||
![]() |
b566d55998 | ||
![]() |
be7e76f302 | ||
![]() |
15176300e2 | ||
![]() |
1e64d830ac | ||
![]() |
e4c73259f7 | ||
![]() |
bf3c6e5f58 | ||
![]() |
4134d722da | ||
![]() |
ab26ea06b9 | ||
![]() |
ff5f1aee53 | ||
![]() |
0cb3ec142e | ||
![]() |
6f05a74686 | ||
![]() |
a225fc456f | ||
![]() |
7f1e1ed1d8 | ||
![]() |
d4bd9a0f7e | ||
![]() |
12cb17620e | ||
![]() |
34607d4410 | ||
![]() |
48cc3071bb | ||
![]() |
8b54a0679f | ||
![]() |
7df711f1f3 | ||
![]() |
a7caa038be | ||
![]() |
dfed57ed4d | ||
![]() |
0be2a3f182 | ||
![]() |
f9e80fead3 | ||
![]() |
5329a679bb | ||
![]() |
d47fe35a88 | ||
![]() |
aa443842b7 | ||
![]() |
cec81e137c | ||
![]() |
b3dd59f202 | ||
![]() |
848821139d | ||
![]() |
a88e865dff | ||
![]() |
0337b5d975 | ||
![]() |
91a44b697b | ||
![]() |
13c03d022b | ||
![]() |
4b0b2ecc0e | ||
![]() |
caac3d03c4 | ||
![]() |
c899e72029 | ||
![]() |
982e75a15f | ||
![]() |
aa3bd78f7e | ||
![]() |
36e38841a4 | ||
![]() |
8f33ad38cf | ||
![]() |
914384578e | ||
![]() |
33e57c2e24 | ||
![]() |
71604f544b | ||
![]() |
c068024abe | ||
![]() |
5fe426a4fc | ||
![]() |
d2000f0c7a | ||
![]() |
3bea04e387 | ||
![]() |
32f3eb722e | ||
![]() |
4bb69fee23 | ||
![]() |
e897c8c47c | ||
![]() |
574f6f3fd1 | ||
![]() |
2a384987e7 | ||
![]() |
3ab1df4660 | ||
![]() |
b578a76cb9 | ||
![]() |
243941f3fd | ||
![]() |
018300858f | ||
![]() |
5ec7cff3ff | ||
![]() |
d45a0cc41e | ||
![]() |
f490119fed | ||
![]() |
23280268c8 | ||
![]() |
df2953403e | ||
![]() |
1c06c6c1e6 | ||
![]() |
6a73406e9f | ||
![]() |
5ab7c8e9ba | ||
![]() |
3f5649092e | ||
![]() |
6ec8c63b5c | ||
![]() |
adff01876a | ||
![]() |
a1d9d7116c | ||
![]() |
5c00b8b823 | ||
![]() |
7801cd96de | ||
![]() |
76cb1c4978 | ||
![]() |
372c3cd0f0 | ||
![]() |
2a817a2874 | ||
![]() |
ea0c3e806d | ||
![]() |
3618160768 | ||
![]() |
9add474c45 | ||
![]() |
38b84620bd | ||
![]() |
8bd7f59b93 | ||
![]() |
6de887b9b9 | ||
![]() |
ea98f0e9e8 | ||
![]() |
e028516939 | ||
![]() |
14f2649ae2 | ||
![]() |
217d8eb9c5 | ||
![]() |
93897016f0 | ||
![]() |
df959c364c | ||
![]() |
672acf30a4 | ||
![]() |
c8d4febe13 | ||
![]() |
e4666206ec | ||
![]() |
9fefa2e139 | ||
![]() |
fe5246fb6f | ||
![]() |
fff967ce17 | ||
![]() |
3b783a85c3 | ||
![]() |
f7badfe441 | ||
![]() |
ca6376488d | ||
![]() |
c720742ec9 | ||
![]() |
c5c23cbc95 | ||
![]() |
2ca61eef79 | ||
![]() |
1c6b4967cf | ||
![]() |
077bd594eb | ||
![]() |
dd960c4e62 | ||
![]() |
fb909d694f | ||
![]() |
5453b346dd | ||
![]() |
b166a6d88b | ||
![]() |
7b4d4d11ac | ||
![]() |
547b36d09a | ||
![]() |
6bd70fdf15 | ||
![]() |
5119005a8d | ||
![]() |
f28d9285bf | ||
![]() |
7c2e7863d2 | ||
![]() |
f82c4c7633 | ||
![]() |
1a274adc28 | ||
![]() |
e3749e0f76 | ||
![]() |
a07117470e | ||
![]() |
b717da879f | ||
![]() |
b5390f55ce | ||
![]() |
47c66dbed4 | ||
![]() |
d0efdd750f | ||
![]() |
0c887eab87 | ||
![]() |
3dba9c4695 | ||
![]() |
e8ff3d10f7 | ||
![]() |
8da969b767 | ||
![]() |
0aa5610d88 | ||
![]() |
8792d664e7 | ||
![]() |
9d607c8bd5 | ||
![]() |
ced16da576 | ||
![]() |
3be750812d | ||
![]() |
295cd0143c | ||
![]() |
9b9bdc725f | ||
![]() |
b6586d5c34 | ||
![]() |
18e30e7c06 | ||
![]() |
569e52c9ac | ||
![]() |
44b28d67f1 | ||
![]() |
ae181a47fd | ||
![]() |
8570d3aabe | ||
![]() |
4986f65dca | ||
![]() |
dd7bc7971f | ||
![]() |
8a084cf94d | ||
![]() |
2453f95b24 | ||
![]() |
38a8e86dde | ||
![]() |
ad8b882cb6 | ||
![]() |
1b80c66195 | ||
![]() |
3d00923665 | ||
![]() |
da2efde354 | ||
![]() |
f60850586e | ||
![]() |
4c8850ec7b | ||
![]() |
6424c71daa | ||
![]() |
89c7568515 | ||
![]() |
146fe8f156 | ||
![]() |
17573196c8 | ||
![]() |
6856374f24 | ||
![]() |
c999953514 | ||
![]() |
ba8f69a5ce | ||
![]() |
4b89d087bb | ||
![]() |
e85e79052b | ||
![]() |
9d8dfc2d71 | ||
![]() |
e37211ad42 | ||
![]() |
39ac2c1101 | ||
![]() |
4e11246ba5 | ||
![]() |
dc7f0fb21c | ||
![]() |
c62c19e58b | ||
![]() |
ba546e1072 | ||
![]() |
a6ff8c5fb3 | ||
![]() |
74c2639495 | ||
![]() |
7ce6600f69 | ||
![]() |
08398370c5 | ||
![]() |
aaec464627 | ||
![]() |
607a0e7697 | ||
![]() |
bb64b39d0e | ||
![]() |
f952b74b74 | ||
![]() |
1f0691bf18 | ||
![]() |
b0714e32b1 | ||
![]() |
03e6132d98 | ||
![]() |
615f7204cb | ||
![]() |
6371cb4ebd | ||
![]() |
987add50cb | ||
![]() |
83db9a3335 | ||
![]() |
aade51248d | ||
![]() |
228fa9f5a0 | ||
![]() |
57c868e615 | ||
![]() |
431f93e1d3 | ||
![]() |
66d3891a37 | ||
![]() |
2a641d1d19 | ||
![]() |
f8b5a97e72 | ||
![]() |
609438d929 | ||
![]() |
76cc26ad17 | ||
![]() |
533efa2880 | ||
![]() |
3bf3a1fd85 | ||
![]() |
5306b32a48 | ||
![]() |
4e82f134b2 | ||
![]() |
0457a74428 | ||
![]() |
8f3449d942 | ||
![]() |
97929bd234 | ||
![]() |
a9d461a109 | ||
![]() |
f24549f7d1 | ||
![]() |
0d62d80038 | ||
![]() |
223d864b04 | ||
![]() |
082d4079ef | ||
![]() |
70b360b1f8 | ||
![]() |
5488e9d5f3 | ||
![]() |
c8177f48ce | ||
![]() |
930dc3615e | ||
![]() |
1ecb7ab887 | ||
![]() |
248ed3660f | ||
![]() |
3a60466e7c | ||
![]() |
04fda5638c | ||
![]() |
252941ae26 | ||
![]() |
2eacbef061 | ||
![]() |
3f666396c9 | ||
![]() |
7d20bb0532 | ||
![]() |
d94e969dc1 | ||
![]() |
18842ef571 | ||
![]() |
6a1bb8c421 | ||
![]() |
f87ef742e8 | ||
![]() |
871b4135ee | ||
![]() |
ecb7509333 | ||
![]() |
5d78632d04 | ||
![]() |
4f7b583f19 | ||
![]() |
987b840665 | ||
![]() |
7dfb8dda0a | ||
![]() |
9098592257 | ||
![]() |
322cb352ac | ||
![]() |
d38bae76be | ||
![]() |
3695f39515 | ||
![]() |
0538154767 | ||
![]() |
1582d88957 | ||
![]() |
7999f109d1 | ||
![]() |
af6338343e | ||
![]() |
9b8f94363c | ||
![]() |
a91abebea8 | ||
![]() |
e01115fd1f | ||
![]() |
ff1ec7a028 | ||
![]() |
93401df73f | ||
![]() |
5b29fe650b | ||
![]() |
c7dfd6b15a | ||
![]() |
532c6b74d4 | ||
![]() |
3bfb91d159 | ||
![]() |
00f4933e72 | ||
![]() |
52298a251b | ||
![]() |
aedbfdabee | ||
![]() |
495ca67e8b | ||
![]() |
248b93f112 | ||
![]() |
361bd6bb81 | ||
![]() |
21b32804d1 | ||
![]() |
ae7272575a | ||
![]() |
7614aba401 | ||
![]() |
a2e638329e | ||
![]() |
8038485ca4 | ||
![]() |
35c1604ea7 | ||
![]() |
682187541f | ||
![]() |
c940ad9920 | ||
![]() |
435fc23737 | ||
![]() |
7932864e00 | ||
![]() |
ade4b62aec | ||
![]() |
1331a3771a | ||
![]() |
f9ebbb936a | ||
![]() |
c65f894fbe | ||
![]() |
dd38d2ff05 | ||
![]() |
f035223599 | ||
![]() |
af9ac9022b | ||
![]() |
ab5c99fe22 | ||
![]() |
285c61c0d7 | ||
![]() |
9eef5129f0 | ||
![]() |
19e5e671a2 | ||
![]() |
f497b989b9 | ||
![]() |
e7dd31f37b | ||
![]() |
4cce359960 | ||
![]() |
6975186f2f | ||
![]() |
6bab63fb0a | ||
![]() |
f96a4e2d0f | ||
![]() |
9c0a3cdae0 | ||
![]() |
83a6012f80 | ||
![]() |
2ac2a288cc | ||
![]() |
956120662e | ||
![]() |
13577981f9 | ||
![]() |
3d29638804 | ||
![]() |
af73afa2e2 | ||
![]() |
1ded3ac51e | ||
![]() |
bbda122c99 | ||
![]() |
7d5794cfb1 | ||
![]() |
fa9a51e528 | ||
![]() |
1826795d37 | ||
![]() |
e9117cd1db | ||
![]() |
55444b15a9 | ||
![]() |
de313dcc3f | ||
![]() |
096ef85c68 | ||
![]() |
a0b0e4088c | ||
![]() |
727dcd6df6 | ||
![]() |
4bf233a4c1 | ||
![]() |
42652872f6 | ||
![]() |
48f6c9a486 | ||
![]() |
ae436d46fc | ||
![]() |
298c95d9f0 | ||
![]() |
f584efa0c2 | ||
![]() |
bd28483b43 | ||
![]() |
50f960097f | ||
![]() |
52a8f4df82 | ||
![]() |
fe7ffe9519 | ||
![]() |
2ff45e198d | ||
![]() |
f25ec15b07 | ||
![]() |
bfd2eb50b2 | ||
![]() |
8252d7f3b5 | ||
![]() |
3658c5f673 | ||
![]() |
50c686343e | ||
![]() |
edad5ece58 | ||
![]() |
ebffe0f33b | ||
![]() |
e4ecaa433a | ||
![]() |
62bd692a58 | ||
![]() |
636bfe0f7b | ||
![]() |
a848dc1155 | ||
![]() |
7ddf2e4ca4 | ||
![]() |
6df90291cf | ||
![]() |
9be2704c11 | ||
![]() |
5e610cdfd2 | ||
![]() |
b6c27585c7 | ||
![]() |
4bb1f4ec79 | ||
![]() |
ee910bd0e4 | ||
![]() |
1fe85c9b17 | ||
![]() |
a6a3bf261d | ||
![]() |
de48ae2e53 | ||
![]() |
8ee60c2e7f | ||
![]() |
a8aea6df5e | ||
![]() |
380ae12997 | ||
![]() |
1baa5c12c0 | ||
![]() |
b5dfe8c6b9 | ||
![]() |
89959e7cda | ||
![]() |
6517e3e21e | ||
![]() |
8c9a8d72a8 | ||
![]() |
777bf27dda | ||
![]() |
df0ba28b05 | ||
![]() |
5621dfe419 | ||
![]() |
f67ecd8ef5 | ||
![]() |
78180b2ad8 | ||
![]() |
2813101418 | ||
![]() |
97ebe59584 | ||
![]() |
e6d1a4a422 | ||
![]() |
a2da1c7db5 | ||
![]() |
25d54f407e | ||
![]() |
2f9982d1c7 | ||
![]() |
ae2b2acab5 | ||
![]() |
7500d0c61c | ||
![]() |
9bd676aff6 | ||
![]() |
ee9231363f | ||
![]() |
874ece195e | ||
![]() |
a954443795 | ||
![]() |
9ded232522 | ||
![]() |
0bd04068de | ||
![]() |
3089ca06c5 | ||
![]() |
f34de5072a | ||
![]() |
8b4dbbe593 | ||
![]() |
7aa4654eb4 | ||
![]() |
adf84b0c62 | ||
![]() |
0941ed076c | ||
![]() |
b18c558a80 | ||
![]() |
438184a43c | ||
![]() |
f3e85b6492 | ||
![]() |
f9ff23a2c8 | ||
![]() |
84725f15a6 | ||
![]() |
9de4d7cba3 | ||
![]() |
e690db9ba6 | ||
![]() |
8874bf7791 | ||
![]() |
5a6f7e66cb | ||
![]() |
ec316e94ed | ||
![]() |
b72876d369 | ||
![]() |
4b4bf54994 | ||
![]() |
0cd9fe3288 | ||
![]() |
2eb37f527a | ||
![]() |
738419309d | ||
![]() |
402bac5ed7 | ||
![]() |
b7f3eb77dc | ||
![]() |
92b5721f80 | ||
![]() |
21d96e00a2 | ||
![]() |
44e4b8c676 | ||
![]() |
059623c6bf | ||
![]() |
9f691ab359 | ||
![]() |
ad992f0a86 | ||
![]() |
dcf68d768e | ||
![]() |
58c691be1e | ||
![]() |
12d76a8a4f | ||
![]() |
6021cedb09 | ||
![]() |
b364ef98a0 | ||
![]() |
3cc9ecf1dc | ||
![]() |
7d768dc3a6 | ||
![]() |
2cb58b8189 | ||
![]() |
88a7c76739 | ||
![]() |
5040b94330 | ||
![]() |
45be2a260e | ||
![]() |
014c2d487d | ||
![]() |
3edaef63b0 | ||
![]() |
0c8eeaa643 | ||
![]() |
2082026ff5 | ||
![]() |
b7533aff48 | ||
![]() |
9b0b8ae9c0 | ||
![]() |
4293c88fb6 | ||
![]() |
47dba6f6bc | ||
![]() |
d6c10cd887 | ||
![]() |
dfab3b2651 | ||
![]() |
4d1fa42a3c | ||
![]() |
c585817e67 | ||
![]() |
53c1c2eb56 | ||
![]() |
11034f56dc | ||
![]() |
462e2a8ea1 | ||
![]() |
274049cc8e | ||
![]() |
fc0e0bf099 | ||
![]() |
318122fe53 | ||
![]() |
d66d079330 | ||
![]() |
8c0a7b9d7f | ||
![]() |
88faf33cb8 | ||
![]() |
23bed25e52 | ||
![]() |
3444d2af1a | ||
![]() |
c3d4a9cd99 | ||
![]() |
0ce301ae7b | ||
![]() |
c2c26e2608 | ||
![]() |
785cf0e29c | ||
![]() |
55cad465b2 | ||
![]() |
5c38321c4f | ||
![]() |
7f23ab9d86 | ||
![]() |
bc146a09db | ||
![]() |
e7a616b8ff | ||
![]() |
1b9c2dfb68 | ||
![]() |
b9c47ed3c3 | ||
![]() |
74357bef15 | ||
![]() |
604cd46ec9 | ||
![]() |
3788a950e6 | ||
![]() |
43745dbc6c | ||
![]() |
ff18cece7b | ||
![]() |
523c3089f7 | ||
![]() |
902e075d58 | ||
![]() |
f479b2385e | ||
![]() |
934cec9778 | ||
![]() |
9b2a8901b1 | ||
![]() |
d1fd141e8c | ||
![]() |
9860b06913 | ||
![]() |
190840cd33 | ||
![]() |
2bea77549d | ||
![]() |
3184c8a526 | ||
![]() |
11a55d6d4c | ||
![]() |
1d633ac484 | ||
![]() |
5e05739019 | ||
![]() |
9bc029000a | ||
![]() |
efd60de1ac | ||
![]() |
ff4456cb29 | ||
![]() |
499839c596 | ||
![]() |
9c3bd22e77 | ||
![]() |
e2788f8321 | ||
![]() |
2a42a58ec4 | ||
![]() |
3cfcb93d70 | ||
![]() |
c3946159d8 | ||
![]() |
e7b5aaec47 | ||
![]() |
04d01cefb2 | ||
![]() |
df7000f96d | ||
![]() |
d62bac9c59 | ||
![]() |
496f78bae5 | ||
![]() |
d3529cb346 | ||
![]() |
3630de909c | ||
![]() |
6c659c0d68 | ||
![]() |
b18a1e6d7c | ||
![]() |
4056f673b8 | ||
![]() |
4c65a2f455 | ||
![]() |
cdec4fe110 | ||
![]() |
8e965eb56f | ||
![]() |
fc472eb040 | ||
![]() |
2ad1d31119 | ||
![]() |
a635e9c9d2 | ||
![]() |
f66009c77d | ||
![]() |
64a29fddb4 | ||
![]() |
89ebca7594 | ||
![]() |
6495c65d10 | ||
![]() |
5f9f956023 | ||
![]() |
3a33d36466 | ||
![]() |
5884f50a82 | ||
![]() |
24f218c46b | ||
![]() |
883ac12bcb | ||
![]() |
b313f37946 | ||
![]() |
83c6a7e18b | ||
![]() |
64a508be7b | ||
![]() |
089c4a7da2 | ||
![]() |
9a747bafa3 | ||
![]() |
0311063c44 | ||
![]() |
59ec52a079 | ||
![]() |
ca905a8c05 | ||
![]() |
52c80b7c5b | ||
![]() |
2e92a0d1c2 | ||
![]() |
ddbfed354e | ||
![]() |
1a5eeb2db1 | ||
![]() |
93072d8ac5 | ||
![]() |
c7fc51cfa5 | ||
![]() |
71c18ec527 | ||
![]() |
dd5baa6e48 | ||
![]() |
08936e4041 | ||
![]() |
9c85d22bab | ||
![]() |
cd5901e0d0 | ||
![]() |
bad33da2c1 | ||
![]() |
b3403d7fca | ||
![]() |
dcd1ab7ec3 | ||
![]() |
905005e1e8 | ||
![]() |
918940a0c6 | ||
![]() |
7556f2b84e | ||
![]() |
454f328a36 | ||
![]() |
08772004b3 | ||
![]() |
203c83b6f0 | ||
![]() |
328eda044a | ||
![]() |
739ed6a6c8 | ||
![]() |
ee4d28000d | ||
![]() |
adf35e5ec2 | ||
![]() |
6bd8cf0072 | ||
![]() |
28989754cd | ||
![]() |
7995f0e414 | ||
![]() |
1beab96946 | ||
![]() |
bda7e416c4 | ||
![]() |
b4ad03784f | ||
![]() |
76819d81be | ||
![]() |
9afabc17ae | ||
![]() |
d385a85ccb | ||
![]() |
466365c8de | ||
![]() |
e1be63f26c | ||
![]() |
7af0f16f79 | ||
![]() |
93d74cafdc | ||
![]() |
442c5ccc06 | ||
![]() |
fc3843f5e2 | ||
![]() |
71920cd687 | ||
![]() |
ab14e55c05 | ||
![]() |
b2a4228dae | ||
![]() |
a255546e9d | ||
![]() |
7a930d7e79 | ||
![]() |
dd4b843d47 | ||
![]() |
a8c527f6f3 | ||
![]() |
44f63252e7 | ||
![]() |
f445b96a4e | ||
![]() |
0bfb0c25f6 | ||
![]() |
10aa1d386a | ||
![]() |
697a81c4a3 | ||
![]() |
054a271bd2 | ||
![]() |
329466d131 | ||
![]() |
54df052699 | ||
![]() |
914ccdbc4f | ||
![]() |
5c99e2e5d3 | ||
![]() |
b4637fae37 | ||
![]() |
972b36b469 | ||
![]() |
5b09ab93dc | ||
![]() |
9be204629b | ||
![]() |
db0785827f | ||
![]() |
509d5fd69d | ||
![]() |
8d50b05d0d | ||
![]() |
5f1c92ce51 | ||
![]() |
514f619cff | ||
![]() |
f5f96535ad | ||
![]() |
e22f69ea8c | ||
![]() |
9dd6d5d0ab | ||
![]() |
3afef1f8fe | ||
![]() |
2b935564c2 | ||
![]() |
16beed2565 | ||
![]() |
ed2696f03e | ||
![]() |
52fe40d539 | ||
![]() |
eea4719544 | ||
![]() |
d87ca0b099 | ||
![]() |
0bca9a614c | ||
![]() |
009d5aedd5 | ||
![]() |
f8de4c3931 | ||
![]() |
4a9859bf54 | ||
![]() |
d6689937a3 | ||
![]() |
8044b9587a | ||
![]() |
c08848b22e | ||
![]() |
82e90587c7 | ||
![]() |
3764f7d95b | ||
![]() |
4f5aad9d6d | ||
![]() |
94e2646c87 | ||
![]() |
fee3898f64 | ||
![]() |
a0ed91e30c | ||
![]() |
82151bfd40 | ||
![]() |
1589c06203 | ||
![]() |
8416cc1906 | ||
![]() |
5ba3b499fe | ||
![]() |
fbc8f0a2cf | ||
![]() |
be68412c64 | ||
![]() |
283f8585b8 | ||
![]() |
dd092d86d4 | ||
![]() |
927b8b2eef | ||
![]() |
ae2419b569 | ||
![]() |
47a0f89ada | ||
![]() |
8db7afb2e0 | ||
![]() |
1bdd8fff44 | ||
![]() |
a766b41b13 | ||
![]() |
ccefc510c3 | ||
![]() |
1d94fbb176 | ||
![]() |
e709b74c3f | ||
![]() |
e636169878 | ||
![]() |
4fb6fa9cca | ||
![]() |
7e47aff316 | ||
![]() |
4899f1d632 | ||
![]() |
c8a3392471 | ||
![]() |
11d7e1e45f | ||
![]() |
1106df158d | ||
![]() |
ba8fd6b01e | ||
![]() |
03f74b3234 | ||
![]() |
ec038835f6 | ||
![]() |
a1eec7b55d | ||
![]() |
5d282db439 | ||
![]() |
225be6fc2e | ||
![]() |
eb76f9b3cb | ||
![]() |
d5a46c3a10 | ||
![]() |
df29a8388d | ||
![]() |
662aee17a6 | ||
![]() |
06773efcbd | ||
![]() |
d9d6902803 | ||
![]() |
2c190cf323 | ||
![]() |
dd8b4e2a9b | ||
![]() |
52f592a7d9 | ||
![]() |
1c7800c224 | ||
![]() |
6e69c57ef5 | ||
![]() |
f10b36873a | ||
![]() |
b043406b74 | ||
![]() |
782148423c | ||
![]() |
833d271eb3 | ||
![]() |
82f03f6089 | ||
![]() |
a2c38b9d04 | ||
![]() |
494cbf0dbe | ||
![]() |
7f047cf95c | ||
![]() |
208150c353 | ||
![]() |
770aefbd52 | ||
![]() |
871c1bc952 | ||
![]() |
ccfa314e87 | ||
![]() |
91efe68cdd | ||
![]() |
7bd89621ce | ||
![]() |
b16094b93f | ||
![]() |
26d174adae | ||
![]() |
19debda059 | ||
![]() |
74e476a070 | ||
![]() |
591d13bc49 | ||
![]() |
effe8d9207 | ||
![]() |
482b5459dc | ||
![]() |
1d9bbdcbf3 | ||
![]() |
a786b32857 | ||
![]() |
9dedbb2a24 | ||
![]() |
77585686e0 | ||
![]() |
e47f06fde8 | ||
![]() |
4b5de420ed | ||
![]() |
08b3df56a0 | ||
![]() |
674655bf7d | ||
![]() |
6479001501 | ||
![]() |
5c521a4c0e | ||
![]() |
6225f1f737 | ||
![]() |
4dbb265590 | ||
![]() |
b7a651519b | ||
![]() |
5cf4483df5 | ||
![]() |
bcae6d604e | ||
![]() |
2214fff3b4 | ||
![]() |
11ea834cbe | ||
![]() |
b39ff4a020 | ||
![]() |
a34148104a | ||
![]() |
2bce44c4d7 | ||
![]() |
67644f4bc5 | ||
![]() |
16ac063b71 | ||
![]() |
30fe4826ff | ||
![]() |
f10f74a65a | ||
![]() |
5eb3473d41 | ||
![]() |
f399385147 | ||
![]() |
c7d342a719 | ||
![]() |
428a33c00f | ||
![]() |
68346599d2 | ||
![]() |
588277623f | ||
![]() |
c21fb222f9 | ||
![]() |
fa350b984a | ||
![]() |
b490f47334 | ||
![]() |
60b3c36775 | ||
![]() |
7feb463a4c | ||
![]() |
663c2ef993 | ||
![]() |
3d42a46871 | ||
![]() |
dbd875cd25 | ||
![]() |
147fe6f856 | ||
![]() |
7df8ad5c66 | ||
![]() |
fe4da8d584 | ||
![]() |
d72b8a025f | ||
![]() |
4e8e53f357 | ||
![]() |
1967ce67d7 | ||
![]() |
7213102c51 | ||
![]() |
44e368ad55 | ||
![]() |
24ab6fc31d | ||
![]() |
e785d04abf | ||
![]() |
f9c16fab1a | ||
![]() |
91c6892001 | ||
![]() |
b8edc86500 | ||
![]() |
ce1b56e345 | ||
![]() |
6e19629539 | ||
![]() |
28b3d1fc7a | ||
![]() |
cee7b788d4 | ||
![]() |
d381be3868 |
@@ -38,6 +38,7 @@ base_platforms: &base_platforms
|
||||
- homeassistant/components/siren/**
|
||||
- homeassistant/components/stt/**
|
||||
- homeassistant/components/switch/**
|
||||
- homeassistant/components/text/**
|
||||
- homeassistant/components/tts/**
|
||||
- homeassistant/components/update/**
|
||||
- homeassistant/components/vacuum/**
|
||||
|
88
.coveragerc
88
.coveragerc
@@ -35,6 +35,8 @@ omit =
|
||||
homeassistant/components/agent_dvr/helpers.py
|
||||
homeassistant/components/airnow/__init__.py
|
||||
homeassistant/components/airnow/sensor.py
|
||||
homeassistant/components/airq/__init__.py
|
||||
homeassistant/components/airq/sensor.py
|
||||
homeassistant/components/airthings/__init__.py
|
||||
homeassistant/components/airthings/sensor.py
|
||||
homeassistant/components/airthings_ble/__init__.py
|
||||
@@ -44,6 +46,8 @@ omit =
|
||||
homeassistant/components/airtouch4/const.py
|
||||
homeassistant/components/airvisual/__init__.py
|
||||
homeassistant/components/airvisual/sensor.py
|
||||
homeassistant/components/airvisual_pro/__init__.py
|
||||
homeassistant/components/airvisual_pro/sensor.py
|
||||
homeassistant/components/alarmdecoder/__init__.py
|
||||
homeassistant/components/alarmdecoder/alarm_control_panel.py
|
||||
homeassistant/components/alarmdecoder/binary_sensor.py
|
||||
@@ -191,9 +195,6 @@ omit =
|
||||
homeassistant/components/control4/const.py
|
||||
homeassistant/components/control4/director_utils.py
|
||||
homeassistant/components/control4/light.py
|
||||
homeassistant/components/coolmaster/__init__.py
|
||||
homeassistant/components/coolmaster/climate.py
|
||||
homeassistant/components/coolmaster/const.py
|
||||
homeassistant/components/cppm_tracker/device_tracker.py
|
||||
homeassistant/components/crownstone/__init__.py
|
||||
homeassistant/components/crownstone/const.py
|
||||
@@ -222,8 +223,6 @@ omit =
|
||||
homeassistant/components/denonavr/__init__.py
|
||||
homeassistant/components/denonavr/media_player.py
|
||||
homeassistant/components/denonavr/receiver.py
|
||||
homeassistant/components/deutsche_bahn/sensor.py
|
||||
homeassistant/components/devolo_home_control/sensor.py
|
||||
homeassistant/components/devolo_home_control/switch.py
|
||||
homeassistant/components/digital_ocean/*
|
||||
homeassistant/components/discogs/sensor.py
|
||||
@@ -231,9 +230,10 @@ omit =
|
||||
homeassistant/components/discord/notify.py
|
||||
homeassistant/components/dlib_face_detect/image_processing.py
|
||||
homeassistant/components/dlib_face_identify/image_processing.py
|
||||
homeassistant/components/dlink/__init__.py
|
||||
homeassistant/components/dlink/data.py
|
||||
homeassistant/components/dlink/entity.py
|
||||
homeassistant/components/dlink/switch.py
|
||||
homeassistant/components/dnsip/__init__.py
|
||||
homeassistant/components/dnsip/sensor.py
|
||||
homeassistant/components/dominos/*
|
||||
homeassistant/components/doods/*
|
||||
homeassistant/components/doorbird/__init__.py
|
||||
@@ -294,9 +294,11 @@ omit =
|
||||
homeassistant/components/elkm1/sensor.py
|
||||
homeassistant/components/elkm1/switch.py
|
||||
homeassistant/components/elmax/__init__.py
|
||||
homeassistant/components/elmax/alarm_control_panel.py
|
||||
homeassistant/components/elmax/binary_sensor.py
|
||||
homeassistant/components/elmax/common.py
|
||||
homeassistant/components/elmax/const.py
|
||||
homeassistant/components/elmax/binary_sensor.py
|
||||
homeassistant/components/elmax/switch.py
|
||||
homeassistant/components/elv/*
|
||||
homeassistant/components/emby/media_player.py
|
||||
@@ -349,6 +351,8 @@ omit =
|
||||
homeassistant/components/esphome/switch.py
|
||||
homeassistant/components/etherscan/sensor.py
|
||||
homeassistant/components/eufy/*
|
||||
homeassistant/components/eufylife_ble/__init__.py
|
||||
homeassistant/components/eufylife_ble/sensor.py
|
||||
homeassistant/components/everlights/light.py
|
||||
homeassistant/components/evohome/*
|
||||
homeassistant/components/ezviz/__init__.py
|
||||
@@ -455,7 +459,7 @@ omit =
|
||||
homeassistant/components/github/sensor.py
|
||||
homeassistant/components/gitlab_ci/sensor.py
|
||||
homeassistant/components/gitter/sensor.py
|
||||
homeassistant/components/glances/__init__.py
|
||||
homeassistant/components/glances/const.py
|
||||
homeassistant/components/glances/sensor.py
|
||||
homeassistant/components/goalfeed/*
|
||||
homeassistant/components/goodwe/__init__.py
|
||||
@@ -471,7 +475,9 @@ omit =
|
||||
homeassistant/components/greenwave/light.py
|
||||
homeassistant/components/group/notify.py
|
||||
homeassistant/components/growatt_server/__init__.py
|
||||
homeassistant/components/growatt_server/const.py
|
||||
homeassistant/components/growatt_server/sensor.py
|
||||
homeassistant/components/growatt_server/sensor_types/*
|
||||
homeassistant/components/gstreamer/media_player.py
|
||||
homeassistant/components/gtfs/sensor.py
|
||||
homeassistant/components/guardian/__init__.py
|
||||
@@ -483,11 +489,6 @@ omit =
|
||||
homeassistant/components/habitica/__init__.py
|
||||
homeassistant/components/habitica/const.py
|
||||
homeassistant/components/habitica/sensor.py
|
||||
homeassistant/components/hangouts/__init__.py
|
||||
homeassistant/components/hangouts/hangouts_bot.py
|
||||
homeassistant/components/hangouts/hangups_utils.py
|
||||
homeassistant/components/hangouts/intents.py
|
||||
homeassistant/components/hangouts/notify.py
|
||||
homeassistant/components/harman_kardon_avr/media_player.py
|
||||
homeassistant/components/harmony/const.py
|
||||
homeassistant/components/harmony/data.py
|
||||
@@ -565,6 +566,8 @@ omit =
|
||||
homeassistant/components/ifttt/const.py
|
||||
homeassistant/components/iglo/light.py
|
||||
homeassistant/components/ihc/*
|
||||
homeassistant/components/imap/__init__.py
|
||||
homeassistant/components/imap/coordinator.py
|
||||
homeassistant/components/imap/sensor.py
|
||||
homeassistant/components/imap_email_content/sensor.py
|
||||
homeassistant/components/incomfort/*
|
||||
@@ -585,6 +588,7 @@ omit =
|
||||
homeassistant/components/intellifire/coordinator.py
|
||||
homeassistant/components/intellifire/entity.py
|
||||
homeassistant/components/intellifire/fan.py
|
||||
homeassistant/components/intellifire/light.py
|
||||
homeassistant/components/intellifire/number.py
|
||||
homeassistant/components/intellifire/sensor.py
|
||||
homeassistant/components/intellifire/switch.py
|
||||
@@ -600,6 +604,7 @@ omit =
|
||||
homeassistant/components/iss/sensor.py
|
||||
homeassistant/components/isy994/__init__.py
|
||||
homeassistant/components/isy994/binary_sensor.py
|
||||
homeassistant/components/isy994/button.py
|
||||
homeassistant/components/isy994/climate.py
|
||||
homeassistant/components/isy994/cover.py
|
||||
homeassistant/components/isy994/entity.py
|
||||
@@ -607,6 +612,9 @@ omit =
|
||||
homeassistant/components/isy994/helpers.py
|
||||
homeassistant/components/isy994/light.py
|
||||
homeassistant/components/isy994/lock.py
|
||||
homeassistant/components/isy994/models.py
|
||||
homeassistant/components/isy994/number.py
|
||||
homeassistant/components/isy994/select.py
|
||||
homeassistant/components/isy994/sensor.py
|
||||
homeassistant/components/isy994/services.py
|
||||
homeassistant/components/isy994/switch.py
|
||||
@@ -674,10 +682,13 @@ omit =
|
||||
homeassistant/components/lcn/helpers.py
|
||||
homeassistant/components/lcn/scene.py
|
||||
homeassistant/components/lcn/services.py
|
||||
homeassistant/components/ld2410_ble/__init__.py
|
||||
homeassistant/components/ld2410_ble/binary_sensor.py
|
||||
homeassistant/components/ld2410_ble/coordinator.py
|
||||
homeassistant/components/led_ble/__init__.py
|
||||
homeassistant/components/led_ble/light.py
|
||||
homeassistant/components/led_ble/util.py
|
||||
homeassistant/components/lg_netcast/media_player.py
|
||||
homeassistant/components/lg_soundbar/__init__.py
|
||||
homeassistant/components/lg_soundbar/media_player.py
|
||||
homeassistant/components/lidarr/__init__.py
|
||||
homeassistant/components/lidarr/coordinator.py
|
||||
@@ -729,6 +740,7 @@ omit =
|
||||
homeassistant/components/map/*
|
||||
homeassistant/components/mastodon/notify.py
|
||||
homeassistant/components/matrix/*
|
||||
homeassistant/components/matter/__init__.py
|
||||
homeassistant/components/meater/__init__.py
|
||||
homeassistant/components/meater/const.py
|
||||
homeassistant/components/meater/sensor.py
|
||||
@@ -797,12 +809,9 @@ omit =
|
||||
homeassistant/components/myq/cover.py
|
||||
homeassistant/components/myq/light.py
|
||||
homeassistant/components/mysensors/__init__.py
|
||||
homeassistant/components/mysensors/binary_sensor.py
|
||||
homeassistant/components/mysensors/climate.py
|
||||
homeassistant/components/mysensors/const.py
|
||||
homeassistant/components/mysensors/cover.py
|
||||
homeassistant/components/mysensors/device.py
|
||||
homeassistant/components/mysensors/device_tracker.py
|
||||
homeassistant/components/mysensors/gateway.py
|
||||
homeassistant/components/mysensors/handler.py
|
||||
homeassistant/components/mysensors/helpers.py
|
||||
@@ -846,6 +855,7 @@ omit =
|
||||
homeassistant/components/nfandroidtv/__init__.py
|
||||
homeassistant/components/nfandroidtv/notify.py
|
||||
homeassistant/components/nibe_heatpump/__init__.py
|
||||
homeassistant/components/nibe_heatpump/climate.py
|
||||
homeassistant/components/nibe_heatpump/binary_sensor.py
|
||||
homeassistant/components/nibe_heatpump/number.py
|
||||
homeassistant/components/nibe_heatpump/select.py
|
||||
@@ -871,6 +881,7 @@ omit =
|
||||
homeassistant/components/nuki/binary_sensor.py
|
||||
homeassistant/components/nuki/const.py
|
||||
homeassistant/components/nuki/lock.py
|
||||
homeassistant/components/nuki/sensor.py
|
||||
homeassistant/components/nut/diagnostics.py
|
||||
homeassistant/components/nx584/alarm_control_panel.py
|
||||
homeassistant/components/nzbget/coordinator.py
|
||||
@@ -921,6 +932,7 @@ omit =
|
||||
homeassistant/components/opentherm_gw/sensor.py
|
||||
homeassistant/components/openuv/__init__.py
|
||||
homeassistant/components/openuv/binary_sensor.py
|
||||
homeassistant/components/openuv/coordinator.py
|
||||
homeassistant/components/openuv/sensor.py
|
||||
homeassistant/components/openweathermap/sensor.py
|
||||
homeassistant/components/openweathermap/weather.py
|
||||
@@ -951,6 +963,8 @@ omit =
|
||||
homeassistant/components/overkiz/sensor.py
|
||||
homeassistant/components/overkiz/siren.py
|
||||
homeassistant/components/overkiz/switch.py
|
||||
homeassistant/components/overkiz/water_heater.py
|
||||
homeassistant/components/overkiz/water_heater_entities/*
|
||||
homeassistant/components/ovo_energy/__init__.py
|
||||
homeassistant/components/ovo_energy/const.py
|
||||
homeassistant/components/ovo_energy/sensor.py
|
||||
@@ -960,6 +974,7 @@ omit =
|
||||
homeassistant/components/pencom/switch.py
|
||||
homeassistant/components/philips_js/__init__.py
|
||||
homeassistant/components/philips_js/diagnostics.py
|
||||
homeassistant/components/philips_js/helpers.py
|
||||
homeassistant/components/philips_js/light.py
|
||||
homeassistant/components/philips_js/media_player.py
|
||||
homeassistant/components/philips_js/remote.py
|
||||
@@ -999,6 +1014,10 @@ omit =
|
||||
homeassistant/components/proxmoxve/*
|
||||
homeassistant/components/proxy/camera.py
|
||||
homeassistant/components/pulseaudio_loopback/switch.py
|
||||
homeassistant/components/purpleair/__init__.py
|
||||
homeassistant/components/purpleair/coordinator.py
|
||||
homeassistant/components/purpleair/sensor.py
|
||||
homeassistant/components/pushbullet/api.py
|
||||
homeassistant/components/pushbullet/notify.py
|
||||
homeassistant/components/pushbullet/sensor.py
|
||||
homeassistant/components/pushover/notify.py
|
||||
@@ -1024,7 +1043,6 @@ omit =
|
||||
homeassistant/components/radiotherm/entity.py
|
||||
homeassistant/components/radiotherm/switch.py
|
||||
homeassistant/components/radiotherm/util.py
|
||||
homeassistant/components/rainbird/*
|
||||
homeassistant/components/raincloud/*
|
||||
homeassistant/components/rainmachine/__init__.py
|
||||
homeassistant/components/rainmachine/binary_sensor.py
|
||||
@@ -1044,12 +1062,18 @@ omit =
|
||||
homeassistant/components/rejseplanen/sensor.py
|
||||
homeassistant/components/remember_the_milk/__init__.py
|
||||
homeassistant/components/remote_rpi_gpio/*
|
||||
homeassistant/components/reolink/__init__.py
|
||||
homeassistant/components/reolink/camera.py
|
||||
homeassistant/components/reolink/const.py
|
||||
homeassistant/components/reolink/entity.py
|
||||
homeassistant/components/reolink/host.py
|
||||
homeassistant/components/repetier/__init__.py
|
||||
homeassistant/components/repetier/sensor.py
|
||||
homeassistant/components/rest/notify.py
|
||||
homeassistant/components/rest/switch.py
|
||||
homeassistant/components/rfxtrx/diagnostics.py
|
||||
homeassistant/components/ridwell/__init__.py
|
||||
homeassistant/components/ridwell/entity.py
|
||||
homeassistant/components/ridwell/sensor.py
|
||||
homeassistant/components/ridwell/switch.py
|
||||
homeassistant/components/ring/camera.py
|
||||
@@ -1071,6 +1095,9 @@ omit =
|
||||
homeassistant/components/rova/sensor.py
|
||||
homeassistant/components/rpi_camera/*
|
||||
homeassistant/components/rtorrent/sensor.py
|
||||
homeassistant/components/ruuvi_gateway/__init__.py
|
||||
homeassistant/components/ruuvi_gateway/bluetooth.py
|
||||
homeassistant/components/ruuvi_gateway/coordinator.py
|
||||
homeassistant/components/russound_rio/media_player.py
|
||||
homeassistant/components/russound_rnet/media_player.py
|
||||
homeassistant/components/sabnzbd/__init__.py
|
||||
@@ -1107,13 +1134,6 @@ omit =
|
||||
homeassistant/components/sesame/lock.py
|
||||
homeassistant/components/seven_segments/image_processing.py
|
||||
homeassistant/components/seventeentrack/sensor.py
|
||||
homeassistant/components/shelly/binary_sensor.py
|
||||
homeassistant/components/shelly/climate.py
|
||||
homeassistant/components/shelly/coordinator.py
|
||||
homeassistant/components/shelly/entity.py
|
||||
homeassistant/components/shelly/number.py
|
||||
homeassistant/components/shelly/sensor.py
|
||||
homeassistant/components/shelly/utils.py
|
||||
homeassistant/components/shiftr/*
|
||||
homeassistant/components/shodan/sensor.py
|
||||
homeassistant/components/sia/__init__.py
|
||||
@@ -1147,6 +1167,7 @@ omit =
|
||||
homeassistant/components/skybell/switch.py
|
||||
homeassistant/components/slack/__init__.py
|
||||
homeassistant/components/slack/notify.py
|
||||
homeassistant/components/slack/sensor.py
|
||||
homeassistant/components/slide/*
|
||||
homeassistant/components/slimproto/__init__.py
|
||||
homeassistant/components/slimproto/media_player.py
|
||||
@@ -1208,6 +1229,10 @@ omit =
|
||||
homeassistant/components/squeezebox/__init__.py
|
||||
homeassistant/components/squeezebox/browse_media.py
|
||||
homeassistant/components/squeezebox/media_player.py
|
||||
homeassistant/components/starlink/binary_sensor.py
|
||||
homeassistant/components/starlink/coordinator.py
|
||||
homeassistant/components/starlink/entity.py
|
||||
homeassistant/components/starlink/sensor.py
|
||||
homeassistant/components/starline/__init__.py
|
||||
homeassistant/components/starline/account.py
|
||||
homeassistant/components/starline/binary_sensor.py
|
||||
@@ -1248,9 +1273,11 @@ omit =
|
||||
homeassistant/components/switchbot/coordinator.py
|
||||
homeassistant/components/switchbot/cover.py
|
||||
homeassistant/components/switchbot/entity.py
|
||||
homeassistant/components/switchbot/humidifier.py
|
||||
homeassistant/components/switchbot/light.py
|
||||
homeassistant/components/switchbot/sensor.py
|
||||
homeassistant/components/switchbot/switch.py
|
||||
homeassistant/components/switchbot/lock.py
|
||||
homeassistant/components/switchmate/switch.py
|
||||
homeassistant/components/syncthing/__init__.py
|
||||
homeassistant/components/syncthing/sensor.py
|
||||
@@ -1418,9 +1445,6 @@ omit =
|
||||
homeassistant/components/upnp/__init__.py
|
||||
homeassistant/components/upnp/device.py
|
||||
homeassistant/components/upnp/sensor.py
|
||||
homeassistant/components/vallox/__init__.py
|
||||
homeassistant/components/vallox/fan.py
|
||||
homeassistant/components/vallox/sensor.py
|
||||
homeassistant/components/vasttrafik/sensor.py
|
||||
homeassistant/components/velbus/__init__.py
|
||||
homeassistant/components/velbus/binary_sensor.py
|
||||
@@ -1574,6 +1598,7 @@ omit =
|
||||
homeassistant/components/yolink/coordinator.py
|
||||
homeassistant/components/yolink/cover.py
|
||||
homeassistant/components/yolink/entity.py
|
||||
homeassistant/components/yolink/light.py
|
||||
homeassistant/components/yolink/lock.py
|
||||
homeassistant/components/yolink/sensor.py
|
||||
homeassistant/components/yolink/siren.py
|
||||
@@ -1582,8 +1607,6 @@ omit =
|
||||
homeassistant/components/youless/const.py
|
||||
homeassistant/components/youless/sensor.py
|
||||
homeassistant/components/zabbix/*
|
||||
homeassistant/components/zamg/__init__.py
|
||||
homeassistant/components/zamg/const.py
|
||||
homeassistant/components/zamg/coordinator.py
|
||||
homeassistant/components/zamg/sensor.py
|
||||
homeassistant/components/zamg/weather.py
|
||||
@@ -1592,6 +1615,11 @@ omit =
|
||||
homeassistant/components/zerproc/__init__.py
|
||||
homeassistant/components/zerproc/const.py
|
||||
homeassistant/components/zestimate/sensor.py
|
||||
homeassistant/components/zeversolar/__init__.py
|
||||
homeassistant/components/zeversolar/const.py
|
||||
homeassistant/components/zeversolar/coordinator.py
|
||||
homeassistant/components/zeversolar/entity.py
|
||||
homeassistant/components/zeversolar/sensor.py
|
||||
homeassistant/components/zha/api.py
|
||||
homeassistant/components/zha/core/channels/*
|
||||
homeassistant/components/zha/core/const.py
|
||||
|
@@ -45,5 +45,13 @@
|
||||
"!include_dir_merge_list scalar",
|
||||
"!include_dir_merge_named scalar"
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"ghcr.io/devcontainers/features/sshd:1": {
|
||||
"version": "latest"
|
||||
},
|
||||
"ghcr.io/devcontainers/features/github-cli:1": {
|
||||
"version": "latest"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -9,7 +9,6 @@ docs
|
||||
.vscode
|
||||
|
||||
# Test related files
|
||||
.tox
|
||||
tests
|
||||
|
||||
# Other virtualization methods
|
||||
|
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
3
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -80,8 +80,7 @@ body:
|
||||
label: Diagnostics information
|
||||
placeholder: "drag-and-drop the diagnostics data file here (do not copy-and-paste the content)"
|
||||
description: >-
|
||||
Many integrations provide the ability to download diagnostic data
|
||||
on the device page (and on the integration dashboard).
|
||||
Many integrations provide the ability to [download diagnostic data](https://www.home-assistant.io/docs/configuration/troubleshooting/#debug-logs-and-diagnostics).
|
||||
|
||||
**It would really help if you could download the diagnostics data for the device you are having issues with,
|
||||
and <ins>drag-and-drop that file into the textbox below.</ins>**
|
||||
|
13
.github/move.yml
vendored
13
.github/move.yml
vendored
@@ -1,13 +0,0 @@
|
||||
# Configuration for move-issues - https://github.com/dessant/move-issues
|
||||
|
||||
# Delete the command comment. Ignored when the comment also contains other content
|
||||
deleteCommand: true
|
||||
# Close the source issue after moving
|
||||
closeSourceIssue: true
|
||||
# Lock the source issue after moving
|
||||
lockSourceIssue: false
|
||||
# Set custom aliases for targets
|
||||
# aliases:
|
||||
# r: repo
|
||||
# or: owner/repo
|
||||
|
51
.github/workflows/builder.yml
vendored
51
.github/workflows/builder.yml
vendored
@@ -24,12 +24,12 @@ jobs:
|
||||
publish: ${{ steps.version.outputs.publish }}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
||||
@@ -67,10 +67,10 @@ jobs:
|
||||
if: github.repository_owner == 'home-assistant' && needs.init.outputs.publish == 'true'
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
||||
@@ -100,7 +100,7 @@ jobs:
|
||||
arch: ${{ fromJson(needs.init.outputs.architectures) }}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Download nightly wheels of frontend
|
||||
if: needs.init.outputs.channel == 'dev'
|
||||
@@ -113,9 +113,20 @@ jobs:
|
||||
workflow_conclusion: success
|
||||
name: wheels
|
||||
|
||||
- name: Download nightly wheels of intents
|
||||
if: needs.init.outputs.channel == 'dev'
|
||||
uses: dawidd6/action-download-artifact@v2
|
||||
with:
|
||||
github_token: ${{secrets.GITHUB_TOKEN}}
|
||||
repo: home-assistant/intents
|
||||
branch: main
|
||||
workflow: nightly.yaml
|
||||
workflow_conclusion: success
|
||||
name: package
|
||||
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
if: needs.init.outputs.channel == 'dev'
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
||||
@@ -140,6 +151,24 @@ jobs:
|
||||
python -m script.gen_requirements_all
|
||||
fi
|
||||
|
||||
if [[ "$(ls home_assistant_intents*.whl)" =~ ^home_assistant_intents-(.*)-py3-none-any.whl$ ]]; then
|
||||
echo "Found intents wheel, setting version to: ${BASH_REMATCH[1]}"
|
||||
yq \
|
||||
--inplace e -o json \
|
||||
'del(.requirements[] | select(contains("home-assistant-intents")))' \
|
||||
homeassistant/components/conversation/manifest.json
|
||||
|
||||
intents_version="${BASH_REMATCH[1]}" yq \
|
||||
--inplace e -o json \
|
||||
'.requirements += ["home-assistant-intents=="+env(intents_version)]' \
|
||||
homeassistant/components/conversation/manifest.json
|
||||
|
||||
sed -i "s|home-assistant-intents==.*|home-assistant-intents==${BASH_REMATCH[1]}|" \
|
||||
homeassistant/package_constraints.txt
|
||||
|
||||
python -m script.gen_requirements_all
|
||||
fi
|
||||
|
||||
- name: Write meta info file
|
||||
shell: bash
|
||||
run: |
|
||||
@@ -159,7 +188,7 @@ jobs:
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build base image
|
||||
uses: home-assistant/builder@2022.09.0
|
||||
uses: home-assistant/builder@2022.11.0
|
||||
with:
|
||||
args: |
|
||||
$BUILD_ARGS \
|
||||
@@ -198,7 +227,7 @@ jobs:
|
||||
- yellow
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Set build additional args
|
||||
run: |
|
||||
@@ -225,7 +254,7 @@ jobs:
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build base image
|
||||
uses: home-assistant/builder@2022.09.0
|
||||
uses: home-assistant/builder@2022.11.0
|
||||
with:
|
||||
args: |
|
||||
$BUILD_ARGS \
|
||||
@@ -241,7 +270,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Initialize git
|
||||
uses: home-assistant/actions/helpers/git-init@master
|
||||
@@ -280,7 +309,7 @@ jobs:
|
||||
- "homeassistant"
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Login to DockerHub
|
||||
if: matrix.registry == 'homeassistant'
|
||||
|
118
.github/workflows/ci.yaml
vendored
118
.github/workflows/ci.yaml
vendored
@@ -22,7 +22,7 @@ on:
|
||||
env:
|
||||
CACHE_VERSION: 3
|
||||
PIP_CACHE_VERSION: 3
|
||||
HA_SHORT_VERSION: 2022.11
|
||||
HA_SHORT_VERSION: 2023.2
|
||||
DEFAULT_PYTHON: 3.9
|
||||
ALL_PYTHON_VERSIONS: "['3.9', '3.10']"
|
||||
PRE_COMMIT_CACHE: ~/.cache/pre-commit
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Generate partial Python venv restore key
|
||||
id: generate_python_cache_key
|
||||
run: >-
|
||||
@@ -167,16 +167,16 @@ jobs:
|
||||
- info
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore base Python virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -191,7 +191,7 @@ jobs:
|
||||
pip install "$(cat requirements_test.txt | grep pre-commit)"
|
||||
- name: Restore pre-commit environment from cache
|
||||
id: cache-precommit
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v3.2.3
|
||||
with:
|
||||
path: ${{ env.PRE_COMMIT_CACHE }}
|
||||
key: >-
|
||||
@@ -211,16 +211,16 @@ jobs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore base Python virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -233,7 +233,7 @@ jobs:
|
||||
exit 1
|
||||
- name: Restore pre-commit environment from cache
|
||||
id: cache-precommit
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: ${{ env.PRE_COMMIT_CACHE }}
|
||||
key: >-
|
||||
@@ -255,7 +255,7 @@ jobs:
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
shopt -s globstar
|
||||
pre-commit run --hook-stage manual black --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
|
||||
pre-commit run --hook-stage manual black --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*} --show-diff-on-failure
|
||||
|
||||
lint-flake8:
|
||||
name: Check flake8
|
||||
@@ -265,16 +265,16 @@ jobs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore base Python virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -287,7 +287,7 @@ jobs:
|
||||
exit 1
|
||||
- name: Restore pre-commit environment from cache
|
||||
id: cache-precommit
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: ${{ env.PRE_COMMIT_CACHE }}
|
||||
key: >-
|
||||
@@ -312,7 +312,7 @@ jobs:
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
shopt -s globstar
|
||||
pre-commit run --hook-stage manual flake8 --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/*
|
||||
pre-commit run --hook-stage manual flake8 --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*}
|
||||
|
||||
lint-isort:
|
||||
name: Check isort
|
||||
@@ -322,16 +322,16 @@ jobs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore base Python virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -344,7 +344,7 @@ jobs:
|
||||
exit 1
|
||||
- name: Restore pre-commit environment from cache
|
||||
id: cache-precommit
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: ${{ env.PRE_COMMIT_CACHE }}
|
||||
key: >-
|
||||
@@ -368,16 +368,16 @@ jobs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
id: python
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore base Python virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -390,7 +390,7 @@ jobs:
|
||||
exit 1
|
||||
- name: Restore pre-commit environment from cache
|
||||
id: cache-precommit
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: ${{ env.PRE_COMMIT_CACHE }}
|
||||
key: >-
|
||||
@@ -413,7 +413,7 @@ jobs:
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
shopt -s globstar
|
||||
pre-commit run --hook-stage manual pyupgrade --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
|
||||
pre-commit run --hook-stage manual pyupgrade --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*} --show-diff-on-failure
|
||||
|
||||
- name: Register yamllint problem matcher
|
||||
run: |
|
||||
@@ -442,7 +442,7 @@ jobs:
|
||||
shell: bash
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
pre-commit run --hook-stage manual prettier --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/*
|
||||
pre-commit run --hook-stage manual prettier --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*}
|
||||
|
||||
- name: Register check executables problem matcher
|
||||
run: |
|
||||
@@ -483,7 +483,7 @@ jobs:
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
shopt -s globstar
|
||||
pre-commit run --hook-stage manual bandit --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/**/* --show-diff-on-failure
|
||||
pre-commit run --hook-stage manual bandit --files {homeassistant,tests}/components/${{ needs.info.outputs.integrations_glob }}/{*,**/*} --show-diff-on-failure
|
||||
|
||||
base:
|
||||
name: Prepare dependencies
|
||||
@@ -495,10 +495,10 @@ jobs:
|
||||
python-version: ${{ fromJSON(needs.info.outputs.python_versions) }}
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
check-latest: true
|
||||
@@ -509,7 +509,7 @@ jobs:
|
||||
env.HA_SHORT_VERSION }}-$(date -u '+%Y-%m-%dT%H:%M:%s')" >> $GITHUB_OUTPUT
|
||||
- name: Restore base Python virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -517,7 +517,7 @@ jobs:
|
||||
needs.info.outputs.python_cache_key }}
|
||||
- name: Restore pip wheel cache
|
||||
if: steps.cache-venv.outputs.cache-hit != 'true'
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache@v3.2.3
|
||||
with:
|
||||
path: ${{ env.PIP_CACHE }}
|
||||
key: >-
|
||||
@@ -559,16 +559,16 @@ jobs:
|
||||
- base
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -592,16 +592,16 @@ jobs:
|
||||
- base
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore base Python virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -626,16 +626,16 @@ jobs:
|
||||
- base
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -671,16 +671,16 @@ jobs:
|
||||
- base
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
check-latest: true
|
||||
- name: Restore full Python ${{ env.DEFAULT_PYTHON }} virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -720,16 +720,16 @@ jobs:
|
||||
name: Run pip check ${{ matrix.python-version }}
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
check-latest: true
|
||||
- name: Restore full Python ${{ matrix.python-version }} virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: >-
|
||||
@@ -775,16 +775,16 @@ jobs:
|
||||
bluez \
|
||||
ffmpeg
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
check-latest: true
|
||||
- name: Restore full Python ${{ matrix.python-version }} virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
|
||||
@@ -842,7 +842,6 @@ jobs:
|
||||
python3 -X dev -m pytest \
|
||||
-qq \
|
||||
--timeout=9 \
|
||||
--durations=10 \
|
||||
-n auto \
|
||||
--cov="homeassistant.components.${{ matrix.group }}" \
|
||||
--cov-report=xml \
|
||||
@@ -853,7 +852,7 @@ jobs:
|
||||
-p no:sugar \
|
||||
tests/components/${{ matrix.group }}
|
||||
- name: Upload coverage artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
with:
|
||||
name: coverage-${{ matrix.python-version }}-${{ matrix.group }}
|
||||
path: coverage.xml
|
||||
@@ -899,16 +898,16 @@ jobs:
|
||||
ffmpeg \
|
||||
libmariadb-dev-compat
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
id: python
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
check-latest: true
|
||||
- name: Restore full Python ${{ matrix.python-version }} virtual environment
|
||||
id: cache-venv
|
||||
uses: actions/cache@v3.0.11
|
||||
uses: actions/cache/restore@v3.2.3
|
||||
with:
|
||||
path: venv
|
||||
key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
|
||||
@@ -936,7 +935,7 @@ jobs:
|
||||
. venv/bin/activate
|
||||
pip install mysqlclient sqlalchemy_utils
|
||||
- name: Run pytest (partially)
|
||||
timeout-minutes: 10
|
||||
timeout-minutes: 15
|
||||
shell: bash
|
||||
run: |
|
||||
. venv/bin/activate
|
||||
@@ -944,19 +943,18 @@ jobs:
|
||||
|
||||
python3 -X dev -m pytest \
|
||||
-qq \
|
||||
--timeout=9 \
|
||||
--timeout=20 \
|
||||
-n 1 \
|
||||
--cov="homeassistant.components.recorder" \
|
||||
--cov-report=xml \
|
||||
--cov-report=term-missing \
|
||||
-o console_output_style=count \
|
||||
--durations=0 \
|
||||
--durations-min=10 \
|
||||
--durations=10 \
|
||||
-p no:sugar \
|
||||
--dburl=mysql://root:password@127.0.0.1/homeassistant-test \
|
||||
tests/components/recorder
|
||||
- name: Upload coverage artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
with:
|
||||
name: coverage-${{ matrix.python-version }}-mariadb
|
||||
path: coverage.xml
|
||||
@@ -972,7 +970,7 @@ jobs:
|
||||
- pytest
|
||||
steps:
|
||||
- name: Check out code from GitHub
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
- name: Download all coverage artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
- name: Upload coverage to Codecov (full coverage)
|
||||
|
2
.github/workflows/lock.yml
vendored
2
.github/workflows/lock.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
if: github.repository_owner == 'home-assistant'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v3
|
||||
- uses: dessant/lock-threads@v4.0.0
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-inactive-days: "30"
|
||||
|
95
.github/workflows/stale.yml
vendored
95
.github/workflows/stale.yml
vendored
@@ -11,34 +11,21 @@ jobs:
|
||||
if: github.repository_owner == 'home-assistant'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# The 90 day stale policy
|
||||
# The 90 day stale policy for PRs
|
||||
# Used for:
|
||||
# - Issues & PRs
|
||||
# - PRs
|
||||
# - No PRs marked as no-stale
|
||||
# - No issues marked as no-stale or help-wanted
|
||||
- name: 90 days stale issues & PRs policy
|
||||
uses: actions/stale@v6.0.1
|
||||
# - No issues (-1)
|
||||
- name: 90 days stale PRs policy
|
||||
uses: actions/stale@v7.0.0
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
days-before-stale: 90
|
||||
days-before-close: 7
|
||||
days-before-issue-stale: -1
|
||||
days-before-issue-close: -1
|
||||
operations-per-run: 150
|
||||
remove-stale-when-updated: true
|
||||
stale-issue-label: "stale"
|
||||
exempt-issue-labels: "no-stale,help-wanted"
|
||||
stale-issue-message: >
|
||||
There hasn't been any activity on this issue recently. Due to the
|
||||
high number of incoming GitHub notifications, we have to clean some
|
||||
of the old issues, as many of them have already been resolved with
|
||||
the latest updates.
|
||||
|
||||
Please make sure to update to the latest Home Assistant version and
|
||||
check if that solves the issue. Let us know if that works for you by
|
||||
adding a comment 👍
|
||||
|
||||
This issue has now been marked as stale and will be closed if no
|
||||
further activity occurs. Thank you for your contributions.
|
||||
|
||||
stale-pr-label: "stale"
|
||||
exempt-pr-labels: "no-stale"
|
||||
stale-pr-message: >
|
||||
@@ -48,30 +35,47 @@ jobs:
|
||||
|
||||
Thank you for your contributions.
|
||||
|
||||
# The 30 day stale policy for PRS
|
||||
# Used for:
|
||||
# - PRs
|
||||
# - No PRs marked as no-stale or new-integrations
|
||||
# - No issues (-1)
|
||||
- name: 30 days stale PRs policy
|
||||
uses: actions/stale@v6.0.1
|
||||
# Generate a token for the GitHub App, we use this method to avoid
|
||||
# hitting API limits for our GitHub actions + have a higher rate limit.
|
||||
# This is only used for issues.
|
||||
- name: Generate app token
|
||||
id: token
|
||||
# Pinned to a specific version of the action for security reasons
|
||||
# v1.7.0
|
||||
uses: tibdex/github-app-token@021a2405c7f990db57f5eae5397423dcc554159c
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
days-before-stale: 30
|
||||
days-before-close: 7
|
||||
days-before-issue-close: -1
|
||||
operations-per-run: 50
|
||||
remove-stale-when-updated: true
|
||||
stale-pr-label: "stale"
|
||||
# Exempt new integrations, these often take more time.
|
||||
# They will automatically be handled by the 90 day version above.
|
||||
exempt-pr-labels: "no-stale,new-integration"
|
||||
stale-pr-message: >
|
||||
There hasn't been any activity on this pull request recently. This
|
||||
pull request has been automatically marked as stale because of that
|
||||
and will be closed if no further activity occurs within 7 days.
|
||||
app_id: ${{ secrets.ISSUE_TRIAGE_APP_ID }}
|
||||
private_key: ${{ secrets.ISSUE_TRIAGE_APP_PEM }}
|
||||
|
||||
Thank you for your contributions.
|
||||
# The 90 day stale policy for issues
|
||||
# Used for:
|
||||
# - Issues
|
||||
# - No issues marked as no-stale or help-wanted
|
||||
# - No PRs (-1)
|
||||
- name: 90 days stale issues
|
||||
uses: actions/stale@v7.0.0
|
||||
with:
|
||||
repo-token: ${{ steps.token.outputs.token }}
|
||||
days-before-stale: 90
|
||||
days-before-close: 7
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
operations-per-run: 250
|
||||
remove-stale-when-updated: true
|
||||
stale-issue-label: "stale"
|
||||
exempt-issue-labels: "no-stale,help-wanted,needs-more-information"
|
||||
stale-issue-message: >
|
||||
There hasn't been any activity on this issue recently. Due to the
|
||||
high number of incoming GitHub notifications, we have to clean some
|
||||
of the old issues, as many of them have already been resolved with
|
||||
the latest updates.
|
||||
|
||||
Please make sure to update to the latest Home Assistant version and
|
||||
check if that solves the issue. Let us know if that works for you by
|
||||
adding a comment 👍
|
||||
|
||||
This issue has now been marked as stale and will be closed if no
|
||||
further activity occurs. Thank you for your contributions.
|
||||
|
||||
# The 30 day stale policy for issues
|
||||
# Used for:
|
||||
@@ -79,14 +83,15 @@ jobs:
|
||||
# - No Issues marked as no-stale or help-wanted
|
||||
# - No PRs (-1)
|
||||
- name: Needs more information stale issues policy
|
||||
uses: actions/stale@v6.0.1
|
||||
uses: actions/stale@v7.0.0
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
repo-token: ${{ steps.token.outputs.token }}
|
||||
only-labels: "needs-more-information"
|
||||
days-before-stale: 14
|
||||
days-before-close: 7
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
operations-per-run: 50
|
||||
operations-per-run: 250
|
||||
remove-stale-when-updated: true
|
||||
stale-issue-label: "stale"
|
||||
exempt-issue-labels: "no-stale,help-wanted"
|
||||
|
8
.github/workflows/translations.yaml
vendored
8
.github/workflows/translations.yaml
vendored
@@ -21,10 +21,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
||||
@@ -40,10 +40,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
|
||||
uses: actions/setup-python@v4.3.0
|
||||
uses: actions/setup-python@v4.5.0
|
||||
with:
|
||||
python-version: ${{ env.DEFAULT_PYTHON }}
|
||||
|
||||
|
37
.github/workflows/wheels.yml
vendored
37
.github/workflows/wheels.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
architectures: ${{ steps.info.outputs.architectures }}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Get information
|
||||
id: info
|
||||
@@ -57,13 +57,13 @@ jobs:
|
||||
) > .env_file
|
||||
|
||||
- name: Upload env_file
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
with:
|
||||
name: env_file
|
||||
path: ./.env_file
|
||||
|
||||
- name: Upload requirements_diff
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v3.1.2
|
||||
with:
|
||||
name: requirements_diff
|
||||
path: ./requirements_diff.txt
|
||||
@@ -79,7 +79,7 @@ jobs:
|
||||
arch: ${{ fromJson(needs.init.outputs.architectures) }}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Download env_file
|
||||
uses: actions/download-artifact@v3
|
||||
@@ -116,7 +116,7 @@ jobs:
|
||||
arch: ${{ fromJson(needs.init.outputs.architectures) }}
|
||||
steps:
|
||||
- name: Checkout the repository
|
||||
uses: actions/checkout@v3.1.0
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Download env_file
|
||||
uses: actions/download-artifact@v3
|
||||
@@ -144,6 +144,14 @@ jobs:
|
||||
sed -i "s|# opencv-python-headless|opencv-python-headless|g" ${requirement_file}
|
||||
done
|
||||
|
||||
- name: Split requirements all
|
||||
run: |
|
||||
# We split requirements all into two different files.
|
||||
# This is to prevent the build from running out of memory when
|
||||
# resolving packages on 32-bits systems (like armhf, armv7).
|
||||
|
||||
split -l $(expr $(expr $(cat requirements_all.txt | wc -l) + 1) / 2) requirements_all.txt requirements_all.txt
|
||||
|
||||
- name: Adjust build env
|
||||
run: |
|
||||
if [ "${{ matrix.arch }}" = "i386" ]; then
|
||||
@@ -159,7 +167,7 @@ jobs:
|
||||
# Do not pin numpy in wheels building
|
||||
sed -i "/numpy/d" homeassistant/package_constraints.txt
|
||||
|
||||
- name: Build wheels
|
||||
- name: Build wheels (part 1)
|
||||
uses: home-assistant/wheels@2022.10.1
|
||||
with:
|
||||
abi: cp310
|
||||
@@ -172,4 +180,19 @@ jobs:
|
||||
legacy: true
|
||||
constraints: "homeassistant/package_constraints.txt"
|
||||
requirements-diff: "requirements_diff.txt"
|
||||
requirements: "requirements_all.txt"
|
||||
requirements: "requirements_all.txtaa"
|
||||
|
||||
- name: Build wheels (part 2)
|
||||
uses: home-assistant/wheels@2022.10.1
|
||||
with:
|
||||
abi: cp310
|
||||
tag: musllinux_1_2
|
||||
arch: ${{ matrix.arch }}
|
||||
wheels-key: ${{ secrets.WHEELS_KEY }}
|
||||
env-file: true
|
||||
apk: "libexecinfo-dev;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"
|
||||
skip-binary: aiohttp;grpcio
|
||||
legacy: true
|
||||
constraints: "homeassistant/package_constraints.txt"
|
||||
requirements-diff: "requirements_diff.txt"
|
||||
requirements: "requirements_all.txtab"
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -58,7 +58,6 @@ pip-log.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
.coverage
|
||||
.tox
|
||||
coverage.xml
|
||||
nosetests.xml
|
||||
htmlcov/
|
||||
|
@@ -1,40 +1,46 @@
|
||||
repos:
|
||||
- repo: https://github.com/asottile/pyupgrade
|
||||
rev: v3.1.0
|
||||
rev: v3.3.1
|
||||
hooks:
|
||||
- id: pyupgrade
|
||||
args: [--py39-plus]
|
||||
- repo: https://github.com/PyCQA/autoflake
|
||||
rev: v2.0.0
|
||||
hooks:
|
||||
- id: autoflake
|
||||
args:
|
||||
- --in-place
|
||||
- --remove-all-unused-imports
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 22.10.0
|
||||
rev: 22.12.0
|
||||
hooks:
|
||||
- id: black
|
||||
args:
|
||||
- --safe
|
||||
- --quiet
|
||||
files: ^((homeassistant|pylint|script|tests)/.+)?[^/]+\.py$
|
||||
- repo: https://github.com/codespell-project/codespell
|
||||
rev: v2.1.0
|
||||
rev: v2.2.2
|
||||
hooks:
|
||||
- id: codespell
|
||||
args:
|
||||
- --ignore-words-list=hass,alot,datas,dof,dur,ether,farenheit,hist,iff,iif,ines,ist,lightsensor,mut,nd,pres,referer,rime,ser,serie,te,technik,ue,uint,visability,wan,wanna,withing,iam,incomfort,ba,haa,pullrequests
|
||||
- --ignore-words-list=additionals,alle,alot,ba,bre,bund,datas,dof,dur,ether,farenheit,falsy,fo,haa,hass,hist,iam,iff,iif,incomfort,ines,ist,lightsensor,mut,nam,nd,pres,pullrequests,referer,resset,rime,ser,serie,sur,te,technik,ue,uint,unsecure,visability,wan,wanna,withing,zar
|
||||
- --skip="./.*,*.csv,*.json"
|
||||
- --quiet-level=2
|
||||
exclude_types: [csv, json]
|
||||
exclude: ^tests/fixtures/|homeassistant/generated/
|
||||
- repo: https://github.com/PyCQA/flake8
|
||||
rev: 4.0.1
|
||||
rev: 6.0.0
|
||||
hooks:
|
||||
- id: flake8
|
||||
additional_dependencies:
|
||||
- pycodestyle==2.8.0
|
||||
- pyflakes==2.4.0
|
||||
- pycodestyle==2.10.0
|
||||
- pyflakes==3.0.1
|
||||
- flake8-docstrings==1.6.0
|
||||
- pydocstyle==6.1.1
|
||||
- flake8-comprehensions==3.10.0
|
||||
- flake8-noqa==1.2.8
|
||||
- mccabe==0.6.1
|
||||
files: ^(homeassistant|script|tests)/.+\.py$
|
||||
- pydocstyle==6.2.3
|
||||
- flake8-comprehensions==3.10.1
|
||||
- flake8-noqa==1.3.0
|
||||
- mccabe==0.7.0
|
||||
exclude: docs/source/conf.py
|
||||
- repo: https://github.com/PyCQA/bandit
|
||||
rev: 1.7.4
|
||||
hooks:
|
||||
@@ -45,7 +51,7 @@ repos:
|
||||
- --configfile=tests/bandit.yaml
|
||||
files: ^(homeassistant|script|tests)/.+\.py$
|
||||
- repo: https://github.com/PyCQA/isort
|
||||
rev: 5.10.1
|
||||
rev: 5.11.4
|
||||
hooks:
|
||||
- id: isort
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
@@ -65,7 +71,7 @@ repos:
|
||||
hooks:
|
||||
- id: yamllint
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: v2.6.1
|
||||
rev: v2.7.1
|
||||
hooks:
|
||||
- id: prettier
|
||||
- repo: https://github.com/cdce8p/python-typing-update
|
||||
|
@@ -5,14 +5,10 @@
|
||||
# Strict typing is enabled by default for core files.
|
||||
# Add it here to add 'disallow_any_generics'.
|
||||
# --- Only for core file! ---
|
||||
homeassistant.exceptions
|
||||
homeassistant.core
|
||||
homeassistant.loader
|
||||
homeassistant.requirements
|
||||
homeassistant.runner
|
||||
homeassistant.setup
|
||||
homeassistant.auth.auth_store
|
||||
homeassistant.auth.providers.*
|
||||
homeassistant.core
|
||||
homeassistant.exceptions
|
||||
homeassistant.helpers.area_registry
|
||||
homeassistant.helpers.condition
|
||||
homeassistant.helpers.debounce
|
||||
@@ -29,6 +25,10 @@ homeassistant.helpers.script_variables
|
||||
homeassistant.helpers.singleton
|
||||
homeassistant.helpers.sun
|
||||
homeassistant.helpers.translation
|
||||
homeassistant.loader
|
||||
homeassistant.requirements
|
||||
homeassistant.runner
|
||||
homeassistant.setup
|
||||
homeassistant.util.async_
|
||||
homeassistant.util.color
|
||||
homeassistant.util.decorator
|
||||
@@ -56,7 +56,9 @@ homeassistant.components.amazon_polly.*
|
||||
homeassistant.components.ambient_station.*
|
||||
homeassistant.components.amcrest.*
|
||||
homeassistant.components.ampio.*
|
||||
homeassistant.components.analytics.*
|
||||
homeassistant.components.anthemav.*
|
||||
homeassistant.components.apcupsd.*
|
||||
homeassistant.components.aqualogic.*
|
||||
homeassistant.components.aseko_pool_live.*
|
||||
homeassistant.components.asuswrt.*
|
||||
@@ -67,6 +69,7 @@ homeassistant.components.backup.*
|
||||
homeassistant.components.baf.*
|
||||
homeassistant.components.bayesian.*
|
||||
homeassistant.components.binary_sensor.*
|
||||
homeassistant.components.bitcoin.*
|
||||
homeassistant.components.blockchain.*
|
||||
homeassistant.components.bluetooth.*
|
||||
homeassistant.components.bluetooth_tracker.*
|
||||
@@ -79,18 +82,20 @@ homeassistant.components.button.*
|
||||
homeassistant.components.calendar.*
|
||||
homeassistant.components.camera.*
|
||||
homeassistant.components.canary.*
|
||||
homeassistant.components.cover.*
|
||||
homeassistant.components.clickatell.*
|
||||
homeassistant.components.clicksend.*
|
||||
homeassistant.components.cover.*
|
||||
homeassistant.components.cpuspeed.*
|
||||
homeassistant.components.crownstone.*
|
||||
homeassistant.components.deconz.*
|
||||
homeassistant.components.demo.*
|
||||
homeassistant.components.derivative.*
|
||||
homeassistant.components.device_automation.*
|
||||
homeassistant.components.device_tracker.*
|
||||
homeassistant.components.devolo_home_control.*
|
||||
homeassistant.components.devolo_home_network.*
|
||||
homeassistant.components.dhcp.*
|
||||
homeassistant.components.diagnostics.*
|
||||
homeassistant.components.dlna_dmr.*
|
||||
homeassistant.components.dnsip.*
|
||||
homeassistant.components.dsmr.*
|
||||
@@ -125,9 +130,15 @@ homeassistant.components.google_sheets.*
|
||||
homeassistant.components.greeneye_monitor.*
|
||||
homeassistant.components.group.*
|
||||
homeassistant.components.guardian.*
|
||||
homeassistant.components.hardkernel.*
|
||||
homeassistant.components.hardware.*
|
||||
homeassistant.components.here_travel_time.*
|
||||
homeassistant.components.history.*
|
||||
homeassistant.components.homeassistant.triggers.event
|
||||
homeassistant.components.homeassistant_alerts.*
|
||||
homeassistant.components.homeassistant_hardware.*
|
||||
homeassistant.components.homeassistant_sky_connect.*
|
||||
homeassistant.components.homeassistant_yellow.*
|
||||
homeassistant.components.homekit
|
||||
homeassistant.components.homekit.accessories
|
||||
homeassistant.components.homekit.aidmanager
|
||||
@@ -152,6 +163,7 @@ homeassistant.components.huawei_lte.*
|
||||
homeassistant.components.hyperion.*
|
||||
homeassistant.components.ibeacon.*
|
||||
homeassistant.components.image_processing.*
|
||||
homeassistant.components.image_upload.*
|
||||
homeassistant.components.input_button.*
|
||||
homeassistant.components.input_select.*
|
||||
homeassistant.components.integration.*
|
||||
@@ -166,6 +178,7 @@ homeassistant.components.lacrosse_view.*
|
||||
homeassistant.components.lametric.*
|
||||
homeassistant.components.laundrify.*
|
||||
homeassistant.components.lcn.*
|
||||
homeassistant.components.ld2410_ble.*
|
||||
homeassistant.components.lidarr.*
|
||||
homeassistant.components.lifx.*
|
||||
homeassistant.components.light.*
|
||||
@@ -173,17 +186,22 @@ homeassistant.components.litterrobot.*
|
||||
homeassistant.components.local_ip.*
|
||||
homeassistant.components.lock.*
|
||||
homeassistant.components.logbook.*
|
||||
homeassistant.components.logger.*
|
||||
homeassistant.components.lookin.*
|
||||
homeassistant.components.luftdaten.*
|
||||
homeassistant.components.mailbox.*
|
||||
homeassistant.components.mastodon.*
|
||||
homeassistant.components.matter.*
|
||||
homeassistant.components.media_player.*
|
||||
homeassistant.components.media_source.*
|
||||
homeassistant.components.metoffice.*
|
||||
homeassistant.components.mikrotik.*
|
||||
homeassistant.components.min_max.*
|
||||
homeassistant.components.mjpeg.*
|
||||
homeassistant.components.modbus.*
|
||||
homeassistant.components.modem_callerid.*
|
||||
homeassistant.components.moon.*
|
||||
homeassistant.components.mqtt.*
|
||||
homeassistant.components.mysensors.*
|
||||
homeassistant.components.nam.*
|
||||
homeassistant.components.nanoleaf.*
|
||||
@@ -191,6 +209,7 @@ homeassistant.components.neato.*
|
||||
homeassistant.components.nest.*
|
||||
homeassistant.components.netatmo.*
|
||||
homeassistant.components.network.*
|
||||
homeassistant.components.nextdns.*
|
||||
homeassistant.components.nfandroidtv.*
|
||||
homeassistant.components.nissan_leaf.*
|
||||
homeassistant.components.no_ip.*
|
||||
@@ -211,11 +230,13 @@ homeassistant.components.powerwall.*
|
||||
homeassistant.components.proximity.*
|
||||
homeassistant.components.prusalink.*
|
||||
homeassistant.components.pure_energie.*
|
||||
homeassistant.components.purpleair.*
|
||||
homeassistant.components.pvoutput.*
|
||||
homeassistant.components.qnap_qsw.*
|
||||
homeassistant.components.rainmachine.*
|
||||
homeassistant.components.rdw.*
|
||||
homeassistant.components.radarr.*
|
||||
homeassistant.components.rainmachine.*
|
||||
homeassistant.components.raspberry_pi.*
|
||||
homeassistant.components.rdw.*
|
||||
homeassistant.components.recollect_waste.*
|
||||
homeassistant.components.recorder.*
|
||||
homeassistant.components.remote.*
|
||||
@@ -228,15 +249,20 @@ homeassistant.components.rituals_perfume_genie.*
|
||||
homeassistant.components.roku.*
|
||||
homeassistant.components.rpi_power.*
|
||||
homeassistant.components.rtsp_to_webrtc.*
|
||||
homeassistant.components.ruuvi_gateway.*
|
||||
homeassistant.components.ruuvitag_ble.*
|
||||
homeassistant.components.samsungtv.*
|
||||
homeassistant.components.scene.*
|
||||
homeassistant.components.schedule.*
|
||||
homeassistant.components.select.*
|
||||
homeassistant.components.senseme.*
|
||||
homeassistant.components.sensibo.*
|
||||
homeassistant.components.sensirion_ble.*
|
||||
homeassistant.components.sensor.*
|
||||
homeassistant.components.senz.*
|
||||
homeassistant.components.sfr_box.*
|
||||
homeassistant.components.shelly.*
|
||||
homeassistant.components.simplepush.*
|
||||
homeassistant.components.simplisafe.*
|
||||
homeassistant.components.skybell.*
|
||||
homeassistant.components.slack.*
|
||||
@@ -244,6 +270,7 @@ homeassistant.components.sleepiq.*
|
||||
homeassistant.components.smhi.*
|
||||
homeassistant.components.snooz.*
|
||||
homeassistant.components.sonarr.*
|
||||
homeassistant.components.speedtestdotnet.*
|
||||
homeassistant.components.ssdp.*
|
||||
homeassistant.components.statistics.*
|
||||
homeassistant.components.steamist.*
|
||||
@@ -283,6 +310,7 @@ homeassistant.components.vacuum.*
|
||||
homeassistant.components.vallox.*
|
||||
homeassistant.components.velbus.*
|
||||
homeassistant.components.vlc_telnet.*
|
||||
homeassistant.components.wake_on_lan.*
|
||||
homeassistant.components.wallbox.*
|
||||
homeassistant.components.water_heater.*
|
||||
homeassistant.components.watttime.*
|
||||
|
118
CODEOWNERS
118
CODEOWNERS
@@ -45,6 +45,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/airly/ @bieniu
|
||||
/homeassistant/components/airnow/ @asymworks
|
||||
/tests/components/airnow/ @asymworks
|
||||
/homeassistant/components/airq/ @Sibgatulin @dl2080
|
||||
/tests/components/airq/ @Sibgatulin @dl2080
|
||||
/homeassistant/components/airthings/ @danielhiversen
|
||||
/tests/components/airthings/ @danielhiversen
|
||||
/homeassistant/components/airthings_ble/ @vincegio
|
||||
@@ -53,6 +55,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/airtouch4/ @LonePurpleWolf
|
||||
/homeassistant/components/airvisual/ @bachya
|
||||
/tests/components/airvisual/ @bachya
|
||||
/homeassistant/components/airvisual_pro/ @bachya
|
||||
/tests/components/airvisual_pro/ @bachya
|
||||
/homeassistant/components/airzone/ @Noltari
|
||||
/tests/components/airzone/ @Noltari
|
||||
/homeassistant/components/aladdin_connect/ @mkmer
|
||||
@@ -61,8 +65,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/alarm_control_panel/ @home-assistant/core
|
||||
/homeassistant/components/alert/ @home-assistant/core @frenck
|
||||
/tests/components/alert/ @home-assistant/core @frenck
|
||||
/homeassistant/components/alexa/ @home-assistant/cloud @ochlocracy
|
||||
/tests/components/alexa/ @home-assistant/cloud @ochlocracy
|
||||
/homeassistant/components/alexa/ @home-assistant/cloud @ochlocracy @jbouwh
|
||||
/tests/components/alexa/ @home-assistant/cloud @ochlocracy @jbouwh
|
||||
/homeassistant/components/almond/ @gcampax @balloob
|
||||
/tests/components/almond/ @gcampax @balloob
|
||||
/homeassistant/components/amberelectric/ @madpilot
|
||||
@@ -94,6 +98,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/apprise/ @caronc
|
||||
/homeassistant/components/aprs/ @PhilRW
|
||||
/tests/components/aprs/ @PhilRW
|
||||
/homeassistant/components/aranet/ @aschmitz
|
||||
/tests/components/aranet/ @aschmitz
|
||||
/homeassistant/components/arcam_fmj/ @elupus
|
||||
/tests/components/arcam_fmj/ @elupus
|
||||
/homeassistant/components/arris_tg2492lg/ @vanbalken
|
||||
@@ -150,6 +156,8 @@ build.json @home-assistant/supervisor
|
||||
/homeassistant/components/bluesound/ @thrawnarn
|
||||
/homeassistant/components/bluetooth/ @bdraco
|
||||
/tests/components/bluetooth/ @bdraco
|
||||
/homeassistant/components/bluetooth_adapters/ @bdraco
|
||||
/tests/components/bluetooth_adapters/ @bdraco
|
||||
/homeassistant/components/bmw_connected_drive/ @gerard33 @rikroe
|
||||
/tests/components/bmw_connected_drive/ @gerard33 @rikroe
|
||||
/homeassistant/components/bond/ @bdraco @prystupa @joshs85 @marciogranzotto
|
||||
@@ -259,6 +267,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/discord/ @tkdrob
|
||||
/homeassistant/components/discovery/ @home-assistant/core
|
||||
/tests/components/discovery/ @home-assistant/core
|
||||
/homeassistant/components/dlink/ @tkdrob
|
||||
/tests/components/dlink/ @tkdrob
|
||||
/homeassistant/components/dlna_dmr/ @StevenLooman @chishm
|
||||
/tests/components/dlna_dmr/ @StevenLooman @chishm
|
||||
/homeassistant/components/dlna_dms/ @chishm
|
||||
@@ -307,6 +317,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/emulated_kasa/ @kbickar
|
||||
/homeassistant/components/energy/ @home-assistant/core
|
||||
/tests/components/energy/ @home-assistant/core
|
||||
/homeassistant/components/energyzero/ @klaasnicolaas
|
||||
/tests/components/energyzero/ @klaasnicolaas
|
||||
/homeassistant/components/enigma2/ @fbradyirl
|
||||
/homeassistant/components/enocean/ @bdurrer
|
||||
/tests/components/enocean/ @bdurrer
|
||||
@@ -325,6 +337,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/escea/ @lazdavila
|
||||
/homeassistant/components/esphome/ @OttoWinter @jesserockz
|
||||
/tests/components/esphome/ @OttoWinter @jesserockz
|
||||
/homeassistant/components/eufylife_ble/ @bdr99
|
||||
/tests/components/eufylife_ble/ @bdr99
|
||||
/homeassistant/components/evil_genius_labs/ @balloob
|
||||
/tests/components/evil_genius_labs/ @balloob
|
||||
/homeassistant/components/evohome/ @zxdavb
|
||||
@@ -424,13 +438,17 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/google/ @allenporter
|
||||
/homeassistant/components/google_assistant/ @home-assistant/cloud
|
||||
/tests/components/google_assistant/ @home-assistant/cloud
|
||||
/homeassistant/components/google_assistant_sdk/ @tronikos
|
||||
/tests/components/google_assistant_sdk/ @tronikos
|
||||
/homeassistant/components/google_cloud/ @lufton
|
||||
/homeassistant/components/google_mail/ @tkdrob
|
||||
/tests/components/google_mail/ @tkdrob
|
||||
/homeassistant/components/google_sheets/ @tkdrob
|
||||
/tests/components/google_sheets/ @tkdrob
|
||||
/homeassistant/components/google_travel_time/ @eifinger
|
||||
/tests/components/google_travel_time/ @eifinger
|
||||
/homeassistant/components/govee_ble/ @bdraco
|
||||
/tests/components/govee_ble/ @bdraco
|
||||
/homeassistant/components/govee_ble/ @bdraco @PierreAronnax
|
||||
/tests/components/govee_ble/ @bdraco @PierreAronnax
|
||||
/homeassistant/components/gpsd/ @fabaff
|
||||
/homeassistant/components/gree/ @cmroche
|
||||
/tests/components/gree/ @cmroche
|
||||
@@ -477,6 +495,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/homeassistant/ @home-assistant/core
|
||||
/homeassistant/components/homeassistant_alerts/ @home-assistant/core
|
||||
/tests/components/homeassistant_alerts/ @home-assistant/core
|
||||
/homeassistant/components/homeassistant_hardware/ @home-assistant/core
|
||||
/tests/components/homeassistant_hardware/ @home-assistant/core
|
||||
/homeassistant/components/homeassistant_sky_connect/ @home-assistant/core
|
||||
/tests/components/homeassistant_sky_connect/ @home-assistant/core
|
||||
/homeassistant/components/homeassistant_yellow/ @home-assistant/core
|
||||
@@ -519,10 +539,12 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/icloud/ @Quentame @nzapponi
|
||||
/homeassistant/components/ign_sismologia/ @exxamalte
|
||||
/tests/components/ign_sismologia/ @exxamalte
|
||||
/homeassistant/components/image/ @home-assistant/core
|
||||
/tests/components/image/ @home-assistant/core
|
||||
/homeassistant/components/image_processing/ @home-assistant/core
|
||||
/tests/components/image_processing/ @home-assistant/core
|
||||
/homeassistant/components/image_upload/ @home-assistant/core
|
||||
/tests/components/image_upload/ @home-assistant/core
|
||||
/homeassistant/components/imap/ @engrbm87
|
||||
/tests/components/imap/ @engrbm87
|
||||
/homeassistant/components/incomfort/ @zxdavb
|
||||
/homeassistant/components/influxdb/ @mdegat01
|
||||
/tests/components/influxdb/ @mdegat01
|
||||
@@ -589,6 +611,8 @@ build.json @home-assistant/supervisor
|
||||
/homeassistant/components/keyboard_remote/ @bendavid @lanrat
|
||||
/homeassistant/components/keymitt_ble/ @spycle
|
||||
/tests/components/keymitt_ble/ @spycle
|
||||
/homeassistant/components/kitchen_sink/ @home-assistant/core
|
||||
/tests/components/kitchen_sink/ @home-assistant/core
|
||||
/homeassistant/components/kmtronic/ @dgomes
|
||||
/tests/components/kmtronic/ @dgomes
|
||||
/homeassistant/components/knx/ @Julius2342 @farmio @marvin-w
|
||||
@@ -615,6 +639,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/laundrify/ @xLarry
|
||||
/homeassistant/components/lcn/ @alengwenus
|
||||
/tests/components/lcn/ @alengwenus
|
||||
/homeassistant/components/ld2410_ble/ @930913
|
||||
/tests/components/ld2410_ble/ @930913
|
||||
/homeassistant/components/led_ble/ @bdraco
|
||||
/tests/components/led_ble/ @bdraco
|
||||
/homeassistant/components/lg_netcast/ @Drafteed
|
||||
@@ -631,6 +657,10 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/litejet/ @joncar
|
||||
/homeassistant/components/litterrobot/ @natekspencer @tkdrob
|
||||
/tests/components/litterrobot/ @natekspencer @tkdrob
|
||||
/homeassistant/components/livisi/ @StefanIacobLivisi
|
||||
/tests/components/livisi/ @StefanIacobLivisi
|
||||
/homeassistant/components/local_calendar/ @allenporter
|
||||
/tests/components/local_calendar/ @allenporter
|
||||
/homeassistant/components/local_ip/ @issacg
|
||||
/tests/components/local_ip/ @issacg
|
||||
/homeassistant/components/lock/ @home-assistant/core
|
||||
@@ -649,13 +679,14 @@ build.json @home-assistant/supervisor
|
||||
/homeassistant/components/luftdaten/ @fabaff @frenck
|
||||
/tests/components/luftdaten/ @fabaff @frenck
|
||||
/homeassistant/components/lupusec/ @majuss
|
||||
/homeassistant/components/lutron/ @JonGilmore
|
||||
/homeassistant/components/lutron/ @cdheiser
|
||||
/homeassistant/components/lutron_caseta/ @swails @bdraco @danaues
|
||||
/tests/components/lutron_caseta/ @swails @bdraco @danaues
|
||||
/homeassistant/components/lyric/ @timmo001
|
||||
/tests/components/lyric/ @timmo001
|
||||
/homeassistant/components/mastodon/ @fabaff
|
||||
/homeassistant/components/matrix/ @tinloaf
|
||||
/homeassistant/components/matter/ @home-assistant/matter
|
||||
/tests/components/matter/ @home-assistant/matter
|
||||
/homeassistant/components/mazda/ @bdr99
|
||||
/tests/components/mazda/ @bdr99
|
||||
/homeassistant/components/meater/ @Sotolotl @emontnemery
|
||||
@@ -687,8 +718,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/mikrotik/ @engrbm87
|
||||
/homeassistant/components/mill/ @danielhiversen
|
||||
/tests/components/mill/ @danielhiversen
|
||||
/homeassistant/components/min_max/ @fabaff
|
||||
/tests/components/min_max/ @fabaff
|
||||
/homeassistant/components/min_max/ @gjohansson-ST
|
||||
/tests/components/min_max/ @gjohansson-ST
|
||||
/homeassistant/components/minecraft_server/ @elmurato
|
||||
/tests/components/minecraft_server/ @elmurato
|
||||
/homeassistant/components/minio/ @tkislan
|
||||
@@ -713,8 +744,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/motion_blinds/ @starkillerOG
|
||||
/homeassistant/components/motioneye/ @dermotduffy
|
||||
/tests/components/motioneye/ @dermotduffy
|
||||
/homeassistant/components/mqtt/ @emontnemery
|
||||
/tests/components/mqtt/ @emontnemery
|
||||
/homeassistant/components/mqtt/ @emontnemery @jbouwh
|
||||
/tests/components/mqtt/ @emontnemery @jbouwh
|
||||
/homeassistant/components/msteams/ @peroyvind
|
||||
/homeassistant/components/mullvad/ @meichthys
|
||||
/tests/components/mullvad/ @meichthys
|
||||
@@ -776,6 +807,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/nsw_fuel_station/ @nickw444
|
||||
/homeassistant/components/nsw_rural_fire_service_feed/ @exxamalte
|
||||
/tests/components/nsw_rural_fire_service_feed/ @exxamalte
|
||||
/homeassistant/components/nuheat/ @tstabrawa
|
||||
/tests/components/nuheat/ @tstabrawa
|
||||
/homeassistant/components/nuki/ @pschmitt @pvizeli @pree
|
||||
/tests/components/nuki/ @pschmitt @pvizeli @pree
|
||||
/homeassistant/components/numato/ @clssn
|
||||
@@ -784,8 +817,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/number/ @home-assistant/core @Shulyaka
|
||||
/homeassistant/components/nut/ @bdraco @ollo69
|
||||
/tests/components/nut/ @bdraco @ollo69
|
||||
/homeassistant/components/nws/ @MatthewFlamm
|
||||
/tests/components/nws/ @MatthewFlamm
|
||||
/homeassistant/components/nws/ @MatthewFlamm @kamiyo
|
||||
/tests/components/nws/ @MatthewFlamm @kamiyo
|
||||
/homeassistant/components/nzbget/ @chriscla
|
||||
/tests/components/nzbget/ @chriscla
|
||||
/homeassistant/components/obihai/ @dshokouhi
|
||||
@@ -822,11 +855,13 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/openweathermap/ @fabaff @freekode @nzapponi
|
||||
/homeassistant/components/opnsense/ @mtreinish
|
||||
/tests/components/opnsense/ @mtreinish
|
||||
/homeassistant/components/oralb/ @bdraco
|
||||
/tests/components/oralb/ @bdraco
|
||||
/homeassistant/components/oralb/ @bdraco @conway20
|
||||
/tests/components/oralb/ @bdraco @conway20
|
||||
/homeassistant/components/oru/ @bvlaicu
|
||||
/homeassistant/components/overkiz/ @imicknl @vlebourl @tetienne
|
||||
/tests/components/overkiz/ @imicknl @vlebourl @tetienne
|
||||
/homeassistant/components/otbr/ @home-assistant/core
|
||||
/tests/components/otbr/ @home-assistant/core
|
||||
/homeassistant/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev
|
||||
/tests/components/overkiz/ @imicknl @vlebourl @tetienne @nyroDev
|
||||
/homeassistant/components/ovo_energy/ @timmo001
|
||||
/tests/components/ovo_energy/ @timmo001
|
||||
/homeassistant/components/p1_monitor/ @klaasnicolaas
|
||||
@@ -876,8 +911,12 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/ps4/ @ktnrg45
|
||||
/homeassistant/components/pure_energie/ @klaasnicolaas
|
||||
/tests/components/pure_energie/ @klaasnicolaas
|
||||
/homeassistant/components/purpleair/ @bachya
|
||||
/tests/components/purpleair/ @bachya
|
||||
/homeassistant/components/push/ @dgomes
|
||||
/tests/components/push/ @dgomes
|
||||
/homeassistant/components/pushbullet/ @engrbm87
|
||||
/tests/components/pushbullet/ @engrbm87
|
||||
/homeassistant/components/pushover/ @engrbm87
|
||||
/tests/components/pushover/ @engrbm87
|
||||
/homeassistant/components/pvoutput/ @frenck
|
||||
@@ -903,7 +942,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/radio_browser/ @frenck
|
||||
/homeassistant/components/radiotherm/ @bdraco @vinnyfuria
|
||||
/tests/components/radiotherm/ @bdraco @vinnyfuria
|
||||
/homeassistant/components/rainbird/ @konikvranik
|
||||
/homeassistant/components/rainbird/ @konikvranik @allenporter
|
||||
/tests/components/rainbird/ @konikvranik @allenporter
|
||||
/homeassistant/components/raincloud/ @vanstinator
|
||||
/homeassistant/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
|
||||
/tests/components/rainforest_eagle/ @gtdiehl @jcalbert @hastarin
|
||||
@@ -924,6 +964,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/remote/ @home-assistant/core
|
||||
/homeassistant/components/renault/ @epenet
|
||||
/tests/components/renault/ @epenet
|
||||
/homeassistant/components/reolink/ @starkillerOG
|
||||
/tests/components/reolink/ @starkillerOG
|
||||
/homeassistant/components/repairs/ @home-assistant/core
|
||||
/tests/components/repairs/ @home-assistant/core
|
||||
/homeassistant/components/repetier/ @MTrab @ShadowBr0ther
|
||||
@@ -955,6 +997,10 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/rtsp_to_webrtc/ @allenporter
|
||||
/homeassistant/components/ruckus_unleashed/ @gabe565
|
||||
/tests/components/ruckus_unleashed/ @gabe565
|
||||
/homeassistant/components/ruuvi_gateway/ @akx
|
||||
/tests/components/ruuvi_gateway/ @akx
|
||||
/homeassistant/components/ruuvitag_ble/ @akx
|
||||
/tests/components/ruuvitag_ble/ @akx
|
||||
/homeassistant/components/sabnzbd/ @shaiu
|
||||
/tests/components/sabnzbd/ @shaiu
|
||||
/homeassistant/components/safe_mode/ @home-assistant/core
|
||||
@@ -985,6 +1031,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/senseme/ @mikelawrence @bdraco
|
||||
/homeassistant/components/sensibo/ @andrey-git @gjohansson-ST
|
||||
/tests/components/sensibo/ @andrey-git @gjohansson-ST
|
||||
/homeassistant/components/sensirion_ble/ @akx
|
||||
/tests/components/sensirion_ble/ @akx
|
||||
/homeassistant/components/sensor/ @home-assistant/core
|
||||
/tests/components/sensor/ @home-assistant/core
|
||||
/homeassistant/components/sensorpro/ @bdraco
|
||||
@@ -997,12 +1045,14 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/senz/ @milanmeu
|
||||
/homeassistant/components/serial/ @fabaff
|
||||
/homeassistant/components/seven_segments/ @fabaff
|
||||
/homeassistant/components/sfr_box/ @epenet
|
||||
/tests/components/sfr_box/ @epenet
|
||||
/homeassistant/components/sharkiq/ @JeffResc @funkybunch @AritroSaha10
|
||||
/tests/components/sharkiq/ @JeffResc @funkybunch @AritroSaha10
|
||||
/homeassistant/components/shell_command/ @home-assistant/core
|
||||
/tests/components/shell_command/ @home-assistant/core
|
||||
/homeassistant/components/shelly/ @balloob @bieniu @thecode @chemelli74
|
||||
/tests/components/shelly/ @balloob @bieniu @thecode @chemelli74
|
||||
/homeassistant/components/shelly/ @balloob @bieniu @thecode @chemelli74 @bdraco
|
||||
/tests/components/shelly/ @balloob @bieniu @thecode @chemelli74 @bdraco
|
||||
/homeassistant/components/shodan/ @fabaff
|
||||
/homeassistant/components/sia/ @eavanvalkenburg
|
||||
/tests/components/sia/ @eavanvalkenburg
|
||||
@@ -1078,6 +1128,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/srp_energy/ @briglx
|
||||
/homeassistant/components/starline/ @anonym-tsk
|
||||
/tests/components/starline/ @anonym-tsk
|
||||
/homeassistant/components/starlink/ @boswelja
|
||||
/tests/components/starlink/ @boswelja
|
||||
/homeassistant/components/statistics/ @fabaff @ThomDietrich
|
||||
/tests/components/statistics/ @fabaff @ThomDietrich
|
||||
/homeassistant/components/steam_online/ @tkdrob
|
||||
@@ -1107,8 +1159,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/switch_as_x/ @home-assistant/core
|
||||
/homeassistant/components/switchbee/ @jafar-atili
|
||||
/tests/components/switchbee/ @jafar-atili
|
||||
/homeassistant/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston
|
||||
/tests/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston
|
||||
/homeassistant/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
|
||||
/tests/components/switchbot/ @bdraco @danielhiversen @RenierM26 @murtas @Eloston @dsypniewski
|
||||
/homeassistant/components/switcher_kis/ @tomerfi @thecode
|
||||
/tests/components/switcher_kis/ @tomerfi @thecode
|
||||
/homeassistant/components/switchmate/ @danielhiversen @qiz-li
|
||||
@@ -1121,8 +1173,8 @@ build.json @home-assistant/supervisor
|
||||
/homeassistant/components/synology_srm/ @aerialls
|
||||
/homeassistant/components/system_bridge/ @timmo001
|
||||
/tests/components/system_bridge/ @timmo001
|
||||
/homeassistant/components/tado/ @michaelarnauts @north3221
|
||||
/tests/components/tado/ @michaelarnauts @north3221
|
||||
/homeassistant/components/tado/ @michaelarnauts
|
||||
/tests/components/tado/ @michaelarnauts
|
||||
/homeassistant/components/tag/ @balloob @dmulcahey
|
||||
/tests/components/tag/ @balloob @dmulcahey
|
||||
/homeassistant/components/tailscale/ @frenck
|
||||
@@ -1140,6 +1192,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/template/ @PhracturedBlue @tetienne @home-assistant/core
|
||||
/homeassistant/components/tesla_wall_connector/ @einarhauks
|
||||
/tests/components/tesla_wall_connector/ @einarhauks
|
||||
/homeassistant/components/text/ @home-assistant/core
|
||||
/tests/components/text/ @home-assistant/core
|
||||
/homeassistant/components/tfiac/ @fredrike @mellado
|
||||
/homeassistant/components/thermobeacon/ @bdraco
|
||||
/tests/components/thermobeacon/ @bdraco
|
||||
@@ -1262,14 +1316,14 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/weather/ @home-assistant/core
|
||||
/homeassistant/components/webhook/ @home-assistant/core
|
||||
/tests/components/webhook/ @home-assistant/core
|
||||
/homeassistant/components/webostv/ @bendavid @thecode
|
||||
/tests/components/webostv/ @bendavid @thecode
|
||||
/homeassistant/components/webostv/ @thecode
|
||||
/tests/components/webostv/ @thecode
|
||||
/homeassistant/components/websocket_api/ @home-assistant/core
|
||||
/tests/components/websocket_api/ @home-assistant/core
|
||||
/homeassistant/components/wemo/ @esev
|
||||
/tests/components/wemo/ @esev
|
||||
/homeassistant/components/whirlpool/ @abmantis
|
||||
/tests/components/whirlpool/ @abmantis
|
||||
/homeassistant/components/whirlpool/ @abmantis @mkmer
|
||||
/tests/components/whirlpool/ @abmantis @mkmer
|
||||
/homeassistant/components/whois/ @frenck
|
||||
/tests/components/whois/ @frenck
|
||||
/homeassistant/components/wiffi/ @mampfes
|
||||
@@ -1325,6 +1379,8 @@ build.json @home-assistant/supervisor
|
||||
/tests/components/zeroconf/ @bdraco
|
||||
/homeassistant/components/zerproc/ @emlove
|
||||
/tests/components/zerproc/ @emlove
|
||||
/homeassistant/components/zeversolar/ @kvanzuijlen
|
||||
/tests/components/zeversolar/ @kvanzuijlen
|
||||
/homeassistant/components/zha/ @dmulcahey @adminiuga @puddly
|
||||
/tests/components/zha/ @dmulcahey @adminiuga @puddly
|
||||
/homeassistant/components/zodiac/ @JulienTant
|
||||
@@ -1334,8 +1390,8 @@ build.json @home-assistant/supervisor
|
||||
/homeassistant/components/zoneminder/ @rohankapoorcom
|
||||
/homeassistant/components/zwave_js/ @home-assistant/z-wave
|
||||
/tests/components/zwave_js/ @home-assistant/z-wave
|
||||
/homeassistant/components/zwave_me/ @lawfulchaos @Z-Wave-Me
|
||||
/tests/components/zwave_me/ @lawfulchaos @Z-Wave-Me
|
||||
/homeassistant/components/zwave_me/ @lawfulchaos @Z-Wave-Me @PoltoS
|
||||
/tests/components/zwave_me/ @lawfulchaos @Z-Wave-Me @PoltoS
|
||||
|
||||
# Individual files
|
||||
/homeassistant/components/demo/weather.py @fabaff
|
||||
|
47
Dockerfile
47
Dockerfile
@@ -11,22 +11,51 @@ WORKDIR /usr/src
|
||||
COPY requirements.txt homeassistant/
|
||||
COPY homeassistant/package_constraints.txt homeassistant/homeassistant/
|
||||
RUN \
|
||||
pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
|
||||
-r homeassistant/requirements.txt --use-deprecated=legacy-resolver
|
||||
COPY requirements_all.txt home_assistant_frontend-* homeassistant/
|
||||
pip3 install \
|
||||
--no-cache-dir \
|
||||
--no-index \
|
||||
--only-binary=:all: \
|
||||
--find-links "${WHEELS_LINKS}" \
|
||||
--use-deprecated=legacy-resolver \
|
||||
-r homeassistant/requirements.txt
|
||||
|
||||
COPY requirements_all.txt home_assistant_frontend-* home_assistant_intents-* homeassistant/
|
||||
RUN \
|
||||
if ls homeassistant/home_assistant_frontend*.whl 1> /dev/null 2>&1; then \
|
||||
pip3 install --no-cache-dir --no-index homeassistant/home_assistant_frontend-*.whl; \
|
||||
pip3 install \
|
||||
--no-cache-dir \
|
||||
--no-index \
|
||||
homeassistant/home_assistant_frontend-*.whl; \
|
||||
fi \
|
||||
&& pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
|
||||
-r homeassistant/requirements_all.txt --use-deprecated=legacy-resolver
|
||||
&& if ls homeassistant/home_assistant_intents*.whl 1> /dev/null 2>&1; then \
|
||||
pip3 install \
|
||||
--no-cache-dir \
|
||||
--no-index \
|
||||
homeassistant/home_assistant_intents-*.whl; \
|
||||
fi \
|
||||
&& \
|
||||
LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" \
|
||||
MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:20000,muzzy_decay_ms:20000" \
|
||||
pip3 install \
|
||||
--no-cache-dir \
|
||||
--no-index \
|
||||
--only-binary=:all: \
|
||||
--find-links "${WHEELS_LINKS}" \
|
||||
--use-deprecated=legacy-resolver \
|
||||
-r homeassistant/requirements_all.txt
|
||||
|
||||
## Setup Home Assistant Core
|
||||
COPY . homeassistant/
|
||||
RUN \
|
||||
pip3 install --no-cache-dir --no-index --only-binary=:all: --find-links "${WHEELS_LINKS}" \
|
||||
-e ./homeassistant --use-deprecated=legacy-resolver \
|
||||
&& python3 -m compileall homeassistant/homeassistant
|
||||
pip3 install \
|
||||
--no-cache-dir \
|
||||
--no-index \
|
||||
--only-binary=:all: \
|
||||
--find-links "${WHEELS_LINKS}" \
|
||||
--use-deprecated=legacy-resolver \
|
||||
-e ./homeassistant \
|
||||
&& python3 -m compileall \
|
||||
homeassistant/homeassistant
|
||||
|
||||
# Home Assistant S6-Overlay
|
||||
COPY rootfs /
|
||||
|
10
build.yaml
10
build.yaml
@@ -1,11 +1,11 @@
|
||||
image: homeassistant/{arch}-homeassistant
|
||||
shadow_repository: ghcr.io/home-assistant
|
||||
build_from:
|
||||
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2022.10.0
|
||||
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2022.10.0
|
||||
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2022.10.0
|
||||
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2022.10.0
|
||||
i386: ghcr.io/home-assistant/i386-homeassistant-base:2022.10.0
|
||||
aarch64: ghcr.io/home-assistant/aarch64-homeassistant-base:2022.11.0
|
||||
armhf: ghcr.io/home-assistant/armhf-homeassistant-base:2022.11.0
|
||||
armv7: ghcr.io/home-assistant/armv7-homeassistant-base:2022.11.0
|
||||
amd64: ghcr.io/home-assistant/amd64-homeassistant-base:2022.11.0
|
||||
i386: ghcr.io/home-assistant/i386-homeassistant-base:2022.11.0
|
||||
codenotary:
|
||||
signer: notary@home-assistant.io
|
||||
base_image: notary@home-assistant.io
|
||||
|
@@ -1,6 +1,5 @@
|
||||
"""
|
||||
Sphinx extension to add ReadTheDocs-style "Edit on GitHub" links to the
|
||||
sidebar.
|
||||
Sphinx extension for ReadTheDocs-style "Edit on GitHub" links on the sidebar.
|
||||
|
||||
Loosely based on https://github.com/astropy/astropy/pull/347
|
||||
"""
|
||||
@@ -12,6 +11,7 @@ __licence__ = "BSD (3 clause)"
|
||||
|
||||
|
||||
def get_github_url(app, view, path):
|
||||
"""Build the GitHub URL."""
|
||||
return (
|
||||
f"https://github.com/{app.config.edit_on_github_project}/"
|
||||
f"{view}/{app.config.edit_on_github_branch}/"
|
||||
@@ -20,6 +20,7 @@ def get_github_url(app, view, path):
|
||||
|
||||
|
||||
def html_page_context(app, pagename, templatename, context, doctree):
|
||||
"""Build the HTML page."""
|
||||
if templatename != "page.html":
|
||||
return
|
||||
|
||||
@@ -38,6 +39,7 @@ def html_page_context(app, pagename, templatename, context, doctree):
|
||||
|
||||
|
||||
def setup(app):
|
||||
"""Set up the app."""
|
||||
app.add_config_value("edit_on_github_project", "", True)
|
||||
app.add_config_value("edit_on_github_branch", "master", True)
|
||||
app.add_config_value("edit_on_github_src_path", "", True) # 'eg' "docs/"
|
||||
|
@@ -25,7 +25,7 @@ from homeassistant.const import __short_version__, __version__
|
||||
PROJECT_NAME = "Home Assistant"
|
||||
PROJECT_PACKAGE_NAME = "homeassistant"
|
||||
PROJECT_AUTHOR = "The Home Assistant Authors"
|
||||
PROJECT_COPYRIGHT = f" 2013-2020, {PROJECT_AUTHOR}"
|
||||
PROJECT_COPYRIGHT = PROJECT_AUTHOR
|
||||
PROJECT_LONG_DESCRIPTION = (
|
||||
"Home Assistant is an open-source "
|
||||
"home automation platform running on Python 3. "
|
||||
|
@@ -15,7 +15,10 @@ FAULT_LOG_FILENAME = "home-assistant.log.fault"
|
||||
def validate_os() -> None:
|
||||
"""Validate that Home Assistant is running in a supported operating system."""
|
||||
if not sys.platform.startswith(("darwin", "linux")):
|
||||
print("Home Assistant only supports Linux, OSX and Windows using WSL")
|
||||
print(
|
||||
"Home Assistant only supports Linux, OSX and Windows using WSL",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
@@ -24,7 +27,8 @@ def validate_python() -> None:
|
||||
if sys.version_info[:3] < REQUIRED_PYTHON_VER:
|
||||
print(
|
||||
"Home Assistant requires at least Python "
|
||||
f"{REQUIRED_PYTHON_VER[0]}.{REQUIRED_PYTHON_VER[1]}.{REQUIRED_PYTHON_VER[2]}"
|
||||
f"{REQUIRED_PYTHON_VER[0]}.{REQUIRED_PYTHON_VER[1]}.{REQUIRED_PYTHON_VER[2]}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
@@ -39,18 +43,23 @@ def ensure_config_path(config_dir: str) -> None:
|
||||
# Test if configuration directory exists
|
||||
if not os.path.isdir(config_dir):
|
||||
if config_dir != config_util.get_default_config_dir():
|
||||
if os.path.exists(config_dir):
|
||||
reason = "is not a directory"
|
||||
else:
|
||||
reason = "does not exist"
|
||||
print(
|
||||
f"Fatal Error: Specified configuration directory {config_dir} "
|
||||
"does not exist"
|
||||
f"Fatal Error: Specified configuration directory {config_dir} {reason}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
try:
|
||||
os.mkdir(config_dir)
|
||||
except OSError:
|
||||
except OSError as ex:
|
||||
print(
|
||||
"Fatal Error: Unable to create default configuration "
|
||||
f"directory {config_dir}"
|
||||
f"directory {config_dir}: {ex}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
@@ -58,8 +67,11 @@ def ensure_config_path(config_dir: str) -> None:
|
||||
if not os.path.isdir(lib_dir):
|
||||
try:
|
||||
os.mkdir(lib_dir)
|
||||
except OSError:
|
||||
print(f"Fatal Error: Unable to create library directory {lib_dir}")
|
||||
except OSError as ex:
|
||||
print(
|
||||
f"Fatal Error: Unable to create library directory {lib_dir}: {ex}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
@@ -89,11 +101,21 @@ def get_arguments() -> argparse.Namespace:
|
||||
parser.add_argument(
|
||||
"--open-ui", action="store_true", help="Open the webinterface in a browser"
|
||||
)
|
||||
parser.add_argument(
|
||||
|
||||
skip_pip_group = parser.add_mutually_exclusive_group()
|
||||
skip_pip_group.add_argument(
|
||||
"--skip-pip",
|
||||
action="store_true",
|
||||
help="Skips pip install of required packages on startup",
|
||||
)
|
||||
skip_pip_group.add_argument(
|
||||
"--skip-pip-packages",
|
||||
metavar="package_names",
|
||||
type=lambda arg: arg.split(","),
|
||||
default=[],
|
||||
help="Skip pip install of specific packages on startup",
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-v", "--verbose", action="store_true", help="Enable verbose logging to file."
|
||||
)
|
||||
@@ -180,6 +202,7 @@ def main() -> int:
|
||||
log_file=args.log_file,
|
||||
log_no_color=args.log_no_color,
|
||||
skip_pip=args.skip_pip,
|
||||
skip_pip_packages=args.skip_pip_packages,
|
||||
safe_mode=args.safe_mode,
|
||||
debug=args.debug,
|
||||
open_ui=args.open_ui,
|
||||
|
@@ -87,7 +87,7 @@ class AuthManagerFlowManager(data_entry_flow.FlowManager):
|
||||
|
||||
async def async_create_flow(
|
||||
self,
|
||||
handler_key: Any,
|
||||
handler_key: str,
|
||||
*,
|
||||
context: dict[str, Any] | None = None,
|
||||
data: dict[str, Any] | None = None,
|
||||
@@ -356,8 +356,7 @@ class AuthManager:
|
||||
provider = self._async_get_auth_provider(credentials)
|
||||
|
||||
if provider is not None and hasattr(provider, "async_will_remove_credentials"):
|
||||
# https://github.com/python/mypy/issues/1424
|
||||
await provider.async_will_remove_credentials(credentials) # type: ignore[attr-defined]
|
||||
await provider.async_will_remove_credentials(credentials)
|
||||
|
||||
await self._store.async_remove_credentials(credentials)
|
||||
|
||||
@@ -535,7 +534,8 @@ class AuthManager:
|
||||
)
|
||||
if provider is None:
|
||||
raise InvalidProvider(
|
||||
f"Auth provider {refresh_token.credential.auth_provider_type}, {refresh_token.credential.auth_provider_id} not available"
|
||||
f"Auth provider {refresh_token.credential.auth_provider_type},"
|
||||
f" {refresh_token.credential.auth_provider_id} not available"
|
||||
)
|
||||
return provider
|
||||
|
||||
|
@@ -449,8 +449,10 @@ class AuthStore:
|
||||
created_at = dt_util.parse_datetime(rt_dict["created_at"])
|
||||
if created_at is None:
|
||||
getLogger(__name__).error(
|
||||
(
|
||||
"Ignoring refresh token %(id)s with invalid created_at "
|
||||
"%(created_at)s for user_id %(user_id)s",
|
||||
"%(created_at)s for user_id %(user_id)s"
|
||||
),
|
||||
rt_dict,
|
||||
)
|
||||
continue
|
||||
@@ -553,7 +555,9 @@ class AuthStore:
|
||||
"client_icon": refresh_token.client_icon,
|
||||
"token_type": refresh_token.token_type,
|
||||
"created_at": refresh_token.created_at.isoformat(),
|
||||
"access_token_expiration": refresh_token.access_token_expiration.total_seconds(),
|
||||
"access_token_expiration": (
|
||||
refresh_token.access_token_expiration.total_seconds()
|
||||
),
|
||||
"token": refresh_token.token,
|
||||
"jwt_key": refresh_token.jwt_key,
|
||||
"last_used_at": refresh_token.last_used_at.isoformat()
|
||||
|
@@ -116,9 +116,7 @@ class SetupFlow(data_entry_flow.FlowHandler):
|
||||
|
||||
if user_input:
|
||||
result = await self._auth_module.async_setup_user(self._user_id, user_input)
|
||||
return self.async_create_entry(
|
||||
title=self._auth_module.name, data={"result": result}
|
||||
)
|
||||
return self.async_create_entry(data={"result": result})
|
||||
|
||||
return self.async_show_form(
|
||||
step_id="init", data_schema=self._setup_schema, errors=errors
|
||||
@@ -166,7 +164,6 @@ async def _load_mfa_module(hass: HomeAssistant, module_name: str) -> types.Modul
|
||||
|
||||
processed = hass.data[DATA_REQS] = set()
|
||||
|
||||
# https://github.com/python/mypy/issues/1424
|
||||
await requirements.async_process_requirements(
|
||||
hass, module_path, module.REQUIREMENTS
|
||||
)
|
||||
|
@@ -26,7 +26,7 @@ from . import (
|
||||
SetupFlow,
|
||||
)
|
||||
|
||||
REQUIREMENTS = ["pyotp==2.7.0"]
|
||||
REQUIREMENTS = ["pyotp==2.8.0"]
|
||||
|
||||
CONF_MESSAGE = "message"
|
||||
|
||||
@@ -330,7 +330,7 @@ class NotifySetupFlow(SetupFlow):
|
||||
self._user_id,
|
||||
{"notify_service": self._notify_service, "target": self._target},
|
||||
)
|
||||
return self.async_create_entry(title=self._auth_module.name, data={})
|
||||
return self.async_create_entry(data={})
|
||||
|
||||
errors["base"] = "invalid_code"
|
||||
|
||||
|
@@ -19,7 +19,7 @@ from . import (
|
||||
SetupFlow,
|
||||
)
|
||||
|
||||
REQUIREMENTS = ["pyotp==2.7.0", "PyQRCode==1.2.1"]
|
||||
REQUIREMENTS = ["pyotp==2.8.0", "PyQRCode==1.2.1"]
|
||||
|
||||
CONFIG_SCHEMA = MULTI_FACTOR_AUTH_MODULE_SCHEMA.extend({}, extra=vol.PREVENT_EXTRA)
|
||||
|
||||
@@ -47,8 +47,10 @@ def _generate_qr_code(data: str) -> str:
|
||||
.decode("ascii")
|
||||
.replace("\n", "")
|
||||
.replace(
|
||||
(
|
||||
'<?xml version="1.0" encoding="UTF-8"?>'
|
||||
'<svg xmlns="http://www.w3.org/2000/svg"',
|
||||
'<svg xmlns="http://www.w3.org/2000/svg"'
|
||||
),
|
||||
"<svg",
|
||||
)
|
||||
)
|
||||
@@ -206,9 +208,7 @@ class TotpSetupFlow(SetupFlow):
|
||||
result = await self._auth_module.async_setup_user(
|
||||
self._user_id, {"secret": self._ota_secret}
|
||||
)
|
||||
return self.async_create_entry(
|
||||
title=self._auth_module.name, data={"result": result}
|
||||
)
|
||||
return self.async_create_entry(data={"result": result})
|
||||
|
||||
errors["base"] = "invalid_code"
|
||||
|
||||
|
@@ -47,7 +47,7 @@ def _lookup_domain(
|
||||
perm_lookup: PermissionLookup, domains_dict: SubCategoryDict, entity_id: str
|
||||
) -> ValueType | None:
|
||||
"""Look up entity permissions by domain."""
|
||||
return domains_dict.get(entity_id.split(".", 1)[0])
|
||||
return domains_dict.get(entity_id.partition(".")[0])
|
||||
|
||||
|
||||
def _lookup_area(
|
||||
|
@@ -250,9 +250,7 @@ class LoginFlow(data_entry_flow.FlowHandler):
|
||||
auth_module, "async_initialize_login_mfa_step"
|
||||
):
|
||||
try:
|
||||
await auth_module.async_initialize_login_mfa_step( # type: ignore[attr-defined]
|
||||
self.user.id
|
||||
)
|
||||
await auth_module.async_initialize_login_mfa_step(self.user.id)
|
||||
except HomeAssistantError:
|
||||
_LOGGER.exception("Error initializing MFA step")
|
||||
return self.async_abort(reason="unknown_error")
|
||||
@@ -286,4 +284,4 @@ class LoginFlow(data_entry_flow.FlowHandler):
|
||||
|
||||
async def async_finish(self, flow_result: Any) -> FlowResult:
|
||||
"""Handle the pass of login flow."""
|
||||
return self.async_create_entry(title=self._auth_provider.name, data=flow_result)
|
||||
return self.async_create_entry(data=flow_result)
|
||||
|
@@ -88,12 +88,12 @@ class CommandLineAuthProvider(AuthProvider):
|
||||
for _line in stdout.splitlines():
|
||||
try:
|
||||
line = _line.decode().lstrip()
|
||||
if line.startswith("#"):
|
||||
continue
|
||||
key, value = line.split("=", 1)
|
||||
except ValueError:
|
||||
# malformed line
|
||||
continue
|
||||
if line.startswith("#") or "=" not in line:
|
||||
continue
|
||||
key, _, value = line.partition("=")
|
||||
key = key.strip()
|
||||
value = value.strip()
|
||||
if key in self.ALLOWED_META_KEYS:
|
||||
|
@@ -93,9 +93,11 @@ class Data:
|
||||
self.is_legacy = True
|
||||
|
||||
logging.getLogger(__name__).warning(
|
||||
(
|
||||
"Home Assistant auth provider is running in legacy mode "
|
||||
"because we detected usernames that are case-insensitive"
|
||||
"equivalent. Please change the username: '%s'.",
|
||||
"equivalent. Please change the username: '%s'."
|
||||
),
|
||||
username,
|
||||
)
|
||||
|
||||
@@ -108,9 +110,11 @@ class Data:
|
||||
self.is_legacy = True
|
||||
|
||||
logging.getLogger(__name__).warning(
|
||||
(
|
||||
"Home Assistant auth provider is running in legacy mode "
|
||||
"because we detected usernames that start or end in a "
|
||||
"space. Please change the username: '%s'.",
|
||||
"space. Please change the username: '%s'."
|
||||
),
|
||||
username,
|
||||
)
|
||||
|
||||
|
@@ -8,7 +8,9 @@ from .util.async_ import protect_loop
|
||||
def enable() -> None:
|
||||
"""Enable the detection of blocking calls in the event loop."""
|
||||
# Prevent urllib3 and requests doing I/O in event loop
|
||||
HTTPConnection.putrequest = protect_loop(HTTPConnection.putrequest) # type: ignore[assignment]
|
||||
HTTPConnection.putrequest = protect_loop( # type: ignore[assignment]
|
||||
HTTPConnection.putrequest
|
||||
)
|
||||
|
||||
# Prevent sleeping in event loop. Non-strict since 2022.02
|
||||
time.sleep = protect_loop(time.sleep, strict=False)
|
||||
|
@@ -17,7 +17,7 @@ import voluptuous as vol
|
||||
import yarl
|
||||
|
||||
from . import config as conf_util, config_entries, core, loader
|
||||
from .components import http, persistent_notification
|
||||
from .components import http
|
||||
from .const import (
|
||||
REQUIRED_NEXT_PYTHON_HA_RELEASE,
|
||||
REQUIRED_NEXT_PYTHON_VER,
|
||||
@@ -53,6 +53,7 @@ ERROR_LOG_FILENAME = "home-assistant.log"
|
||||
|
||||
# hass.data key for logging information.
|
||||
DATA_LOGGING = "logging"
|
||||
DATA_REGISTRIES_LOADED = "bootstrap_registries_loaded"
|
||||
|
||||
LOG_SLOW_STARTUP_INTERVAL = 60
|
||||
SLOW_STARTUP_CHECK_INTERVAL = 1
|
||||
@@ -117,7 +118,8 @@ async def async_setup_hass(
|
||||
)
|
||||
|
||||
hass.config.skip_pip = runtime_config.skip_pip
|
||||
if runtime_config.skip_pip:
|
||||
hass.config.skip_pip_packages = runtime_config.skip_pip_packages
|
||||
if runtime_config.skip_pip or runtime_config.skip_pip_packages:
|
||||
_LOGGER.warning(
|
||||
"Skipping pip installation of required modules. This may cause issues"
|
||||
)
|
||||
@@ -175,6 +177,7 @@ async def async_setup_hass(
|
||||
if old_logging:
|
||||
hass.data[DATA_LOGGING] = old_logging
|
||||
hass.config.skip_pip = old_config.skip_pip
|
||||
hass.config.skip_pip_packages = old_config.skip_pip_packages
|
||||
hass.config.internal_url = old_config.internal_url
|
||||
hass.config.external_url = old_config.external_url
|
||||
hass.config.config_dir = old_config.config_dir
|
||||
@@ -216,6 +219,32 @@ def open_hass_ui(hass: core.HomeAssistant) -> None:
|
||||
)
|
||||
|
||||
|
||||
async def load_registries(hass: core.HomeAssistant) -> None:
|
||||
"""Load the registries and cache the result of platform.uname().processor."""
|
||||
if DATA_REGISTRIES_LOADED in hass.data:
|
||||
return
|
||||
hass.data[DATA_REGISTRIES_LOADED] = None
|
||||
|
||||
def _cache_uname_processor() -> None:
|
||||
"""Cache the result of platform.uname().processor in the executor.
|
||||
|
||||
Multiple modules call this function at startup which
|
||||
executes a blocking subprocess call. This is a problem for the
|
||||
asyncio event loop. By primeing the cache of uname we can
|
||||
avoid the blocking call in the event loop.
|
||||
"""
|
||||
platform.uname().processor # pylint: disable=expression-not-assigned
|
||||
|
||||
# Load the registries and cache the result of platform.uname().processor
|
||||
await asyncio.gather(
|
||||
area_registry.async_load(hass),
|
||||
device_registry.async_load(hass),
|
||||
entity_registry.async_load(hass),
|
||||
issue_registry.async_load(hass),
|
||||
hass.async_add_executor_job(_cache_uname_processor),
|
||||
)
|
||||
|
||||
|
||||
async def async_from_config_dict(
|
||||
config: ConfigType, hass: core.HomeAssistant
|
||||
) -> core.HomeAssistant | None:
|
||||
@@ -228,6 +257,7 @@ async def async_from_config_dict(
|
||||
|
||||
hass.config_entries = config_entries.ConfigEntries(hass, config)
|
||||
await hass.config_entries.async_initialize()
|
||||
await load_registries(hass)
|
||||
|
||||
# Set up core.
|
||||
_LOGGER.debug("Setting up %s", CORE_INTEGRATIONS)
|
||||
@@ -254,8 +284,7 @@ async def async_from_config_dict(
|
||||
return None
|
||||
except HomeAssistantError:
|
||||
_LOGGER.error(
|
||||
"Home Assistant core failed to initialize. "
|
||||
"Further initialization aborted"
|
||||
"Home Assistant core failed to initialize. Further initialization aborted"
|
||||
)
|
||||
return None
|
||||
|
||||
@@ -268,16 +297,31 @@ async def async_from_config_dict(
|
||||
REQUIRED_NEXT_PYTHON_HA_RELEASE
|
||||
and sys.version_info[:3] < REQUIRED_NEXT_PYTHON_VER
|
||||
):
|
||||
msg = (
|
||||
"Support for the running Python version "
|
||||
f"{'.'.join(str(x) for x in sys.version_info[:3])} is deprecated and will "
|
||||
f"be removed in Home Assistant {REQUIRED_NEXT_PYTHON_HA_RELEASE}. "
|
||||
"Please upgrade Python to "
|
||||
f"{'.'.join(str(x) for x in REQUIRED_NEXT_PYTHON_VER[:2])}."
|
||||
current_python_version = ".".join(str(x) for x in sys.version_info[:3])
|
||||
required_python_version = ".".join(str(x) for x in REQUIRED_NEXT_PYTHON_VER[:2])
|
||||
_LOGGER.warning(
|
||||
(
|
||||
"Support for the running Python version %s is deprecated and "
|
||||
"will be removed in Home Assistant %s; "
|
||||
"Please upgrade Python to %s"
|
||||
),
|
||||
current_python_version,
|
||||
REQUIRED_NEXT_PYTHON_HA_RELEASE,
|
||||
required_python_version,
|
||||
)
|
||||
_LOGGER.warning(msg)
|
||||
persistent_notification.async_create(
|
||||
hass, msg, "Python version", "python_version"
|
||||
issue_registry.async_create_issue(
|
||||
hass,
|
||||
core.DOMAIN,
|
||||
"python_version",
|
||||
is_fixable=False,
|
||||
severity=issue_registry.IssueSeverity.WARNING,
|
||||
breaks_in_ha_version=REQUIRED_NEXT_PYTHON_HA_RELEASE,
|
||||
translation_key="python_version",
|
||||
translation_placeholders={
|
||||
"current_python_version": current_python_version,
|
||||
"required_python_version": required_python_version,
|
||||
"breaks_in_ha_version": REQUIRED_NEXT_PYTHON_HA_RELEASE,
|
||||
},
|
||||
)
|
||||
|
||||
return hass
|
||||
@@ -341,7 +385,11 @@ def async_enable_logging(
|
||||
)
|
||||
threading.excepthook = lambda args: logging.getLogger(None).exception(
|
||||
"Uncaught thread exception",
|
||||
exc_info=(args.exc_type, args.exc_value, args.exc_traceback), # type: ignore[arg-type]
|
||||
exc_info=( # type: ignore[arg-type]
|
||||
args.exc_type,
|
||||
args.exc_value,
|
||||
args.exc_traceback,
|
||||
),
|
||||
)
|
||||
|
||||
# Log errors to a file if we have write access to file or config dir
|
||||
@@ -359,7 +407,10 @@ def async_enable_logging(
|
||||
not err_path_exists and os.access(err_dir, os.W_OK)
|
||||
):
|
||||
|
||||
err_handler: logging.handlers.RotatingFileHandler | logging.handlers.TimedRotatingFileHandler
|
||||
err_handler: (
|
||||
logging.handlers.RotatingFileHandler
|
||||
| logging.handlers.TimedRotatingFileHandler
|
||||
)
|
||||
if log_rotate_days:
|
||||
err_handler = logging.handlers.TimedRotatingFileHandler(
|
||||
err_log_path, when="midnight", backupCount=log_rotate_days
|
||||
@@ -404,7 +455,7 @@ async def async_mount_local_lib_path(config_dir: str) -> str:
|
||||
def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
|
||||
"""Get domains of components to set up."""
|
||||
# Filter out the repeating and common config section [homeassistant]
|
||||
domains = {key.split(" ")[0] for key in config if key != core.DOMAIN}
|
||||
domains = {key.partition(" ")[0] for key in config if key != core.DOMAIN}
|
||||
|
||||
# Add config entry domains
|
||||
if not hass.config.safe_mode:
|
||||
@@ -418,7 +469,10 @@ def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
|
||||
|
||||
|
||||
async def _async_watch_pending_setups(hass: core.HomeAssistant) -> None:
|
||||
"""Periodic log of setups that are pending for longer than LOG_SLOW_STARTUP_INTERVAL."""
|
||||
"""Periodic log of setups that are pending.
|
||||
|
||||
Pending for longer than LOG_SLOW_STARTUP_INTERVAL.
|
||||
"""
|
||||
loop_count = 0
|
||||
setup_started: dict[str, datetime] = hass.data[DATA_SETUP_STARTED]
|
||||
previous_was_empty = True
|
||||
@@ -515,25 +569,6 @@ async def _async_set_up_integrations(
|
||||
|
||||
_LOGGER.info("Domains to be set up: %s", domains_to_setup)
|
||||
|
||||
def _cache_uname_processor() -> None:
|
||||
"""Cache the result of platform.uname().processor in the executor.
|
||||
|
||||
Multiple modules call this function at startup which
|
||||
executes a blocking subprocess call. This is a problem for the
|
||||
asyncio event loop. By primeing the cache of uname we can
|
||||
avoid the blocking call in the event loop.
|
||||
"""
|
||||
platform.uname().processor # pylint: disable=expression-not-assigned
|
||||
|
||||
# Load the registries and cache the result of platform.uname().processor
|
||||
await asyncio.gather(
|
||||
area_registry.async_load(hass),
|
||||
device_registry.async_load(hass),
|
||||
entity_registry.async_load(hass),
|
||||
issue_registry.async_load(hass),
|
||||
hass.async_add_executor_job(_cache_uname_processor),
|
||||
)
|
||||
|
||||
# Initialize recorder
|
||||
if "recorder" in domains_to_setup:
|
||||
recorder.async_initialize_recorder(hass)
|
||||
|
5
homeassistant/brands/airvisual.json
Normal file
5
homeassistant/brands/airvisual.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"domain": "airvisual",
|
||||
"name": "AirVisual",
|
||||
"integrations": ["airvisual", "airvisual_pro"]
|
||||
}
|
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"domain": "amazon",
|
||||
"name": "Amazon",
|
||||
"integrations": ["alexa", "amazon_polly", "aws", "route53"]
|
||||
"integrations": ["alexa", "amazon_polly", "aws", "fire_tv", "route53"]
|
||||
}
|
||||
|
6
homeassistant/brands/eufy.json
Normal file
6
homeassistant/brands/eufy.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"domain": "eufy",
|
||||
"name": "eufy",
|
||||
"integrations": ["eufy", "eufylife_ble"],
|
||||
"iot_standards": []
|
||||
}
|
@@ -3,8 +3,10 @@
|
||||
"name": "Google",
|
||||
"integrations": [
|
||||
"google_assistant",
|
||||
"google_assistant_sdk",
|
||||
"google_cloud",
|
||||
"google_domains",
|
||||
"google_mail",
|
||||
"google_maps",
|
||||
"google_pubsub",
|
||||
"google_sheets",
|
||||
@@ -14,7 +16,6 @@
|
||||
"google",
|
||||
"nest",
|
||||
"cast",
|
||||
"hangouts",
|
||||
"dialogflow"
|
||||
]
|
||||
}
|
||||
|
5
homeassistant/brands/yamaha.json
Normal file
5
homeassistant/brands/yamaha.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"domain": "yamaha",
|
||||
"name": "Yamaha",
|
||||
"integrations": ["yamaha", "yamaha_musiccast"]
|
||||
}
|
@@ -1,4 +1,7 @@
|
||||
"""Support for Abode Security System binary sensors."""
|
||||
from __future__ import annotations
|
||||
|
||||
from contextlib import suppress
|
||||
from typing import cast
|
||||
|
||||
from abodepy.devices.binary_sensor import AbodeBinarySensor as ABBinarySensor
|
||||
@@ -47,8 +50,10 @@ class AbodeBinarySensor(AbodeDevice, BinarySensorEntity):
|
||||
return cast(bool, self._device.is_on)
|
||||
|
||||
@property
|
||||
def device_class(self) -> str:
|
||||
def device_class(self) -> BinarySensorDeviceClass | None:
|
||||
"""Return the class of the binary sensor."""
|
||||
if self._device.get_value("is_window") == "1":
|
||||
return BinarySensorDeviceClass.WINDOW
|
||||
return cast(str, self._device.generic_type)
|
||||
with suppress(ValueError):
|
||||
return BinarySensorDeviceClass(cast(str, self._device.generic_type))
|
||||
return None
|
||||
|
@@ -116,8 +116,3 @@ class AbodeLight(AbodeDevice, LightEntity):
|
||||
if self._device.is_dimmable:
|
||||
return {ColorMode.BRIGHTNESS}
|
||||
return {ColorMode.ONOFF}
|
||||
|
||||
@property
|
||||
def supported_features(self) -> int:
|
||||
"""Flag supported features."""
|
||||
return 0
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0442\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e",
|
||||
"reauth_successful": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u0442\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u043a\u0430\u0446\u0438\u044f \u0431\u0435\u0448\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u0430",
|
||||
"single_instance_allowed": "\u0420\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0430 \u0435 \u0441\u0430\u043c\u043e \u0435\u0434\u043d\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043d\u0430 Abode."
|
||||
},
|
||||
"error": {
|
||||
|
@@ -28,7 +28,7 @@
|
||||
"password": "Passwort",
|
||||
"username": "E-Mail"
|
||||
},
|
||||
"title": "Gib deine Abode-Anmeldeinformationen ein"
|
||||
"title": "Gib deine Abode Anmeldeinformationen ein"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -3,8 +3,8 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Salasana",
|
||||
"username": "S\u00e4hk\u00f6postiosoite"
|
||||
"password": "Slapta\u017eodis",
|
||||
"username": "El. pa\u0161tas"
|
||||
}
|
||||
}
|
||||
}
|
@@ -5,7 +5,7 @@
|
||||
"single_instance_allowed": "J\u00e1 configurado. Apenas uma \u00fanica configura\u00e7\u00e3o \u00e9 poss\u00edvel."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o",
|
||||
"cannot_connect": "A liga\u00e7\u00e3o falhou",
|
||||
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida",
|
||||
"invalid_mfa_code": "C\u00f3digo MFA inv\u00e1lido"
|
||||
},
|
||||
@@ -19,14 +19,14 @@
|
||||
"reauth_confirm": {
|
||||
"data": {
|
||||
"password": "Palavra-passe",
|
||||
"username": "Email"
|
||||
"username": ""
|
||||
},
|
||||
"title": "Preencha as informa\u00e7\u00f5es de login de Abode"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Palavra-passe",
|
||||
"username": "Email"
|
||||
"username": ""
|
||||
},
|
||||
"title": "Preencha as informa\u00e7\u00f5es de login de Abode"
|
||||
}
|
||||
|
@@ -1,21 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"reauth_successful": "Op\u00e4tovn\u00e9 overenie bolo \u00faspe\u0161n\u00e9"
|
||||
"reauth_successful": "Op\u00e4tovn\u00e9 overenie bolo \u00faspe\u0161n\u00e9",
|
||||
"single_instance_allowed": "U\u017e je nakonfigurovan\u00fd. Mo\u017en\u00e1 len jedna konfigur\u00e1cia."
|
||||
},
|
||||
"error": {
|
||||
"invalid_auth": "Neplatn\u00e9 overenie"
|
||||
"cannot_connect": "Nepodarilo sa pripoji\u0165",
|
||||
"invalid_auth": "Neplatn\u00e9 overenie",
|
||||
"invalid_mfa_code": "Neplatn\u00fd k\u00f3d MFA"
|
||||
},
|
||||
"step": {
|
||||
"mfa": {
|
||||
"data": {
|
||||
"mfa_code": "K\u00f3d MFA (6-miestny)"
|
||||
},
|
||||
"title": "Zadajte svoj k\u00f3d MFA pre Abode"
|
||||
},
|
||||
"reauth_confirm": {
|
||||
"data": {
|
||||
"password": "Heslo",
|
||||
"username": "Email"
|
||||
}
|
||||
},
|
||||
"title": "Vypl\u0148te svoje prihlasovacie \u00fadaje do slu\u017eby Abode"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"password": "Heslo",
|
||||
"username": "Email"
|
||||
}
|
||||
},
|
||||
"title": "Vypl\u0148te svoje prihlasovacie \u00fadaje Abode"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,9 +17,22 @@ from homeassistant.core import callback
|
||||
from homeassistant.data_entry_flow import FlowResult
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.schema_config_entry_flow import (
|
||||
SchemaFlowFormStep,
|
||||
SchemaOptionsFlowHandler,
|
||||
)
|
||||
|
||||
from .const import CONF_FORECAST, DOMAIN
|
||||
|
||||
OPTIONS_SCHEMA = vol.Schema(
|
||||
{
|
||||
vol.Optional(CONF_FORECAST, default=False): bool,
|
||||
}
|
||||
)
|
||||
OPTIONS_FLOW = {
|
||||
"init": SchemaFlowFormStep(OPTIONS_SCHEMA),
|
||||
}
|
||||
|
||||
|
||||
class AccuWeatherFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
"""Config flow for AccuWeather."""
|
||||
@@ -84,41 +97,6 @@ class AccuWeatherFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
|
||||
@staticmethod
|
||||
@callback
|
||||
def async_get_options_flow(
|
||||
config_entry: ConfigEntry,
|
||||
) -> AccuWeatherOptionsFlowHandler:
|
||||
def async_get_options_flow(config_entry: ConfigEntry) -> SchemaOptionsFlowHandler:
|
||||
"""Options callback for AccuWeather."""
|
||||
return AccuWeatherOptionsFlowHandler(config_entry)
|
||||
|
||||
|
||||
class AccuWeatherOptionsFlowHandler(config_entries.OptionsFlow):
|
||||
"""Config flow options for AccuWeather."""
|
||||
|
||||
def __init__(self, entry: ConfigEntry) -> None:
|
||||
"""Initialize AccuWeather options flow."""
|
||||
self.config_entry = entry
|
||||
|
||||
async def async_step_init(
|
||||
self, user_input: dict[str, Any] | None = None
|
||||
) -> FlowResult:
|
||||
"""Manage the options."""
|
||||
return await self.async_step_user()
|
||||
|
||||
async def async_step_user(
|
||||
self, user_input: dict[str, Any] | None = None
|
||||
) -> FlowResult:
|
||||
"""Handle a flow initialized by the user."""
|
||||
if user_input is not None:
|
||||
return self.async_create_entry(title="", data=user_input)
|
||||
|
||||
return self.async_show_form(
|
||||
step_id="user",
|
||||
data_schema=vol.Schema(
|
||||
{
|
||||
vol.Optional(
|
||||
CONF_FORECAST,
|
||||
default=self.config_entry.options.get(CONF_FORECAST, False),
|
||||
): bool
|
||||
}
|
||||
),
|
||||
)
|
||||
return SchemaOptionsFlowHandler(config_entry, OPTIONS_FLOW)
|
||||
|
@@ -1,6 +1,8 @@
|
||||
"""Diagnostics support for AccuWeather."""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
from homeassistant.components.diagnostics import async_redact_data
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE
|
||||
@@ -14,7 +16,7 @@ TO_REDACT = {CONF_API_KEY, CONF_LATITUDE, CONF_LONGITUDE}
|
||||
|
||||
async def async_get_config_entry_diagnostics(
|
||||
hass: HomeAssistant, config_entry: ConfigEntry
|
||||
) -> dict:
|
||||
) -> dict[str, Any]:
|
||||
"""Return diagnostics for a config entry."""
|
||||
coordinator: AccuWeatherDataUpdateCoordinator = hass.data[DOMAIN][
|
||||
config_entry.entry_id
|
||||
|
@@ -2,7 +2,7 @@
|
||||
"domain": "accuweather",
|
||||
"name": "AccuWeather",
|
||||
"documentation": "https://www.home-assistant.io/integrations/accuweather/",
|
||||
"requirements": ["accuweather==0.4.0"],
|
||||
"requirements": ["accuweather==0.5.0"],
|
||||
"codeowners": ["@bieniu"],
|
||||
"config_flow": true,
|
||||
"quality_scale": "platinum",
|
||||
|
@@ -14,17 +14,13 @@ from homeassistant.components.sensor import (
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
LENGTH_FEET,
|
||||
LENGTH_INCHES,
|
||||
LENGTH_METERS,
|
||||
LENGTH_MILLIMETERS,
|
||||
PERCENTAGE,
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
SPEED_MILES_PER_HOUR,
|
||||
TEMP_CELSIUS,
|
||||
TEMP_FAHRENHEIT,
|
||||
TIME_HOURS,
|
||||
UV_INDEX,
|
||||
UnitOfLength,
|
||||
UnitOfPrecipitationDepth,
|
||||
UnitOfSpeed,
|
||||
UnitOfTemperature,
|
||||
UnitOfTime,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
@@ -65,7 +61,8 @@ class AccuWeatherSensorDescription(
|
||||
"""Class describing AccuWeather sensor entities."""
|
||||
|
||||
attr_fn: Callable[[dict[str, Any]], dict[str, StateType]] = lambda _: {}
|
||||
unit_fn: Callable[[bool], str | None] = lambda _: None
|
||||
metric_unit: str | None = None
|
||||
us_customary_unit: str | None = None
|
||||
|
||||
|
||||
FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
@@ -74,7 +71,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
icon="mdi:weather-cloudy",
|
||||
name="Cloud cover day",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda _: PERCENTAGE,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
value_fn=lambda data, _: cast(int, data),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -82,7 +79,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
icon="mdi:weather-cloudy",
|
||||
name="Cloud cover night",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda _: PERCENTAGE,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
value_fn=lambda data, _: cast(int, data),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -90,7 +87,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
icon="mdi:grass",
|
||||
name="Grass pollen",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
|
||||
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
|
||||
),
|
||||
@@ -98,7 +95,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
key="HoursOfSun",
|
||||
icon="mdi:weather-partly-cloudy",
|
||||
name="Hours of sun",
|
||||
unit_fn=lambda _: TIME_HOURS,
|
||||
native_unit_of_measurement=UnitOfTime.HOURS,
|
||||
value_fn=lambda data, _: cast(float, data),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -106,7 +103,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
icon="mdi:blur",
|
||||
name="Mold pollen",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
|
||||
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
|
||||
),
|
||||
@@ -122,7 +119,7 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
key="Ragweed",
|
||||
icon="mdi:sprout",
|
||||
name="Ragweed pollen",
|
||||
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
entity_registry_enabled_default=False,
|
||||
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
|
||||
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
|
||||
@@ -131,14 +128,16 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
key="RealFeelTemperatureMax",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
name="RealFeel temperature max",
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="RealFeelTemperatureMin",
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
name="RealFeel temperature min",
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -146,7 +145,8 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
name="RealFeel temperature shade max",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -154,28 +154,29 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
name="RealFeel temperature shade min",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="ThunderstormProbabilityDay",
|
||||
icon="mdi:weather-lightning",
|
||||
name="Thunderstorm probability day",
|
||||
unit_fn=lambda _: PERCENTAGE,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
value_fn=lambda data, _: cast(int, data),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="ThunderstormProbabilityNight",
|
||||
icon="mdi:weather-lightning",
|
||||
name="Thunderstorm probability night",
|
||||
unit_fn=lambda _: PERCENTAGE,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
value_fn=lambda data, _: cast(int, data),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="Tree",
|
||||
icon="mdi:tree-outline",
|
||||
name="Tree pollen",
|
||||
unit_fn=lambda _: CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
native_unit_of_measurement=CONCENTRATION_PARTS_PER_CUBIC_METER,
|
||||
entity_registry_enabled_default=False,
|
||||
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
|
||||
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
|
||||
@@ -184,53 +185,45 @@ FORECAST_SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
key="UVIndex",
|
||||
icon="mdi:weather-sunny",
|
||||
name="UV index",
|
||||
unit_fn=lambda _: UV_INDEX,
|
||||
native_unit_of_measurement=UV_INDEX,
|
||||
value_fn=lambda data, _: cast(int, data[ATTR_VALUE]),
|
||||
attr_fn=lambda data: {ATTR_LEVEL: data[ATTR_CATEGORY]},
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="WindGustDay",
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
icon="mdi:weather-windy",
|
||||
name="Wind gust day",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
|
||||
if metric
|
||||
else SPEED_MILES_PER_HOUR,
|
||||
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
|
||||
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="WindGustNight",
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
icon="mdi:weather-windy",
|
||||
name="Wind gust night",
|
||||
entity_registry_enabled_default=False,
|
||||
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
|
||||
if metric
|
||||
else SPEED_MILES_PER_HOUR,
|
||||
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
|
||||
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="WindDay",
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
icon="mdi:weather-windy",
|
||||
name="Wind day",
|
||||
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
|
||||
if metric
|
||||
else SPEED_MILES_PER_HOUR,
|
||||
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
|
||||
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="WindNight",
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
icon="mdi:weather-windy",
|
||||
name="Wind night",
|
||||
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
|
||||
if metric
|
||||
else SPEED_MILES_PER_HOUR,
|
||||
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
|
||||
value_fn=lambda data, _: cast(float, data[ATTR_SPEED][ATTR_VALUE]),
|
||||
attr_fn=lambda data: {"direction": data[ATTR_DIRECTION][ATTR_ENGLISH]},
|
||||
),
|
||||
@@ -243,7 +236,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
name="Apparent temperature",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -252,8 +246,9 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
icon="mdi:weather-fog",
|
||||
name="Cloud ceiling",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: LENGTH_METERS if metric else LENGTH_FEET,
|
||||
value_fn=lambda data, unit: round(data[unit][ATTR_VALUE]),
|
||||
metric_unit=UnitOfLength.METERS,
|
||||
us_customary_unit=UnitOfLength.FEET,
|
||||
value_fn=lambda data, unit: round(cast(float, data[unit][ATTR_VALUE])),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="CloudCover",
|
||||
@@ -261,7 +256,7 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
name="Cloud cover",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda _: PERCENTAGE,
|
||||
native_unit_of_measurement=PERCENTAGE,
|
||||
value_fn=lambda data, _: cast(int, data),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -270,7 +265,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
name="Dew point",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -278,7 +274,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
device_class=SensorDeviceClass.TEMPERATURE,
|
||||
name="RealFeel temperature",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -287,23 +284,25 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
name="RealFeel temperature shade",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="Precipitation",
|
||||
icon="mdi:weather-rainy",
|
||||
device_class=SensorDeviceClass.PRECIPITATION,
|
||||
name="Precipitation",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: LENGTH_MILLIMETERS if metric else LENGTH_INCHES,
|
||||
metric_unit=UnitOfPrecipitationDepth.MILLIMETERS,
|
||||
us_customary_unit=UnitOfPrecipitationDepth.INCHES,
|
||||
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
|
||||
attr_fn=lambda data: {"type": data["PrecipitationType"]},
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="PressureTendency",
|
||||
device_class="accuweather__pressure_tendency",
|
||||
icon="mdi:gauge",
|
||||
name="Pressure tendency",
|
||||
translation_key="pressure_tendency",
|
||||
value_fn=lambda data, _: cast(str, data["LocalizedText"]).lower(),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -311,7 +310,7 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
icon="mdi:weather-sunny",
|
||||
name="UV index",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda _: UV_INDEX,
|
||||
native_unit_of_measurement=UV_INDEX,
|
||||
value_fn=lambda data, _: cast(int, data),
|
||||
attr_fn=lambda data: {ATTR_LEVEL: data["UVIndexText"]},
|
||||
),
|
||||
@@ -321,7 +320,8 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
name="Wet bulb temperature",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
@@ -330,30 +330,27 @@ SENSOR_TYPES: tuple[AccuWeatherSensorDescription, ...] = (
|
||||
name="Wind chill temperature",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: TEMP_CELSIUS if metric else TEMP_FAHRENHEIT,
|
||||
metric_unit=UnitOfTemperature.CELSIUS,
|
||||
us_customary_unit=UnitOfTemperature.FAHRENHEIT,
|
||||
value_fn=lambda data, unit: cast(float, data[unit][ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="Wind",
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
icon="mdi:weather-windy",
|
||||
name="Wind",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
|
||||
if metric
|
||||
else SPEED_MILES_PER_HOUR,
|
||||
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
|
||||
value_fn=lambda data, unit: cast(float, data[ATTR_SPEED][unit][ATTR_VALUE]),
|
||||
),
|
||||
AccuWeatherSensorDescription(
|
||||
key="WindGust",
|
||||
device_class=SensorDeviceClass.WIND_SPEED,
|
||||
icon="mdi:weather-windy",
|
||||
name="Wind gust",
|
||||
entity_registry_enabled_default=False,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
unit_fn=lambda metric: SPEED_KILOMETERS_PER_HOUR
|
||||
if metric
|
||||
else SPEED_MILES_PER_HOUR,
|
||||
metric_unit=UnitOfSpeed.KILOMETERS_PER_HOUR,
|
||||
us_customary_unit=UnitOfSpeed.MILES_PER_HOUR,
|
||||
value_fn=lambda data, unit: cast(float, data[ATTR_SPEED][unit][ATTR_VALUE]),
|
||||
),
|
||||
)
|
||||
@@ -413,13 +410,15 @@ class AccuWeatherSensor(
|
||||
self._attr_unique_id = (
|
||||
f"{coordinator.location_key}-{description.key}".lower()
|
||||
)
|
||||
self._attr_native_unit_of_measurement = description.native_unit_of_measurement
|
||||
if self.coordinator.hass.config.units is METRIC_SYSTEM:
|
||||
self._unit_system = API_METRIC
|
||||
if metric_unit := description.metric_unit:
|
||||
self._attr_native_unit_of_measurement = metric_unit
|
||||
else:
|
||||
self._unit_system = API_IMPERIAL
|
||||
self._attr_native_unit_of_measurement = self.entity_description.unit_fn(
|
||||
self.coordinator.hass.config.units is METRIC_SYSTEM
|
||||
)
|
||||
if us_customary_unit := description.us_customary_unit:
|
||||
self._attr_native_unit_of_measurement = us_customary_unit
|
||||
self._attr_device_info = coordinator.device_info
|
||||
if forecast_day is not None:
|
||||
self.forecast_day = forecast_day
|
||||
|
@@ -22,9 +22,20 @@
|
||||
"single_instance_allowed": "[%key:common::config_flow::abort::single_instance_allowed%]"
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"steady": "Steady",
|
||||
"rising": "Rising",
|
||||
"falling": "Falling"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"description": "Due to the limitations of the free version of the AccuWeather API key, when you enable weather forecast, data updates will be performed every 80 minutes instead of every 40 minutes.",
|
||||
"data": {
|
||||
"forecast": "Weather forecast"
|
||||
|
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"state": {
|
||||
"accuweather__pressure_tendency": {
|
||||
"steady": "Steady",
|
||||
"rising": "Rising",
|
||||
"falling": "Falling"
|
||||
}
|
||||
}
|
||||
}
|
@@ -4,16 +4,6 @@
|
||||
"requests_exceeded": "\u062a\u0645 \u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u0639\u062f\u062f \u0627\u0644\u0645\u0633\u0645\u0648\u062d \u0628\u0647 \u0645\u0646 \u0627\u0644\u0637\u0644\u0628\u0627\u062a \u0625\u0644\u0649 Accuweather API. \u0639\u0644\u064a\u0643 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631 \u0623\u0648 \u062a\u063a\u064a\u064a\u0631 \u0645\u0641\u062a\u0627\u062d API."
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "\u0627\u0644\u0646\u0634\u0631\u0629 \u0627\u0644\u062c\u0648\u064a\u0629"
|
||||
},
|
||||
"description": "\u0646\u0638\u0631\u064b\u0627 \u0644\u0642\u064a\u0648\u062f \u0627\u0644\u0625\u0635\u062f\u0627\u0631 \u0627\u0644\u0645\u062c\u0627\u0646\u064a \u0645\u0646 \u0645\u0641\u062a\u0627\u062d AccuWeather API \u060c \u0639\u0646\u062f \u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u062a\u0646\u0628\u0624 \u0628\u0627\u0644\u0637\u0642\u0633 \u060c \u0633\u064a\u062a\u0645 \u0625\u062c\u0631\u0627\u0621 \u062a\u062d\u062f\u064a\u062b\u0627\u062a \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0643\u0644 80 \u062f\u0642\u064a\u0642\u0629 \u0628\u062f\u0644\u0627\u064b \u0645\u0646 \u0643\u0644 40 \u062f\u0642\u064a\u0642\u0629."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u062e\u0627\u062f\u0645 AccuWeather",
|
||||
|
@@ -18,12 +18,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "\u041f\u043e\u043d\u0438\u0436\u0435\u043d\u0438\u0435",
|
||||
"rising": "\u041f\u043e\u0432\u0438\u0448\u0435\u043d\u0438\u0435",
|
||||
"steady": "\u0421\u0442\u0430\u0431\u0438\u043b\u043d\u043e"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u0442\u043e"
|
||||
}
|
||||
},
|
||||
"description": "\u041f\u043e\u0440\u0430\u0434\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u0442\u0430 \u043d\u0430 \u0431\u0435\u0437\u043f\u043b\u0430\u0442\u043d\u0430\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 API \u043a\u043b\u044e\u0447\u0430 \u043d\u0430 AccuWeather, \u043a\u043e\u0433\u0430\u0442\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0430\u0442\u0435 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430\u0442\u0430 \u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u0442\u043e, \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438\u0442\u0435 \u043d\u0430 \u0434\u0430\u043d\u043d\u0438 \u0449\u0435 \u0441\u0435 \u0438\u0437\u0432\u044a\u0440\u0448\u0432\u0430\u0442 \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 80 \u043c\u0438\u043d\u0443\u0442\u0438 \u0432\u043c\u0435\u0441\u0442\u043e \u043d\u0430 \u0432\u0441\u0435\u043a\u0438 40 \u043c\u0438\u043d\u0443\u0442\u0438."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Disminuint",
|
||||
"rising": "Augmentant",
|
||||
"steady": "Estable"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Previsi\u00f3 meteorol\u00f2gica"
|
||||
},
|
||||
"description": "Per culpa de les limitacions de la versi\u00f3 gratu\u00efta l'API d'AccuWeather, quan habilitis la previsi\u00f3 meteorol\u00f2gica, les actualitzacions de dades es faran cada 80 minuts en comptes de cada 40."
|
||||
"description": "Per culpa de les limitacions de la versi\u00f3 gratu\u00efta de l'API d'AccuWeather, quan activis la previsi\u00f3 meteorol\u00f2gica, les actualitzacions de dades es faran cada 80 minuts en comptes de cada 40."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -19,13 +19,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"steady": "Stabiln\u00ed"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "P\u0159edpov\u011b\u010f po\u010das\u00ed"
|
||||
},
|
||||
"description": "Kdy\u017e povol\u00edte p\u0159edpov\u011b\u010f po\u010das\u00ed, budou aktualizace dat prov\u00e1d\u011bny ka\u017ed\u00fdch 80 minut nam\u00edsto 40 minut z d\u016fvodu omezen\u00ed bezplatn\u00e9 verze AccuWeather."
|
||||
"description": "Vzhledem k omezen\u00edm bezplatn\u00e9 verze kl\u00ed\u010de AccuWeather API, kdy\u017e povol\u00edte p\u0159edpov\u011b\u010f po\u010das\u00ed, aktualizace dat se budou prov\u00e1d\u011bt ka\u017ed\u00fdch 80 minut m\u00edsto ka\u017ed\u00fdch 40 minut."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Fallend",
|
||||
"rising": "Steigend",
|
||||
"steady": "Stetig"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Wettervorhersage"
|
||||
},
|
||||
"description": "Aufgrund der Einschr\u00e4nkungen der kostenlosen Version des AccuWeather-API-Schl\u00fcssels werden bei aktivierter Wettervorhersage Datenaktualisierungen alle 80 Minuten statt alle 40 Minuten durchgef\u00fchrt."
|
||||
"description": "Aufgrund der Einschr\u00e4nkungen der kostenlosen Version des AccuWeather API-Schl\u00fcssels werden bei aktivierter Wettervorhersage Datenaktualisierungen alle 80 Minuten statt alle 40 Minuten durchgef\u00fchrt."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "\u03a0\u03c4\u03ce\u03c3\u03b7",
|
||||
"rising": "\u0391\u03c5\u03be\u03b1\u03bd\u03cc\u03bc\u03b5\u03bd\u03b7",
|
||||
"steady": "\u03a3\u03c4\u03b1\u03b8\u03b5\u03c1\u03ae"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "\u03a0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd"
|
||||
},
|
||||
"description": "\u039b\u03cc\u03b3\u03c9 \u03c4\u03c9\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ce\u03bd \u03c4\u03b7\u03c2 \u03b4\u03c9\u03c1\u03b5\u03ac\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd API \u03c4\u03bf\u03c5 AccuWeather, \u03cc\u03c4\u03b1\u03bd \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd, \u03bf\u03b9 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03b9\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03b8\u03b1 \u03c0\u03c1\u03b1\u03b3\u03bc\u03b1\u03c4\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03ba\u03ac\u03b8\u03b5 80 \u03bb\u03b5\u03c0\u03c4\u03ac \u03b1\u03bd\u03c4\u03af \u03b3\u03b9\u03b1 \u03ba\u03ac\u03b8\u03b5 40 \u03bb\u03b5\u03c0\u03c4\u03ac."
|
||||
"description": "\u039b\u03cc\u03b3\u03c9 \u03c4\u03c9\u03bd \u03c0\u03b5\u03c1\u03b9\u03bf\u03c1\u03b9\u03c3\u03bc\u03ce\u03bd \u03c4\u03b7\u03c2 \u03b4\u03c9\u03c1\u03b5\u03ac\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03bb\u03b5\u03b9\u03b4\u03b9\u03bf\u03cd AccuWeather API, \u03cc\u03c4\u03b1\u03bd \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c0\u03c1\u03cc\u03b3\u03bd\u03c9\u03c3\u03b7 \u03ba\u03b1\u03b9\u03c1\u03bf\u03cd, \u03bf\u03b9 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03b9\u03c2 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd \u03b8\u03b1 \u03b5\u03ba\u03c4\u03b5\u03bb\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9 \u03ba\u03ac\u03b8\u03b5 80 \u03bb\u03b5\u03c0\u03c4\u03ac \u03b1\u03bd\u03c4\u03af \u03b3\u03b9\u03b1 \u03ba\u03ac\u03b8\u03b5 40 \u03bb\u03b5\u03c0\u03c4\u03ac."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Falling",
|
||||
"rising": "Rising",
|
||||
"steady": "Steady"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Weather forecast"
|
||||
},
|
||||
|
@@ -12,16 +12,6 @@
|
||||
"requests_exceeded": "Se super\u00f3 el n\u00famero permitido de solicitudes a la API de Accuweather. Tiene que esperar o cambiar la clave de API."
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "Pron\u00f3stico del tiempo"
|
||||
},
|
||||
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilita el pron\u00f3stico del tiempo, las actualizaciones de datos se realizar\u00e1n cada 64 minutos en lugar de cada 32 minutos."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Llegar al servidor de AccuWeather",
|
||||
|
@@ -4,7 +4,7 @@
|
||||
"single_instance_allowed": "Ya est\u00e1 configurado. Solo es posible una \u00fanica configuraci\u00f3n."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Algunos sensores no est\u00e1n habilitados de forma predeterminada. Puedes habilitarlos en el registro de la entidad despu\u00e9s de la configuraci\u00f3n de la integraci\u00f3n.\nEl pron\u00f3stico del tiempo no est\u00e1 habilitado de forma predeterminada. Puedes habilitarlo en las opciones de integraci\u00f3n."
|
||||
"default": "Algunos sensores no est\u00e1n habilitados de forma predeterminada. Puedes habilitarlos en el registro de la entidad despu\u00e9s de la configuraci\u00f3n de la integraci\u00f3n.\nLa previsi\u00f3n meteorol\u00f3gica no est\u00e1 habilitada de forma predeterminada. Puedes habilitarla en las opciones de integraci\u00f3n."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "No se pudo conectar",
|
||||
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Descendente",
|
||||
"rising": "Creciente",
|
||||
"steady": "Estable"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Pron\u00f3stico del tiempo"
|
||||
"forecast": "Previsi\u00f3n meteorol\u00f3gica"
|
||||
},
|
||||
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilitas el pron\u00f3stico del tiempo, las actualizaciones de datos se realizar\u00e1n cada 80 minutos en lugar de cada 40 minutos."
|
||||
"description": "Debido a las limitaciones de la versi\u00f3n gratuita de la clave API de AccuWeather, cuando habilitas la previsi\u00f3n meteorol\u00f3gica, las actualizaciones de datos se realizar\u00e1n cada 80 minutos en lugar de cada 40 minutos."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Langev",
|
||||
"rising": "T\u00f5usev",
|
||||
"steady": "\u00dchtlane"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Ilmateade"
|
||||
},
|
||||
|
@@ -24,11 +24,10 @@
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Pr\u00e9visions m\u00e9t\u00e9orologiques"
|
||||
},
|
||||
"description": "En raison des limitations de la version gratuite de la cl\u00e9 API AccuWeather, lorsque vous activez les pr\u00e9visions m\u00e9t\u00e9orologiques, les mises \u00e0 jour des donn\u00e9es seront effectu\u00e9es toutes les 64 minutes au lieu de toutes les 32 minutes."
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "\u05e9\u05d5\u05e7\u05e2\u05ea",
|
||||
"rising": "\u05d6\u05d5\u05e8\u05d7\u05ea",
|
||||
"steady": "\u05d9\u05e6\u05d9\u05d1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "\u05ea\u05d7\u05d6\u05d9\u05ea \u05de\u05d6\u05d2 \u05d4\u05d0\u05d5\u05d5\u05d9\u05e8"
|
||||
},
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Cs\u00f6kken\u0151",
|
||||
"rising": "Emelked\u0151",
|
||||
"steady": "\u00c1lland\u00f3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Id\u0151j\u00e1r\u00e1s el\u0151rejelz\u00e9s"
|
||||
},
|
||||
"description": "Az AccuWeather API kulcs ingyenes verzi\u00f3j\u00e1nak korl\u00e1tai miatt, amikor enged\u00e9lyezi az id\u0151j\u00e1r\u00e1s -el\u0151rejelz\u00e9st, az adatfriss\u00edt\u00e9seket 40 percenk\u00e9nt 80 percenk\u00e9nt hajtj\u00e1k v\u00e9gre."
|
||||
"description": "Az AccuWeather API-kulcs ingyenes verzi\u00f3j\u00e1nak korl\u00e1tai miatt az id\u0151j\u00e1r\u00e1s-el\u0151rejelz\u00e9s enged\u00e9lyez\u00e9sekor az adatok friss\u00edt\u00e9se 40 perc helyett 80 percenk\u00e9nt t\u00f6rt\u00e9nik."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Turun",
|
||||
"rising": "Naik",
|
||||
"steady": "Tetap"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Prakiraan cuaca"
|
||||
},
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "In diminuzione",
|
||||
"rising": "In aumento",
|
||||
"steady": "Stabile"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Previsioni meteo"
|
||||
"forecast": "Previsioni del tempo"
|
||||
},
|
||||
"description": "A causa delle limitazioni della versione gratuita della chiave API AccuWeather, quando si abilitano le previsioni del tempo, gli aggiornamenti dei dati verranno eseguiti ogni 80 minuti invece che ogni 40."
|
||||
"description": "A causa delle limitazioni della versione gratuita della chiave API AccuWeather, quando abiliti le previsioni del tempo, gli aggiornamenti dei dati verranno eseguiti ogni 80 minuti anzich\u00e9 ogni 40 minuti."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,16 +22,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "\u5929\u6c17\u4e88\u5831"
|
||||
},
|
||||
"description": "\u5236\u9650\u306b\u3088\u308a\u7121\u6599\u30d0\u30fc\u30b8\u30e7\u30f3\u306eAccuWeather API\u30ad\u30fc\u3067\u306f\u3001\u5929\u6c17\u4e88\u5831\u3092\u6709\u52b9\u306b\u3057\u3066\u3082\u30c7\u30fc\u30bf\u306e\u66f4\u65b0\u306f40\u5206\u3067\u306f\u306a\u304f80\u5206\u3054\u3068\u3067\u3059\u3002"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "AccuWeather\u30b5\u30fc\u30d0\u30fc\u3078\u306e\u30a2\u30af\u30bb\u30b9",
|
||||
|
@@ -19,13 +19,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "\ud558\uac15",
|
||||
"rising": "\uc0c1\uc2b9",
|
||||
"steady": "\uc548\uc815\ub428"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "\ub0a0\uc528 \uc608\ubcf4"
|
||||
},
|
||||
"description": "\ubb34\ub8cc \ubc84\uc804\uc758 AccuWeather API \ud0a4\ub85c \uc77c\uae30\uc608\ubcf4\ub97c \ud65c\uc131\ud654\ud55c \uacbd\uc6b0 \uc81c\ud55c\uc0ac\ud56d\uc73c\ub85c \uc778\ud574 \uc5c5\ub370\uc774\ud2b8\ub294 40 \ubd84\uc774 \uc544\ub2cc 80 \ubd84\ub9c8\ub2e4 \uc218\ud589\ub429\ub2c8\ub2e4."
|
||||
"description": "\ubb34\ub8cc \ubc84\uc804 AccuWeather API \ud0a4\uc758 \uc81c\ud55c\uc73c\ub85c \uc778\ud574 \ub0a0\uc528 \uc608\ubcf4\ub97c \ud65c\uc131\ud654\ud558\uba74 \ub370\uc774\ud130 \uc5c5\ub370\uc774\ud2b8\uac00 40\ubd84\uc774 \uc544\ub2cc 80\ubd84\ub9c8\ub2e4 \uc218\ud589\ub429\ub2c8\ub2e4."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -19,16 +19,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "Wieder Pr\u00e9visioun"
|
||||
},
|
||||
"description": "Duerch d'Limite vun der Gratis Versioun vun der AccuWeather API, wann d'Wieder Pr\u00e9visoune aktiv\u00e9iert sinn, ginn d'Aktualis\u00e9ierungen all 64 Minutten gemaach, am plaatz vun all 32 Minutten."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "AccuWeather Server ereechbar",
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Dalende",
|
||||
"rising": "Stijgende",
|
||||
"steady": "Stabiel"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Weervoorspelling"
|
||||
"forecast": "Weersverwachting"
|
||||
},
|
||||
"description": "Vanwege de beperkingen van de gratis versie van de AccuWeather API-sleutel, worden gegevensupdates elke 64 minuten in plaats van elke 32 minuten uitgevoerd wanneer u weersvoorspelling inschakelt."
|
||||
"description": "Wanneer je de weersverwachting ingeschakeld zullen updates elke 80 minuten plaatsvinden i.p.v. elke 40 minuten, dit komt door de beperkingen van de gratis versie van de AccuWeather API sleutel."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Fallende",
|
||||
"rising": "Stiger",
|
||||
"steady": "Jevn"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "V\u00e6rmelding"
|
||||
},
|
||||
"description": "P\u00e5 grunn av begrensningene i den gratis versjonen av AccuWeather API-n\u00f8kkelen, vil dataoppdateringer utf\u00f8res hvert 80. minutt i stedet for hvert 40. minutt n\u00e5r du aktiverer v\u00e6rmelding."
|
||||
"description": "P\u00e5 grunn av begrensningene til gratisversjonen av AccuWeather API-n\u00f8kkelen, n\u00e5r du aktiverer v\u00e6rmelding, vil dataoppdateringer utf\u00f8res hvert 80. minutt i stedet for hvert 40. minutt."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "malej\u0105ce",
|
||||
"rising": "rosn\u0105ce",
|
||||
"steady": "sta\u0142e"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Prognoza pogody"
|
||||
},
|
||||
|
@@ -22,13 +22,24 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Caindo",
|
||||
"rising": "Ascendente",
|
||||
"steady": "Est\u00e1vel"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Previs\u00e3o do Tempo"
|
||||
"forecast": "Previs\u00e3o do tempo"
|
||||
},
|
||||
"description": "Devido \u00e0s limita\u00e7\u00f5es da vers\u00e3o gratuita da chave da API AccuWeather, quando voc\u00ea habilita a previs\u00e3o do tempo, as atualiza\u00e7\u00f5es de dados ser\u00e3o realizadas a cada 64 minutos em vez de a cada 32 minutos."
|
||||
"description": "Devido \u00e0s limita\u00e7\u00f5es da vers\u00e3o gratuita da chave API AccuWeather, quando voc\u00ea ativa a previs\u00e3o do tempo, as atualiza\u00e7\u00f5es de dados s\u00e3o realizadas a cada 80 minutos em vez de 40 minutos."
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@@ -7,7 +7,7 @@
|
||||
"default": "Alguns sensores n\u00e3o s\u00e3o ativados por defeito. Podem ser ativados no registo da entidade ap\u00f3s a configura\u00e7\u00e3o da integra\u00e7\u00e3o.\nA previs\u00e3o do tempo n\u00e3o est\u00e1 ativada por defeito. Pode ativ\u00e1-la nas op\u00e7\u00f5es de integra\u00e7\u00e3o."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o",
|
||||
"cannot_connect": "A liga\u00e7\u00e3o falhou",
|
||||
"invalid_api_key": "Chave de API inv\u00e1lida",
|
||||
"requests_exceeded": "O n\u00famero permitido de pedidos \u00e0 API do Accuweather foi excedido. \u00c9 necess\u00e1rio aguardar ou alterar a chave API."
|
||||
},
|
||||
@@ -22,16 +22,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "Previs\u00e3o meteorol\u00f3gica"
|
||||
},
|
||||
"description": "Devido \u00e0s limita\u00e7\u00f5es da vers\u00e3o gratuita da chave AccuWeather API, quando se activa a previs\u00e3o do tempo, as actualiza\u00e7\u00f5es de dados ser\u00e3o realizadas a cada 80 minutos em vez de a cada 40 minutos."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Alcance o servidor AccuWeather",
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "\u041f\u043e\u043d\u0438\u0436\u0430\u0435\u0442\u0441\u044f",
|
||||
"rising": "\u041f\u043e\u0432\u044b\u0448\u0430\u0435\u0442\u0441\u044f",
|
||||
"steady": "\u041f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e\u0435"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u044b"
|
||||
},
|
||||
|
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"state": {
|
||||
"accuweather__pressure_tendency": {
|
||||
"falling": "Klesaj\u00faci",
|
||||
"rising": "Padaj\u00faci",
|
||||
"steady": "Stabiln\u00fd"
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,7 +1,15 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"single_instance_allowed": "U\u017e je nakonfigurovan\u00fd. Mo\u017en\u00e1 len jedna konfigur\u00e1cia."
|
||||
},
|
||||
"create_entry": {
|
||||
"default": "Niektor\u00e9 sn\u00edma\u010de nie s\u00fa predvolene povolen\u00e9. M\u00f4\u017eete ich povoli\u0165 v registri ent\u00edt po konfigur\u00e1cii integr\u00e1cie.\n Predpove\u010f po\u010dasia nie je predvolene zapnut\u00e1. M\u00f4\u017eete to povoli\u0165 v mo\u017enostiach integr\u00e1cie."
|
||||
},
|
||||
"error": {
|
||||
"invalid_api_key": "Neplatn\u00fd API k\u013e\u00fa\u010d"
|
||||
"cannot_connect": "Nepodarilo sa pripoji\u0165",
|
||||
"invalid_api_key": "Neplatn\u00fd API k\u013e\u00fa\u010d",
|
||||
"requests_exceeded": "Povolen\u00fd po\u010det po\u017eiadaviek na rozhranie Accuweather API bol prekro\u010den\u00fd. Mus\u00edte po\u010dka\u0165 alebo zmeni\u0165 k\u013e\u00fa\u010d API."
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
@@ -13,5 +21,32 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "Klesaj\u00faci",
|
||||
"rising": "St\u00fapaj\u00faci",
|
||||
"steady": "Stabiln\u00fd"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Predpove\u010f po\u010dasia"
|
||||
},
|
||||
"description": "Z d\u00f4vodu obmedzen\u00ed bezplatnej verzie k\u013e\u00fa\u010da AccuWeather API, ke\u010f povol\u00edte predpove\u010f po\u010dasia, aktualiz\u00e1cie \u00fadajov sa bud\u00fa vykon\u00e1va\u0165 ka\u017ed\u00fdch 80 min\u00fat namiesto ka\u017ed\u00fdch 40 min\u00fat."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "Oslovi\u0165 server AccuWeather",
|
||||
"remaining_requests": "Zost\u00e1vaj\u00face povolen\u00e9 \u017eiadosti"
|
||||
}
|
||||
}
|
||||
}
|
@@ -22,16 +22,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "V\u00e4derprognos"
|
||||
},
|
||||
"description": "P\u00e5 grund av begr\u00e4nsningarna f\u00f6r den kostnadsfria versionen av AccuWeather API-nyckeln, n\u00e4r du aktiverar v\u00e4derprognos, kommer datauppdateringar att utf\u00f6ras var 80:e minut ist\u00e4llet f\u00f6r var 40:e minut."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "N\u00e5 AccuWeather-servern",
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "D\u00fc\u015f\u00fcyor",
|
||||
"rising": "Y\u00fckseliyor",
|
||||
"steady": "Sabit"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "Hava Durumu tahmini"
|
||||
},
|
||||
|
@@ -19,16 +19,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"forecast": "\u041f\u0440\u043e\u0433\u043d\u043e\u0437 \u043f\u043e\u0433\u043e\u0434\u0438"
|
||||
},
|
||||
"description": "\u0423 \u0437\u0432'\u044f\u0437\u043a\u0443 \u0437 \u043e\u0431\u043c\u0435\u0436\u0435\u043d\u043d\u044f\u043c\u0438 \u0431\u0435\u0437\u043a\u043e\u0448\u0442\u043e\u0432\u043d\u043e\u0457 \u0432\u0435\u0440\u0441\u0456\u0457 \u043a\u043b\u044e\u0447\u0430 API AccuWeather, \u043f\u0440\u0438 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u0456 \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0443 \u043f\u043e\u0433\u043e\u0434\u0438 \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0434\u0430\u043d\u0438\u0445 \u0431\u0443\u0434\u0435 \u0432\u0456\u0434\u0431\u0443\u0432\u0430\u0442\u0438\u0441\u044f \u043a\u043e\u0436\u043d\u0456 64 \u0445\u0432\u0438\u043b\u0438\u043d\u0438, \u0430 \u043d\u0435 \u043a\u043e\u0436\u043d\u0456 32 \u0445\u0432\u0438\u043b\u0438\u043d\u0438."
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u0414\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 AccuWeather",
|
||||
|
@@ -1,4 +1,14 @@
|
||||
{
|
||||
"options": {
|
||||
"step": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "\u5929\u6c14\u9884\u62a5"
|
||||
},
|
||||
"description": "\u7531\u4e8e AccuWeather API \u5bc6\u94a5\u514d\u8d39\u7248\u672c\u7684\u9650\u5236\uff0c\u5f53\u60a8\u542f\u7528\u5929\u6c14\u9884\u62a5\u65f6\uff0c\u6570\u636e\u66f4\u65b0\u5c06\u6bcf 80 \u5206\u949f\u6267\u884c\u4e00\u6b21\uff0c\u800c\u4e0d\u662f\u6bcf 40 \u5206\u949f\u4e00\u6b21\u3002"
|
||||
}
|
||||
}
|
||||
},
|
||||
"system_health": {
|
||||
"info": {
|
||||
"can_reach_server": "\u53ef\u8bbf\u95ee AccuWeather \u670d\u52a1\u5668",
|
||||
|
@@ -22,9 +22,20 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"sensor": {
|
||||
"pressure_tendency": {
|
||||
"state": {
|
||||
"falling": "\u4e0b\u964d",
|
||||
"rising": "\u4e0a\u5347",
|
||||
"steady": "\u7a69\u5b9a"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"options": {
|
||||
"step": {
|
||||
"user": {
|
||||
"init": {
|
||||
"data": {
|
||||
"forecast": "\u5929\u6c23\u9810\u5831"
|
||||
},
|
||||
|
@@ -18,16 +18,11 @@ from homeassistant.components.weather import (
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
LENGTH_INCHES,
|
||||
LENGTH_KILOMETERS,
|
||||
LENGTH_MILES,
|
||||
LENGTH_MILLIMETERS,
|
||||
PRESSURE_HPA,
|
||||
PRESSURE_INHG,
|
||||
SPEED_KILOMETERS_PER_HOUR,
|
||||
SPEED_MILES_PER_HOUR,
|
||||
TEMP_CELSIUS,
|
||||
TEMP_FAHRENHEIT,
|
||||
UnitOfLength,
|
||||
UnitOfPrecipitationDepth,
|
||||
UnitOfPressure,
|
||||
UnitOfSpeed,
|
||||
UnitOfTemperature,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
@@ -72,19 +67,19 @@ class AccuWeatherEntity(
|
||||
# converted, hence the weather entity's native units follow the configured unit
|
||||
# system
|
||||
if coordinator.hass.config.units is METRIC_SYSTEM:
|
||||
self._attr_native_precipitation_unit = LENGTH_MILLIMETERS
|
||||
self._attr_native_pressure_unit = PRESSURE_HPA
|
||||
self._attr_native_temperature_unit = TEMP_CELSIUS
|
||||
self._attr_native_visibility_unit = LENGTH_KILOMETERS
|
||||
self._attr_native_wind_speed_unit = SPEED_KILOMETERS_PER_HOUR
|
||||
self._attr_native_precipitation_unit = UnitOfPrecipitationDepth.MILLIMETERS
|
||||
self._attr_native_pressure_unit = UnitOfPressure.HPA
|
||||
self._attr_native_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
self._attr_native_visibility_unit = UnitOfLength.KILOMETERS
|
||||
self._attr_native_wind_speed_unit = UnitOfSpeed.KILOMETERS_PER_HOUR
|
||||
self._unit_system = API_METRIC
|
||||
else:
|
||||
self._unit_system = API_IMPERIAL
|
||||
self._attr_native_precipitation_unit = LENGTH_INCHES
|
||||
self._attr_native_pressure_unit = PRESSURE_INHG
|
||||
self._attr_native_temperature_unit = TEMP_FAHRENHEIT
|
||||
self._attr_native_visibility_unit = LENGTH_MILES
|
||||
self._attr_native_wind_speed_unit = SPEED_MILES_PER_HOUR
|
||||
self._attr_native_precipitation_unit = UnitOfPrecipitationDepth.INCHES
|
||||
self._attr_native_pressure_unit = UnitOfPressure.INHG
|
||||
self._attr_native_temperature_unit = UnitOfTemperature.FAHRENHEIT
|
||||
self._attr_native_visibility_unit = UnitOfLength.MILES
|
||||
self._attr_native_wind_speed_unit = UnitOfSpeed.MILES_PER_HOUR
|
||||
self._attr_unique_id = coordinator.location_key
|
||||
self._attr_attribution = ATTRIBUTION
|
||||
self._attr_device_info = coordinator.device_info
|
||||
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
||||
|
||||
import asyncio
|
||||
from contextlib import suppress
|
||||
from typing import Any
|
||||
|
||||
import aiopulse
|
||||
import async_timeout
|
||||
@@ -10,6 +11,7 @@ import voluptuous as vol
|
||||
|
||||
from homeassistant import config_entries
|
||||
from homeassistant.const import CONF_HOST, CONF_ID
|
||||
from homeassistant.data_entry_flow import FlowResult
|
||||
|
||||
from .const import DOMAIN
|
||||
|
||||
@@ -19,11 +21,13 @@ class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
|
||||
VERSION = 1
|
||||
|
||||
def __init__(self):
|
||||
def __init__(self) -> None:
|
||||
"""Initialize the config flow."""
|
||||
self.discovered_hubs: dict[str, aiopulse.Hub] | None = None
|
||||
|
||||
async def async_step_user(self, user_input=None):
|
||||
async def async_step_user(
|
||||
self, user_input: dict[str, Any] | None = None
|
||||
) -> FlowResult:
|
||||
"""Handle a flow initialized by the user."""
|
||||
if (
|
||||
user_input is not None
|
||||
@@ -37,7 +41,7 @@ class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
entry.unique_id for entry in self._async_current_entries()
|
||||
}
|
||||
|
||||
hubs = []
|
||||
hubs: list[aiopulse.Hub] = []
|
||||
with suppress(asyncio.TimeoutError):
|
||||
async with async_timeout.timeout(5):
|
||||
async for hub in aiopulse.Hub.discover():
|
||||
@@ -63,7 +67,7 @@ class AcmedaFlowHandler(config_entries.ConfigFlow, domain=DOMAIN):
|
||||
),
|
||||
)
|
||||
|
||||
async def async_create(self, hub):
|
||||
async def async_create(self, hub: aiopulse.Hub) -> FlowResult:
|
||||
"""Create the Acmeda Hub entry."""
|
||||
await self.async_set_unique_id(hub.id, raise_on_progress=False)
|
||||
return self.async_create_entry(title=hub.id, data={CONF_HOST: hub.host})
|
||||
|
@@ -70,9 +70,9 @@ class AcmedaCover(AcmedaBase, CoverEntity):
|
||||
return position
|
||||
|
||||
@property
|
||||
def supported_features(self) -> int:
|
||||
def supported_features(self) -> CoverEntityFeature:
|
||||
"""Flag supported features."""
|
||||
supported_features = 0
|
||||
supported_features = CoverEntityFeature(0)
|
||||
if self.current_cover_position is not None:
|
||||
supported_features |= (
|
||||
CoverEntityFeature.OPEN
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05de\u05db\u05e9\u05d9\u05e8\u05d9\u05dd \u05d1\u05e8\u05e9\u05ea"
|
||||
"no_devices_found": "\u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d5 \u05d4\u05ea\u05e7\u05e0\u05d9\u05dd \u05d1\u05e8\u05e9\u05ea"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
|
15
homeassistant/components/acmeda/translations/sk.json
Normal file
15
homeassistant/components/acmeda/translations/sk.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"no_devices_found": "V sieti sa nena\u0161li \u017eiadne zariadenia"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"id": "ID hostite\u013ea"
|
||||
},
|
||||
"title": "Vyberte hub, ktor\u00fd chcete prida\u0165"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -19,7 +19,7 @@ from homeassistant.const import (
|
||||
CONF_TOKEN,
|
||||
CONF_UNIQUE_ID,
|
||||
PRECISION_WHOLE,
|
||||
TEMP_CELSIUS,
|
||||
UnitOfTemperature,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
@@ -69,7 +69,7 @@ class AdaxDevice(ClimateEntity):
|
||||
_attr_min_temp = 5
|
||||
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
|
||||
_attr_target_temperature_step = PRECISION_WHOLE
|
||||
_attr_temperature_unit = TEMP_CELSIUS
|
||||
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
|
||||
def __init__(self, heater_data: dict[str, Any], adax_data_handler: Adax) -> None:
|
||||
"""Initialize the heater."""
|
||||
@@ -132,7 +132,7 @@ class LocalAdaxDevice(ClimateEntity):
|
||||
_attr_min_temp = 5
|
||||
_attr_supported_features = ClimateEntityFeature.TARGET_TEMPERATURE
|
||||
_attr_target_temperature_step = PRECISION_WHOLE
|
||||
_attr_temperature_unit = TEMP_CELSIUS
|
||||
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
|
||||
def __init__(self, adax_data_handler, unique_id):
|
||||
"""Initialize the heater."""
|
||||
|
18
homeassistant/components/adax/translations/ko.json
Normal file
18
homeassistant/components/adax/translations/ko.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "\uae30\uae30\uac00 \uc774\ubbf8 \uad6c\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4",
|
||||
"invalid_auth": "\uc778\uc99d\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "\uc5f0\uacb0\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4"
|
||||
},
|
||||
"step": {
|
||||
"cloud": {
|
||||
"data": {
|
||||
"password": "\ube44\ubc00\ubc88\ud638"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -7,7 +7,7 @@
|
||||
"invalid_auth": "Autentica\u00e7\u00e3o inv\u00e1lida"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o"
|
||||
"cannot_connect": "A liga\u00e7\u00e3o falhou"
|
||||
},
|
||||
"step": {
|
||||
"cloud": {
|
||||
|
@@ -1,7 +1,34 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Zariadenie u\u017e je nakonfigurovan\u00e9",
|
||||
"heater_not_available": "Ohrieva\u010d nie je k dispoz\u00edcii. Sk\u00faste resetova\u0165 ohrieva\u010d stla\u010den\u00edm + a OK na nieko\u013eko sek\u00fand.",
|
||||
"heater_not_found": "Ohrieva\u010d sa nena\u0161iel. Sk\u00faste presun\u00fa\u0165 ohrieva\u010d bli\u017e\u0161ie k Home Assistant.",
|
||||
"invalid_auth": "Neplatn\u00e9 overenie"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nepodarilo sa pripoji\u0165"
|
||||
},
|
||||
"step": {
|
||||
"cloud": {
|
||||
"data": {
|
||||
"account_id": "ID \u00fa\u010dtu",
|
||||
"password": "Heslo"
|
||||
}
|
||||
},
|
||||
"local": {
|
||||
"data": {
|
||||
"wifi_pswd": "Heslo Wi-Fi",
|
||||
"wifi_ssid": "Wi-Fi SSID"
|
||||
},
|
||||
"description": "Resetujte ohrieva\u010d stla\u010den\u00edm + a OK, dokia\u013e se nezobraz\u00ed \"Reset\". Potom stla\u010dte a podr\u017ete tla\u010didlo OK na ohrieva\u010di, dokia\u013e modr\u00e1 led di\u00f3da neza\u010dne blika\u0165, k\u00fdm stla\u010d\u00edte tla\u010didlo Odosla\u0165. Konfigur\u00e1cia ohrieva\u010da m\u00f4\u017ee trva\u0165 nieko\u013eko min\u00fat."
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"connection_type": "Vyberte typ pripojenia"
|
||||
},
|
||||
"description": "Vyberte typ pripojenia. Miestne vy\u017eaduje ohrieva\u010de s bluetooth"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
15
homeassistant/components/adax/translations/uk.json
Normal file
15
homeassistant/components/adax/translations/uk.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"invalid_auth": "\u041d\u0435\u0434\u0456\u0439\u0441\u043d\u0430 \u0430\u0432\u0442\u0435\u043d\u0442\u0438\u0444\u0456\u043a\u0430\u0446\u0456\u044f"
|
||||
},
|
||||
"step": {
|
||||
"cloud": {
|
||||
"data": {
|
||||
"account_id": "ID \u041e\u0431\u043b\u0456\u043a\u043e\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0438\u0441\u0443",
|
||||
"password": "\u041f\u0430\u0440\u043e\u043b\u044c"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -58,7 +58,12 @@ class AdGuardHomeEntity(Entity):
|
||||
return DeviceInfo(
|
||||
entry_type=DeviceEntryType.SERVICE,
|
||||
identifiers={
|
||||
(DOMAIN, self.adguard.host, self.adguard.port, self.adguard.base_path) # type: ignore[arg-type]
|
||||
( # type: ignore[arg-type]
|
||||
DOMAIN,
|
||||
self.adguard.host,
|
||||
self.adguard.port,
|
||||
self.adguard.base_path,
|
||||
)
|
||||
},
|
||||
manufacturer="AdGuard Team",
|
||||
name="AdGuard Home",
|
||||
|
@@ -3,7 +3,7 @@
|
||||
"name": "AdGuard Home",
|
||||
"config_flow": true,
|
||||
"documentation": "https://www.home-assistant.io/integrations/adguard",
|
||||
"requirements": ["adguardhome==0.5.1"],
|
||||
"requirements": ["adguardhome==0.6.1"],
|
||||
"codeowners": ["@frenck"],
|
||||
"iot_class": "local_polling",
|
||||
"integration_type": "service",
|
||||
|
@@ -10,7 +10,7 @@ from adguardhome import AdGuardHome, AdGuardHomeConnectionError
|
||||
|
||||
from homeassistant.components.sensor import SensorEntity, SensorEntityDescription
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import PERCENTAGE, TIME_MILLISECONDS
|
||||
from homeassistant.const import PERCENTAGE, UnitOfTime
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import PlatformNotReady
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
@@ -83,7 +83,7 @@ SENSORS: tuple[AdGuardHomeEntityDescription, ...] = (
|
||||
key="average_speed",
|
||||
name="Average processing speed",
|
||||
icon="mdi:speedometer",
|
||||
native_unit_of_measurement=TIME_MILLISECONDS,
|
||||
native_unit_of_measurement=UnitOfTime.MILLISECONDS,
|
||||
value_fn=lambda adguard: adguard.stats.avg_processing_time(),
|
||||
),
|
||||
AdGuardHomeEntityDescription(
|
||||
|
@@ -3,7 +3,7 @@
|
||||
"step": {
|
||||
"user": {
|
||||
"data": {
|
||||
"username": "\u7528\u6237\u540d"
|
||||
"password": "Slapta\u017eodis"
|
||||
}
|
||||
}
|
||||
}
|
@@ -4,7 +4,7 @@
|
||||
"already_configured": "O servi\u00e7o j\u00e1 est\u00e1 configurado"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o"
|
||||
"cannot_connect": "A liga\u00e7\u00e3o falhou"
|
||||
},
|
||||
"step": {
|
||||
"hassio_confirm": {
|
||||
@@ -13,7 +13,7 @@
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"host": "Servidor",
|
||||
"host": "Endere\u00e7o",
|
||||
"password": "Palavra-passe",
|
||||
"port": "Porta",
|
||||
"ssl": "Utiliza um certificado SSL",
|
||||
|
@@ -1,10 +1,27 @@
|
||||
{
|
||||
"config": {
|
||||
"abort": {
|
||||
"already_configured": "Slu\u017eba u\u017e je nakonfigurovan\u00e1",
|
||||
"existing_instance_updated": "Aktualizovan\u00e1 existuj\u00faca konfigur\u00e1cia."
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Nepodarilo sa pripoji\u0165"
|
||||
},
|
||||
"step": {
|
||||
"hassio_confirm": {
|
||||
"description": "Chcete nakonfigurova\u0165 Home Assistant na pripojenie k AdGuard Home poskytovan\u00e9mu doplnkom: {addon}?",
|
||||
"title": "AdGuard Home cez doplnok Home Assistant"
|
||||
},
|
||||
"user": {
|
||||
"data": {
|
||||
"port": "Port"
|
||||
}
|
||||
"host": "Hostite\u013e",
|
||||
"password": "Heslo",
|
||||
"port": "Port",
|
||||
"ssl": "Pou\u017e\u00edva SSL certifik\u00e1t",
|
||||
"username": "Pou\u017e\u00edvate\u013esk\u00e9 meno",
|
||||
"verify_ssl": "Overi\u0165 SSL certifik\u00e1t"
|
||||
},
|
||||
"description": "Nastavte svoju in\u0161tanciu AdGuard Home pre monitorovanie a riadenie."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -14,7 +14,7 @@ from homeassistant.components.climate import (
|
||||
HVACMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, TEMP_CELSIUS
|
||||
from homeassistant.const import ATTR_TEMPERATURE, PRECISION_WHOLE, UnitOfTemperature
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
||||
@@ -83,7 +83,7 @@ async def async_setup_entry(
|
||||
class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
|
||||
"""AdvantageAir AC unit."""
|
||||
|
||||
_attr_temperature_unit = TEMP_CELSIUS
|
||||
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
_attr_target_temperature_step = PRECISION_WHOLE
|
||||
_attr_max_temp = 32
|
||||
_attr_min_temp = 16
|
||||
@@ -149,7 +149,7 @@ class AdvantageAirAC(AdvantageAirAcEntity, ClimateEntity):
|
||||
class AdvantageAirZone(AdvantageAirZoneEntity, ClimateEntity):
|
||||
"""AdvantageAir Zone control."""
|
||||
|
||||
_attr_temperature_unit = TEMP_CELSIUS
|
||||
_attr_temperature_unit = UnitOfTemperature.CELSIUS
|
||||
_attr_target_temperature_step = PRECISION_WHOLE
|
||||
_attr_max_temp = 32
|
||||
_attr_min_temp = 16
|
||||
|
@@ -12,7 +12,7 @@ from homeassistant.components.sensor import (
|
||||
SensorStateClass,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import PERCENTAGE, TEMP_CELSIUS
|
||||
from homeassistant.const import PERCENTAGE, UnitOfTemperature
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||
from homeassistant.helpers.entity import EntityCategory
|
||||
@@ -155,7 +155,7 @@ class AdvantageAirZoneSignal(AdvantageAirZoneEntity, SensorEntity):
|
||||
class AdvantageAirZoneTemp(AdvantageAirZoneEntity, SensorEntity):
|
||||
"""Representation of Advantage Air Zone temperature sensor."""
|
||||
|
||||
_attr_native_unit_of_measurement = TEMP_CELSIUS
|
||||
_attr_native_unit_of_measurement = UnitOfTemperature.CELSIUS
|
||||
_attr_device_class = SensorDeviceClass.TEMPERATURE
|
||||
_attr_state_class = SensorStateClass.MEASUREMENT
|
||||
_attr_entity_registry_enabled_default = False
|
||||
|
@@ -4,7 +4,7 @@
|
||||
"already_configured": "O dispositivo j\u00e1 est\u00e1 configurado"
|
||||
},
|
||||
"error": {
|
||||
"cannot_connect": "Falha na liga\u00e7\u00e3o"
|
||||
"cannot_connect": "A liga\u00e7\u00e3o falhou"
|
||||
},
|
||||
"step": {
|
||||
"user": {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user