zeroconf

A pure python implementation of multicast DNS service discovery

https://github.com/python-zeroconf/python-zeroconf

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 69 committers (1.4%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.0%) to scientific vocabulary

Keywords

avahi bonjour library python python3 service-discovery zeroconf

Keywords from Contributors

asyncio http-client http-server aiohttp spacy-extension pyqt6 qml 3d-printing pydantic json-schema
Last synced: 6 months ago · JSON representation

Repository

A pure python implementation of multicast DNS service discovery

Basic Info
  • Host: GitHub
  • Owner: python-zeroconf
  • License: lgpl-2.1
  • Language: Python
  • Default Branch: master
  • Homepage:
  • Size: 3.22 MB
Statistics
  • Stars: 684
  • Watchers: 17
  • Forks: 232
  • Open Issues: 53
  • Releases: 215
Topics
avahi bonjour library python python3 service-discovery zeroconf
Created over 11 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog License

README.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.9+
* PyPy 3.9+

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
=======

LGPL, see COPYING file for details.

Owner

  • Name: python-zeroconf
  • Login: python-zeroconf
  • Kind: organization

GitHub Events

Total
  • Create event: 149
  • Issues event: 37
  • Release event: 27
  • Watch event: 56
  • Delete event: 121
  • Member event: 1
  • Issue comment event: 334
  • Push event: 320
  • Pull request review comment event: 43
  • Pull request review event: 128
  • Pull request event: 285
  • Fork event: 8
Last Year
  • Create event: 149
  • Issues event: 37
  • Release event: 27
  • Watch event: 56
  • Delete event: 121
  • Member event: 1
  • Issue comment event: 334
  • Push event: 320
  • Pull request review comment event: 43
  • Pull request review event: 128
  • Pull request event: 285
  • Fork event: 8

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 1,535
  • Total Committers: 69
  • Avg Commits per committer: 22.246
  • Development Distribution Score (DDS): 0.432
Past Year
  • Commits: 194
  • Committers: 11
  • Avg Commits per committer: 17.636
  • Development Distribution Score (DDS): 0.68
Top Committers
Name Email Commits
J. Nick Koston n****k@k****g 872
Jakub Stasiak j****b@s****t 219
github-actions g****s@g****m 121
William McBrine w****e@g****m 51
dependabot[bot] 4****] 38
pre-commit-ci[bot] 6****] 29
semantic-release s****e 28
Stephen Rauch s****b@g****m 28
Rotzbua R****a 25
Ville Skyttä v****a@i****i 12
github-actions a****n@g****m 10
Erik Montnemery e****k@m****m 9
mattsaxon s****t@h****m 9
Dmitry Tantsur d****r@p****m 8
Andrew Bonney a****w@s****m 5
Stefan Agner s****n@a****h 5
Alexander Rössler m****l@r****s 3
Jaime van Kessel n****h@g****m 3
Jay Hogg j****y@2****t 3
humingchun m****u@c****n 2
gjbadros b****s@g****m 2
Paul Scott-Murphy p****l@s****m 2
Michał Górny m****y@g****g 2
Jorge Miranda j****a@g****m 2
Giles g****n@s****m 2
Andreas Oberritter o****i@s****e 2
Alexey Vazhnov v****v@b****g 1
Amir a****r@o****m 1
Christian Glombek L****s 1
PhilippSelenium 3****m 1
and 39 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 98
  • Total pull requests: 608
  • Average time to close issues: about 1 year
  • Average time to close pull requests: 16 days
  • Total issue authors: 66
  • Total pull request authors: 18
  • Average comments per issue: 2.21
  • Average comments per pull request: 1.43
  • Merged pull requests: 526
  • Bot issues: 1
  • Bot pull requests: 165
Past Year
  • Issues: 22
  • Pull requests: 332
  • Average time to close issues: 9 days
  • Average time to close pull requests: 4 days
  • Issue authors: 14
  • Pull request authors: 10
  • Average comments per issue: 0.95
  • Average comments per pull request: 1.66
  • Merged pull requests: 276
  • Bot issues: 1
  • Bot pull requests: 142
