zeroconf 0.147.0__tar.gz → 0.147.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of zeroconf might be problematic. Click here for more details.
- {zeroconf-0.147.0 → zeroconf-0.147.2}/CHANGELOG.md +20 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/PKG-INFO +1 -1
- {zeroconf-0.147.0 → zeroconf-0.147.2}/build_ext.py +1 -1
- {zeroconf-0.147.0 → zeroconf-0.147.2}/pyproject.toml +3 -3
- {zeroconf-0.147.0 → zeroconf-0.147.2}/setup.py +1 -1
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/__init__.py +1 -1
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_core.py +6 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_dns.py +2 -2
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/browser.py +1 -1
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/const.py +1 -1
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/services/test_types.py +4 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_asyncio.py +2 -1
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_handlers.py +2 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/COPYING +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/README.rst +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/docs/Makefile +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/docs/_ext/zeroconfautodocfix.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/docs/api.rst +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/docs/conf.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/docs/index.rst +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_cache.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_cache.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_dns.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_engine.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_exceptions.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/answers.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/answers.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/multicast_outgoing_queue.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/multicast_outgoing_queue.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/query_handler.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/query_handler.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/record_manager.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_handlers/record_manager.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_history.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_history.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_listener.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_listener.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_logger.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_protocol/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_protocol/incoming.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_protocol/incoming.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_protocol/outgoing.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_protocol/outgoing.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_record_update.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_record_update.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/__init__.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/browser.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/info.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/info.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/registry.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/registry.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_services/types.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_transport.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_updates.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_updates.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/asyncio.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/ipaddress.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/ipaddress.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/name.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/net.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/time.pxd +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/_utils/time.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/asyncio.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/src/zeroconf/py.typed +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/benchmarks/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/benchmarks/helpers.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/benchmarks/test_cache.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/benchmarks/test_incoming.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/benchmarks/test_outgoing.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/benchmarks/test_send.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/benchmarks/test_txt_properties.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/conftest.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/services/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/services/test_browser.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/services/test_info.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/services/test_registry.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_cache.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_circular_imports.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_core.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_dns.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_engine.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_exceptions.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_history.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_init.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_listener.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_logger.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_protocol.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_services.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/test_updates.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/utils/__init__.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/utils/test_asyncio.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/utils/test_ipaddress.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/utils/test_name.py +0 -0
- {zeroconf-0.147.0 → zeroconf-0.147.2}/tests/utils/test_net.py +0 -0
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
# CHANGELOG
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
## v0.147.2 (2025-09-05)
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
- Missing wheel builds for Windows
|
|
9
|
+
([#1613](https://github.com/python-zeroconf/python-zeroconf/pull/1613),
|
|
10
|
+
[`f8e2381`](https://github.com/python-zeroconf/python-zeroconf/commit/f8e2381a500c78dcefeba3772822d5d3ec5f6060))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## v0.147.1 (2025-09-05)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- Increase check time and add random wait to avoid service collisions
|
|
18
|
+
([#1611](https://github.com/python-zeroconf/python-zeroconf/pull/1611),
|
|
19
|
+
[`8c382ee`](https://github.com/python-zeroconf/python-zeroconf/commit/8c382eedc6da80031d9a7a42f299f95f115b7e47))
|
|
20
|
+
|
|
21
|
+
Co-authored-by: J. Nick Koston <nick@koston.org>
|
|
22
|
+
|
|
23
|
+
|
|
4
24
|
## v0.147.0 (2025-05-03)
|
|
5
25
|
|
|
6
26
|
### Features
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "zeroconf"
|
|
3
|
-
version = "0.147.
|
|
3
|
+
version = "0.147.2"
|
|
4
4
|
description = "A pure python implementation of multicast DNS service discovery"
|
|
5
5
|
authors = ["Paul Scott-Murphy", "William McBrine", "Jakub Stasiak", "J. Nick Koston"]
|
|
6
6
|
license = "LGPL-2.1-or-later"
|
|
@@ -75,11 +75,11 @@ ifaddr = ">=0.1.7"
|
|
|
75
75
|
[tool.poetry.group.dev.dependencies]
|
|
76
76
|
pytest = ">=7.2,<9.0"
|
|
77
77
|
pytest-cov = ">=4,<7"
|
|
78
|
-
pytest-asyncio = ">=0.20.3,<
|
|
78
|
+
pytest-asyncio = ">=0.20.3,<1.2.0"
|
|
79
79
|
cython = "^3.0.5"
|
|
80
80
|
setuptools = ">=65.6.3,<81.0.0"
|
|
81
81
|
pytest-timeout = "^2.1.0"
|
|
82
|
-
pytest-codspeed = "
|
|
82
|
+
pytest-codspeed = ">=3.1,<5.0"
|
|
83
83
|
|
|
84
84
|
[tool.poetry.group.docs.dependencies]
|
|
85
85
|
sphinx = "^7.4.7 || ^8.1.3"
|
|
@@ -19,7 +19,7 @@ install_requires = \
|
|
|
19
19
|
|
|
20
20
|
setup_kwargs = {
|
|
21
21
|
'name': 'zeroconf',
|
|
22
|
-
'version': '0.147.
|
|
22
|
+
'version': '0.147.2',
|
|
23
23
|
'description': 'A pure python implementation of multicast DNS service discovery',
|
|
24
24
|
'long_description': 'python-zeroconf\n===============\n\n.. image:: https://github.com/python-zeroconf/python-zeroconf/workflows/CI/badge.svg\n :target: https://github.com/python-zeroconf/python-zeroconf?query=workflow%3ACI+branch%3Amaster\n\n.. image:: https://img.shields.io/pypi/v/zeroconf.svg\n :target: https://pypi.python.org/pypi/zeroconf\n\n.. image:: https://codecov.io/gh/python-zeroconf/python-zeroconf/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/python-zeroconf/python-zeroconf\n\n.. image:: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json\n :target: https://codspeed.io/python-zeroconf/python-zeroconf\n :alt: Codspeed.io status for python-zeroconf\n\n.. image:: https://readthedocs.org/projects/python-zeroconf/badge/?version=latest\n :target: https://python-zeroconf.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n`Documentation <https://python-zeroconf.readthedocs.io/en/latest/>`_.\n\nThis is fork of pyzeroconf, Multicast DNS Service Discovery for Python,\noriginally by Paul Scott-Murphy (https://github.com/paulsm/pyzeroconf),\nmodified by William McBrine (https://github.com/wmcbrine/pyzeroconf).\n\nThe original William McBrine\'s fork note::\n\n This fork is used in all of my TiVo-related projects: HME for Python\n (and therefore HME/VLC), Network Remote, Remote Proxy, and pyTivo.\n Before this, I was tracking the changes for zeroconf.py in three\n separate repos. I figured I should have an authoritative source.\n\n Although I make changes based on my experience with TiVos, I expect that\n they\'re generally applicable. This version also includes patches found\n on the now-defunct (?) Launchpad repo of pyzeroconf, and elsewhere\n around the net -- not always well-documented, sorry.\n\nCompatible with:\n\n* Bonjour\n* Avahi\n\nCompared to some other Zeroconf/Bonjour/Avahi Python packages, python-zeroconf:\n\n* isn\'t tied to Bonjour or Avahi\n* doesn\'t use D-Bus\n* doesn\'t force you to use particular event loop or Twisted (asyncio is used under the hood but not required)\n* is pip-installable\n* has PyPI distribution\n* has an optional cython extension for performance (pure python is supported as well)\n\nPython compatibility\n--------------------\n\n* CPython 3.9+\n* PyPy 3.9+\n\nVersioning\n----------\n\nThis project uses semantic versioning.\n\nStatus\n------\n\nThis project is actively maintained.\n\nTraffic Reduction\n-----------------\n\nBefore version 0.32, most traffic reduction techniques described in https://datatracker.ietf.org/doc/html/rfc6762#section-7\nwhere not implemented which could lead to excessive network traffic. It is highly recommended that version 0.32 or later\nis used if this is a concern.\n\nIPv6 support\n------------\n\nIPv6 support is relatively new and currently limited, specifically:\n\n* `InterfaceChoice.All` is an alias for `InterfaceChoice.Default` on non-POSIX\n systems.\n* Dual-stack IPv6 sockets are used, which may not be supported everywhere (some\n BSD variants do not have them).\n* Listening on localhost (`::1`) does not work. Help with understanding why is\n appreciated.\n\nHow to get python-zeroconf?\n===========================\n\n* PyPI page https://pypi.org/project/zeroconf/\n* GitHub project https://github.com/python-zeroconf/python-zeroconf\n\nThe easiest way to install python-zeroconf is using pip::\n\n pip install zeroconf\n\n\n\nHow do I use it?\n================\n\nHere\'s an example of browsing for a service:\n\n.. code-block:: python\n\n from zeroconf import ServiceBrowser, ServiceListener, Zeroconf\n\n\n class MyListener(ServiceListener):\n\n def update_service(self, zc: Zeroconf, type_: str, name: str) -> None:\n print(f"Service {name} updated")\n\n def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None:\n print(f"Service {name} removed")\n\n def add_service(self, zc: Zeroconf, type_: str, name: str) -> None:\n info = zc.get_service_info(type_, name)\n print(f"Service {name} added, service info: {info}")\n\n\n zeroconf = Zeroconf()\n listener = MyListener()\n browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener)\n try:\n input("Press enter to exit...\\n\\n")\n finally:\n zeroconf.close()\n\n.. note::\n\n Discovery and service registration use *all* available network interfaces by default.\n If you want to customize that you need to specify ``interfaces`` argument when\n constructing ``Zeroconf`` object (see the code for details).\n\nIf you don\'t know the name of the service you need to browse for, try:\n\n.. code-block:: python\n\n from zeroconf import ZeroconfServiceTypes\n print(\'\\n\'.join(ZeroconfServiceTypes.find()))\n\nSee examples directory for more.\n\nChangelog\n=========\n\n`Changelog <CHANGELOG.md>`_\n\nLicense\n=======\n\nLGPL, see COPYING file for details.\n',
|
|
25
25
|
'author': 'Paul Scott-Murphy',
|
|
@@ -88,7 +88,7 @@ from ._utils.time import ( # noqa # import needed for backwards compat
|
|
|
88
88
|
|
|
89
89
|
__author__ = "Paul Scott-Murphy, William McBrine"
|
|
90
90
|
__maintainer__ = "Jakub Stasiak <jakub@stasiak.at>"
|
|
91
|
-
__version__ = "0.147.
|
|
91
|
+
__version__ = "0.147.2"
|
|
92
92
|
__license__ = "LGPL"
|
|
93
93
|
|
|
94
94
|
|
|
@@ -24,6 +24,7 @@ from __future__ import annotations
|
|
|
24
24
|
|
|
25
25
|
import asyncio
|
|
26
26
|
import logging
|
|
27
|
+
import random
|
|
27
28
|
import sys
|
|
28
29
|
import threading
|
|
29
30
|
from collections.abc import Awaitable
|
|
@@ -544,6 +545,11 @@ class Zeroconf(QuietLogger):
|
|
|
544
545
|
instance_name = instance_name_from_service_info(info, strict=strict)
|
|
545
546
|
if cooperating_responders:
|
|
546
547
|
return
|
|
548
|
+
|
|
549
|
+
# Wait a random amount of time up avoid collisions and avoid
|
|
550
|
+
# a thundering herd when multiple services are started on the network
|
|
551
|
+
await self.async_wait(random.randint(150, 250)) # noqa: S311
|
|
552
|
+
|
|
547
553
|
next_instance_number = 2
|
|
548
554
|
next_time = now = current_time_millis()
|
|
549
555
|
i = 0
|
|
@@ -63,7 +63,7 @@ class DNSQuestionType(enum.Enum):
|
|
|
63
63
|
QM = 2
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
class DNSEntry:
|
|
66
|
+
class DNSEntry: # noqa: PLW1641
|
|
67
67
|
"""A DNS entry"""
|
|
68
68
|
|
|
69
69
|
__slots__ = ("class_", "key", "name", "type", "unique")
|
|
@@ -161,7 +161,7 @@ class DNSQuestion(DNSEntry):
|
|
|
161
161
|
)
|
|
162
162
|
|
|
163
163
|
|
|
164
|
-
class DNSRecord(DNSEntry):
|
|
164
|
+
class DNSRecord(DNSEntry): # noqa: PLW1641
|
|
165
165
|
"""A DNS record - like a DNS entry, but has a TTL"""
|
|
166
166
|
|
|
167
167
|
__slots__ = ("created", "ttl")
|
|
@@ -91,6 +91,10 @@ def test_integration_with_listener_v6_records(disable_duplicate_packet_suppressi
|
|
|
91
91
|
|
|
92
92
|
@unittest.skipIf(not has_working_ipv6() or sys.platform == "win32", "Requires IPv6")
|
|
93
93
|
@unittest.skipIf(os.environ.get("SKIP_IPV6"), "IPv6 tests disabled")
|
|
94
|
+
@unittest.skipIf(
|
|
95
|
+
sys.platform == "darwin" and os.environ.get("GITHUB_ACTIONS") == "true",
|
|
96
|
+
"IPv6 multicast not working on macOS GitHub Actions",
|
|
97
|
+
)
|
|
94
98
|
def test_integration_with_listener_ipv6(disable_duplicate_packet_suppression):
|
|
95
99
|
type_ = "_test-listenv6ip-type._tcp.local."
|
|
96
100
|
name = "xxxyyy"
|
|
@@ -1081,7 +1081,8 @@ async def test_integration():
|
|
|
1081
1081
|
# The rest of the startup questions should have
|
|
1082
1082
|
# known answers
|
|
1083
1083
|
for answer_list in answers[1:-2]:
|
|
1084
|
-
|
|
1084
|
+
# Allow 0 or 1 answers due to random delays and timing
|
|
1085
|
+
assert len(answer_list) <= 1
|
|
1085
1086
|
# Once the TTL is reached, the last question should have no known answers
|
|
1086
1087
|
assert len(answers[-1]) == 0
|
|
1087
1088
|
|
|
@@ -1863,6 +1863,7 @@ async def test_response_aggregation_random_delay():
|
|
|
1863
1863
|
addresses=[socket.inet_aton("10.0.1.2")],
|
|
1864
1864
|
)
|
|
1865
1865
|
mocked_zc = unittest.mock.MagicMock()
|
|
1866
|
+
mocked_zc.loop = asyncio.get_running_loop()
|
|
1866
1867
|
outgoing_queue = MulticastOutgoingQueue(mocked_zc, 0, 500)
|
|
1867
1868
|
|
|
1868
1869
|
now = current_time_millis()
|
|
@@ -1930,6 +1931,7 @@ async def test_future_answers_are_removed_on_send():
|
|
|
1930
1931
|
addresses=[socket.inet_aton("10.0.1.3")],
|
|
1931
1932
|
)
|
|
1932
1933
|
mocked_zc = unittest.mock.MagicMock()
|
|
1934
|
+
mocked_zc.loop = asyncio.get_running_loop()
|
|
1933
1935
|
outgoing_queue = MulticastOutgoingQueue(mocked_zc, 0, 0)
|
|
1934
1936
|
|
|
1935
1937
|
now = current_time_millis()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|