zeroconf
A pure python implementation of multicast DNS service discovery
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
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
- Repositories: 1
- Profile: https://github.com/python-zeroconf
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
Top Committers
| Name | 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... | ||
Committer Domains (Top 20 + Academic)
github.com: 2
koston.org: 1
stasiak.at: 1
iki.fi: 1
montnemery.com: 1
sqwarkr.com: 1
agner.ch: 1
roessler.systems: 1
2imagineit.net: 1
coolkit.cn: 1
scott-murphy.com: 1
gentoo.org: 1
synthego.com: 1
saftware.de: 1
boot-keys.org: 1
collabora.com: 1
henek.name: 1
bygrave.me.uk: 1
nomadic-recording.com: 1
balabit.com: 1
seemoo.tu-darmstadt.de: 1
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
- Documentation: https://python-zeroconf.readthedocs.io
- License: LGPL-2.1-or-later
-
Latest release: 0.147.2
published 6 months ago
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%
Last synced:
6 months ago
conda-forge.org: zeroconf
- Homepage: https://github.com/python-zeroconf/python-zeroconf
- License: LGPL-2.1-only
-
Latest release: 0.38.7
published over 3 years ago
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