decorator 5.1.1__py3-none-any.whl → 5.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {decorator-5.1.1.dist-info → decorator-5.2.0.dist-info}/LICENSE.txt +4 -3
- {decorator-5.1.1.dist-info → decorator-5.2.0.dist-info}/METADATA +12 -15
- decorator-5.2.0.dist-info/RECORD +7 -0
- {decorator-5.1.1.dist-info → decorator-5.2.0.dist-info}/WHEEL +1 -1
- decorator.py +9 -5
- decorator-5.1.1.dist-info/RECORD +0 -7
- {decorator-5.1.1.dist-info → decorator-5.2.0.dist-info}/pbr.json +0 -0
- {decorator-5.1.1.dist-info → decorator-5.2.0.dist-info}/top_level.txt +0 -0
@@ -1,13 +1,14 @@
|
|
1
|
-
Copyright (c) 2005-
|
1
|
+
Copyright (c) 2005-2025, Michele Simionato
|
2
2
|
All rights reserved.
|
3
3
|
|
4
4
|
Redistribution and use in source and binary forms, with or without
|
5
5
|
modification, are permitted provided that the following conditions are
|
6
6
|
met:
|
7
7
|
|
8
|
-
|
8
|
+
* Redistributions of source code must retain the above copyright
|
9
9
|
notice, this list of conditions and the following disclaimer.
|
10
|
-
|
10
|
+
|
11
|
+
* Redistributions in binary form must reproduce the above copyright
|
11
12
|
notice, this list of conditions and the following disclaimer in
|
12
13
|
the documentation and/or other materials provided with the
|
13
14
|
distribution.
|
@@ -1,29 +1,28 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.2
|
2
2
|
Name: decorator
|
3
|
-
Version: 5.
|
3
|
+
Version: 5.2.0
|
4
4
|
Summary: Decorators for Humans
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
License: new BSD License
|
9
|
-
Keywords: decorators generic utility
|
10
|
-
Platform: All
|
5
|
+
Author-email: Michele Simionato <michele.simionato@gmail.com>
|
6
|
+
License: BSD-2-Clause
|
7
|
+
Keywords: decorators
|
11
8
|
Classifier: Development Status :: 5 - Production/Stable
|
12
9
|
Classifier: Intended Audience :: Developers
|
13
10
|
Classifier: License :: OSI Approved :: BSD License
|
14
11
|
Classifier: Natural Language :: English
|
15
12
|
Classifier: Operating System :: OS Independent
|
16
13
|
Classifier: Programming Language :: Python
|
17
|
-
Classifier: Programming Language :: Python :: 3.5
|
18
|
-
Classifier: Programming Language :: Python :: 3.6
|
19
|
-
Classifier: Programming Language :: Python :: 3.7
|
20
14
|
Classifier: Programming Language :: Python :: 3.8
|
21
15
|
Classifier: Programming Language :: Python :: 3.9
|
22
16
|
Classifier: Programming Language :: Python :: 3.10
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
23
20
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
24
21
|
Classifier: Topic :: Software Development :: Libraries
|
25
22
|
Classifier: Topic :: Utilities
|
26
|
-
Requires-Python: >=3.
|
23
|
+
Requires-Python: >=3.8
|
24
|
+
Description-Content-Type: text/x-rst
|
25
|
+
License-File: LICENSE.txt
|
27
26
|
|
28
27
|
Decorators for Humans
|
29
28
|
=====================
|
@@ -109,7 +108,7 @@ operations:
|
|
109
108
|
result = func(*args, **kw)
|
110
109
|
dt = time.time() - t0
|
111
110
|
if dt > timelimit:
|
112
|
-
logging.
|
111
|
+
logging.warning('%s took %d seconds', func.__name__, dt)
|
113
112
|
else:
|
114
113
|
logging.info('%s took %d seconds', func.__name__, dt)
|
115
114
|
return result
|
@@ -123,5 +122,3 @@ operations:
|
|
123
122
|
...
|
124
123
|
|
125
124
|
Enjoy!
|
126
|
-
|
127
|
-
|
@@ -0,0 +1,7 @@
|
|
1
|
+
decorator.py,sha256=xpjiP2Ajfg6xo0WD2W_rsCI0aDo0CBfVxl0WLtL_Vh4,16912
|
2
|
+
decorator-5.2.0.dist-info/LICENSE.txt,sha256=kU7m7Xil78FzvaaY8nCERMqdFA_MQIDGDQUD1A2znaY,1308
|
3
|
+
decorator-5.2.0.dist-info/METADATA,sha256=K7pJ6uWpeRYPzx2piRZ8c7LrNKSRVnyPdwJgyjkmzMY,3934
|
4
|
+
decorator-5.2.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
5
|
+
decorator-5.2.0.dist-info/pbr.json,sha256=AL84oUUWQHwkd8OCPhLRo2NJjU5MDdmXMqRHv-posqs,47
|
6
|
+
decorator-5.2.0.dist-info/top_level.txt,sha256=Kn6eQjo83ctWxXVyBMOYt0_YpjRjBznKYVuNyuC_DSI,10
|
7
|
+
decorator-5.2.0.dist-info/RECORD,,
|
decorator.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ######################### LICENSE ############################ #
|
2
2
|
|
3
|
-
# Copyright (c) 2005-
|
3
|
+
# Copyright (c) 2005-2025, Michele Simionato
|
4
4
|
# All rights reserved.
|
5
5
|
|
6
6
|
# Redistribution and use in source and binary forms, with or without
|
@@ -37,10 +37,11 @@ import sys
|
|
37
37
|
import inspect
|
38
38
|
import operator
|
39
39
|
import itertools
|
40
|
+
import functools
|
40
41
|
from contextlib import _GeneratorContextManager
|
41
42
|
from inspect import getfullargspec, iscoroutinefunction, isgeneratorfunction
|
42
43
|
|
43
|
-
__version__ = '5.
|
44
|
+
__version__ = '5.2.0'
|
44
45
|
|
45
46
|
DEF = re.compile(r'\s*def\s*([_\w][_\w\d]*)\s*\(')
|
46
47
|
POS = inspect.Parameter.POSITIONAL_OR_KEYWORD
|
@@ -71,7 +72,7 @@ class FunctionMaker(object):
|
|
71
72
|
self.name = '_lambda_'
|
72
73
|
self.doc = func.__doc__
|
73
74
|
self.module = func.__module__
|
74
|
-
if inspect.isroutine(func):
|
75
|
+
if inspect.isroutine(func) or isinstance(func, functools.partial):
|
75
76
|
argspec = getfullargspec(func)
|
76
77
|
self.annotations = getattr(func, '__annotations__', {})
|
77
78
|
for a in ('args', 'varargs', 'varkw', 'defaults', 'kwonlyargs',
|
@@ -214,6 +215,8 @@ def decorate(func, caller, extras=(), kwsyntax=False):
|
|
214
215
|
does. By default kwsyntax is False and the the arguments are untouched.
|
215
216
|
"""
|
216
217
|
sig = inspect.signature(func)
|
218
|
+
if isinstance(func, functools.partial):
|
219
|
+
func = functools.update_wrapper(func, func.func)
|
217
220
|
if iscoroutinefunction(caller):
|
218
221
|
async def fun(*args, **kw):
|
219
222
|
if not kwsyntax:
|
@@ -230,6 +233,7 @@ def decorate(func, caller, extras=(), kwsyntax=False):
|
|
230
233
|
if not kwsyntax:
|
231
234
|
args, kw = fix(args, kw, sig)
|
232
235
|
return caller(func, *(extras + args), **kw)
|
236
|
+
|
233
237
|
fun.__name__ = func.__name__
|
234
238
|
fun.__doc__ = func.__doc__
|
235
239
|
fun.__wrapped__ = func
|
@@ -419,8 +423,8 @@ def dispatch_on(*dispatch_args):
|
|
419
423
|
"""
|
420
424
|
check(types)
|
421
425
|
lst = []
|
422
|
-
for
|
423
|
-
lst.append(tuple(a.__name__ for a in
|
426
|
+
for ancs in itertools.product(*ancestors(*types)):
|
427
|
+
lst.append(tuple(a.__name__ for a in ancs))
|
424
428
|
return lst
|
425
429
|
|
426
430
|
def _dispatch(dispatch_args, *args, **kw):
|
decorator-5.1.1.dist-info/RECORD
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
decorator.py,sha256=el5cAEgoTEpRQN65tOxGhElue-CccMv0xol-J2MwOc0,16752
|
2
|
-
decorator-5.1.1.dist-info/LICENSE.txt,sha256=_RFmDKvwUyCCxFcGhi-vwpSQfsf44heBgkCkmZgGeC4,1309
|
3
|
-
decorator-5.1.1.dist-info/METADATA,sha256=XAr2zbYpRxCkcPbsmg1oaiS5ea7mhTq-j-wb0XjuVho,3955
|
4
|
-
decorator-5.1.1.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92
|
5
|
-
decorator-5.1.1.dist-info/pbr.json,sha256=AL84oUUWQHwkd8OCPhLRo2NJjU5MDdmXMqRHv-posqs,47
|
6
|
-
decorator-5.1.1.dist-info/top_level.txt,sha256=Kn6eQjo83ctWxXVyBMOYt0_YpjRjBznKYVuNyuC_DSI,10
|
7
|
-
decorator-5.1.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|