Add note about not using customize to checklist

This commit is contained in:
Paulus Schoutsen 2018-01-04 20:48:48 -08:00
parent e8a6451155
commit 7eef2470bb
2 changed files with 24 additions and 23 deletions

View File

@ -15,21 +15,22 @@ A checklist of things to do when you're adding a new component.
Not all existing platforms follow the requirements in this checklist. This cannot be used as a reason to not follow them! Not all existing platforms follow the requirements in this checklist. This cannot be used as a reason to not follow them!
</p> </p>
### {% linkable_title Requirements %} ### {% linkable_title 1. Requirements %}
1. Requirement version pinned: `REQUIREMENTS = ['phue==0.8.1']` 1. Requirement version pinned: `REQUIREMENTS = ['phue==0.8.1']`
2. We no longer want requirements hosted on GitHub. Please upload to PyPi. 2. We no longer want requirements hosted on GitHub. Please upload to PyPi.
3. Requirements should only be imported inside functions. This is necessary because requirements are installed on the fly. 3. Requirements should only be imported inside functions. This is necessary because requirements are installed on the fly.
### {% linkable_title Configuration %} ### {% linkable_title 2. Configuration %}
1. Voluptuous schema present for config validation 1. Voluptuous schema present for config validation
2. Default parameters specified in voluptuous schema, not in `setup(…)` 2. Default parameters specified in voluptuous schema, not in `setup(…)`
3. Schema using as many generic config keys as possible from `homeassistant.const` 3. Schema using as many generic config keys as possible from `homeassistant.const`
4. If having platforms, have a `PLATFORM_SCHEMA`, otherwise `CONFIG_SCHEMA`. 4. If your component has platforms, define a `PLATFORM_SCHEMA` instead of a `CONFIG_SCHEMA`.
5. If `PLATFORM_SCHEMA`, import base from `homeassistant.helpers.config_validation` 5. If using a `PLATFORM_SCHEMA` to be used with `EntityComponent`, import base from `homeassistant.helpers.config_validation`
6. Never depend on users adding things to `customize` to configure behavior inside your component.
### {% linkable_title Component/platform communication %} ### {% linkable_title 3. Component/platform communication %}
1. If you need to share global data with platforms, use the dictionary `hass.data`. `hass.data[DATA_XY]` while `XY` is the component is preferred over `hass.data[DOMAIN]`. 1. If you need to share global data with platforms, use the dictionary `hass.data`. `hass.data[DATA_XY]` while `XY` is the component is preferred over `hass.data[DOMAIN]`.
2. If the component fetches data that causes it's related platform entities to update, you can notify them using the dispatcher code in `homeassistant.helpers.dispatcher`. 2. If the component fetches data that causes it's related platform entities to update, you can notify them using the dispatcher code in `homeassistant.helpers.dispatcher`.

View File

@ -27,28 +27,28 @@ Not all existing platforms follow the requirements in this checklist. This canno
### {% linkable_title 3. Configuration %} ### {% linkable_title 3. Configuration %}
1. Volutpuous schema present for config validation 1. Voluptuous schema present for config validation
2. Voluptuous schema extends schema from component<br>(e.g. `light.hue.PLATFORM_SCHEMA` extends `light.PLATFORM_SCHEMA`) 2. Voluptuous schema extends schema from component<br>(e.g. `light.hue.PLATFORM_SCHEMA` extends `light.PLATFORM_SCHEMA`)
3. Default parameters specified in voluptuous schema, not in `setup_platform(…)` 3. Default parameters specified in voluptuous schema, not in `setup_platform(…)`
4. Schema using as many generic config keys as possible from `homeassistant.const` 4. Your `PLATFORM_SCHEMA` should use as many generic config keys as possible from `homeassistant.const`
```python
import voluptuous as vol
```python from homeassistant.const import CONF_FILENAME, CONF_HOST
import voluptuous as vol from homeassistant.components.light import PLATFORM_SCHEMA
import homeassistant.helpers.config_validation as cv
from homeassistant.const import CONF_FILENAME, CONF_HOST CONF_ALLOW_UNREACHABLE = 'allow_unreachable'
from homeassistant.components.light import PLATFORM_SCHEMA DEFAULT_UNREACHABLE = False
import homeassistant.helpers.config_validation as cv
CONF_ALLOW_UNREACHABLE = 'allow_unreachable' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
DEFAULT_UNREACHABLE = False
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
vol.Required(CONF_HOST): cv.string, vol.Required(CONF_HOST): cv.string,
vol.Optional(CONF_ALLOW_UNREACHABLE, vol.Optional(CONF_ALLOW_UNREACHABLE,
default=DEFAULT_UNREACHABLE): cv.boolean, default=DEFAULT_UNREACHABLE): cv.boolean,
vol.Optional(CONF_FILENAME): cv.string, vol.Optional(CONF_FILENAME): cv.string,
}) })
``` ```
5. Never depend on users adding things to `customize` to configure behavior inside your platform.
### {% linkable_title 4. Setup Platform %} ### {% linkable_title 4. Setup Platform %}