diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a749856..327d5a0 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -105,8 +105,8 @@ jobs: run: | source .venv/bin/activate isort -m 9 --line-length 160 $MODULE_NAME tests --gitignore --check-only - # pylint $MODULE_NAME tests + pylint $MODULE_NAME tests docformatter --wrap-summaries 160 --wrap-descriptions 160 -cr $MODULE_NAME tests black --check $MODULE_NAME tests mypy -V - # mypy $MODULE_NAME tests + mypy $MODULE_NAME tests diff --git a/clairvoyance/cli.py b/clairvoyance/cli.py index 616d079..6a46137 100644 --- a/clairvoyance/cli.py +++ b/clairvoyance/cli.py @@ -45,7 +45,7 @@ def load_default_wordlist() -> List[str]: return [w.strip() for w in f.readlines() if w.strip()] -async def blind_introspection( +async def blind_introspection( # pylint: disable=too-many-arguments url: str, logger: logging.Logger, wordlist: List[str], diff --git a/clairvoyance/client.py b/clairvoyance/client.py index a4f02d0..7a33013 100644 --- a/clairvoyance/client.py +++ b/clairvoyance/client.py @@ -8,7 +8,7 @@ from clairvoyance.entities.interfaces import IClient -class Client(IClient): +class Client(IClient): # pylint: disable=too-many-instance-attributes def __init__( self, url: str, @@ -68,8 +68,8 @@ async def post( return await response.json(content_type=None) except ( - aiohttp.client_exceptions.ClientConnectionError, - aiohttp.client_exceptions.ClientPayloadError, + aiohttp.ClientConnectionError, + aiohttp.ClientPayloadError, asyncio.TimeoutError, json.decoder.JSONDecodeError, ) as e: diff --git a/clairvoyance/entities/context.py b/clairvoyance/entities/context.py index 04c7f30..1b1b8bf 100644 --- a/clairvoyance/entities/context.py +++ b/clairvoyance/entities/context.py @@ -10,11 +10,11 @@ # Quick resolve the context variables using macros. config: Callable[..., IConfig] = ( - lambda: config_ctx.get() -) # pylint: disable=unnecessary-lambda + lambda: config_ctx.get() # pylint: disable=unnecessary-lambda +) client: Callable[..., IClient] = ( - lambda: client_ctx.get() -) # pylint: disable=unnecessary-lambda + lambda: client_ctx.get() # pylint: disable=unnecessary-lambda +) log: Callable[..., logging.Logger] = ( - lambda: logger_ctx.get() -) # pylint: disable=unnecessary-lambda + lambda: logger_ctx.get() # pylint: disable=unnecessary-lambda +) diff --git a/clairvoyance/entities/interfaces.py b/clairvoyance/entities/interfaces.py index 722228c..6e16e9e 100644 --- a/clairvoyance/entities/interfaces.py +++ b/clairvoyance/entities/interfaces.py @@ -28,7 +28,9 @@ async def post( self, document: Optional[str], retries: int = 0, - ) -> Dict: ... + ) -> Dict: + pass @abstractmethod - async def close(self) -> None: ... + async def close(self) -> None: + pass diff --git a/clairvoyance/graphql.py b/clairvoyance/graphql.py index 9057221..5041d59 100644 --- a/clairvoyance/graphql.py +++ b/clairvoyance/graphql.py @@ -11,10 +11,10 @@ class Schema: def __init__( self, - query_type: str = None, - mutation_type: str = None, - subscription_type: str = None, - schema: Dict[str, Any] = None, + query_type: Optional[str] = None, + mutation_type: Optional[str] = None, + subscription_type: Optional[str] = None, + schema: Optional[Dict[str, Any]] = None, ): if schema: self._schema = { @@ -142,7 +142,7 @@ def get_path_from_root( def get_type_without_fields( self, - ignored: Set[str] = None, + ignored: Optional[Set[str]] = None, ) -> str: """Gets the type without a field.""" ignored = ignored or set() @@ -331,7 +331,7 @@ def __init__( self, name: str, typeref: Optional[TypeRef], - args: List[InputValue] = None, + args: Optional[List[InputValue]] = None, ): if not typeref: raise ValueError(f"Can't create {name} Field from {typeref} TypeRef.") @@ -367,7 +367,7 @@ def __init__( self, name: str = "", kind: str = "", - fields: List[Field] = None, + fields: Optional[List[Field]] = None, ): self.name = name self.kind = kind diff --git a/clairvoyance/oracle.py b/clairvoyance/oracle.py index 3d2c8a6..e91407b 100644 --- a/clairvoyance/oracle.py +++ b/clairvoyance/oracle.py @@ -422,7 +422,6 @@ async def __probation(document: str) -> Optional[graphql.TypeRef]: error["message"], context, ) - log().debug(f'get_typeref("{error["message"]}", "{context}") -> {typeref}') if typeref: return typeref @@ -582,7 +581,7 @@ async def explore_field( async def clairvoyance( wordlist: List[str], input_document: str, - input_schema: Dict[str, Any] = None, + input_schema: Optional[Dict[str, Any]] = None, ) -> str: log().debug(f"input_document = {input_document}") diff --git a/tests/graphql_test.py b/tests/graphql_test.py index 2a53986..4008f0b 100644 --- a/tests/graphql_test.py +++ b/tests/graphql_test.py @@ -60,9 +60,9 @@ class TestPost(aiounittest.AsyncTestCase): def setUpClass(cls) -> None: Client("http://localhost:8000/graphql") - cls._unstable = subprocess.Popen( + cls._unstable = subprocess.Popen( # pylint: disable=consider-using-with ["python3", "tests/server/unstable.py"] - ) # pylint: disable=consider-using-with + ) time.sleep(1) @classmethod diff --git a/tests/oracle_test.py b/tests/oracle_test.py index a255598..e0cba17 100644 --- a/tests/oracle_test.py +++ b/tests/oracle_test.py @@ -287,9 +287,9 @@ class TestProbeTypename(aiounittest.AsyncTestCase): def setUpClass(cls) -> None: Client("http://localhost:8081/graphql") - cls._unstable = subprocess.Popen( + cls._unstable = subprocess.Popen( # pylint: disable=consider-using-with ["python3", "tests/server/graphql.py"] - ) # pylint: disable=consider-using-with + ) time.sleep(1) @classmethod diff --git a/tests/server/graphql.py b/tests/server/graphql.py index 70349ae..1cb4cb5 100644 --- a/tests/server/graphql.py +++ b/tests/server/graphql.py @@ -1,5 +1,6 @@ import http.server import json +from typing import Optional class UnstableHTTPRequestHandler(http.server.BaseHTTPRequestHandler): @@ -24,7 +25,7 @@ def log_message(self, format, *args) -> None: # type: ignore[no-untyped-def] # pass -def main(port: int = None) -> None: +def main(port: Optional[int] = None) -> None: port = port or 8081 with http.server.HTTPServer(("", port), UnstableHTTPRequestHandler) as httpd: httpd.serve_forever() diff --git a/tests/server/unstable.py b/tests/server/unstable.py index b0bfd32..4c66b96 100644 --- a/tests/server/unstable.py +++ b/tests/server/unstable.py @@ -1,6 +1,7 @@ import http.server import json import os +from typing import Optional class UnstableHTTPRequestHandler(http.server.BaseHTTPRequestHandler): @@ -23,7 +24,7 @@ def log_message(self, format, *args) -> None: # type: ignore[no-untyped-def] # pass -def main(port: int = None) -> None: +def main(port: Optional[int] = None) -> None: port = port or 8000 with http.server.HTTPServer(("", port), UnstableHTTPRequestHandler) as httpd: httpd.serve_forever() diff --git a/tests/system.py b/tests/system.py index 1037c8d..b71db1e 100644 --- a/tests/system.py +++ b/tests/system.py @@ -45,7 +45,7 @@ def setUpClass(cls) -> None: def query_type(self) -> Any: query_type = self.get_type(self.schema["queryType"]["name"]) if not query_type: - raise Exception("Schema don't contain query type") + raise RuntimeError("Schema don't contain query type") return query_type @@ -56,7 +56,7 @@ def get_type(self, name: str) -> Optional[Dict[str, Any]]: return None - def test_validate_wordlist(self): + def test_validate_wordlist(self) -> None: self.assertIn(b"Removed 1 items from wordlist", self.clairvoyance.stderr) def test_found_root_type_names(self) -> None: