From e4b8116c98590f7e38383227eede537a1fdc44ed Mon Sep 17 00:00:00 2001 From: Frederick Muriuki Muriithi Date: Tue, 8 Aug 2023 05:17:42 +0300 Subject: Fix type-checking errors --- gn_auth/auth/db/__init__.py | 2 +- gn_auth/auth/db/mariadb.py | 16 ++++++++-- gn_auth/auth/db/protocols.py | 14 --------- gn_auth/auth/db/sqlite3.py | 18 +++++++++-- mypy.ini | 71 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 19 deletions(-) create mode 100644 mypy.ini diff --git a/gn_auth/auth/db/__init__.py b/gn_auth/auth/db/__init__.py index 7bdb38a..4d56804 100644 --- a/gn_auth/auth/db/__init__.py +++ b/gn_auth/auth/db/__init__.py @@ -1,2 +1,2 @@ """Unified database connections module.""" -from .protocols import DbCursor, DbConnection +from .protocols import DbCursor diff --git a/gn_auth/auth/db/mariadb.py b/gn_auth/auth/db/mariadb.py index 69c1d8e..35f6947 100644 --- a/gn_auth/auth/db/mariadb.py +++ b/gn_auth/auth/db/mariadb.py @@ -3,11 +3,23 @@ import logging import traceback import contextlib from urllib.parse import urlparse -from typing import Tuple, Iterator +from typing import Any, Tuple, Protocol, Iterator import MySQLdb as mdb -from .protocols import DbConnection +class DbConnection(Protocol): + """Type annotation for a generic database connection object.""" + def cursor(self, *args, **kwargs) -> Any: + """A cursor object""" + ... + + def commit(self, *args, **kwargs) -> Any: + """Commit the transaction.""" + ... + + def rollback(self) -> Any: + """Rollback the transaction.""" + ... def parse_db_url(sql_uri: str) -> Tuple: """Parse SQL_URI env variable note:there is a default value for SQL_URI so a diff --git a/gn_auth/auth/db/protocols.py b/gn_auth/auth/db/protocols.py index c089cfe..e1c408d 100644 --- a/gn_auth/auth/db/protocols.py +++ b/gn_auth/auth/db/protocols.py @@ -1,20 +1,6 @@ """Common Database connection protocols.""" from typing import Any, Protocol -class DbConnection(Protocol): - """Type annotation for a generic database connection object.""" - def cursor(self, *args, **kwargs) -> Any: - """A cursor object""" - ... - - def commit(self) -> Any: - """Commit the transaction.""" - ... - - def rollback(self) -> Any: - """Rollback the transaction.""" - ... - class DbCursor(Protocol): """Type annotation for a generic database cursor object.""" def execute(self, *args, **kwargs) -> Any: diff --git a/gn_auth/auth/db/sqlite3.py b/gn_auth/auth/db/sqlite3.py index be9eb2f..66b74c9 100644 --- a/gn_auth/auth/db/sqlite3.py +++ b/gn_auth/auth/db/sqlite3.py @@ -2,13 +2,27 @@ import sqlite3 import logging import contextlib -from typing import Any, Callable, Iterator +from typing import Any, Protocol, Callable, Iterator import traceback from flask import current_app -from .protocols import DbCursor, DbConnection +from .protocols import DbCursor + +class DbConnection(Protocol): + """Type annotation for a generic database connection object.""" + def cursor(self) -> Any: + """A cursor object""" + ... + + def commit(self) -> Any: + """Commit the transaction.""" + ... + + def rollback(self) -> Any: + """Rollback the transaction.""" + ... @contextlib.contextmanager def connection(db_path: str, row_factory: Callable = sqlite3.Row) -> Iterator[DbConnection]: diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 0000000..f75be5b --- /dev/null +++ b/mypy.ini @@ -0,0 +1,71 @@ +[mypy] +mypy_path = stubs + +[mypy-scipy.*] +ignore_missing_imports = True + +[mypy-numpy.*] +ignore_missing_imports = True + +[mypy-MySQLdb.*] +ignore_missing_imports = True + +[mypy-ipfshttpclient.*] +ignore_missing_imports = True + +[mypy-lmdb.*] +ignore_missing_imports = True + +[mypy-pingouin.*] +ignore_missing_imports = True + +[mypy-redis.*] +ignore_missing_imports = True + +[mypy-requests.*] +ignore_missing_imports = True + +[mypy-flask.*] +ignore_missing_imports = True + +[mypy-werkzeug.*] +ignore_missing_imports = True + +[mypy-SPARQLWrapper.*] +ignore_missing_imports = True + +[mypy-pandas.*] +ignore_missing_imports = True + +[mypy-pytest.*] +ignore_missing_imports = True + +[mypy-sklearn.*] +ignore_missing_imports = True + +[mypy-scripts.argparse_actions.*] +ignore_missing_imports = True + +[mypy-xapian.*] +ignore_missing_imports = True + +[mypy-yoyo.*] +ignore_missing_imports = True + +[mypy-authlib.*] +ignore_missing_imports = True + +[mypy-pymonad.*] +ignore_missing_imports = True + +[mypy-email_validator] +ignore_missing_imports = True + +[mypy-argon2] +ignore_missing_imports = True + +[mypy-argon2.*] +ignore_missing_imports = True + +[mypy-setuptools.*] +ignore_missing_imports = True \ No newline at end of file -- cgit v1.2.3