sqlite-utils icon indicating copy to clipboard operation
sqlite-utils copied to clipboard

Mypy & Pyright show errors for basic sqlite-utils usage

Open etjones opened this issue 5 months ago • 1 comments

Duplicate of the unresolved closed bug #607.

Here's perfectly valid sqlite_utils code that raises objections from Mypy & Pyright/PyLance in VS Code:

#! /usr/bin/env python3

from sqlite_utils import Database

# Create or connect to the database
db = 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 data
print(list(db["my_table"].rows))

Is there a workaround or another approach that wouldn't throw these spurious errors?

etjones avatar Aug 28 '24 16:08 etjones