Metadata-Version: 2.4 Name: zeroconf Version: 0.149.16 Summary: A pure python implementation of multicast DNS service discovery License-Expression: LGPL-2.1-or-later License-File: COPYING Author: Paul Scott-Murphy Requires-Python: >=3.10 Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: System Administrators Classifier: Operating System :: MacOS :: MacOS X Classifier: Operating System :: POSIX Classifier: Operating System :: POSIX :: Linux Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Topic :: Software Development :: Libraries Requires-Dist: ifaddr (>=0.1.7) Project-URL: Bug Tracker, https://github.com/python-zeroconf/python-zeroconf/issues Project-URL: Changelog, https://github.com/python-zeroconf/python-zeroconf/blob/master/CHANGELOG.md Project-URL: Documentation, https://python-zeroconf.readthedocs.io Project-URL: Repository, https://github.com/python-zeroconf/python-zeroconf Description-Content-Type: text/x-rst python-zeroconf =============== .. image:: https://github.com/python-zeroconf/python-zeroconf/workflows/CI/badge.svg :target: https://github.com/python-zeroconf/python-zeroconf?query=workflow%3ACI+branch%3Amaster .. image:: https://img.shields.io/pypi/v/zeroconf.svg :target: https://pypi.python.org/pypi/zeroconf .. image:: https://codecov.io/gh/python-zeroconf/python-zeroconf/branch/master/graph/badge.svg :target: https://codecov.io/gh/python-zeroconf/python-zeroconf .. image:: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json :target: https://codspeed.io/python-zeroconf/python-zeroconf :alt: Codspeed.io status for python-zeroconf .. image:: https://readthedocs.org/projects/python-zeroconf/badge/?version=latest :target: https://python-zeroconf.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status `Documentation `_. This is fork of pyzeroconf, Multicast DNS Service Discovery for Python, originally by Paul Scott-Murphy (https://github.com/paulsm/pyzeroconf), modified by William McBrine (https://github.com/wmcbrine/pyzeroconf). The original William McBrine's fork note:: This fork is used in all of my TiVo-related projects: HME for Python (and therefore HME/VLC), Network Remote, Remote Proxy, and pyTivo. Before this, I was tracking the changes for zeroconf.py in three separate repos. I figured I should have an authoritative source. Although I make changes based on my experience with TiVos, I expect that they're generally applicable. This version also includes patches found on the now-defunct (?) Launchpad repo of pyzeroconf, and elsewhere around the net -- not always well-documented, sorry. Compatible with: * Bonjour * Avahi Compared to some other Zeroconf/Bonjour/Avahi Python packages, python-zeroconf: * isn't tied to Bonjour or Avahi * doesn't use D-Bus * doesn't force you to use particular event loop or Twisted (asyncio is used under the hood but not required) * is pip-installable * has PyPI distribution * has an optional cython extension for performance (pure python is supported as well) Python compatibility -------------------- * CPython 3.10+ * PyPy 3.10+ Versioning ---------- This project uses semantic versioning. Status ------ This project is actively maintained. Traffic Reduction ----------------- Before version 0.32, most traffic reduction techniques described in https://datatracker.ietf.org/doc/html/rfc6762#section-7 where not implemented which could lead to excessive network traffic. It is highly recommended that version 0.32 or later is used if this is a concern. IPv6 support ------------ IPv6 support is relatively new and currently limited, specifically: * `InterfaceChoice.All` is an alias for `InterfaceChoice.Default` on non-POSIX systems. * Dual-stack IPv6 sockets are used, which may not be supported everywhere (some BSD variants do not have them). * Listening on localhost (`::1`) does not work. Help with understanding why is appreciated. How to get python-zeroconf? =========================== * PyPI page https://pypi.org/project/zeroconf/ * GitHub project https://github.com/python-zeroconf/python-zeroconf The easiest way to install python-zeroconf is using pip:: pip install zeroconf How do I use it? ================ Here's an example of browsing for a service: .. code-block:: python from zeroconf import ServiceBrowser, ServiceListener, Zeroconf class MyListener(ServiceListener): def update_service(self, zc: Zeroconf, type_: str, name: str) -> None: print(f"Service {name} updated") def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None: print(f"Service {name} removed") def add_service(self, zc: Zeroconf, type_: str, name: str) -> None: info = zc.get_service_info(type_, name) print(f"Service {name} added, service info: {info}") zeroconf = Zeroconf() listener = MyListener() browser = ServiceBrowser(zeroconf, "_http._tcp.local.", listener) try: input("Press enter to exit...\n\n") finally: zeroconf.close() .. note:: Discovery and service registration use *all* available network interfaces by default. If you want to customize that you need to specify ``interfaces`` argument when constructing ``Zeroconf`` object (see the code for details). If you don't know the name of the service you need to browse for, try: .. code-block:: python from zeroconf import ZeroconfServiceTypes print('\n'.join(ZeroconfServiceTypes.find())) See examples directory for more. Changelog ========= `Changelog `_ License ======= GNU Lesser General Public License v2.1 or later (LGPL-2.1-or-later). The full text of LGPL 2.1 is included in the `COPYING `_ file. You may, at your option, use this library under the terms of any later version of the LGPL published by the Free Software Foundation. The canonical SPDX identifier for this project is ``LGPL-2.1-or-later``, as declared in ``pyproject.toml``.