Skip to content

Fix deprecations#234

Open
applied-mathematician wants to merge 24 commits intosurrealdb:mainfrom
applied-mathematician:fix/deprecated-type-hints
Open

Fix deprecations#234
applied-mathematician wants to merge 24 commits intosurrealdb:mainfrom
applied-mathematician:fix/deprecated-type-hints

Conversation

@applied-mathematician
Copy link
Contributor

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

  • 📚 Examples / docs / tutorials / dependencies update
  • 🔧 Bug fix (non-breaking change which fixes an issue)
  • 🥂 Improvement (non-breaking change which improves an existing feature)
  • 🚀 New feature (non-breaking change which adds functionality)
  • 💥 Breaking change (fix or feature that would cause existing functionality to change)
  • 🔐 Security fix

What does this change do?

Addresses multiple ruff rules flagged:

  • Type hints were being used that are outdated even for Python 3.10, the oldest supported version.
  • Deprecated imports
  • Unsorted imports
  • Poor conventions like try-except where the except-clause contains only pass
  • Unnecessary usage of pass, e.g. functions with docstrings
  • Unnecessary explicit cast to str inside of f-strings
  • Unnecessary call to dict.keys() when checking for keys present
  • ...

What 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?

Copilot AI review requested due to automatic review settings February 17, 2026 02:50
@applied-mathematician applied-mathematician changed the title Fix/deprecated type hints Fix deprecations Feb 17, 2026
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.Listlist) and apply wide formatting cleanups (trailing commas, multiline calls, etc.).
  • Minor internal cleanups (e.g., simplify conditionals, replace try/except: pass with contextlib.suppress in 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 Listlist; error-string simplification + formatting.
examples/litestar/controllers/auth.py Error-string simplification + trailing commas.
examples/jupyter/utils.py Modernize Listlist; 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 Listlist; 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.

Comment on lines 22 to 26
async def connect(self) -> None:
"""Connect to the database."""
...

async def close(self) -> None:
"""Close the database connection."""
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 41 to 45
def __init__(self, url: str) -> None:
"""Initialize the blocking embedded database.

Args:
url: Database URL (mem:// or file://).
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 50 to 54
def connect(self) -> None:
"""Connect to the database."""
...

def close(self) -> None:
"""Close the database connection."""
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 15 to 19
def get_coordinates(self) -> Any:
"""
Returns the coordinates of the geometry. Should be implemented by subclasses.
"""
pass

Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 20 to 25
@staticmethod
def parse_coordinates(coordinates: Any) -> Any:
"""
Parses a list of coordinates into a specific geometry type. Should be implemented by subclasses.
"""
pass

Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Comment on lines 8 to 12
def __init__(self, url: str) -> None:
"""Initialize the async embedded database.

Args:
url: Database URL (mem:// or file://).
Copy link

Copilot AI Feb 17, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants