Hello community,
here is the log from the commit of package python-PyChromecast for
openSUSE:Factory checked in at 2020-06-12 21:42:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-PyChromecast (Old)
and /work/SRC/openSUSE:Factory/.python-PyChromecast.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PyChromecast"
Fri Jun 12 21:42:53 2020 rev:12 rq:814086 version:6.0.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-PyChromecast/python-PyChromecast.changes
2020-05-28 09:14:47.628692005 +0200
+++
/work/SRC/openSUSE:Factory/.python-PyChromecast.new.3606/python-PyChromecast.changes
2020-06-12 21:44:33.060454792 +0200
@@ -1,0 +2,9 @@
+Thu Jun 11 15:58:53 UTC 2020 - Antonio Larrosa <[email protected]>
+
+- Update to 6.0.0:
+ * BREAKING CHANGE Refactor start_discovery to fix race (#370)
+ * Support zeroconf 0.27 (#368)
+ * Don't ignore zeroconf errors (#367)
+ * BREAKING CHANGE Add support to CastListener for service updates (#366)
+
+-------------------------------------------------------------------
Old:
----
PyChromecast-5.2.0.tar.gz
New:
----
PyChromecast-6.0.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-PyChromecast.spec ++++++
--- /var/tmp/diff_new_pack.0RfA0F/_old 2020-06-12 21:44:34.596454268 +0200
+++ /var/tmp/diff_new_pack.0RfA0F/_new 2020-06-12 21:44:34.596454268 +0200
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-PyChromecast
-Version: 5.2.0
+Version: 6.0.0
Release: 0
Summary: Python module to talk to Google Chromecast
License: MIT
++++++ PyChromecast-5.2.0.tar.gz -> PyChromecast-6.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PyChromecast-5.2.0/PKG-INFO
new/PyChromecast-6.0.0/PKG-INFO
--- old/PyChromecast-5.2.0/PKG-INFO 2020-05-13 17:29:31.962354000 +0200
+++ new/PyChromecast-6.0.0/PKG-INFO 2020-06-03 08:21:17.728713000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: PyChromecast
-Version: 5.2.0
+Version: 6.0.0
Summary: Python module to talk to Google Chromecast.
Home-page: https://github.com/balloob/pychromecast
Author: Paulus Schoutsen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PyChromecast-5.2.0/PyChromecast.egg-info/PKG-INFO
new/PyChromecast-6.0.0/PyChromecast.egg-info/PKG-INFO
--- old/PyChromecast-5.2.0/PyChromecast.egg-info/PKG-INFO 2020-05-13
17:29:31.000000000 +0200
+++ new/PyChromecast-6.0.0/PyChromecast.egg-info/PKG-INFO 2020-06-03
08:21:17.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: PyChromecast
-Version: 5.2.0
+Version: 6.0.0
Summary: Python module to talk to Google Chromecast.
Home-page: https://github.com/balloob/pychromecast
Author: Paulus Schoutsen
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PyChromecast-5.2.0/pychromecast/__init__.py
new/PyChromecast-6.0.0/pychromecast/__init__.py
--- old/PyChromecast-5.2.0/pychromecast/__init__.py 2020-05-13
17:29:15.000000000 +0200
+++ new/PyChromecast-6.0.0/pychromecast/__init__.py 2020-06-03
08:21:09.000000000 +0200
@@ -12,6 +12,7 @@
from . import socket_client
from .discovery import (
DISCOVER_TIMEOUT,
+ CastListener,
discover_chromecasts,
start_discovery,
stop_discovery,
@@ -207,7 +208,8 @@
"""Stops discovery of new chromecasts."""
stop_discovery(browser)
- listener, browser = start_discovery(internal_callback)
+ listener = CastListener(internal_callback)
+ browser = start_discovery(listener)
return internal_stop
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PyChromecast-5.2.0/pychromecast/discovery.py
new/PyChromecast-6.0.0/pychromecast/discovery.py
--- old/PyChromecast-5.2.0/pychromecast/discovery.py 2020-05-13
17:29:15.000000000 +0200
+++ new/PyChromecast-6.0.0/pychromecast/discovery.py 2020-06-03
08:21:09.000000000 +0200
@@ -14,10 +14,11 @@
class CastListener:
"""Zeroconf Cast Services collection."""
- def __init__(self, add_callback=None, remove_callback=None):
+ def __init__(self, add_callback=None, remove_callback=None,
update_callback=None):
self.services = {}
self.add_callback = add_callback
self.remove_callback = remove_callback
+ self.update_callback = update_callback
@property
def count(self):
@@ -42,11 +43,20 @@
if self.remove_callback:
self.remove_callback(name, service)
+ def update_service(self, zconf, typ, name):
+ """ Update a service in the collection. """
+ _LOGGER.debug("update_service %s, %s", typ, name)
+ self._add_update_service(zconf, typ, name, self.update_callback)
+
def add_service(self, zconf, typ, name):
""" Add a service to the collection. """
+ _LOGGER.debug("add_service %s, %s", typ, name)
+ self._add_update_service(zconf, typ, name, self.add_callback)
+
+ def _add_update_service(self, zconf, typ, name, callback):
+ """ Add or update a service. """
service = None
tries = 0
- _LOGGER.debug("add_service %s, %s", typ, name)
while service is None and tries < 4:
try:
service = zconf.get_service_info(typ, name)
@@ -80,11 +90,11 @@
self.services[name] = (host, service.port, uuid, model_name,
friendly_name)
- if self.add_callback:
- self.add_callback(name)
+ if callback:
+ callback(name)
-def start_discovery(add_callback=None, remove_callback=None,
zeroconf_instance=None):
+def start_discovery(listener, zeroconf_instance=None):
"""
Start discovering chromecasts on the network.
@@ -93,43 +103,32 @@
discovered chromecast's zeroconf name. This is the dictionary key to find
the chromecast metadata in listener.services.
- This method returns the CastListener object and the zeroconf ServiceBrowser
- object. The CastListener object will contain information for the discovered
- chromecasts. To stop discovery, call the stop_discovery method with the
- ServiceBrowser object.
+ This method returns the zeroconf ServiceBrowser object.
+
+ A CastListener object must be passed, and will contain information for the
+ discovered chromecasts. To stop discovery, call the stop_discovery method
with
+ the ServiceBrowser object.
A shared zeroconf instance can be passed as zeroconf_instance. If no
instance is passed, a new instance will be created.
"""
- listener = CastListener(add_callback, remove_callback)
- service_browser = False
- try:
- service_browser = zeroconf.ServiceBrowser(
- zeroconf_instance or zeroconf.Zeroconf(),
- "_googlecast._tcp.local.",
- listener,
- )
- except (
- zeroconf.BadTypeInNameException,
- NotImplementedError,
- OSError,
- socket.error,
- zeroconf.NonUniqueNameException,
- ):
- pass
-
- return listener, service_browser
+ return zeroconf.ServiceBrowser(
+ zeroconf_instance or zeroconf.Zeroconf(), "_googlecast._tcp.local.",
listener,
+ )
def stop_discovery(browser):
"""Stop the chromecast discovery thread."""
- browser.cancel()
+ try:
+ browser.cancel()
+ except RuntimeError:
+ # Throws if called from service callback when joining the zc browser
thread
+ pass
browser.zc.close()
def discover_chromecasts(max_devices=None, timeout=DISCOVER_TIMEOUT):
""" Discover chromecasts on the network. """
- browser = False
try:
# pylint: disable=unused-argument
def callback(name):
@@ -138,15 +137,15 @@
discover_complete.set()
discover_complete = Event()
- listener, browser = start_discovery(callback)
+ listener = CastListener(callback)
+ browser = start_discovery(listener)
# Wait for the timeout or the maximum number of devices
discover_complete.wait(timeout)
return listener.devices
finally:
- if browser is not False:
- stop_discovery(browser)
+ stop_discovery(browser)
def get_info_from_service(service, zconf):
@@ -172,10 +171,10 @@
if (
service_info
and service_info.port
- and (service_info.server or service_info.address)
+ and (service_info.server or len(service_info.addresses) > 0)
):
- if service_info.address:
- host = socket.inet_ntoa(service_info.address)
+ if len(service_info.addresses) > 0:
+ host = socket.inet_ntoa(service_info.addresses[0])
else:
host = service_info.server.lower()
port = service_info.port
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/PyChromecast-5.2.0/setup.py
new/PyChromecast-6.0.0/setup.py
--- old/PyChromecast-5.2.0/setup.py 2020-05-13 17:29:15.000000000 +0200
+++ new/PyChromecast-6.0.0/setup.py 2020-06-03 08:21:09.000000000 +0200
@@ -5,7 +5,7 @@
setup(
name="PyChromecast",
- version="5.2.0",
+ version="6.0.0",
license="MIT",
url="https://github.com/balloob/pychromecast",
author="Paulus Schoutsen",