Franck Nijhof
64c2340fab
Core code styling improvements ( #85963 )
2023-01-15 23:00:51 +01:00
Franck Nijhof
06a35fb7db
Code styling tweaks to core helpers ( #85441 )
2023-01-08 13:44:09 -10:00
Franck Nijhof
d4f69a3652
String formatting and max line length - Part 7 ( #84532 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2022-12-27 11:18:56 +01:00
Michaël Arnauts
7142b4ecac
Fixes some grammar mistakes ( #84283 )
2022-12-20 11:10:31 +01:00
epenet
9f7fd8956f
Use new unit enums in helpers ( #83387 )
2022-12-06 22:20:17 +01:00
Mike Degatano
b3deb476ef
Allow is_state to accept a list of values ( #81877 )
...
* Allow is_state to accept a list of values
* Slightly more efficient
* Fix typing of state
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-11-30 22:54:14 +01:00
epenet
e386bab682
Add type hint to template wrapper ( #82563 )
...
* Add type to template hassfunction decorator
* Adjust to use EvalContext
* Use runtime.Context
* Use TypeVar for context
* Use jinja2.runtime.Context
* Reverse declarations
* Use Any
* Update homeassistant/helpers/template.py
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
Co-authored-by: Marc Mueller <30130371+cdce8p@users.noreply.github.com>
2022-11-24 15:30:21 +01:00
epenet
b525259878
Add type hints to template result wrapper ( #82575 )
...
* Add type hints to template result wrapper
* Remove `ignore[call-arg]`
* Use tuple
* Alphabetise
2022-11-24 08:41:14 +01:00
On Freund
9dd1b85cbb
Allow `device_attr` and `is_device_attr` to be used as a filter and a test (respectively) ( #81924 )
...
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2022-11-24 08:31:17 +01:00
epenet
d7f0b904d0
Add type to template function ( #82564 )
2022-11-23 21:50:45 +01:00
epenet
f91e250e90
Fix TemplateError definition ( #82570 )
2022-11-23 20:30:32 +01:00
Jan Bouwhuis
23bc39b7f4
Add type hints on `Template().__init__()` ( #82574 )
2022-11-23 20:26:55 +01:00
epenet
aa02a53ac6
Add type hints to template states ( #82582 )
...
* Add type hints to template states
* Undo rename
* Remove invalid mypy issue link
2022-11-23 17:46:51 +01:00
epenet
5e05739019
Add type hints to template helper ( #81308 )
...
* Add type hints to template helper
* Update homeassistant/helpers/template.py
* Adjust use of ensure_compiled
2022-11-07 09:41:53 +01:00
Petro31
f73fc9e355
Adds states and state_attr as a filter, adds is_state and is_state_attr as a test. ( #79473 )
2022-10-25 19:49:51 +02:00
Franck Nijhof
326344db12
Rename entry_id template method to config_entry_id ( #80935 )
2022-10-25 12:11:14 +02:00
ehendrix23
47b40e1e61
Add optional default value to average template function/filter ( #77499 )
...
* Return None on empty list
* Updated to use default value
* Update comment.
2022-10-03 10:07:19 +02:00
Rami Mosleh
e7764b8bf1
Add ConfigEntry template function ( #78030 )
...
* Add ConfigEntry template function
* Remove looking up entry_id by entry title
2022-09-29 12:41:59 +02:00
J. Nick Koston
8dbbd0ded0
Cache template regex compiles ( #78529 )
2022-09-18 11:48:04 +02:00
Joakim Sørensen
8dbe293ae2
Add version to templates ( #78484 )
2022-09-15 15:01:40 +02:00
Marc Mueller
1210897f83
Update pylint to 2.15.0 ( #77408 )
...
* Update pylint to 2.15.0
* Remove useless suppressions
* Fix TypeVar name
2022-08-28 21:14:09 +02:00
[pʲɵs]
0e9164b082
Add bool template filter and function ( #74068 )
...
Co-authored-by: Erik <erik@montnemery.com>
2022-06-28 16:22:09 +02:00
J. Nick Koston
949922ef2c
Fix exception when as_dict is called on a TemplateState ( #73984 )
2022-06-25 09:19:11 -07:00
J. Nick Koston
32e0d9f47c
Speed up generation of template states ( #73728 )
...
* Speed up generation of template states
* tweak
* cache
* cache hash
* weaken
* Revert "weaken"
This reverts commit 4856f50080
.
* lower cache size as it tends to be the same ones over and over
* lower cache size as it tends to be the same ones over and over
* lower cache size as it tends to be the same ones over and over
* cover
* Update homeassistant/helpers/template.py
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
* id reuse is possible
* account for iterting all sensors
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
2022-06-24 17:28:26 -04:00
J. Nick Koston
8015bb98a9
Switch recorder and templates to use json helper ( #73876 )
...
- These were using orjson directly, its a bit cleaner
to use the helper so everything is easier to adjust
in the future if we need to change anything about
the loading
2022-06-23 14:32:26 +02:00
J. Nick Koston
8b067e83f7
Initial orjson support take 3 ( #73849 )
...
* Initial orjson support take 2
Still need to work out problem building wheels
--
Redux of #72754 / #32153 Now possible since the following is solved:
ijl/orjson#220 (comment)
This implements orjson where we use our default encoder. This does not implement orjson where `ExtendedJSONEncoder` is used as these areas tend to be called far less frequently. If its desired, this could be done in a followup, but it seemed like a case of diminishing returns (except maybe for large diagnostics files, or traces, but those are not expected to be downloaded frequently).
Areas where this makes a perceptible difference:
- Anything that subscribes to entities (Initial subscribe_entities payload)
- Initial download of registries on first connection / restore
- History queries
- Saving states to the database
- Large logbook queries
- Anything that subscribes to events (appdaemon)
Cavets:
orjson supports serializing dataclasses natively (and much faster) which
eliminates the need to implement `as_dict` in many places
when the data is already in a dataclass. This works
well as long as all the data in the dataclass can also
be serialized. I audited all places where we have an `as_dict`
for a dataclass and found only backups needs to be adjusted (support for `Path` needed to be added for backups). I was a little bit worried about `SensorExtraStoredData` with `Decimal` but it all seems to work out from since it converts it before it gets to the json encoding cc @dgomes
If it turns out to be a problem we can disable this
with option |= [orjson.OPT_PASSTHROUGH_DATACLASS](https://github.com/ijl/orjson#opt_passthrough_dataclass ) and it
will fallback to `as_dict`
Its quite impressive for history queries
<img width="1271" alt="Screen_Shot_2022-05-30_at_23_46_30" src="https://user-images.githubusercontent.com/663432/171145699-661ad9db-d91d-4b2d-9c1a-9d7866c03a73.png ">
* use for views as well
* handle UnicodeEncodeError
* tweak
* DRY
* DRY
* not needed
* fix tests
* Update tests/components/http/test_view.py
* Update tests/components/http/test_view.py
* black
* templates
2022-06-22 21:59:51 +02:00
Raphaël Beamonte
88129dbe91
Allow `log` template function to return specified `default` on math domain error ( #72960 )
...
Fix regression for logarithm template
2022-06-03 15:27:10 +02:00
Kevin Stillhammer
90e5d69184
Add template as_timedelta ( #71801 )
2022-05-23 19:32:22 +02:00
Erik Montnemery
4885331509
Fail template functions when no default specified ( #71687 )
2022-05-13 09:46:49 -07:00
Erik Montnemery
eba125b093
Ensure 'this' variable is always defined for template entities ( #70911 )
2022-05-03 07:43:44 -07:00
Franck Nijhof
a4682ae6e1
Adjust version number in template default deprecation warning ( #71203 )
2022-05-02 18:35:37 +03:00
Marc Mueller
9b9b553521
Disable no-self-use [pylint] ( #70641 )
...
* Disable no-self-use
* Remove disable comments
2022-04-25 07:41:01 -07:00
Marc Mueller
90dab235f7
Update pylint to 2.13.7 ( #70381 )
...
* Update pylint to 2.13.7
* Spelling
* Remove old pylint config value
* Code updates
2022-04-21 13:02:52 -07:00
akloeckner
d20a620590
Make `this` variable available in template entities ( #65201 )
...
* feat: make this variable available in template entities
This makes the variable `this` available in template entities.
It will simplify the use of self-referencing template entities.
Because, without this, we have to repeat the entity id every time.
If we can solve this without explicitly spelling the entity id,
code can be re-used much better.
As a side-effect, this will allow to use `variables`-like patterns,
where attributes can be used as variables to calculate subsequent attributes or state.
Example:
```yaml
template:
sensor:
- name: test
state: "{{ this.attributes.test }}"
# not: "{{ state_attr('sensor.test', 'test' }}"
attributes:
test: "{{ now() }}"
```
* expose entity_id instead of this
* add test
* Refactor to expose this variable
* Tweak repr dunder
Co-authored-by: Erik <erik@montnemery.com>
2022-04-20 15:30:17 +02:00
Marc Mueller
e407960f68
Update pylint to 2.13.5 ( #69989 )
2022-04-13 18:36:05 +02:00
Franck Nijhof
6524dd8fb7
Add support for expanding zones in templates ( #69793 )
2022-04-11 12:59:45 +02:00
Paulus Schoutsen
206ea9d237
Expand group lights/covers etc ( #68875 )
...
Co-authored-by: Franck Nijhof <git@frenck.dev>
2022-03-30 10:11:09 +02:00
Marc Mueller
bfb1abd3a2
Add type ignore error codes [helpers] ( #66776 )
2022-02-18 11:31:37 +01:00
Franck Nijhof
fa09cf663e
Update black to 22.1.0 ( #65788 )
2022-02-05 14:19:37 +01:00
Petro31
9c6c13a55c
Add is_number as a test for use in select, selectattr, reject, and re… ( #63732 )
2022-01-10 13:00:43 +01:00
avee87
04606f05a4
Use built-in Jinja min and max filters in templates ( #60327 )
...
* Use built-in Jinja min and max filters in templates
* use built-in filter for global
* lint
* less generic name
* more tests
* even more tests
2022-01-04 10:07:23 +01:00
Ruslan Sayfutdinov
55f4962c06
Fix pylint plugin which checks relative imports ( #62693 )
2021-12-23 11:14:47 -08:00
Franck Nijhof
07e034c1c6
Add iif (immediate if) template function/filter ( #61428 )
2021-12-21 17:25:07 +01:00
Brynley McDonald
26dc526234
Add slugify as a template filter ( #58724 )
2021-12-21 11:35:54 +01:00
Paulus Schoutsen
17cf53677c
Rest fixes ( #61296 )
2021-12-08 14:35:50 -08:00
Franck Nijhof
74d1c340d7
Allow use of relative_time as a filter ( #60923 )
2021-12-03 19:30:12 +01:00
Jan Bouwhuis
3188a364e2
Add template filters pack and unpack ( #60836 )
...
* add pack and unpack template filters
* Add unpack test with offset
* use unpack_from
* Simplify unpack_from statement
2021-12-03 08:58:15 +01:00
Erik Montnemery
9f4a99fe81
Revert "Add bytes support for bitwise template operations" ( #60854 )
2021-12-03 08:50:29 +01:00
Erik Montnemery
a07f75c6b0
Revert "Allow template int filter to render from a bytes based integer" ( #60855 )
2021-12-02 14:37:19 -08:00
Jan Bouwhuis
f07e676c82
Allow template int filter to render from a bytes based integer ( #60452 )
...
* Allow template int to render bytes
* re-triggering tests
* Add warning when base !=10 and rendering bytes
* re-trigger tests
* Re-trigger tests
* remove period
* Update homeassistant/helpers/template.py
Co-authored-by: Erik Montnemery <erik@montnemery.com>
* Fix logger syntax
* remove parentheses
Co-authored-by: Erik Montnemery <erik@montnemery.com>
2021-11-30 15:01:43 +01:00
Erik Montnemery
7b57033265
Correct today_at template function / filter ( #60291 )
...
Co-authored-by: Franck Nijhof <git@frenck.dev>
2021-11-24 15:51:43 +01:00
Jan Bouwhuis
d33457b7bc
Add bytes support for bitwise template operations ( #60211 )
...
* Add bytes support for bitwise template operations
* spelling
* Update bitwise tests
* remove try block for bytes conversion
* do not accept empty `bytes` object
2021-11-24 15:15:27 +01:00
Jan Bouwhuis
d41d223033
Add UNIX timestamp detection to `as_datetime` template filter ( #60126 )
2021-11-24 09:51:56 +01:00
Jan Bouwhuis
fa0d3a6c48
Change output template filters `timestamp_local` and `timestamp_utc` to isoformat ( #60269 )
2021-11-24 09:49:03 +01:00
Marcel van der Veldt
902da4daf8
Add integration_entities template helper ( #59841 )
2021-11-20 14:43:31 -08:00
Chris Browet
4224cb043b
Allow overriding ensure_ascii in the "to_json" template filter ( #54527 )
...
* FIX: "ensureascii" to to_json
* fixup: parameter name
2021-11-08 15:49:10 +01:00
Marc Mueller
3f1b4906bf
Use assignment expressions 35 ( #58824 )
2021-10-31 18:32:17 +01:00
Erik Montnemery
bed4096430
Allow specifying a super template for async_track_template_result ( #58477 )
2021-10-27 16:07:17 +02:00
Franck Nijhof
bf693e85b1
Revert "Add warning when entity used in template doesn't exist" ( #58527 )
2021-10-27 13:53:26 +02:00
Petro31
11034a93c3
Add average template function and filter ( #57727 )
2021-10-26 22:43:45 +02:00
avee87
d9b87ee5c5
Add warning when entity used in template doesn't exist ( #57316 )
2021-10-22 20:09:54 +02:00
Raman Gupta
e5255cf21f
Add area_entities and area_devices template functions/filters ( #55228 )
2021-10-22 19:59:01 +02:00
Petro31
806dc51125
Add datetime_today template method ( #57435 )
2021-10-22 19:51:22 +02:00
Erik Montnemery
df1154395e
Revert "Swap order of int template helper kwargs ( #57729 )" ( #58015 )
...
This reverts commit f8dbcb953c
.
2021-10-21 15:03:33 +02:00
Marc Mueller
238b488642
Use assignment expressions 03 ( #57710 )
2021-10-17 20:08:11 +02:00
Petro31
f8dbcb953c
Swap order of int template helper kwargs ( #57729 )
...
* swap order of int kwargs
* Add binary and kwargless base tests
2021-10-15 13:04:26 +02:00
Erik Montnemery
7acb1b6eb9
Override the jinja2 int filter ( #57470 )
2021-10-12 00:12:42 +02:00
Erik Montnemery
ef13e473cf
Warn if template functions fail and no default is specified ( #56453 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
2021-09-29 20:16:02 +02:00
Marc Mueller
77ee72cbb9
Import Callable from collections.abc (1) ( #56775 )
2021-09-29 16:32:11 +02:00
Erik Montnemery
14a1bb423c
Add is_number template filter and function ( #56705 )
2021-09-27 10:47:57 +02:00
Chris Browet
5a2bcd2763
ADD: generalize regex_findall ( #54584 )
2021-09-05 12:41:39 +02:00
Raman Gupta
4d98a7e156
Allow device_id template function to use device name as input ( #55474 )
2021-08-31 14:56:47 +02:00
Raman Gupta
1d1b5ab345
Fix area_id and area_name template functions ( #55470 )
2021-08-30 13:09:41 -07:00
Raman Gupta
2f7a7b0309
Add template functions to get area_id and area_name ( #54248 )
...
* Add template function to get area_id
* fix int bug
* Prefer area name lookup
* remove unnecessary checks
* fix import
* Add area_name function
* change behavior to fail in ambiguous scenarios
* Revert lotto winning exception checking
* review comments
* try except else
2021-08-25 15:16:51 -04:00
Ville Skyttä
de6e7ea016
Replace *args and **kwargs type hint collections with value types ( #54955 )
2021-08-21 10:20:09 +03:00
Paulus Schoutsen
1cc3ffe20d
Fix jinja warning ( #54109 )
2021-08-06 06:41:50 +02:00
Raman Gupta
73bc0267e9
Add DeviceRegistry template functions ( #53131 )
2021-07-27 18:55:55 -04:00
Franck Nijhof
4c51299dcc
Add easy converting string timestamps/dates to datetime objects in templates ( #51576 )
2021-06-07 15:02:15 +02:00
Matt Zimmerman
e964c607a3
jinja2.contextfilter decorator renamed to pass_context ( #51007 )
...
* jinja2.contextfilter decorator renamed to pass_context
* bump jinja2 dependency
2021-05-24 17:38:37 +02:00
Ruslan Sayfutdinov
391b2f8ccd
Add missing return type in Core constructors ( #50884 )
2021-05-20 18:53:29 +03:00
Ruslan Sayfutdinov
6b38adaa3d
Downgrade setuptools to fix CI ( #50734 )
2021-05-16 20:36:23 -07:00
Marc Mueller
f1d48ddfe3
Update pylint to 2.8.0 ( #49637 )
2021-04-24 14:39:24 -10:00
Paulus Schoutsen
1016d4ea28
Support trigger-based template binary sensors ( #49504 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-04-22 14:54:28 -07:00
Marc Mueller
c07646db5d
Update typing syntax ( #49480 )
...
* Update typing syntax
* Replace typing imports with ones from collections where possible
* Changes after review
2021-04-20 17:40:41 +02:00
Ville Skyttä
970cbcbe15
Type hint improvements ( #49320 )
2021-04-17 08:35:21 +02:00
Mike Degatano
236d274351
Add `search` and `match` as Jinja tests ( #49229 )
2021-04-15 20:13:27 +02:00
J. Nick Koston
82790cd28d
Do not compile static templates ( #49148 )
...
self._compiled_code is unreachable if self.is_static
2021-04-13 16:51:56 +02:00
Franck Nijhof
a610076001
Support min()/max() as template function ( #48996 )
2021-04-12 10:02:04 +02:00
Erik Montnemery
16196e2e16
Don't log template errors from developer tool ( #48933 )
2021-04-09 12:10:02 -07:00
Erik Montnemery
9f5db2ce3f
Improve warnings on undefined template errors ( #48713 )
2021-04-06 12:11:42 -07:00
Paulus Schoutsen
e882460933
Support modern config for the trigger based template entity ( #48635 )
2021-04-02 16:57:16 -07:00
Franck Nijhof
38d14702fa
Remove HomeAssistantType alias from helpers ( #48400 )
2021-03-27 12:55:24 +01:00
Franck Nijhof
6932cf9534
Use contextlib.suppress where possible ( #48189 )
2021-03-23 14:36:43 +01:00
Erik Montnemery
f8755a52c2
Warn on undefined variables in templates ( #48140 )
...
* Warn on undefined variables in templates
* Add test
* fix tests
* fix tests
2021-03-20 15:16:04 +01:00
Franck Nijhof
fb849b81b5
Rewrite of not a == b occurances ( #48132 )
2021-03-20 01:27:04 +01:00
J. Nick Koston
c820dd4cb5
Have pylint warn when user visible log messages do not start with capital letter or end with a period ( #48064 )
...
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
2021-03-19 09:26:36 -05:00
Marc Mueller
6fb2e63e49
Update typing 02 ( #48014 )
2021-03-17 18:34:19 +01:00
Franck Nijhof
5d5a110a20
None optional hass typing in base entity and notify ( #47528 )
2021-03-15 15:11:41 +01:00
Ville Skyttä
dc880118a4
Lint suppression cleanups ( #47248 )
...
* Unused pylint suppression cleanups
* Remove outdated pylint bug references
* Add flake8-noqa config and note to run it every now and then
* Add codes to noqa's
* Unused noqa cleanups
2021-03-02 09:02:04 +01:00
Erik Montnemery
54cf954353
Add device_entities template function/filter ( #46406 )
2021-02-19 21:50:59 -08:00