Top Authors
Issue Authors
  • bdraco (15)
  • kloczek (6)
  • Rotzbua (6)
  • jstasiak (3)
  • mattsaxon (2)
  • tomkcook (2)
  • natedogith1 (2)
  • SpecLad (2)
  • mgorny (2)
  • agners (2)
  • JohnGrime (1)
  • postlund (1)
  • jvitkauskas (1)
  • caborabo (1)
  • mmuszkow (1)
Pull Request Authors
  • bdraco (360)
  • dependabot[bot] (106)
  • pre-commit-ci[bot] (59)
  • Rotzbua (49)
  • agners (11)
  • mgorny (3)
  • MarGasiorek (2)
  • rima1881 (2)
  • PaarthShah (2)
  • 2pack94 (2)
  • cdce8p (2)
  • jstasiak (2)
  • EternityForest (2)
  • devbanu (2)
  • VishSwami (1)
Top Labels
Issue Labels
needs-more-information (4) traffic-reduction (3) enhancement (3) help wanted (1) multi-srv-record-support (1) github_actions (1) dependencies (1) python (1)
Pull Request Labels
dependencies (106) python (67) github_actions (22) traffic-reduction (4)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 1,562,511 last-month
  • Total docker downloads: 861,220,971
  • Total dependent packages: 146
    (may contain duplicates)
  • Total dependent repositories: 1,931
    (may contain duplicates)
  • Total versions: 307
  • Total maintainers: 2
pypi.org: zeroconf

A pure python implementation of multicast DNS service discovery

  • Versions: 247
  • Dependent Packages: 142
  • Dependent Repositories: 1,929
  • Downloads: 1,562,511 Last month
  • Docker Downloads: 861,220,971
Rankings
Docker downloads count: 0.1%
Dependent packages count: 0.2%
Dependent repos count: 0.3%
Downloads: 0.3%
Average: 1.2%
Stargazers count: 2.7%
Forks count: 3.4%
Maintainers (2)
Last synced: 6 months ago
conda-forge.org: zeroconf
  • Versions: 60
  • Dependent Packages: 4
  • Dependent Repositories: 2
Rankings
Forks count: 11.6%
Dependent packages count: 12.5%
Average: 15.3%
Stargazers count: 17.0%
Dependent repos count: 20.2%
Last synced: 6 months ago

Dependencies

.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • codecov/codecov-action v3 composite
  • pre-commit/action v2.0.3 composite
  • pypa/cibuildwheel v2.11.3 composite
  • pypa/gh-action-pypi-publish v1.5.0 composite
  • relekang/python-semantic-release v7.33.1 composite
  • wagoid/commitlint-github-action v5 composite
poetry.lock pypi
  • colorama 0.4.6 develop
  • coverage 7.2.3 develop
  • cython 0.29.34 develop
  • exceptiongroup 1.1.1 develop
  • importlib-metadata 6.6.0 develop
  • iniconfig 2.0.0 develop
  • packaging 23.1 develop
  • pluggy 1.0.0 develop
  • pytest 7.3.1 develop
  • pytest-asyncio 0.20.3 develop
  • pytest-cov 4.0.0 develop
  • pytest-timeout 2.1.0 develop
  • setuptools 65.7.0 develop
  • tomli 2.0.1 develop
  • zipp 3.15.0 develop
  • async-timeout 4.0.2
  • ifaddr 0.2.0
  • typing-extensions 4.5.0
pyproject.toml pypi
  • async-timeout >=3.0.0
  • ifaddr >=0.1.7
  • python ^3.7
requirements-dev.txt pypi
  • async_timeout >=4.0.1 development
  • autopep8 * development
  • black * development
  • bump2version * development
  • coverage * development
  • flake8 * development
  • flake8-import-order * development
  • ifaddr * development
  • mypy * development
  • pep8-naming >=0.12.0 development
  • pylint * development
  • pytest * development
  • pytest-asyncio * development
  • pytest-cov * development
  • pytest-timeout * development
  • readme_renderer * development