Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade pylint to 2.0.1 #15683

Merged
merged 13 commits into from
Jul 26, 2018
Merged
2 changes: 1 addition & 1 deletion homeassistant/components/apple_tv.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
NOTIFICATION_SCAN_ID = 'apple_tv_scan_notification'
NOTIFICATION_SCAN_TITLE = 'Apple TV Scan'

T = TypeVar('T')
T = TypeVar('T') # pylint: disable=invalid-name


# This version of ensure_list interprets an empty dict as no value
Expand Down
3 changes: 3 additions & 0 deletions homeassistant/components/calendar/todoist.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@
CONF_PROJECT_LABEL_WHITELIST = 'labels'
CONF_PROJECT_WHITELIST = 'include_projects'

# https://github.com/PyCQA/pylint/pull/2320
# pylint: disable=fixme

# Calendar Platform: Does this calendar event last all day?
ALL_DAY = 'all_day'
# Attribute: All tasks in this project
Expand Down
1 change: 1 addition & 0 deletions homeassistant/components/light/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,7 @@ def get(cls, name):
@classmethod
def get_default(cls, entity_id):
"""Return the default turn-on profile for the given light."""
# pylint: disable=unsupported-membership-test
name = entity_id + ".default"
if name in cls._all:
return name
Expand Down
8 changes: 2 additions & 6 deletions homeassistant/components/media_player/bluesound.py
Original file line number Diff line number Diff line change
Expand Up @@ -216,12 +216,8 @@ def _try_get_index(string, search_string):
async def force_update_sync_status(
self, on_updated_cb=None, raise_timeout=False):
"""Update the internal status."""
resp = None
try:
resp = await self.send_bluesound_command(
'SyncStatus', raise_timeout, raise_timeout)
except Exception:
raise
resp = await self.send_bluesound_command(
'SyncStatus', raise_timeout, raise_timeout)

if not resp:
return None
Expand Down
2 changes: 2 additions & 0 deletions homeassistant/components/media_player/pandora.py
Original file line number Diff line number Diff line change
Expand Up @@ -253,9 +253,11 @@ def _query_for_playing_status(self):
_LOGGER.warning("On unexpected station list page")
self._pianobar.sendcontrol('m') # press enter
self._pianobar.sendcontrol('m') # do it again b/c an 'i' got in
# pylint: disable=assignment-from-none
response = self.update_playing_status()
elif match_idx == 3:
_LOGGER.debug("Received new playlist list")
# pylint: disable=assignment-from-none
response = self.update_playing_status()
else:
response = self._pianobar.before.decode('utf-8')
Expand Down
13 changes: 4 additions & 9 deletions homeassistant/components/sensor/citybikes.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,19 +186,14 @@ def get_closest_network_id(cls, hass, latitude, longitude):
networks = yield from async_citybikes_request(
hass, NETWORKS_URI, NETWORKS_RESPONSE_SCHEMA)
cls.NETWORKS_LIST = networks[ATTR_NETWORKS_LIST]
networks_list = cls.NETWORKS_LIST
network = networks_list[0]
result = network[ATTR_ID]
minimum_dist = location.distance(
latitude, longitude,
network[ATTR_LOCATION][ATTR_LATITUDE],
network[ATTR_LOCATION][ATTR_LONGITUDE])
for network in networks_list[1:]:
result = None
minimum_dist = None
for network in cls.NETWORKS_LIST:
network_latitude = network[ATTR_LOCATION][ATTR_LATITUDE]
network_longitude = network[ATTR_LOCATION][ATTR_LONGITUDE]
dist = location.distance(
latitude, longitude, network_latitude, network_longitude)
if dist < minimum_dist:
if minimum_dist is None or dist < minimum_dist:
minimum_dist = dist
result = network[ATTR_ID]

Expand Down
6 changes: 1 addition & 5 deletions homeassistant/components/sensor/nzbget.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,4 @@ def post(self, method, params=None):
@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update(self):
"""Update cached response."""
try:
self.status = self.post('status')['result']
except requests.exceptions.ConnectionError:
# failed to update status - exception already logged in self.post
raise
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldn't let the exception be raised. We should return after catching it and logging it once.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree, however, he merely rewrote the code to have same behavior as before.

Copy link
Member

@MartinHjelmare MartinHjelmare Jul 26, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but it's now harder to spot. But since we've flagged it here, we should be able to remember to fix it.

self.status = self.post('status')['result']
6 changes: 1 addition & 5 deletions homeassistant/components/sensor/pyload.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,4 @@ def post(self, method, params=None):
@Throttle(MIN_TIME_BETWEEN_UPDATES)
def update(self):
"""Update cached response."""
try:
self.status = self.post('speed')
except requests.exceptions.ConnectionError:
# Failed to update status - exception already logged in self.post
raise
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above.

self.status = self.post('speed')
2 changes: 2 additions & 0 deletions homeassistant/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,11 @@
if TYPE_CHECKING:
from homeassistant.config_entries import ConfigEntries # noqa

# pylint: disable=invalid-name
T = TypeVar('T')
CALLABLE_T = TypeVar('CALLABLE_T', bound=Callable)
CALLBACK_TYPE = Callable[[], None]
# pylint: enable=invalid-name

DOMAIN = 'homeassistant'

