1*4882a593SmuzhiyunFrom 9b939c0b534c1b7958fa0a3c7aedf30bca910431 Mon Sep 17 00:00:00 2001 2*4882a593SmuzhiyunFrom: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz> 3*4882a593SmuzhiyunDate: Mon, 7 Jun 2021 23:23:47 +0200 4*4882a593SmuzhiyunSubject: [PATCH] Python 3.10+ fix: Use collections.abc.Callable instead of 5*4882a593Smuzhiyun collections.Callable 6*4882a593Smuzhiyun 7*4882a593SmuzhiyunThe deprecated aliases to Collections Abstract Base Classes were removed from 8*4882a593Smuzhiyunthe collections module in Python 3.10. 9*4882a593Smuzhiyunhttps://docs.python.org/3.10/whatsnew/changelog.html#python-3-10-0-alpha-5 10*4882a593Smuzhiyunhttps://bugs.python.org/issue37324 11*4882a593Smuzhiyun--- 12*4882a593Smuzhiyun slip/dbus/polkit.py | 6 +++--- 13*4882a593Smuzhiyun slip/util/hookable.py | 6 +++--- 14*4882a593Smuzhiyun 2 files changed, 6 insertions(+), 6 deletions(-) 15*4882a593Smuzhiyun 16*4882a593Smuzhiyundiff --git a/slip/dbus/polkit.py b/slip/dbus/polkit.py 17*4882a593Smuzhiyunindex 128e8ce..320676d 100644 18*4882a593Smuzhiyun--- a/slip/dbus/polkit.py 19*4882a593Smuzhiyun+++ b/slip/dbus/polkit.py 20*4882a593Smuzhiyun@@ -26,7 +26,7 @@ 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun from __future__ import absolute_import 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun-import collections 25*4882a593Smuzhiyun+import collections.abc 26*4882a593Smuzhiyun import dbus 27*4882a593Smuzhiyun from decorator import decorator 28*4882a593Smuzhiyun from functools import reduce 29*4882a593Smuzhiyun@@ -103,14 +103,14 @@ class MyProxy(object): 30*4882a593Smuzhiyun def some_method(self, ...): 31*4882a593Smuzhiyun ...""" 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun- assert(func is None or isinstance(func, collections.Callable)) 34*4882a593Smuzhiyun+ assert(func is None or isinstance(func, collections.abc.Callable)) 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun assert( 37*4882a593Smuzhiyun authfail_result in (None, AUTHFAIL_DONTCATCH) or 38*4882a593Smuzhiyun authfail_exception is None) 39*4882a593Smuzhiyun assert( 40*4882a593Smuzhiyun authfail_callback is None or 41*4882a593Smuzhiyun- isinstance(authfail_callback, collections.Callable)) 42*4882a593Smuzhiyun+ isinstance(authfail_callback, collections.abc.Callable)) 43*4882a593Smuzhiyun assert( 44*4882a593Smuzhiyun authfail_exception is None or 45*4882a593Smuzhiyun issubclass(authfail_exception, Exception)) 46*4882a593Smuzhiyundiff --git a/slip/util/hookable.py b/slip/util/hookable.py 47*4882a593Smuzhiyunindex 89c7392..0cd9967 100644 48*4882a593Smuzhiyun--- a/slip/util/hookable.py 49*4882a593Smuzhiyun+++ b/slip/util/hookable.py 50*4882a593Smuzhiyun@@ -23,7 +23,7 @@ 51*4882a593Smuzhiyun """This module contains variants of certain base types which call registered 52*4882a593Smuzhiyun hooks on changes.""" 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun-import collections 55*4882a593Smuzhiyun+import collections.abc 56*4882a593Smuzhiyun from six import with_metaclass 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun __all__ = ["Hookable", "HookableSet"] 59*4882a593Smuzhiyun@@ -67,7 +67,7 @@ class _HookEntry(object): 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun def __init__(self, hook, args, kwargs, hookable=None): 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun- assert(isinstance(hook, collections.Callable)) 64*4882a593Smuzhiyun+ assert(isinstance(hook, collections.abc.Callable)) 65*4882a593Smuzhiyun assert(isinstance(hookable, Hookable)) 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun for n, x in enumerate(args): 68*4882a593Smuzhiyun@@ -174,7 +174,7 @@ def add_hook_hookable(self, hook, *args, **kwargs): 69*4882a593Smuzhiyun self.__add_hook(hook, self, *args, **kwargs) 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun def __add_hook(self, hook, _hookable, *args, **kwargs): 72*4882a593Smuzhiyun- assert isinstance(hook, collections.Callable) 73*4882a593Smuzhiyun+ assert isinstance(hook, collections.abc.Callable) 74*4882a593Smuzhiyun assert isinstance(_hookable, Hookable) 75*4882a593Smuzhiyun hookentry = _HookEntry(hook, args, kwargs, hookable=_hookable) 76*4882a593Smuzhiyun self.__hooks__.add(hookentry) 77