Skip to content

Commit 08e014a

Browse files
committed
[pika] Fix connection parameter for callbacks
The callbacks provided to a connection get passed the connection as first argument. While this was correctly typed as `Self` in the base `Connection` class, the concrete `Connection` class was used in sub-classes. Fixed to use `Self` in sub-classes as well.
1 parent 56cbde4 commit 08e014a

6 files changed

Lines changed: 32 additions & 31 deletions

File tree

stubs/pika/pika/adapters/asyncio_connection.pyi

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import asyncio
22
from _typeshed import Incomplete
33
from collections.abc import Callable, Sequence
44
from logging import Logger
5+
from typing import Self
56

67
from pika.adapters.base_connection import BaseConnection
78
from pika.adapters.utils import io_services_utils
@@ -12,25 +13,25 @@ from pika.adapters.utils.nbio_interface import (
1213
AbstractIOServices,
1314
AbstractTimerReference,
1415
)
15-
from pika.connection import Connection, Parameters
16+
from pika.connection import Parameters
1617

1718
LOGGER: Logger
1819

1920
class AsyncioConnection(BaseConnection[asyncio.AbstractEventLoop]):
2021
def __init__(
2122
self,
2223
parameters: Parameters | None = None,
23-
on_open_callback: Callable[[Connection], object] | None = None,
24-
on_open_error_callback: Callable[[Connection, BaseException], object] | None = None,
25-
on_close_callback: Callable[[Connection, BaseException], object] | None = None,
24+
on_open_callback: Callable[[Self], object] | None = None,
25+
on_open_error_callback: Callable[[Self, BaseException], object] | None = None,
26+
on_close_callback: Callable[[Self, BaseException], object] | None = None,
2627
custom_ioloop: asyncio.AbstractEventLoop | AbstractIOServices | None = None,
2728
internal_connection_workflow: bool = True,
2829
) -> None: ...
2930
@classmethod
3031
def create_connection(
3132
cls,
3233
connection_configs: Sequence[Parameters],
33-
on_done: Callable[[Connection | AMQPConnectorException], object],
34+
on_done: Callable[[Self | AMQPConnectorException], object],
3435
custom_ioloop: asyncio.AbstractEventLoop | None = None,
3536
workflow: AbstractAMQPConnectionWorkflow | None = None,
3637
) -> AbstractAMQPConnectionWorkflow: ...

stubs/pika/pika/adapters/base_connection.pyi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ class BaseConnection(Connection, Generic[_IOLoop], metaclass=abc.ABCMeta):
2121
def __init__(
2222
self,
2323
parameters: Parameters | None,
24-
on_open_callback: Callable[[Connection], object] | None,
25-
on_open_error_callback: Callable[[Connection, BaseException], object] | None,
26-
on_close_callback: Callable[[Connection, BaseException], object] | None,
24+
on_open_callback: Callable[[Self], object] | None,
25+
on_open_error_callback: Callable[[Self, BaseException], object] | None,
26+
on_close_callback: Callable[[Self, BaseException], object] | None,
2727
nbio: AbstractIOServices,
2828
internal_connection_workflow: bool = True,
2929
) -> None: ...
@@ -104,7 +104,7 @@ class _StreamingProtocolShim(AbstractStreamProtocol, Generic[_IOLoop]):
104104
def create_connection(
105105
cls,
106106
connection_configs: Sequence[Parameters],
107-
on_done: Callable[[Connection | AMQPConnectorException], object],
107+
on_done: Callable[[Self | AMQPConnectorException], object],
108108
custom_ioloop: _IOLoop | None = None,
109109
workflow: AbstractAMQPConnectionWorkflow | None = None,
110110
) -> AbstractAMQPConnectionWorkflow: ...

stubs/pika/pika/adapters/gevent_connection.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
11
from collections.abc import Callable, Sequence
22
from logging import Logger
3-
from typing import Final
3+
from typing import Final, Self
44

55
from gevent._types import _Loop, _TimerWatcher
66
from gevent.hub import Hub
77
from pika.adapters.base_connection import BaseConnection
88
from pika.adapters.utils.connection_workflow import AbstractAMQPConnectionWorkflow, AMQPConnectorException
99
from pika.adapters.utils.nbio_interface import AbstractIOReference, AbstractIOServices
1010
from pika.adapters.utils.selector_ioloop_adapter import AbstractSelectorIOLoop, SelectorIOServicesAdapter, _SupportsCancel
11-
from pika.connection import Connection, Parameters
11+
from pika.connection import Parameters
1212

1313
LOGGER: Logger
1414

1515
class GeventConnection(BaseConnection[_Loop]):
1616
def __init__(
1717
self,
1818
parameters: Parameters | None = None,
19-
on_open_callback: Callable[[Connection], object] | None = None,
20-
on_open_error_callback: Callable[[Connection, BaseException], object] | None = None,
21-
on_close_callback: Callable[[Connection, BaseException], object] | None = None,
19+
on_open_callback: Callable[[Self], object] | None = None,
20+
on_open_error_callback: Callable[[Self, BaseException], object] | None = None,
21+
on_close_callback: Callable[[Self, BaseException], object] | None = None,
2222
custom_ioloop: _Loop | AbstractIOServices | None = None,
2323
internal_connection_workflow: bool = True,
2424
) -> None: ...
2525
@classmethod
2626
def create_connection(
2727
cls,
2828
connection_configs: Sequence[Parameters],
29-
on_done: Callable[[Connection | AMQPConnectorException], object],
29+
on_done: Callable[[Self | AMQPConnectorException], object],
3030
custom_ioloop: _Loop | None = None,
3131
workflow: AbstractAMQPConnectionWorkflow | None = None,
3232
) -> AbstractAMQPConnectionWorkflow: ...

