positional package¶
Module contents¶
-
class
positional.
positional
(max_positional_args=None, enforcement='except')¶ Bases:
object
A decorator to enforce passing arguments as keywords.
When you have a function that takes a lot of arguments you expect people to pass those arguments as keyword arguments. Python however does not enforce this. In future then if you decide that you want to insert a new argument or rearrange the arguments or transition to using **kwargs you break compatibility with users of your code who (wrongly) gave you 20 positional arguments.
In python 3 there is syntax to prevent this however we are not all in the position where we can write python 3 exclusive code. Positional solves the problem in the mean time across both pythons by enforcing that certain arguments must be past as keyword arguments.
Parameters: max_positional_args – the maixmum number of arguments that can be passed to this function without keyword parameters. Defaults to enforcing that every parameter with a default value must be passed as a keyword argument. :type max_positional_args int
Parameters: enforcement – defines the way incorrect usage is reported. Currenlty accepts positional.EXCEPT
to raise a TypeError orpositional.WARN
to show a warning. A warning can be useful for applying to functions that are already public as a deprecation notice. Defaults topositional.EXCEPT
.-
EXCEPT
= 'except'¶
-
WARN
= 'warn'¶
-
classmethod
classmethod
(*args, **kwargs)¶
-
classmethod
method
(max_positional_args=None, enforcement='except')¶
-