Skip to main content

A decorator to make a function accept keyword arguments only, on both Python 2 and 3.

Project description

A decorator to make a function accept keyword arguments only, on both Python 2 and 3.

If you are only using Python 3, you don’t need this, you can just do:

def myfunction(*, foo=1, bar=2):
    pass

Why?

If you are making a library (that still supports Python 2), you might want to make all functions in its API take keyword arguments only, for a couple of reasons:

  • To avoid user confusion, e.g. if you take x and y arguments as coordinates, it’s easy to forget which way round to pass them.
  • To make your API easier to extend - you’ll know no callers rely on the positional argument ordering, so can refactor this to make sense.

Installation

Use pip:

pip install kwargs-only

Tested on Python 2.7 and Python 3.6.

Usage

Import the decorator and apply it to a function:

from kwargs_only import kwargs_only

@kwargs_only
def myfunction(foo=1, bar=2):
    pass

Then calling the function with positional arguments will cause it to fail with TypeError:

>>> myfunction(1, 2)
...
TypeError: myfunction should only be called with keyword args

The decorator detects methods and classmethods, by allowing for the first argument to be a positional one if its name is self or cls. kwargs_only should be applied to the function before classmethod is. For example:

class MyClass:

    @classmethod
    @kwargs_only
    def my_class_method(cls, foo=1):
        pass

    @kwargs_only
    def my_instance_method(self, bar=1):
        pass

That’s about all there is to it! Enjoy!

History

Pending Release

1.0.0 (2017-06-18)

  • First release on PyPI, featuring kwargs_only decorator.

Project details


Release history Release notifications

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
kwargs_only-1.0.0-py2.py3-none-any.whl (4.7 kB) Copy SHA256 hash SHA256 Wheel 2.7 Jun 18, 2017
kwargs-only-1.0.0.tar.gz (3.8 kB) Copy SHA256 hash SHA256 Source None Jun 18, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page