Skip to content

Commit

Permalink
Use TypeVar's default feature with typing-extension>=4.4
Browse files Browse the repository at this point in the history
  • Loading branch information
IvanIsCoding committed Nov 16, 2024
1 parent 44d9fb0 commit bd6600d
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 8 deletions.
2 changes: 1 addition & 1 deletion noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

stubs_deps = [
"mypy==1.11.2",
"typing-extensions",
"typing-extensions>=4.4",
]

def install_rustworkx(session):
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
fixes:
- |
Enhanced the compatibility of the type annotations with `pyright` in strict
mode. See `issue 1242 <https://github.com/Qiskit/rustworkx/issues/1242>`__ for
more details.
12 changes: 9 additions & 3 deletions rustworkx/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,17 @@
# This file contains only type annotations for PyO3 functions and classes
# For implementation details, see __init__.py and src/lib.rs

import sys
import numpy as np

from typing import Generic, TypeVar, Any, Callable, overload
from typing import Generic, Any, Callable, overload
from collections.abc import Iterator, Sequence

if sys.version_info >= (3, 13):
from typing import TypeVar
else:
from typing_extensions import TypeVar

# Re-Exports of rust native functions in rustworkx.rustworkx
# To workaround limitations in mypy around re-exporting objects from the inner
# rustworkx module we need to explicitly re-export every inner function from
Expand Down Expand Up @@ -264,8 +270,8 @@ from .rustworkx import AllPairsMultiplePathMapping as AllPairsMultiplePathMappin
from .rustworkx import PyGraph as PyGraph
from .rustworkx import PyDiGraph as PyDiGraph

_S = TypeVar("_S")
_T = TypeVar("_T")
_S = TypeVar("_S", default=Any)
_T = TypeVar("_T", default=Any)
_BFSVisitor = TypeVar("_BFSVisitor", bound=visit.BFSVisitor)
_DFSVisitor = TypeVar("_DFSVisitor", bound=visit.DFSVisitor)
_DijkstraVisitor = TypeVar("_DijkstraVisitor", bound=visit.DijkstraVisitor)
Expand Down
11 changes: 8 additions & 3 deletions rustworkx/rustworkx.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@

from .visit import BFSVisitor, DFSVisitor, DijkstraVisitor
from typing import (
TypeVar,
Callable,
final,
Any,
Expand All @@ -35,9 +34,15 @@ from rustworkx import generators # noqa
from typing_extensions import Self

import numpy as np
import sys

_S = TypeVar("_S")
_T = TypeVar("_T")
if sys.version_info >= (3, 13):
from typing import TypeVar
else:
from typing_extensions import TypeVar

_S = TypeVar("_S", default=Any)
_T = TypeVar("_T", default=Any)

class DAGHasCycle(Exception): ...
class DAGWouldCycle(Exception): ...
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ commands =
basepython = python3
deps =
mypy==1.8.0
typing-extensions
typing-extensions>=4.4
extras =
mpl
graphviz
Expand Down

0 comments on commit bd6600d

Please sign in to comment.