From 7eef2470bb03c2104143e357f73c30a21096f60b Mon Sep 17 00:00:00 2001
From: Paulus Schoutsen
Date: Thu, 4 Jan 2018 20:48:48 -0800
Subject: [PATCH] Add note about not using customize to checklist
---
.../developers/code_review_component.markdown | 11 +++---
.../developers/code_review_platform.markdown | 36 +++++++++----------
2 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/source/developers/code_review_component.markdown b/source/developers/code_review_component.markdown
index 4d708290c54..9b7bdff4601 100644
--- a/source/developers/code_review_component.markdown
+++ b/source/developers/code_review_component.markdown
@@ -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!
-### {% linkable_title Requirements %}
+### {% linkable_title 1. Requirements %}
1. Requirement version pinned: `REQUIREMENTS = ['phue==0.8.1']`
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.
-### {% linkable_title Configuration %}
+### {% linkable_title 2. Configuration %}
1. Voluptuous schema present for config validation
2. Default parameters specified in voluptuous schema, not in `setup(…)`
3. Schema using as many generic config keys as possible from `homeassistant.const`
- 4. If having platforms, have a `PLATFORM_SCHEMA`, otherwise `CONFIG_SCHEMA`.
- 5. If `PLATFORM_SCHEMA`, import base from `homeassistant.helpers.config_validation`
+ 4. If your component has platforms, define a `PLATFORM_SCHEMA` instead of a `CONFIG_SCHEMA`.
+ 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]`.
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`.
diff --git a/source/developers/code_review_platform.markdown b/source/developers/code_review_platform.markdown
index 1475234123b..96f78c60a0c 100644
--- a/source/developers/code_review_platform.markdown
+++ b/source/developers/code_review_platform.markdown
@@ -27,28 +27,28 @@ Not all existing platforms follow the requirements in this checklist. This canno
### {% 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
(e.g. `light.hue.PLATFORM_SCHEMA` extends `light.PLATFORM_SCHEMA`)
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
-import voluptuous as vol
+ from homeassistant.const import CONF_FILENAME, CONF_HOST
+ from homeassistant.components.light import PLATFORM_SCHEMA
+ import homeassistant.helpers.config_validation as cv
-from homeassistant.const import CONF_FILENAME, CONF_HOST
-from homeassistant.components.light import PLATFORM_SCHEMA
-import homeassistant.helpers.config_validation as cv
+ CONF_ALLOW_UNREACHABLE = 'allow_unreachable'
+ DEFAULT_UNREACHABLE = False
-CONF_ALLOW_UNREACHABLE = 'allow_unreachable'
-DEFAULT_UNREACHABLE = False
-
-PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
- vol.Required(CONF_HOST): cv.string,
- vol.Optional(CONF_ALLOW_UNREACHABLE,
- default=DEFAULT_UNREACHABLE): cv.boolean,
- vol.Optional(CONF_FILENAME): cv.string,
-})
-```
+ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
+ vol.Required(CONF_HOST): cv.string,
+ vol.Optional(CONF_ALLOW_UNREACHABLE,
+ default=DEFAULT_UNREACHABLE): cv.boolean,
+ 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 %}
@@ -66,7 +66,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({
### {% linkable_title 6. Communication with devices/services %}
1. All API specific code has to be part of a third party library hosted on PyPi. Home Assistant should only interact with objects and not make direct calls to the API.
-
+
```python
# bad
status = requests.get(url('/status'))