stubs/pika/pika/adapters/select_connection.pyi

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import abc
22
import select
33
from collections.abc import Callable, Sequence
44
from logging import Logger
5-
from typing import ClassVar, Final, Literal, TypeAlias, TypedDict
5+
from typing import ClassVar, Final, Literal, Self, TypeAlias, TypedDict
66

77
import pika.compat
88
from pika.adapters.base_connection import BaseConnection
99
from pika.adapters.utils.connection_workflow import AbstractAMQPConnectionWorkflow, AMQPConnectorException
1010
from pika.adapters.utils.nbio_interface import AbstractIOServices
1111
from pika.adapters.utils.selector_ioloop_adapter import AbstractSelectorIOLoop
12-
from pika.connection import Connection, Parameters
12+
from pika.connection import Parameters
1313

1414
SELECT_ERROR_T: TypeAlias = OSError | IOError | InterruptedError | select.error
1515

@@ -24,17 +24,17 @@ class SelectConnection(BaseConnection[IOLoop]):
2424
def __init__(
2525
self,
2626
parameters: Parameters | None = None,
27-
on_open_callback: Callable[[Connection], object] | None = None,
28-
on_open_error_callback: Callable[[Connection, BaseException], object] | None = None,
29-
on_close_callback: Callable[[Connection, BaseException], object] | None = None,
27+
on_open_callback: Callable[[Self], object] | None = None,
28+
on_open_error_callback: Callable[[Self, BaseException], object] | None = None,
29+
on_close_callback: Callable[[Self, BaseException], object] | None = None,
3030
custom_ioloop: IOLoop | AbstractIOServices | None = None,
3131
internal_connection_workflow: bool = True,
3232
) -> None: ...
3333
@classmethod
3434
def create_connection(
3535
cls,
3636
connection_configs: Sequence[Parameters],
37-
on_done: Callable[[Connection | AMQPConnectorException], object],
37+
on_done: Callable[[Self | AMQPConnectorException], object],
3838
custom_ioloop: IOLoop | None = None,
3939
workflow: AbstractAMQPConnectionWorkflow | None = None,
4040
) -> AbstractAMQPConnectionWorkflow: ...
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from _typeshed import Incomplete
22
from collections.abc import Callable, Sequence
33
from logging import Logger
4-
from typing import TypeAlias
4+
from typing import Self, TypeAlias
55

66
from pika.adapters.base_connection import BaseConnection
77
from pika.adapters.utils.connection_workflow import AbstractAMQPConnectionWorkflow, AMQPConnectorException
88
from pika.adapters.utils.nbio_interface import AbstractIOServices
9-
from pika.connection import Connection, Parameters
9+
from pika.connection import Parameters
1010

1111
_IOLoop: TypeAlias = Incomplete # actual type is tornado.ioloop.IOLoop
1212

@@ -16,17 +16,17 @@ class TornadoConnection(BaseConnection[_IOLoop]):
1616
def __init__(
1717
self,
1818
parameters: Parameters | None = None,
19-
on_open_callback: Callable[[Connection], object] | None = None,
20-
on_open_error_callback: Callable[[Connection, BaseException], object] | None = None,
21-
on_close_callback: Callable[[Connection, BaseException], object] | None = None,
19+
on_open_callback: Callable[[Self], object] | None = None,
20+
on_open_error_callback: Callable[[Self, BaseException], object] | None = None,
21+
on_close_callback: Callable[[Self, BaseException], object] | None = None,
2222
custom_ioloop: _IOLoop | AbstractIOServices | None = None,
2323
internal_connection_workflow: bool = True,
2424
) -> None: ...
2525
@classmethod
2626
def create_connection(
2727
cls,
2828
connection_configs: Sequence[Parameters],
29-
on_done: Callable[[Connection | AMQPConnectorException], object],
29+
on_done: Callable[[Self | AMQPConnectorException], object],
3030
custom_ioloop: _IOLoop | None = None,
3131
workflow: AbstractAMQPConnectionWorkflow | None = None,
3232
) -> AbstractAMQPConnectionWorkflow: ...

stubs/pika/pika/adapters/twisted_connection.pyi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from _typeshed import Incomplete
55
from collections.abc import Callable, Iterable, Mapping
66
from logging import Logger
7-
from typing import Generic, NamedTuple, TypeVar
7+
from typing import Generic, NamedTuple, Self, TypeVar
88

99
from pika import amqp_object
1010
from pika.adapters.utils.nbio_interface import AbstractTimerReference
@@ -137,9 +137,9 @@ class _TwistedConnectionAdapter(Connection):
137137
def __init__(
138138
self,
139139
parameters: Parameters | None,
140-
on_open_callback: Callable[[Connection], object] | None,
141-
on_open_error_callback: Callable[[Connection, BaseException], object] | None,
142-
on_close_callback: Callable[[Connection, Exception], object] | None,
140+
on_open_callback: Callable[[Self], object] | None,
141+
on_open_error_callback: Callable[[Self, BaseException], object] | None,
142+
on_close_callback: Callable[[Self, Exception], object] | None,
143143
custom_reactor: ReactorBase | None = None,
144144
) -> None: ...
145145
def connection_made(self, transport: ITransport) -> None: ...

0 commit comments

Comments
 (0)