Expand Down
3 changes: 2 additions & 1 deletion homeassistant/helpers/intent.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ async def async_handle(hass, platform, intent_type, slots=None,
intent_type, err)
raise InvalidSlotInfo(
'Received invalid slot info for {}'.format(intent_type)) from err
except IntentHandleError:
# https://github.com/PyCQA/pylint/issues/2284
except IntentHandleError: # pylint: disable=try-except-raise
raise
except Exception as err:
raise IntentUnexpectedError(
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/loader.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
if TYPE_CHECKING:
from homeassistant.core import HomeAssistant # NOQA

CALLABLE_T = TypeVar('CALLABLE_T', bound=Callable)
CALLABLE_T = TypeVar('CALLABLE_T', bound=Callable) # noqa pylint: disable=invalid-name

PREPARED = False

Expand Down
4 changes: 2 additions & 2 deletions homeassistant/scripts/check_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,13 +163,13 @@ def check(config_dir, secrets=False):
'secret_cache': None,
}

# pylint: disable=unused-variable
# pylint: disable=possibly-unused-variable
def mock_load(filename):
"""Mock hass.util.load_yaml to save config file names."""
res['yaml_files'][filename] = True
return MOCKS['load'][1](filename)

# pylint: disable=unused-variable
# pylint: disable=possibly-unused-variable
def mock_secrets(ldr, node):
"""Mock _get_secrets."""
try:
Expand Down
1 change: 1 addition & 0 deletions homeassistant/scripts/influxdb_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ def run(script_args: List) -> int:
override_measurement = args.override_measurement
default_measurement = args.default_measurement

# pylint: disable=assignment-from-no-return
query = session.query(func.count(models.Events.event_type)).filter(
models.Events.event_type == 'state_changed')

Expand Down
5 changes: 5 additions & 0 deletions homeassistant/util/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,11 @@

from .dt import as_local, utcnow

# pylint: disable=invalid-name
T = TypeVar('T')
U = TypeVar('U')
ENUM_T = TypeVar('ENUM_T', bound=enum.Enum)
# pylint: enable=invalid-name

RE_SANITIZE_FILENAME = re.compile(r'(~|\.\.|/|\\)')
RE_SANITIZE_PATH = re.compile(r'(~|\.(\.)+)')
Expand Down Expand Up @@ -121,6 +123,9 @@ def get_random_string(length: int = 10) -> str:
class OrderedEnum(enum.Enum):
"""Taken from Python 3.4.0 docs."""

# https://github.com/PyCQA/pylint/issues/2306
# pylint: disable=comparison-with-callable

def __ge__(self: ENUM_T, other: ENUM_T) -> bool:
"""Return the greater than element."""
if self.__class__ is other.__class__:
Expand Down
3 changes: 2 additions & 1 deletion homeassistant/util/decorator.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Decorator utility functions."""
from typing import Callable, TypeVar
CALLABLE_T = TypeVar('CALLABLE_T', bound=Callable)

CALLABLE_T = TypeVar('CALLABLE_T', bound=Callable) # noqa pylint: disable=invalid-name


class Registry(dict):
Expand Down
2 changes: 1 addition & 1 deletion homeassistant/util/dt.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def utc_from_timestamp(timestamp: float) -> dt.datetime:


def start_of_local_day(dt_or_d:
Union[dt.date, dt.datetime]=None) -> dt.datetime:
Union[dt.date, dt.datetime] = None) -> dt.datetime:
"""Return local datetime object of start of day from date or datetime."""
if dt_or_d is None:
date = now().date() # type: dt.date
Expand Down
4 changes: 2 additions & 2 deletions homeassistant/util/yaml.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
SECRET_YAML = 'secrets.yaml'
__SECRET_CACHE = {} # type: Dict[str, JSON_TYPE]

JSON_TYPE = Union[List, Dict, str]
DICT_T = TypeVar('DICT_T', bound=Dict)
JSON_TYPE = Union[List, Dict, str] # pylint: disable=invalid-name
DICT_T = TypeVar('DICT_T', bound=Dict) # pylint: disable=invalid-name


class NodeListClass(list):
Expand Down
6 changes: 5 additions & 1 deletion pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
# too-few-* - same as too-many-*
# abstract-method - with intro of async there are always methods missing
# inconsistent-return-statements - doesn't handle raise
# useless-return - https://github.com/PyCQA/pylint/issues/2300
# not-an-iterable - https://github.com/PyCQA/pylint/issues/2311
disable=
abstract-class-little-used,
abstract-method,
Expand All @@ -19,6 +21,7 @@ disable=
global-statement,
inconsistent-return-statements,
locally-disabled,
not-an-iterable,
not-context-manager,
redefined-variable-type,
too-few-public-methods,
Expand All @@ -30,7 +33,8 @@ disable=
too-many-public-methods,
too-many-return-statements,
too-many-statements,
unused-argument
unused-argument,
useless-return

[REPORTS]
reports=no
Expand Down
2 changes: 1 addition & 1 deletion requirements_test.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ flake8==3.5
mock-open==1.3.1
mypy==0.620
pydocstyle==1.1.1
pylint==1.9.2
pylint==2.0.1
pytest-aiohttp==0.3.0
pytest-cov==2.5.1
pytest-sugar==0.9.1
Expand Down
2 changes: 1 addition & 1 deletion requirements_test_all.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ flake8==3.5
mock-open==1.3.1
mypy==0.620
pydocstyle==1.1.1
pylint==1.9.2
pylint==2.0.1
pytest-aiohttp==0.3.0
pytest-cov==2.5.1
pytest-sugar==0.9.1
Expand Down