From f9e6b04c713017473428f310692eb7569bd08fa8 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" <robin.mueller.m@gmail.com> Date: Wed, 19 Aug 2020 20:43:38 +0200 Subject: [PATCH] installed package --- .../PKG-INFO | 3 +- .../SOURCES.txt | 0 .../dependency_links.txt | 0 .../installed-files.txt | 0 .../top_level.txt | 0 venv/Lib/site-packages/wrapt/__init__.py | 2 +- .../wrapt/_wrappers.cp38-win_amd64.pyd | Bin 41984 -> 41984 bytes venv/Lib/site-packages/wrapt/decorators.py | 32 ++++----- venv/Lib/site-packages/wrapt/importer.py | 34 +++++----- venv/Lib/site-packages/wrapt/wrappers.py | 64 ++++++++---------- 10 files changed, 64 insertions(+), 71 deletions(-) rename venv/Lib/site-packages/{wrapt-1.12.1-py3.8.egg-info => wrapt-1.11.2-py3.8.egg-info}/PKG-INFO (97%) rename venv/Lib/site-packages/{wrapt-1.12.1-py3.8.egg-info => wrapt-1.11.2-py3.8.egg-info}/SOURCES.txt (100%) rename venv/Lib/site-packages/{wrapt-1.12.1-py3.8.egg-info => wrapt-1.11.2-py3.8.egg-info}/dependency_links.txt (100%) rename venv/Lib/site-packages/{wrapt-1.12.1-py3.8.egg-info => wrapt-1.11.2-py3.8.egg-info}/installed-files.txt (100%) rename venv/Lib/site-packages/{wrapt-1.12.1-py3.8.egg-info => wrapt-1.11.2-py3.8.egg-info}/top_level.txt (100%) diff --git a/venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/PKG-INFO b/venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/PKG-INFO similarity index 97% rename from venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/PKG-INFO rename to venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/PKG-INFO index 94a1534..c5bfe75 100644 --- a/venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/PKG-INFO +++ b/venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: wrapt -Version: 1.12.1 +Version: 1.11.2 Summary: Module for decorators, wrappers and monkey patching. Home-page: https://github.com/GrahamDumpleton/wrapt Author: Graham Dumpleton @@ -162,6 +162,5 @@ Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy diff --git a/venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/SOURCES.txt b/venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/SOURCES.txt similarity index 100% rename from venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/SOURCES.txt rename to venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/SOURCES.txt diff --git a/venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/dependency_links.txt b/venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/dependency_links.txt similarity index 100% rename from venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/dependency_links.txt rename to venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/dependency_links.txt diff --git a/venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/installed-files.txt b/venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/installed-files.txt similarity index 100% rename from venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/installed-files.txt rename to venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/installed-files.txt diff --git a/venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/top_level.txt b/venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/top_level.txt similarity index 100% rename from venv/Lib/site-packages/wrapt-1.12.1-py3.8.egg-info/top_level.txt rename to venv/Lib/site-packages/wrapt-1.11.2-py3.8.egg-info/top_level.txt diff --git a/venv/Lib/site-packages/wrapt/__init__.py b/venv/Lib/site-packages/wrapt/__init__.py index 7be739b..8e858a0 100644 --- a/venv/Lib/site-packages/wrapt/__init__.py +++ b/venv/Lib/site-packages/wrapt/__init__.py @@ -1,4 +1,4 @@ -__version_info__ = ('1', '12', '1') +__version_info__ = ('1', '11', '2') __version__ = '.'.join(__version_info__) from .wrappers import (ObjectProxy, CallableObjectProxy, FunctionWrapper, diff --git a/venv/Lib/site-packages/wrapt/_wrappers.cp38-win_amd64.pyd b/venv/Lib/site-packages/wrapt/_wrappers.cp38-win_amd64.pyd index 2c5cb91a68d34ade405ebe0bc1a249232d680fb0..9420229052ab46e31122fe5f918fd60500d6b903 100644 GIT binary patch delta 13632 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 delta 13737 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 Kb&&WCSowd7Vek+D diff --git a/venv/Lib/site-packages/wrapt/decorators.py b/venv/Lib/site-packages/wrapt/decorators.py index 506303d..11e11de 100644 --- a/venv/Lib/site-packages/wrapt/decorators.py +++ b/venv/Lib/site-packages/wrapt/decorators.py @@ -6,8 +6,16 @@ as well as some commonly used decorators. import sys PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 -if PY2: +if PY3: + string_types = str, + + import builtins + exec_ = getattr(builtins, "exec") + del builtins + +else: string_types = basestring, def exec_(_code_, _globs_=None, _locs_=None): @@ -22,14 +30,6 @@ if PY2: _locs_ = _globs_ exec("""exec _code_ in _globs_, _locs_""") -else: - string_types = str, - - import builtins - - exec_ = getattr(builtins, "exec") - del builtins - from functools import partial from inspect import ismethod, isclass, formatargspec from collections import namedtuple @@ -99,6 +99,11 @@ class _AdapterFunctionSurrogate(CallableObjectProxy): if 'signature' not in globals(): return self._self_adapter.__signature__ else: + # Can't allow this to fail on Python 3 else it falls + # through to using __wrapped__, but that will be the + # wrong function we want to derive the signature + # from. Thus generate the signature ourselves. + return signature(self._self_adapter) if PY2: @@ -112,13 +117,6 @@ class _BoundAdapterWrapper(BoundFunctionWrapper): return _AdapterFunctionSurrogate(self.__wrapped__.__func__, self._self_parent._self_adapter) - @property - def __signature__(self): - if 'signature' not in globals(): - return self.__wrapped__.__signature__ - else: - return signature(self._self_parent._self_adapter) - if PY2: im_func = __func__ @@ -498,7 +496,7 @@ def synchronized(wrapped): # desired context is held. If instance is None then the # wrapped function is used as the context. - with _synchronized_lock(instance if instance is not None else wrapped): + with _synchronized_lock(instance or wrapped): return wrapped(*args, **kwargs) class _FinalDecorator(FunctionWrapper): diff --git a/venv/Lib/site-packages/wrapt/importer.py b/venv/Lib/site-packages/wrapt/importer.py index 4665f38..9e617cd 100644 --- a/venv/Lib/site-packages/wrapt/importer.py +++ b/venv/Lib/site-packages/wrapt/importer.py @@ -7,12 +7,13 @@ import sys import threading PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 -if PY2: - string_types = basestring, -else: +if PY3: import importlib string_types = str, +else: + string_types = basestring, from .decorators import synchronized @@ -187,20 +188,7 @@ class ImportHookFinder: # Now call back into the import system again. try: - if PY2: - # For Python 2 we don't have much choice but to - # call back in to __import__(). This will - # actually cause the module to be imported. If no - # module could be found then ImportError will be - # raised. Otherwise we return a loader which - # returns the already loaded module and invokes - # the post import hooks. - - __import__(fullname) - - return _ImportHookLoader() - - else: + if PY3: # For Python 3 we need to use find_spec().loader # from the importlib.util module. It doesn't actually # import the target module and only finds the @@ -216,6 +204,18 @@ class ImportHookFinder: if loader: return _ImportHookChainedLoader(loader) + else: + # For Python 2 we don't have much choice but to + # call back in to __import__(). This will + # actually cause the module to be imported. If no + # module could be found then ImportError will be + # raised. Otherwise we return a loader which + # returns the already loaded module and invokes + # the post import hooks. + + __import__(fullname) + + return _ImportHookLoader() finally: del self.in_progress[fullname] diff --git a/venv/Lib/site-packages/wrapt/wrappers.py b/venv/Lib/site-packages/wrapt/wrappers.py index 18cf5e0..1d6131d 100644 --- a/venv/Lib/site-packages/wrapt/wrappers.py +++ b/venv/Lib/site-packages/wrapt/wrappers.py @@ -6,11 +6,12 @@ import weakref import inspect PY2 = sys.version_info[0] == 2 +PY3 = sys.version_info[0] == 3 -if PY2: - string_types = basestring, -else: +if PY3: string_types = str, +else: + string_types = basestring, def with_metaclass(meta, *bases): """Create a base class with a metaclass.""" @@ -116,7 +117,7 @@ class ObjectProxy(with_metaclass(_ObjectProxyMetaType)): def __str__(self): return str(self.__wrapped__) - if not PY2: + if PY3: def __bytes__(self): return bytes(self.__wrapped__) @@ -129,14 +130,10 @@ class ObjectProxy(with_metaclass(_ObjectProxyMetaType)): def __reversed__(self): return reversed(self.__wrapped__) - if not PY2: + if PY3: def __round__(self): return round(self.__wrapped__) - if sys.hexversion >= 0x03070000: - def __mro_entries__(self, bases): - return (self.__wrapped__,) - def __lt__(self, other): return self.__wrapped__ < other @@ -739,34 +736,33 @@ def resolve_path(module, name): path = name.split('.') attribute = path[0] - # We can't just always use getattr() because in doing - # that on a class it will cause binding to occur which - # will complicate things later and cause some things not - # to work. For the case of a class we therefore access - # the __dict__ directly. To cope though with the wrong - # class being given to us, or a method being moved into - # a base class, we need to walk the class hierarchy to - # work out exactly which __dict__ the method was defined - # in, as accessing it from __dict__ will fail if it was - # not actually on the class given. Fallback to using - # getattr() if we can't find it. If it truly doesn't - # exist, then that will fail. - - def lookup_attribute(parent, attribute): - if inspect.isclass(parent): - for cls in inspect.getmro(parent): + original = getattr(parent, attribute) + for attribute in path[1:]: + parent = original + + # We can't just always use getattr() because in doing + # that on a class it will cause binding to occur which + # will complicate things later and cause some things not + # to work. For the case of a class we therefore access + # the __dict__ directly. To cope though with the wrong + # class being given to us, or a method being moved into + # a base class, we need to walk the class hierarchy to + # work out exactly which __dict__ the method was defined + # in, as accessing it from __dict__ will fail if it was + # not actually on the class given. Fallback to using + # getattr() if we can't find it. If it truly doesn't + # exist, then that will fail. + + if inspect.isclass(original): + for cls in inspect.getmro(original): if attribute in vars(cls): - return vars(cls)[attribute] + original = vars(cls)[attribute] + break else: - return getattr(parent, attribute) - else: - return getattr(parent, attribute) - - original = lookup_attribute(parent, attribute) + original = getattr(original, attribute) - for attribute in path[1:]: - parent = original - original = lookup_attribute(parent, attribute) + else: + original = getattr(original, attribute) return (parent, attribute, original) -- GitLab