Conversation
There was a problem hiding this comment.
Pull request overview
Modernizes the Python client by addressing a broad set of Ruff/pyupgrade/isort/style findings and updating typing to newer Python syntax, with the goal of keeping the codebase aligned with the project’s supported Python versions.
Changes:
- Update Ruff configuration (target version + additional lint rule sets) and bump Ruff minimum version.
- Modernize type hints (e.g.,
Optional[T]→T | None,typing.List→list) and apply wide formatting cleanups (trailing commas, multiline calls, etc.). - Minor internal cleanups (e.g., simplify conditionals, replace
try/except: passwithcontextlib.suppressin a few places).
Reviewed changes
Copilot reviewed 159 out of 160 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/unit_tests/test_tokens.py | Minor call-site formatting cleanup (trailing comma). |
| tests/unit_tests/test_init_functions.py | Removes redundant pass statements from no-op tests. |
| tests/unit_tests/request_message/descriptors/test_cbor_ws.py | Test formatting (multiline args, trailing commas). |
| tests/unit_tests/data_types/test_record_id.py | Modernize typing (Optional → ` |
| tests/unit_tests/data_types/test_objects.py | Add trailing commas / formatting for nested literals. |
| tests/unit_tests/data_types/test_none.py | Multiline call formatting (args + trailing commas). |
| tests/unit_tests/data_types/test_geometry.py | Formatting + prefer != over not ==. |
| tests/unit_tests/data_types/test_decimal.py | Add trailing comma in query call. |
| tests/unit_tests/data_types/test_datetimes.py | Add trailing commas in query calls. |
| tests/unit_tests/data_types/test_cbor_property.py | Add trailing commas in hypothesis strategies. |
| tests/unit_tests/connections/upsert/test_blocking_ws.py | Formatting of fixtures and query strings (trailing commas). |
| tests/unit_tests/connections/upsert/test_blocking_http.py | Trailing comma in query call. |
| tests/unit_tests/connections/upsert/test_async_ws.py | Formatting of fixtures and query strings (trailing commas). |
| tests/unit_tests/connections/upsert/test_async_http.py | Formatting of fixtures and query strings (trailing commas). |
| tests/unit_tests/connections/update/test_blocking_ws.py | Trailing commas for query calls. |
| tests/unit_tests/connections/update/test_blocking_http.py | Trailing commas for query calls. |
| tests/unit_tests/connections/update/test_async_ws.py | Trailing commas for query calls. |
| tests/unit_tests/connections/update/test_async_http.py | Formatting of fixture args + trailing commas. |
| tests/unit_tests/connections/unset/test_blocking_ws.py | Trailing commas in query calls. |
| tests/unit_tests/connections/unset/test_blocking_http.py | Trailing commas in query calls. |
| tests/unit_tests/connections/unset/test_async_ws.py | Trailing commas in query calls. |
| tests/unit_tests/connections/unset/test_async_http.py | Trailing commas in query calls. |
| tests/unit_tests/connections/test_concurrent_blocking_ws.py | Formatting and trailing commas in error aggregation strings/calls. |
| tests/unit_tests/connections/subscribe_live/test_blocking_ws.py | Trailing comma in query call. |
| tests/unit_tests/connections/subscribe_live/test_async_ws.py | Trailing comma + fixture arg formatting. |
| tests/unit_tests/connections/signup/test_blocking_ws.py | Trailing commas in schema setup queries. |
| tests/unit_tests/connections/signup/test_blocking_http.py | Trailing commas in schema setup queries. |
| tests/unit_tests/connections/signup/test_async_ws.py | Trailing commas in schema setup queries. |
| tests/unit_tests/connections/signup/test_async_http.py | Trailing commas in schema setup queries. |
| tests/unit_tests/connections/signin/test_blocking_ws.py | Trailing commas in setup queries and dict literals. |
| tests/unit_tests/connections/signin/test_blocking_http.py | Trailing commas in setup queries and dict literals. |
| tests/unit_tests/connections/signin/test_async_ws.py | Trailing commas in setup queries and dict literals. |
| tests/unit_tests/connections/signin/test_async_http.py | Trailing commas in setup queries and dict literals. |
| tests/unit_tests/connections/session_txn/test_transaction_blocking_ws.py | Trailing commas in query calls. |
| tests/unit_tests/connections/session_txn/test_transaction_async_ws.py | Trailing commas in query calls. |
| tests/unit_tests/connections/session_txn/conftest.py | Small cleanup (startswith tuple) + trailing commas in pytest.skip. |
| tests/unit_tests/connections/select/test_blocking_ws.py | Trailing commas in query calls. |
| tests/unit_tests/connections/select/test_blocking_http.py | Trailing commas in query calls. |
| tests/unit_tests/connections/select/test_async_ws.py | Trailing commas in query calls. |
| tests/unit_tests/connections/select/test_async_http.py | Trailing commas in query calls. |
| tests/unit_tests/connections/query/test_blocking_ws.py | Trailing commas in query calls + dict literal formatting. |
| tests/unit_tests/connections/query/test_blocking_http.py | Trailing commas in query calls + dict literal formatting. |
| tests/unit_tests/connections/query/test_async_ws.py | Trailing commas in query calls + dict literal formatting. |
| tests/unit_tests/connections/query/test_async_http.py | Trailing commas in query calls + dict literal formatting. |
| tests/unit_tests/connections/patch/test_blocking_ws.py | Trailing comma in setup query. |
| tests/unit_tests/connections/patch/test_blocking_http.py | Trailing comma in setup query. |
| tests/unit_tests/connections/patch/test_async_ws.py | Trailing comma in setup query. |
| tests/unit_tests/connections/patch/test_async_http.py | Trailing comma in setup query. |
| tests/unit_tests/connections/merge/test_blocking_ws.py | Formatting of fixture args + trailing comma in setup query. |
| tests/unit_tests/connections/merge/test_blocking_http.py | Formatting of fixture args + trailing comma in setup query. |
| tests/unit_tests/connections/merge/test_async_ws.py | Formatting of fixture args + trailing comma in setup query. |
| tests/unit_tests/connections/merge/test_async_http.py | Formatting of fixture args + trailing comma in setup query. |
| tests/unit_tests/connections/let/test_blocking_ws.py | Trailing comma in query call. |
| tests/unit_tests/connections/let/test_blocking_http.py | Trailing comma in query call. |
| tests/unit_tests/connections/let/test_async_ws.py | Trailing comma in query call. |
| tests/unit_tests/connections/let/test_async_http.py | Trailing comma in query call. |
| tests/unit_tests/connections/invalidate/test_blocking_ws.py | Formatting fixture args + trailing commas in calls/asserts. |
| tests/unit_tests/connections/invalidate/test_blocking_http.py | Formatting fixture args + trailing commas in calls/asserts. |
| tests/unit_tests/connections/invalidate/test_async_ws.py | Formatting fixture args + trailing commas in calls/asserts. |
| tests/unit_tests/connections/invalidate/test_async_http.py | Formatting fixture args + trailing commas in calls/asserts. |
| tests/unit_tests/connections/insert_relation/test_blocking_ws.py | Formatting fixture args + trailing commas in setup queries. |
| tests/unit_tests/connections/insert_relation/test_blocking_http.py | Formatting fixture args + trailing commas in setup queries. |
| tests/unit_tests/connections/insert_relation/test_async_ws.py | Formatting fixture args + trailing commas in setup queries. |
| tests/unit_tests/connections/insert_relation/test_async_http.py | Formatting fixture args + trailing commas in setup queries. |
| tests/unit_tests/connections/insert/test_blocking_ws.py | Formatting fixture args. |
| tests/unit_tests/connections/insert/test_blocking_http.py | Formatting fixture args. |
| tests/unit_tests/connections/insert/test_async_ws.py | Formatting fixture args. |
| tests/unit_tests/connections/insert/test_async_http.py | Formatting fixture args. |
| tests/unit_tests/connections/embedded/test_async_embedded.py | Multiline query call formatting. |
| tests/unit_tests/connections/delete/test_blocking_ws.py | Formatting fixture args. |
| tests/unit_tests/connections/delete/test_blocking_http.py | Formatting fixture args. |
| tests/unit_tests/connections/delete/test_async_ws.py | Formatting fixture args. |
| tests/unit_tests/connections/delete/test_async_http.py | Formatting fixture args. |
| tests/unit_tests/connections/create/test_blocking_ws.py | Formatting fixture args + typing/arg formatting. |
| tests/unit_tests/connections/create/test_blocking_http.py | Formatting fixture args + typing/arg formatting. |
| tests/unit_tests/connections/create/test_async_ws.py | Formatting fixture args. |
| tests/unit_tests/connections/create/test_async_http.py | Formatting fixture args + typing/arg formatting. |
| tests/unit_tests/connections/conftest.py | Replace try/except: pass cleanup with contextlib.suppress; formatting. |
| tests/unit_tests/connections/bearer_v3/test_bearer_user_blocking_ws.py | Trailing commas in dict literals. |
| tests/unit_tests/connections/bearer_v3/test_bearer_record_blocking_ws.py | Trailing commas in query calls + dict literals. |
| tests/unit_tests/connections/bearer_v3/conftest.py | Small _is_surrealdb_v3 cleanup + trailing commas in pytest.skip. |
| tests/unit_tests/connections/batch_async/test_async_ws.py | Trailing commas in prints/async batching list construction. |
| src/surrealdb/types.py | Reorder __all__. |
| src/surrealdb/request_message/sql_adapter.py | Simplify empty/comment-line check in file adapter. |
| src/surrealdb/request_message/descriptors/cbor_ws.py | Formatting changes; add trailing commas; slight signature formatting. |
| src/surrealdb/data/utils.py | Simplify process_record conditional. |
| src/surrealdb/data/types/record_id.py | Trailing commas + formatting in pydantic schema helpers. |
| src/surrealdb/data/types/range.py | Remove redundant pass in Bound.__init__. |
| src/surrealdb/data/types/geometry.py | Formatting; adds trailing commas; (also removes pass in base interface methods). |
| src/surrealdb/data/cbor.py | Signature formatting + trailing commas. |
| src/surrealdb/data/init.py | Reorder __all__ exports. |
| src/surrealdb/connections/utils_mixin.py | Avoid dict.keys() membership check; signature formatting. |
| src/surrealdb/connections/sync_template.py | Signature formatting. |
| src/surrealdb/connections/blocking_ws.py | Signature formatting, trailing commas, and minor formatting cleanups. |
| src/surrealdb/connections/blocking_http.py | Signature formatting, trailing commas, and minor formatting cleanups. |
| src/surrealdb/connections/blocking_embedded.py | Signature formatting + trailing commas in error messages. |
| src/surrealdb/connections/async_ws.py | Signature formatting + trailing commas in calls/errors. |
| src/surrealdb/connections/async_template.py | Signature formatting. |
| src/surrealdb/connections/async_http.py | Signature formatting + trailing commas in calls/errors. |
| src/surrealdb/connections/async_embedded.py | Signature formatting + trailing commas in error messages. |
| src/surrealdb/cbor/tool.py | Signature/call formatting + trailing commas. |
| src/surrealdb/cbor/_types.py | Trailing comma in error string formatting. |
| src/surrealdb/cbor/_encoder.py | Formatting refactors; minor conditional simplification. |
| src/surrealdb/cbor/_decoder.py | Formatting refactors; adds trailing commas; signature formatting. |
| src/surrealdb/_surrealdb_ext.pyi | Stub formatting changes (currently leaves incomplete stub bodies). |
| pyproject.toml | Bump Ruff version; configure Ruff target-version and additional lint settings. |
| examples/starlette/routes/websocket.py | Use contextlib.suppress for task cancellation; formatting/error-string simplification. |
| examples/starlette/routes/users.py | Error-string simplification + trailing commas. |
| examples/starlette/routes/auth.py | Error-string simplification + trailing commas. |
| examples/starlette/database.py | Trailing comma in signin vars dict. |
| examples/starlette/app.py | Trailing commas + formatting. |
| examples/sanic/database.py | Trailing comma in signin vars dict. |
| examples/sanic/blueprints/websocket.py | Use contextlib.suppress; error-string simplification + formatting. |
| examples/sanic/blueprints/users.py | Error-string simplification + trailing commas. |
| examples/sanic/blueprints/auth.py | Error-string simplification + trailing commas. |
| examples/sanic/app.py | Trailing commas in responses. |
| examples/quart/routes/websocket.py | Use contextlib.suppress; error-string simplification + formatting. |
| examples/quart/routes/users.py | Error-string simplification + trailing commas. |
| examples/quart/routes/auth.py | Trailing commas + error-string simplification. |
| examples/quart/database.py | Trailing comma in signin vars dict. |
| examples/quart/app.py | Trailing commas in responses. |
| examples/pydantic/pydantic.py | Trailing comma in json.dumps call. |
| examples/logfire/main.py | Formatting (whitespace, trailing commas) in demonstration code. |
| examples/logfire/database.py | Formatting + multiline signin call; whitespace cleanup. |
| examples/logfire/config.py | Modernize Optional[str] → `str |
| examples/litestar/models.py | Modernize typing (Optional → ` |
| examples/litestar/database.py | Use collections.abc.AsyncGenerator; formatting. |
| examples/litestar/controllers/websocket.py | Use contextlib.suppress; error-string simplification + formatting. |
| examples/litestar/controllers/users.py | Modernize List → list; error-string simplification + formatting. |
| examples/litestar/controllers/auth.py | Error-string simplification + trailing commas. |
| examples/jupyter/utils.py | Modernize List → list; minor formatting. |
| examples/jupyter/notebooks/01_getting_started.ipynb | Format multiline create() call in notebook cell. |
| examples/jupyter/database.py | Trailing comma in signin vars dict. |
| examples/graphql/schema/types.py | Modernize typing (Optional → ` |
| examples/graphql/schema/subscriptions.py | Use collections.abc.AsyncGenerator. |
| examples/graphql/schema/queries.py | Modernize List/Optional → `list/ |
| examples/graphql/schema/mutations.py | Modernize typing; error-string simplification; trailing commas. |
| examples/graphql/dataloaders.py | Modernize typing (List/Optional → `list/ |
| examples/graphql/database.py | Trailing comma in signin vars dict. |
| examples/flask/routes/users.py | Trailing commas in response dicts. |
| examples/flask/routes/auth.py | Trailing commas in response dicts. |
| examples/flask/database.py | Trailing comma in signin vars dict. |
| examples/flask/app.py | Trailing commas in responses. |
| examples/fastmcp/tools.py | Modernize typing; error-string simplification + trailing commas. |
| examples/fastmcp/server.py | Remove extra blank line. |
| examples/fastmcp/resources.py | Trailing comma in dict literal. |
| examples/fastmcp/database.py | Trailing comma in signin vars dict. |
| examples/fastapi/routes/websocket.py | Use contextlib.suppress; error-string simplification + formatting. |
| examples/fastapi/routes/users.py | Modernize List → list; error-string simplification; trailing commas. |
| examples/fastapi/routes/auth.py | Error-string simplification + trailing commas. |
| examples/fastapi/models.py | Modernize typing (Optional → ` |
| examples/fastapi/database.py | Use collections.abc.AsyncGenerator; formatting. |
| examples/embedded/persistence.py | Multiline create() call formatting. |
| examples/embedded/basic_sync.py | Multiline arg formatting. |
| examples/embedded/basic_async.py | Multiline dict formatting. |
| examples/django/surrealdb_example/settings.py | Trailing comma in settings dict. |
| examples/django/manage.py | Trailing comma in ImportError raise. |
| examples/django/database.py | Trailing comma in signin vars dict. |
| examples/django/api/views.py | Response formatting (multiline args / trailing commas). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| async def connect(self) -> None: | ||
| """Connect to the database.""" | ||
| ... | ||
|
|
||
| async def close(self) -> None: | ||
| """Close the database connection.""" |
There was a problem hiding this comment.
AsyncEmbeddedDB.connect(), close(), and execute() are missing stub bodies (.../pass). With pyright strict stub checking enabled, this is likely to be reported as an incomplete/invalid stub. Add ... (or pass) to these method bodies.
| def __init__(self, url: str) -> None: | ||
| """Initialize the blocking embedded database. | ||
|
|
||
| Args: | ||
| url: Database URL (mem:// or file://). |
There was a problem hiding this comment.
SyncEmbeddedDB.__init__() is missing a stub body (.../pass) and currently consists only of a docstring. This can cause stub validation failures under pyright/mypy. Add ... (or pass) after the docstring.
| def connect(self) -> None: | ||
| """Connect to the database.""" | ||
| ... | ||
|
|
||
| def close(self) -> None: | ||
| """Close the database connection.""" |
There was a problem hiding this comment.
SyncEmbeddedDB.connect(), close(), and execute() are missing stub bodies (.../pass). Given the repo’s strict pyright configuration for stub completeness, these should be converted back to proper stub statements.
| def get_coordinates(self) -> Any: | ||
| """ | ||
| Returns the coordinates of the geometry. Should be implemented by subclasses. | ||
| """ | ||
| pass | ||
|
|
There was a problem hiding this comment.
Geometry.get_coordinates() now has an empty body (docstring-only), so calling it on a Geometry instance will silently return None rather than signaling that subclasses must implement it. Consider making Geometry an abc.ABC and marking this as @abstractmethod, or raising NotImplementedError here to preserve the intended contract.
| @staticmethod | ||
| def parse_coordinates(coordinates: Any) -> Any: | ||
| """ | ||
| Parses a list of coordinates into a specific geometry type. Should be implemented by subclasses. | ||
| """ | ||
| pass | ||
|
|
There was a problem hiding this comment.
Geometry.parse_coordinates() now has an empty body (docstring-only) and will return None if called, despite the docstring saying it should be implemented by subclasses. Make this an abstract/static abstract method or raise NotImplementedError to avoid masking misuse at runtime.
| def __init__(self, url: str) -> None: | ||
| """Initialize the async embedded database. | ||
|
|
||
| Args: | ||
| url: Database URL (mem:// or file://). |
There was a problem hiding this comment.
In a .pyi stub, methods should use an ellipsis (...) or pass body to indicate they’re stubs. AsyncEmbeddedDB.__init__ currently has a docstring-only body, which can trigger pyright/mypy stub validation errors (e.g. reportIncompleteStub / reportInvalidStubStatement). Add ... (or pass) after the docstring.
Thank you for submitting this pull request! We appreciate you spending the time to work on these changes.
What is the motivation?
Keep the code modern.
Type of Change
What does this change do?
Addresses multiple ruff rules flagged:
passpass, e.g. functions with docstringsWhat is your testing strategy?
The changes made should have no effect on the functionality; standard testing.
Is this related to any issues?
No
Have you read the Contributing Guidelines?