GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - python-zeroconf/python-zeroconf: A pure python implementation of multicast DNS service discovery

BranchesTags
Open more actions menu

Latest commit

 

History

1,860 Commits
1,860 Commits

Folders and files

NameName
Last commit message
Last commit date
.claude/skills/pr-workflow
.claude/skills/pr-workflow
 
 
.github
.github
 
 
bench
bench
 
 
docs
docs
 
 
examples
examples
 
 
scripts
scripts
 
 
src/zeroconf
src/zeroconf
 
 
tests
tests
 
 
.coveragerc
.coveragerc
 
 
.flake8
.flake8
 
 
.gitignore
.gitignore
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
.readthedocs.yaml
.readthedocs.yaml
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CLAUDE.md
CLAUDE.md
 
 
COPYING
COPYING
 
 
MANIFEST.in
MANIFEST.in
 
 
Makefile
Makefile
 
 
README.rst
README.rst
 
 
RELICENSING.md
RELICENSING.md
 
 
SECURITY.md
SECURITY.md
 
 
build_ext.py
build_ext.py
 
 
poetry.lock
poetry.lock
 
 
pyproject.toml
pyproject.toml
 
 

Repository files navigation

python-zeroconf

Codspeed.io status for python-zeroconf Documentation Status

Documentation.

This project is a fork of pyzeroconf, originally by Paul Scott-Murphy (https://github.com/paulsm/pyzeroconf), modified by William McBrine (https://github.com/wmcbrine/pyzeroconf).

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.11+
  • PyPy 3.11+

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 how to discover services:

from zeroconf import ServiceBrowser, ServiceListener, Zeroconf


class EventLogger(ServiceListener):
    def add_service(self, zc: Zeroconf, type_: str, name: str) -> None:
        info = zc.get_service_info(type_, name)
        print(f"discovered {name}: {info}")

    def remove_service(self, zc: Zeroconf, type_: str, name: str) -> None:
        print(f"lost {name}")

    def update_service(self, zc: Zeroconf, type_: str, name: str) -> None:
        print(f"refreshed {name}")


with Zeroconf() as zc:
    ServiceBrowser(zc, "_http._tcp.local.", EventLogger())
    input("browsing, press enter to stop\n")

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).

To see which service types are present on the network, try:

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.

About

A pure python implementation of multicast DNS service discovery

Topics

avahibonjourlibrarypythonpython3service-discoveryzeroconf

Resources

Readme
License

Security policy

Security policy
Activity
Custom properties

Stars

743 stars

Watchers

16 watching

Forks

236 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.