Remove requirement from entity integration (#30113)

pull/30158/head
Paulus Schoutsen 2019-12-22 10:32:42 +01:00 committed by GitHub
parent 63a843c19c
commit 32aae7017e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 67 additions and 66 deletions

View File

@ -14,12 +14,12 @@ from homeassistant.components.image_processing import (
CONF_SOURCE,
PLATFORM_SCHEMA,
ImageProcessingEntity,
draw_box,
)
from homeassistant.const import CONF_TIMEOUT
from homeassistant.core import split_entity_id
from homeassistant.helpers import template
import homeassistant.helpers.config_validation as cv
from homeassistant.util.pil import draw_box
_LOGGER = logging.getLogger(__name__)

View File

@ -1,10 +1,8 @@
{
"domain": "doods",
"name": "DOODS - Distributed Outside Object Detection Service",
"documentation": "https://www.home-assistant.io/integrations/doods",
"requirements": [
"pydoods==1.0.2"
],
"dependencies": [],
"codeowners": []
"domain": "doods",
"name": "DOODS - Distributed Outside Object Detection Service",
"documentation": "https://www.home-assistant.io/integrations/doods",
"requirements": ["pydoods==1.0.2", "pillow==6.2.1"],
"dependencies": [],
"codeowners": []
}

View File

@ -2,9 +2,7 @@
import asyncio
from datetime import timedelta
import logging
from typing import Tuple
from PIL import ImageDraw
import voluptuous as vol
from homeassistant.const import ATTR_ENTITY_ID, ATTR_NAME, CONF_ENTITY_ID, CONF_NAME
@ -65,46 +63,6 @@ PLATFORM_SCHEMA = cv.PLATFORM_SCHEMA.extend(
PLATFORM_SCHEMA_BASE = cv.PLATFORM_SCHEMA_BASE.extend(PLATFORM_SCHEMA.schema)
def draw_box(
draw: ImageDraw,
box: Tuple[float, float, float, float],
img_width: int,
img_height: int,
text: str = "",
color: Tuple[int, int, int] = (255, 255, 0),
) -> None:
"""
Draw a bounding box on and image.
The bounding box is defined by the tuple (y_min, x_min, y_max, x_max)
where the coordinates are floats in the range [0.0, 1.0] and
relative to the width and height of the image.
For example, if an image is 100 x 200 pixels (height x width) and the bounding
box is `(0.1, 0.2, 0.5, 0.9)`, the upper-left and bottom-right coordinates of
the bounding box will be `(40, 10)` to `(180, 50)` (in (x,y) coordinates).
"""
line_width = 3
font_height = 8
y_min, x_min, y_max, x_max = box
(left, right, top, bottom) = (
x_min * img_width,
x_max * img_width,
y_min * img_height,
y_max * img_height,
)
draw.line(
[(left, top), (left, bottom), (right, bottom), (right, top), (left, top)],
width=line_width,
fill=color,
)
if text:
draw.text(
(left + line_width, abs(top - line_width - font_height)), text, fill=color
)
async def async_setup(hass, config):
"""Set up the image processing."""
component = EntityComponent(_LOGGER, DOMAIN, hass, SCAN_INTERVAL)

View File

@ -2,11 +2,7 @@
"domain": "image_processing",
"name": "Image processing",
"documentation": "https://www.home-assistant.io/integrations/image_processing",
"requirements": [
"pillow==6.2.1"
],
"dependencies": [
"camera"
],
"requirements": [],
"dependencies": ["camera"],
"codeowners": []
}

View File

@ -2,7 +2,7 @@
"domain": "seven_segments",
"name": "Seven segments",
"documentation": "https://www.home-assistant.io/integrations/seven_segments",
"requirements": [],
"requirements": ["pillow==6.2.1"],
"dependencies": [],
"codeowners": []
}

View File

@ -15,11 +15,11 @@ from homeassistant.components.image_processing import (
CONF_SOURCE,
PLATFORM_SCHEMA,
ImageProcessingEntity,
draw_box,
)
from homeassistant.core import split_entity_id
from homeassistant.helpers import template
import homeassistant.helpers.config_validation as cv
from homeassistant.util.pil import draw_box
_LOGGER = logging.getLogger(__name__)

View File

@ -2,7 +2,12 @@
"domain": "tensorflow",
"name": "Tensorflow",
"documentation": "https://www.home-assistant.io/integrations/tensorflow",
"requirements": ["tensorflow==1.13.2", "numpy==1.17.4", "protobuf==3.6.1"],
"requirements": [
"tensorflow==1.13.2",
"numpy==1.17.4",
"protobuf==3.6.1",
"pillow==6.2.1"
],
"dependencies": [],
"codeowners": []
}

47
homeassistant/util/pil.py Normal file
View File

@ -0,0 +1,47 @@
"""PIL utilities.
Can only be used by integrations that have pillow in their requirements.
"""
from typing import Tuple
from PIL import ImageDraw
def draw_box(
draw: ImageDraw,
box: Tuple[float, float, float, float],
img_width: int,
img_height: int,
text: str = "",
color: Tuple[int, int, int] = (255, 255, 0),
) -> None:
"""
Draw a bounding box on and image.
The bounding box is defined by the tuple (y_min, x_min, y_max, x_max)
where the coordinates are floats in the range [0.0, 1.0] and
relative to the width and height of the image.
For example, if an image is 100 x 200 pixels (height x width) and the bounding
box is `(0.1, 0.2, 0.5, 0.9)`, the upper-left and bottom-right coordinates of
the bounding box will be `(40, 10)` to `(180, 50)` (in (x,y) coordinates).
"""
line_width = 3
font_height = 8
y_min, x_min, y_max, x_max = box
(left, right, top, bottom) = (
x_min * img_width,
x_max * img_width,
y_min * img_height,
y_max * img_height,
)
draw.line(
[(left, top), (left, bottom), (right, bottom), (right, top), (left, top)],
width=line_width,
fill=color,
)
if text:
draw.text(
(left + line_width, abs(top - line_width - font_height)), text, fill=color
)

View File

@ -982,9 +982,11 @@ piglow==1.2.4
# homeassistant.components.pilight
pilight==0.1.1
# homeassistant.components.image_processing
# homeassistant.components.doods
# homeassistant.components.proxy
# homeassistant.components.qrcode
# homeassistant.components.seven_segments
# homeassistant.components.tensorflow
pillow==6.2.1
# homeassistant.components.dominos

View File

@ -323,11 +323,6 @@ pexpect==4.6.0
# homeassistant.components.pilight
pilight==0.1.1
# homeassistant.components.image_processing
# homeassistant.components.proxy
# homeassistant.components.qrcode
pillow==6.2.1
# homeassistant.components.plex
plexapi==3.3.0