diff --git a/frappy/lib/py35compat.py b/frappy/lib/py35compat.py deleted file mode 100644 index e65cdd85..00000000 --- a/frappy/lib/py35compat.py +++ /dev/null @@ -1,57 +0,0 @@ -# ***************************************************************************** -# -# This program is free software; you can redistribute it and/or modify it under -# the terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. -# -# This program is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# this program; if not, write to the Free Software Foundation, Inc., -# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Module authors: -# Markus Zolliker -# -# ***************************************************************************** -"""workaround for python versions older than 3.6 - -``Object`` must be inherited for classes needing support for -__init_subclass__ and __set_name__ -""" - - -if hasattr(object, '__init_subclass__'): - class Object: - pass -else: - class PEP487Metaclass(type): - # support for __set_name__ and __init_subclass__ for older python versions - # slightly modified from PEP487 doc - def __new__(cls, *args, **kwargs): # pylint: disable=bad-mcs-classmethod-argument - if len(args) != 3: - return super().__new__(cls, *args) - name, bases, ns = args - init = ns.get('__init_subclass__') - if callable(init): - ns['__init_subclass__'] = classmethod(init) - newtype = super().__new__(cls, name, bases, ns) - for k, v in newtype.__dict__.items(): - func = getattr(v, '__set_name__', None) - if func is not None: - func(newtype, k) - if bases: - super(newtype, newtype).__init_subclass__(**kwargs) # pylint: disable=bad-super-call - return newtype - - def __init__(cls, name, bases, ns, **kwargs): - super().__init__(name, bases, ns) - - class Object(metaclass=PEP487Metaclass): - @classmethod - def __init_subclass__(cls, *args, **kwargs): - pass diff --git a/frappy/modulebase.py b/frappy/modulebase.py index de3bb704..4f5e2ad9 100644 --- a/frappy/modulebase.py +++ b/frappy/modulebase.py @@ -109,8 +109,6 @@ class HasAccessibles(HasProperties): for aname in new_names: if aname not in paramOrder: accessibles.move_to_end(aname) - # note: for python < 3.6 the order of inherited items is not ensured between - # declarations within the same class cls.accessibles = accessibles cls.wrappedAttributes = {'isWrapped': True} diff --git a/frappy/properties.py b/frappy/properties.py index 50ac25e1..a4736e06 100644 --- a/frappy/properties.py +++ b/frappy/properties.py @@ -26,12 +26,11 @@ import inspect from frappy.errors import BadValueError, ConfigError, ProgrammingError from frappy.lib import UniqueObject -from frappy.lib.py35compat import Object UNSET = UniqueObject('undefined value') #: an unset value, not even None -class HasDescriptors(Object): +class HasDescriptors: @classmethod def __init_subclass__(cls): # when migrating old style declarations, sometimes the trailing comma is not removed diff --git a/frappy/protocol/interface/tcp.py b/frappy/protocol/interface/tcp.py index cd39ce23..e9578375 100644 --- a/frappy/protocol/interface/tcp.py +++ b/frappy/protocol/interface/tcp.py @@ -231,13 +231,6 @@ class TCPServer(DualStackTCPServer): self.log.warning('tried again %d times after "Address already in use"', ntry) self.log.info("TCPServer initiated") - # py35 compatibility - if not hasattr(socketserver.ThreadingTCPServer, '__exit__'): - def __enter__(self): - return self - - def __exit__(self, *args): - self.server_close() def format_address(addr): if len(addr) == 2: