Add pylint checks
This commit is contained in:
parent
2788a3ac91
commit
b0e3b15ff0
16 changed files with 47 additions and 39 deletions
6
.github/workflows/python-check.yml
vendored
6
.github/workflows/python-check.yml
vendored
|
@ -34,9 +34,9 @@ jobs:
|
|||
- name: Type check with mypy
|
||||
run: |
|
||||
mypy pyhon/
|
||||
# - name: Analysing the code with pylint
|
||||
# run: |
|
||||
# pylint --max-line-length 88 $(git ls-files '*.py')
|
||||
- name: Analysing the code with pylint
|
||||
run: |
|
||||
pylint $(git ls-files '*.py')
|
||||
- name: Check black style
|
||||
run: |
|
||||
black . --check
|
||||
|
|
7
.pylintrc
Normal file
7
.pylintrc
Normal file
|
@ -0,0 +1,7 @@
|
|||
[MESSAGES CONTROL]
|
||||
|
||||
disable=C,R
|
||||
|
||||
[FORMAT]
|
||||
|
||||
max-line-length=88
|
|
@ -30,13 +30,13 @@ def get_arguments() -> Dict[str, Any]:
|
|||
export.add_argument("--zip", help="create zip archive", action="store_true")
|
||||
export.add_argument("--anonymous", help="anonymize data", action="store_true")
|
||||
export.add_argument("directory", nargs="?", default=Path().cwd())
|
||||
translate = subparser.add_parser(
|
||||
translation = subparser.add_parser(
|
||||
"translate", help="print available translation keys"
|
||||
)
|
||||
translate.add_argument(
|
||||
translation.add_argument(
|
||||
"translate", help="language (de, en, fr...)", metavar="LANGUAGE"
|
||||
)
|
||||
translate.add_argument("--json", help="print as json", action="store_true")
|
||||
translation.add_argument("--json", help="print as json", action="store_true")
|
||||
parser.add_argument(
|
||||
"-i", "--import", help="import pyhon data", nargs="?", default=Path().cwd()
|
||||
)
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
from typing import Any, Dict
|
||||
|
||||
from pyhon.appliances.base import ApplianceBase
|
||||
from pyhon.parameter.program import HonParameterProgram
|
||||
|
||||
|
||||
class Appliance(ApplianceBase):
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
import asyncio
|
||||
from contextlib import suppress
|
||||
from copy import copy
|
||||
from typing import Dict, Any, Optional, TYPE_CHECKING, List, Collection
|
||||
from typing import Dict, Any, Optional, TYPE_CHECKING, List
|
||||
|
||||
from pyhon.commands import HonCommand
|
||||
from pyhon.exceptions import NoAuthenticationException
|
||||
from pyhon.parameter.fixed import HonParameterFixed
|
||||
from pyhon.parameter.program import HonParameterProgram
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from pyhon import HonAPI, exceptions
|
||||
from pyhon import HonAPI
|
||||
from pyhon.appliance import HonAppliance
|
||||
|
||||
|
||||
|
@ -29,7 +30,7 @@ class HonCommandLoader:
|
|||
def api(self) -> "HonAPI":
|
||||
"""api connection object"""
|
||||
if self._api is None:
|
||||
raise exceptions.NoAuthenticationException("Missing hOn login")
|
||||
raise NoAuthenticationException("Missing hOn login")
|
||||
return self._api
|
||||
|
||||
@property
|
||||
|
|
|
@ -170,6 +170,6 @@ class HonCommand:
|
|||
result[name] = parameter
|
||||
return result
|
||||
|
||||
def reset(self):
|
||||
def reset(self) -> None:
|
||||
for parameter in self._parameters.values():
|
||||
parameter.reset()
|
||||
|
|
|
@ -21,7 +21,7 @@ class HonDevice:
|
|||
return self._os_version
|
||||
|
||||
@property
|
||||
def os(self) -> str:
|
||||
def os_type(self) -> str:
|
||||
return self._os
|
||||
|
||||
@property
|
||||
|
@ -36,7 +36,7 @@ class HonDevice:
|
|||
result: Dict[str, str | int] = {
|
||||
"appVersion": self.app_version,
|
||||
"mobileId": self.mobile_id,
|
||||
"os": self.os,
|
||||
"os": self.os_type,
|
||||
"osVersion": self.os_version,
|
||||
"deviceModel": self.device_model,
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
import logging
|
||||
from collections.abc import AsyncIterator
|
||||
from contextlib import asynccontextmanager
|
||||
from contextlib import asynccontextmanager, _AsyncGeneratorContextManager
|
||||
from types import TracebackType
|
||||
from typing import Optional, Dict, Type, Any, Protocol
|
||||
from typing import Optional, Dict, Type, Any, Callable, Coroutine, AsyncGenerator
|
||||
|
||||
import aiohttp
|
||||
from typing_extensions import Self
|
||||
|
@ -47,10 +47,11 @@ class ConnectionHandler:
|
|||
return self
|
||||
|
||||
@asynccontextmanager
|
||||
def _intercept(
|
||||
async def _intercept(
|
||||
self, method: Callback, url: str | URL, *args: Any, **kwargs: Dict[str, Any]
|
||||
) -> AsyncIterator[aiohttp.ClientResponse]:
|
||||
raise NotImplementedError
|
||||
async with method(url, *args, **kwargs) as response:
|
||||
yield response
|
||||
|
||||
@asynccontextmanager
|
||||
async def get(
|
||||
|
|
|
@ -95,11 +95,11 @@ class HonConnectionHandler(ConnectionHandler):
|
|||
try:
|
||||
await response.json()
|
||||
yield response
|
||||
except json.JSONDecodeError:
|
||||
except json.JSONDecodeError as exc:
|
||||
_LOGGER.warning(
|
||||
"%s - JsonDecodeError %s - %s",
|
||||
response.request_info.url,
|
||||
response.status,
|
||||
await response.text(),
|
||||
)
|
||||
raise HonAuthenticationError("Decode Error")
|
||||
raise HonAuthenticationError("Decode Error") from exc
|
||||
|
|
|
@ -18,7 +18,7 @@ class HonParameter:
|
|||
] = {}
|
||||
self._set_attributes()
|
||||
|
||||
def _set_attributes(self):
|
||||
def _set_attributes(self) -> None:
|
||||
self._category = self._attributes.get("category", "")
|
||||
self._typology = self._attributes.get("typology", "")
|
||||
self._mandatory = self._attributes.get("mandatory", 0)
|
||||
|
@ -93,5 +93,5 @@ class HonParameter:
|
|||
|
||||
return result
|
||||
|
||||
def reset(self):
|
||||
def reset(self) -> None:
|
||||
self._set_attributes()
|
||||
|
|
|
@ -10,18 +10,18 @@ def clean_value(value: str | float) -> str:
|
|||
class HonParameterEnum(HonParameter):
|
||||
def __init__(self, key: str, attributes: Dict[str, Any], group: str) -> None:
|
||||
super().__init__(key, attributes, group)
|
||||
self._default = ""
|
||||
self._value = ""
|
||||
self._default: str | float = ""
|
||||
self._value: str | float = ""
|
||||
self._values: List[str] = []
|
||||
self._set_attributes()
|
||||
if self._default and clean_value(self._default.strip("[]")) not in self.values:
|
||||
self._values.append(self._default)
|
||||
|
||||
def _set_attributes(self):
|
||||
def _set_attributes(self) -> None:
|
||||
super()._set_attributes()
|
||||
self._default = self._attributes.get("defaultValue")
|
||||
self._default = self._attributes.get("defaultValue", "")
|
||||
self._value = self._default or "0"
|
||||
self._values: List[str] = self._attributes.get("enumValues", [])
|
||||
self._values = self._attributes.get("enumValues", [])
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"{self.__class__} (<{self.key}> {self.values})"
|
||||
|
|
|
@ -6,12 +6,12 @@ from pyhon.parameter.base import HonParameter
|
|||
class HonParameterFixed(HonParameter):
|
||||
def __init__(self, key: str, attributes: Dict[str, Any], group: str) -> None:
|
||||
super().__init__(key, attributes, group)
|
||||
self._value = None
|
||||
self._value: str | float = ""
|
||||
self._set_attributes()
|
||||
|
||||
def _set_attributes(self):
|
||||
def _set_attributes(self) -> None:
|
||||
super()._set_attributes()
|
||||
self._value = self._attributes.get("fixedValue", None)
|
||||
self._value = self._attributes.get("fixedValue", "")
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"{self.__class__} (<{self.key}> fixed)"
|
||||
|
|
|
@ -37,7 +37,7 @@ class HonParameterProgram(HonParameterEnum):
|
|||
|
||||
@values.setter
|
||||
def values(self, values: List[str]) -> None:
|
||||
return
|
||||
raise ValueError("Cant set values {values}")
|
||||
|
||||
@property
|
||||
def ids(self) -> Dict[int, str]:
|
||||
|
|
|
@ -14,13 +14,13 @@ class HonParameterRange(HonParameter):
|
|||
self._value: float = 0
|
||||
self._set_attributes()
|
||||
|
||||
def _set_attributes(self):
|
||||
def _set_attributes(self) -> None:
|
||||
super()._set_attributes()
|
||||
self._min: float = str_to_float(self._attributes["minimumValue"])
|
||||
self._max: float = str_to_float(self._attributes["maximumValue"])
|
||||
self._step: float = str_to_float(self._attributes["incrementValue"])
|
||||
self._default: float = str_to_float(self._attributes.get("defaultValue", self.min))
|
||||
self._value: float = self._default
|
||||
self._min = str_to_float(self._attributes["minimumValue"])
|
||||
self._max = str_to_float(self._attributes["maximumValue"])
|
||||
self._step = str_to_float(self._attributes["incrementValue"])
|
||||
self._default = str_to_float(self._attributes.get("defaultValue", self.min))
|
||||
self._value = self._default
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return f"{self.__class__} (<{self.key}> [{self.min} - {self.max}])"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from typing import Union, Any, TYPE_CHECKING, Protocol
|
||||
from typing import Union, Any, TYPE_CHECKING, Protocol, AsyncIterator, Coroutine
|
||||
|
||||
import aiohttp
|
||||
from yarl import URL
|
||||
|
|
2
setup.py
2
setup.py
|
@ -2,7 +2,7 @@
|
|||
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
with open("README.md", "r") as f:
|
||||
with open("README.md", "r", encoding="utf-8") as f:
|
||||
long_description = f.read()
|
||||
|
||||
setup(
|
||||
|
|
Loading…
Reference in a new issue