Changelog¶
1.4.10 - Type hints step 1¶
@function_decorator
now has proper type hints. This is a first step towards fixing #22. PR #23 by last-partizan.
1.4.9 - New layout and CI + Compatibility fixes.¶
-
Enabling the "stack introspection" beta feature with
enable_stack_introspection=True
now raises an explicitNotImplementedError
on python 3.8+. Fixed #26. -
Migrated to the new project layout with nox, github-actions and separation of
src
andtests
. Fixed test suite withpytest-cases>=3
. Fixed #24 and #20.
1.4.8 - better packaging¶
- packaging improvements: set the "universal wheel" flag to 1, and cleaned up the
setup.py
. In particular removed dependency tosix
for setup and addedpy.typed
file, as well as set thezip_safe
flag to False. Removed tests folder from package. Fixes #19
1.4.7 - pyproject.toml¶
raddessi added a pyproject.toml
- thanks! Fixed pytest-cases#65.
1.4.6 - Bug fix¶
Fixed decorated object injection issue when var-positional arguments are located before it in the signature. Fixed #14.
Added __version__
attribute to comply with PEP396, following this guide. Fixes #15.
PyPI supports markdown via long_description_content_type
: pypandoc is not required anymore. Thanks minrk!
1.4.5 - Performance improvement¶
- Huge performance improvement for the
enable_stack_introspection=True
mode. It also now supports classes correctly.
1.4.4 - Reverted varpositional bugfixes now that they are handled in makefun¶
1.4.3 - Bugfix in nested mode under python 2¶
In python 2, when nested mode was used in a context where the signature contains a var-positional argument, a TypeError
was raised ; this is now fixed. Fixes #13.
1.4.2 - Bugfix in flat mode under python 2¶
In python 2, when flat mode was used in a context where the signature contains a var-positional argument, the arguments were not correctly injected. Fixes #12.
1.4.1 - Minor default symbols improvement¶
Removed the clunky Enum
for symbols. Back to a normal class, with a custom __repr__
.
1.4.0 - Minor dependency version update¶
Now relying on makefun>=1.5.0
where arg names changed a bit.
1.3.0 - Predefined disambiguators and init file fix¶
-
We now provide predefined disambiguators
with_parenthesis
andno_parenthesis
. Fixes #8. -
Fixed
KeyError
when the signature contains**kwargs
. Fixes #9. -
Fixed issue when the signature only contains
**kwargs
. Fixes #10 -
Fixed static checker problem in PyCharm with the symbols (it came back when we moved to an Enum)
-
Improved exception re-raising in flat mode.
-
Minor: fixed init file.
1.2.1 - Flat and double flat symbols: additional protection and bugfix¶
Default-value symbols DECORATED
, WRAPPED
, F_ARGS
and F_KWARGS
now have a nicer representation. Fixes #7.
When a symbol is used in a signature where it can not be safely injected as keyword argument, an InvalidSignatureError
is now raised. Fixes #6.
1.2.0 - Dependency update for important fix¶
makefun>=1.4.0
is now required, as it fixes a major issue: #5
1.1.1 - Symbols are not classes anymore¶
Default-value symbols DECORATED
, WRAPPED
, F_ARGS
and F_KWARGS
are now objects and not classes any more. This prevents IDE to flag the corresponding argument as being misused (not iterable...). Fixes #4.
1.1.0 - Dependency update¶
The double-flat mode now relies on @makefun.wraps
, from makefun>=1.3.0
. Fixes #3.
Updated documentation accordingly.
1.0.0 - Refactoring + New "double-flat" mode + API changes + documentation¶
API changes:
- Added support for a new "double-flat" mode so that users can create decorators creating signature-preserving function wrappers with zero level of nesting. Fixes #2.
- Generated var-positional name for kw-only methods is now
'*_'
can_first_arg_be_ambiguous
parameter removed completely, it was too complex to use.callable_or_cls_firstarg_disambiguator
renamedcustom_disambiguator
to be more intuitivewraps
argument renamedflat_mode_decorated_name
. It was too similar to the wording used in functools, and specific to the flat mode only. Fixes #1.
Improved behaviour
- Now the flat mode behaves exactly like nested mode concerning signature-related
TypeError
. This is because when you use the flat mode we now generate a nested mode function with a true signature. - Now the exposed decorator uses the
__wrapped__
trick to expose
Major refactoring for code readability:
- Submodules are now consistent and readable. In particular
utils_disambiguation
now provides a cleardisambiguate_call
method, andutil_modes
provides a clearmake_decorator_spec
to handle all the per-mode specificity and always come back to a nested case before going further. - removed a case in the
main
module (var-positional) as it was completely covered by the general case. - Information is now passed as objects through the various functions, using two main classes
SignatureInfo
(for static information) andDecoratorUsageInfo
(for dynamic/usage information). The information is computed in a lazy way for each to avoid unnecessary signature binding for example.
Major documentation update.
0.5.0 - First version¶
Fully functional with 100+ tests.