Skip to content

Commit

Permalink
Add pyproject to use ~precise same settings as HA Core.
Browse files Browse the repository at this point in the history
  • Loading branch information
dermotduffy committed Jun 6, 2021
1 parent bdeea1e commit 0c92ac1
Show file tree
Hide file tree
Showing 8 changed files with 138 additions and 26 deletions.
1 change: 1 addition & 0 deletions custom_components/frigate/camera.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import urllib.parse

import async_timeout

from homeassistant.components.camera import SUPPORT_STREAM, Camera
from homeassistant.components.mqtt.subscription import async_subscribe_topics
from homeassistant.config_entries import ConfigEntry
Expand Down
3 changes: 2 additions & 1 deletion custom_components/frigate/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@
import logging
from typing import Any

import voluptuous as vol

from homeassistant import config_entries
from homeassistant.const import CONF_HOST
from homeassistant.helpers.aiohttp_client import async_create_clientsession
import voluptuous as vol

from .api import FrigateApiClient
from .const import DEFAULT_HOST, DOMAIN
Expand Down
1 change: 1 addition & 0 deletions custom_components/frigate/media_source.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

# TODO: Remove glob import and F403/F405 noqa after unittests are added.
from dateutil.relativedelta import * # noqa: F403

from homeassistant.components.media_player.const import (
MEDIA_CLASS_DIRECTORY,
MEDIA_CLASS_VIDEO,
Expand Down
3 changes: 2 additions & 1 deletion custom_components/frigate/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@
import aiohttp
from aiohttp import hdrs, web
from aiohttp.web_exceptions import HTTPBadGateway
from homeassistant.components.http import HomeAssistantView
from multidict import CIMultiDict

from homeassistant.components.http import HomeAssistantView

_LOGGER: logging.Logger = logging.getLogger(__package__)


Expand Down
128 changes: 128 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
[tool.black]
target-version = ["py38"]
exclude = 'generated'

[tool.isort]
# https://github.com/PyCQA/isort/wiki/isort-Settings
profile = "black"
# will group `import x` and `from x import` of the same module.
force_sort_within_sections = true
known_first_party = [
"custom_components.frigate",
"homeassistant",
"tests",
]
forced_separate = [
"tests",
]
combine_as_imports = true
default_section = "THIRDPARTY"

[tool.pylint.MASTER]
ignore = [
"tests",
]
# Use a conservative default here; 2 should speed up most setups and not hurt
# any too bad. Override on command line as appropriate.
jobs = 2
init-hook='from pylint.config.find_default_config_files import find_default_config_files; from pathlib import Path; import sys; sys.path.append(str(Path(Path(list(find_default_config_files())[0]).parent, "pylint/plugins")))'
load-plugins = [
"pylint.extensions.typing",
"pylint_strict_informational",
"hass_constructor",
"hass_imports",
"hass_logger",
]
persistent = false
extension-pkg-whitelist = [
"ciso8601",
"cv2",
]

[tool.pylint.BASIC]
class-const-naming-style = "any"
good-names = [
"_",
"ev",
"ex",
"fp",
"i",
"id",
"j",
"k",
"Run",
"T",
]

[tool.pylint."MESSAGES CONTROL"]
# Reasons disabled:
# format - handled by black
# locally-disabled - it spams too much
# duplicate-code - unavoidable
# cyclic-import - doesn't test if both import on load
# abstract-class-little-used - prevents from setting right foundation
# unused-argument - generic callbacks and setup methods create a lot of warnings
# too-many-* - are not enforced for the sake of readability
# too-few-* - same as too-many-*
# abstract-method - with intro of async there are always methods missing
# inconsistent-return-statements - doesn't handle raise
# too-many-ancestors - it's too strict.
# wrong-import-order - isort guards this
disable = [
"format",
"abstract-class-little-used",
"abstract-method",
"cyclic-import",
"duplicate-code",
"inconsistent-return-statements",
"locally-disabled",
"not-context-manager",
"too-few-public-methods",
"too-many-ancestors",
"too-many-arguments",
"too-many-branches",
"too-many-instance-attributes",
"too-many-lines",
"too-many-locals",
"too-many-public-methods",
"too-many-return-statements",
"too-many-statements",
"too-many-boolean-expressions",
"unused-argument",
"wrong-import-order",
]
enable = [
#"useless-suppression", # temporarily every now and then to clean them up
"use-symbolic-message-instead",
]

[tool.pylint.REPORTS]
score = false

[tool.pylint.TYPECHECK]
ignored-classes = [
"_CountingAttr", # for attrs
]

[tool.pylint.FORMAT]
expected-line-ending-format = "LF"

[tool.pylint.EXCEPTIONS]
overgeneral-exceptions = [
"BaseException",
"Exception",
"HomeAssistantError",
]

[tool.pylint.TYPING]
py-version = "3.8"
runtime-typing = false

[tool.pytest.ini_options]
testpaths = [
"tests",
]
norecursedirs = [
".git",
"testing_config",
]
19 changes: 0 additions & 19 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,3 @@ ignore =
D202,
W504
noqa-require-code = True

[isort]
# https://github.com/timothycrosley/isort
# https://github.com/timothycrosley/isort/wiki/isort-Settings
# splits long import on multiple lines indented by 4 spaces
multi_line_output = 3
include_trailing_comma=True
force_grid_wrap=0
use_parentheses=True
line_length=88
indent = " "
# by default isort don't check module indexes
not_skip = __init__.py
# will group `import x` and `from x import` of the same module.
force_sort_within_sections = true
sections = FUTURE,STDLIB,INBETWEENS,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
default_section = THIRDPARTY
known_first_party = custom_components.frigate
combine_as_imports = true
6 changes: 3 additions & 3 deletions tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
from typing import Any
from unittest.mock import AsyncMock, patch

from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant
from pytest_homeassistant_custom_component.common import MockConfigEntry

from custom_components.frigate.const import DOMAIN, NAME
from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant

TEST_BINARY_SENSOR_FRONT_DOOR_PERSON_MOTION_ENTITY_ID = (
"binary_sensor.front_door_person_motion"
Expand Down
3 changes: 1 addition & 2 deletions tests/test_config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,11 @@
import logging
from unittest.mock import AsyncMock, patch

from custom_components.frigate.const import DOMAIN, NAME
from homeassistant import config_entries
from homeassistant.const import CONF_HOST
from homeassistant.core import HomeAssistant

from custom_components.frigate.const import DOMAIN, NAME

from . import TEST_HOST, create_mock_frigate_client, create_mock_frigate_config_entry

_LOGGER = logging.getLogger(__package__)
Expand Down

0 comments on commit 0c92ac1

Please sign in to comment.