Skip to content

Mypy & Pyright show errors for basic sqlite-utils usage #638

Open
@etjones

Description

@etjones

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions