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_ambiguousparameter removed completely, it was too complex to use.callable_or_cls_firstarg_disambiguatorrenamedcustom_disambiguatorto be more intuitivewrapsargument 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_disambiguationnow provides a cleardisambiguate_callmethod, andutil_modesprovides a clearmake_decorator_specto handle all the per-mode specificity and always come back to a nested case before going further. - removed a case in the
mainmodule (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.
See documentation page for details.