{"html_url": "https://github.com/simonw/sqlite-utils/issues/512#issuecomment-1316530539", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/512", "id": 1316530539, "node_id": "IC_kwDOCGYnMM5OeKlr", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T07:49:50Z", "updated_at": "2022-11-16T07:49:50Z", "author_association": "OWNER", "body": "Tests passed.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450952393, "label": "mypy failures in CI"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/512#issuecomment-1316447182", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/512", "id": 1316447182, "node_id": "IC_kwDOCGYnMM5Od2PO", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T06:32:31Z", "updated_at": "2022-11-16T06:32:31Z", "author_association": "OWNER", "body": "Test failed again: https://github.com/simonw/sqlite-utils/actions/runs/3476950474/jobs/5812663096\r\n\r\n`E: Failed to fetch http://azure.archive.ubuntu.com/ubuntu/pool/universe/s/spatialite/libsqlite3-mod-spatialite_4.3.0a-6build1_amd64.deb Unable to connect to azure.archive.ubuntu.com:http:`\r\n\r\nThat looks like an intermittent error. I'll try running it again in the morning.", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450952393, "label": "mypy failures in CI"}, "performed_via_github_app": null} {"html_url": "https://github.com/simonw/sqlite-utils/issues/512#issuecomment-1316437748", "issue_url": "https://api.github.com/repos/simonw/sqlite-utils/issues/512", "id": 1316437748, "node_id": "IC_kwDOCGYnMM5Odz70", "user": {"value": 9599, "label": "simonw"}, "created_at": "2022-11-16T06:24:31Z", "updated_at": "2022-11-16T06:24:31Z", "author_association": "OWNER", "body": "```\r\nsqlite-utils % pipx run no_implicit_optional .\r\nCalculating full-repo metadata...\r\nExecuting codemod...\r\n11.43s 98% complete, 0.24s estimated for 5 files to go...\r\n```\r\nThen:\r\n```\r\nFinished codemodding 239 files!\r\n - Transformed 239 files successfully.\r\n - Skipped 0 files.\r\n - Failed to codemod 0 files.\r\n - 0 warnings were generated.\r\n```\r\nHere's the diff:\r\n```diff\r\n diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py\r\nindex a06f4b7..e819d17 100644\r\n--- a/sqlite_utils/db.py\r\n+++ b/sqlite_utils/db.py\r\n@@ -297,12 +297,12 @@ class Database:\r\n \r\n def __init__(\r\n self,\r\n- filename_or_conn: Union[str, pathlib.Path, sqlite3.Connection] = None,\r\n+ filename_or_conn: Optional[Union[str, pathlib.Path, sqlite3.Connection]] = None,\r\n memory: bool = False,\r\n- memory_name: str = None,\r\n+ memory_name: Optional[str] = None,\r\n recreate: bool = False,\r\n recursive_triggers: bool = True,\r\n- tracer: Callable = None,\r\n+ tracer: Optional[Callable] = None,\r\n use_counts_table: bool = False,\r\n ):\r\n assert (filename_or_conn is not None and (not memory and not memory_name)) or (\r\n@@ -341,7 +341,7 @@ class Database:\r\n self.conn.close()\r\n \r\n @contextlib.contextmanager\r\n- def tracer(self, tracer: Callable = None):\r\n+ def tracer(self, tracer: Optional[Callable] = None):\r\n \"\"\"\r\n Context manager to temporarily set a tracer function - all executed SQL queries will\r\n be passed to this.\r\n@@ -378,7 +378,7 @@ class Database:\r\n \r\n def register_function(\r\n self,\r\n- fn: Callable = None,\r\n+ fn: Optional[Callable] = None,\r\n deterministic: bool = False,\r\n replace: bool = False,\r\n name: Optional[str] = None,\r\n@@ -879,7 +879,7 @@ class Database:\r\n pk: Optional[Any] = None,\r\n foreign_keys: Optional[ForeignKeysType] = None,\r\n column_order: Optional[List[str]] = None,\r\n- not_null: Iterable[str] = None,\r\n+ not_null: Optional[Iterable[str]] = None,\r\n defaults: Optional[Dict[str, Any]] = None,\r\n hash_id: Optional[str] = None,\r\n hash_id_columns: Optional[Iterable[str]] = None,\r\n@@ -1129,7 +1129,7 @@ class Database:\r\n sql += \" [{}]\".format(name)\r\n self.execute(sql)\r\n \r\n- def init_spatialite(self, path: str = None) -> bool:\r\n+ def init_spatialite(self, path: Optional[str] = None) -> bool:\r\n \"\"\"\r\n The ``init_spatialite`` method will load and initialize the SpatiaLite extension.\r\n The ``path`` argument should be an absolute path to the compiled extension, which\r\n@@ -1182,7 +1182,7 @@ class Queryable:\r\n \r\n def count_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n ) -> int:\r\n \"\"\"\r\n@@ -1213,12 +1213,12 @@ class Queryable:\r\n \r\n def rows_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n- order_by: str = None,\r\n+ order_by: Optional[str] = None,\r\n select: str = \"*\",\r\n- limit: int = None,\r\n- offset: int = None,\r\n+ limit: Optional[int] = None,\r\n+ offset: Optional[int] = None,\r\n ) -> Generator[dict, None, None]:\r\n \"\"\"\r\n Iterate over every row in this table or view that matches the specified where clause.\r\n@@ -1251,11 +1251,11 @@ class Queryable:\r\n \r\n def pks_and_rows_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n- order_by: str = None,\r\n- limit: int = None,\r\n- offset: int = None,\r\n+ order_by: Optional[str] = None,\r\n+ limit: Optional[int] = None,\r\n+ offset: Optional[int] = None,\r\n ) -> Generator[Tuple[Any, Dict], None, None]:\r\n \"\"\"\r\n Like ``.rows_where()`` but returns ``(pk, row)`` pairs - ``pk`` can be a single value or tuple.\r\n@@ -1345,7 +1345,7 @@ class Table(Queryable):\r\n pk: Optional[Any] = None,\r\n foreign_keys: Optional[ForeignKeysType] = None,\r\n column_order: Optional[List[str]] = None,\r\n- not_null: Iterable[str] = None,\r\n+ not_null: Optional[Iterable[str]] = None,\r\n defaults: Optional[Dict[str, Any]] = None,\r\n batch_size: int = 100,\r\n hash_id: Optional[str] = None,\r\n@@ -1545,7 +1545,7 @@ class Table(Queryable):\r\n pk: Optional[Any] = None,\r\n foreign_keys: Optional[ForeignKeysType] = None,\r\n column_order: Optional[List[str]] = None,\r\n- not_null: Iterable[str] = None,\r\n+ not_null: Optional[Iterable[str]] = None,\r\n defaults: Optional[Dict[str, Any]] = None,\r\n hash_id: Optional[str] = None,\r\n hash_id_columns: Optional[Iterable[str]] = None,\r\n@@ -2464,7 +2464,7 @@ class Table(Queryable):\r\n columns: Optional[Iterable[str]] = None,\r\n limit: Optional[int] = None,\r\n offset: Optional[int] = None,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n quote: bool = False,\r\n ) -> Generator[dict, None, None]:\r\n@@ -2527,7 +2527,7 @@ class Table(Queryable):\r\n \r\n def delete_where(\r\n self,\r\n- where: str = None,\r\n+ where: Optional[str] = None,\r\n where_args: Optional[Union[Iterable, dict]] = None,\r\n analyze: bool = False,\r\n ) -> \"Table\":\r\n```", "reactions": "{\"total_count\": 0, \"+1\": 0, \"-1\": 0, \"laugh\": 0, \"hooray\": 0, \"confused\": 0, \"heart\": 0, \"rocket\": 0, \"eyes\": 0}", "issue": {"value": 1450952393, "label": "mypy failures in CI"}, "performed_via_github_app": null}