Fix support for older versions of zope-interface (#19274)
Fixes #19269 Versions of zope-interface from RHEL, Ubuntu LTS 22 & 24 and OpenSuse don't support the new python union `X | Y` syntax for interfaces. This PR partially reverts the change over to fully use the new syntax, adds a minimum supported version of zope-interface to Synapse's dependency list, and removes the linter auto-upgrades which prefer the newer syntax. ### Pull Request Checklist <!-- Please read https://element-hq.github.io/synapse/latest/development/contributing_guide.html before submitting your pull request --> * [X] Pull request is based on the develop branch * [X] Pull request includes a [changelog file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog). The entry should: - Be a short description of your change which makes sense to users. "Fixed a bug that prevented receiving messages from other servers." instead of "Moved X method from `EventStore` to `EventWorkerStore`.". - Use markdown where necessary, mostly for `code blocks`. - End with either a period (.) or an exclamation mark (!). - Start with a capital letter. - Feel free to credit yourself, by adding a sentence "Contributed by @github_username." or "Contributed by [Your Name]." to the end of the entry. * [X] [Code style](https://element-hq.github.io/synapse/latest/code_style.html) is correct (run the [linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters)) --------- Co-authored-by: Andrew Morgan <1342360+anoadragon453@users.noreply.github.com>
This commit is contained in:
@@ -147,7 +147,7 @@ class FakeChannel:
|
||||
_reactor: MemoryReactorClock
|
||||
result: dict = attr.Factory(dict)
|
||||
_ip: str = "127.0.0.1"
|
||||
_producer: IPullProducer | IPushProducer | None = None
|
||||
_producer: Optional[Union[IPullProducer, IPushProducer]] = None
|
||||
resource_usage: ContextResourceUsage | None = None
|
||||
_request: Request | None = None
|
||||
|
||||
@@ -248,7 +248,7 @@ class FakeChannel:
|
||||
# TODO This should ensure that the IProducer is an IPushProducer or
|
||||
# IPullProducer, unfortunately twisted.protocols.basic.FileSender does
|
||||
# implement those, but doesn't declare it.
|
||||
self._producer = cast(IPushProducer | IPullProducer, producer)
|
||||
self._producer = cast(Union[IPushProducer, IPullProducer], producer)
|
||||
self.producerStreaming = streaming
|
||||
|
||||
def _produce() -> None:
|
||||
@@ -852,7 +852,7 @@ class FakeTransport:
|
||||
"""Test reactor
|
||||
"""
|
||||
|
||||
_protocol: IProtocol | None = None
|
||||
_protocol: Optional[IProtocol] = None
|
||||
"""The Protocol which is producing data for this transport. Optional, but if set
|
||||
will get called back for connectionLost() notifications etc.
|
||||
"""
|
||||
@@ -871,7 +871,7 @@ class FakeTransport:
|
||||
disconnected = False
|
||||
connected = True
|
||||
buffer: bytes = b""
|
||||
producer: IPushProducer | None = None
|
||||
producer: Optional[IPushProducer] = None
|
||||
autoflush: bool = True
|
||||
|
||||
def getPeer(self) -> IPv4Address | IPv6Address:
|
||||
@@ -1073,7 +1073,7 @@ def setup_test_homeserver(
|
||||
cleanup_func: Callable[[Callable[[], Optional["Deferred[None]"]]], None],
|
||||
server_name: str = "test",
|
||||
config: HomeServerConfig | None = None,
|
||||
reactor: ISynapseReactor | None = None,
|
||||
reactor: Optional[ISynapseReactor] = None,
|
||||
homeserver_to_use: type[HomeServer] = TestHomeServer,
|
||||
db_txn_limit: int | None = None,
|
||||
**extra_homeserver_attributes: Any,
|
||||
|
||||
Reference in New Issue
Block a user