You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here's perfectly valid sqlite_utils code that raises objections from Mypy & Pyright/PyLance in VS Code:
#! /usr/bin/env python3fromsqlite_utilsimportDatabase# Create or connect to the databasedb=Database("example.db")
# Create a table with an autoincrementing primary key"""Mypy/Pylance objects to the create() call with the error: "Cannot access attribute "create" for class "View"Attribute "create" is unknownPylancereportAttributeAccessIssue"""db["my_table"].create(
{"id": int, "name": str, "value": int}, pk="id", if_not_exists=True
)
"""Mypy/Pylance objects to the upsert() call with the same error.It also objects to the pk="id" argument, with error: "Argument of type "Literal['id']" cannot be assigned to parameter "pk" of type "Default" "Literal['id']" is incompatible with "Default""""db["my_table"].upsert({"name": "example", "value": 42}, pk="id")
# Verify the dataprint(list(db["my_table"].rows))
Is there a workaround or another approach that wouldn't throw these spurious errors?
The text was updated successfully, but these errors were encountered:
Here's a pattern that casts calls to DB[<table_name>] to Table, but it's verbose:
fromsqlite_utilsimportDatabasefromsqlite_utils.dbimportTablefromtypingimportcastDB=Database("example.db")
table=cast(Table, DB["my_table"]) # this avoids errors, but it's a mouthful every time you use a tabletable.upsert({"name": "example", "value": 42}, pk="id") # upsert() call is happy, although literal "id" is sometimes an issue
Duplicate of the unresolved closed bug #607.
Here's perfectly valid
sqlite_utils
code that raises objections from Mypy & Pyright/PyLance in VS Code:Is there a workaround or another approach that wouldn't throw these spurious errors?
The text was updated successfully, but these errors were encountered: