Skip to main content

KWCHECKER a verifier and sanitizer for python kwargs parameters

exploits of a mom also see explain-xkcd

(fun fact: email addresses can have a apostrophe in them - so that O'Connell will be happy, however that's not a problem as the sign is allowed only in the first part of the address, and you can't have spaces in the address either. Still: better use sql prepared statements, to be on the safe side)

The kwchecker package simplifies validation & sanitation of python kwargs parameter, your can define most validations declaratively, in a map. See the following example, where the validator definitions are passed to the kwchecker.KwArgsChecker constructor.

        def func_to_test(**kwargs):
            checker = kwchecker.KwArgsChecker(required={
                    "first_name": (
                        str,
                        kwchecker.no_regex_validator("^\s*$", "Error: empty first name"),
                        kwchecker.strip_leading_trailing_space(),
                        kwchecker.capitalize_first_letter(),
                    ),
                    "last_name": (
                        str,
                        kwchecker.no_regex_validator(r"^\s*$", "Error: empty last name"),
                        kwchecker.strip_leading_trailing_space(),
                        kwchecker.capitalize_first_letter(),
                    ),

                    "title" : str,

                    "email" : kwchecker.email_validator(),

                    "phone" : (
                        kwchecker.regex_validator(r"^[0-9\+\-,\ \(\)#]*$", "not a vald phone number")
                        )
                }, opt={
                    "mood": kwchecker.int_range_validator(0, 10),
                    "plan": str
                })

            checker.validate(kwargs)

The constructor has two arguments required receives the definition for mandatory parameters passed via kwargs, opt receives definitions of optional parameters. An errror is triggered, if an actual parameter in kwargs does not appear in any of these definitions.] The constructor also has an optional sanitize_db parameter, if set to True then this will removes all ap ' and " characters.

Each allowed parameter name appears as a key in the dictionary arguments. The value of the entry defines the actual validation/sanitation. A type value will check, if the supplied argument is of the requested type

"title" : str - this will check if the kwargs parameter title is of type string.

A funcion value will be either a validation function, or a sanitier function.

"email" : kwchecker.email_validator() - this validates that the email parameter in kwargs is a valid email address. Note that function email_validator is being called here, as it returns a closure. Most of the verifiers can take additional arguments, like an error message that overrides the default one, therefore I kept with this convention for all validators and sanitizer functions, in order to make it consistent.

You may pass a tuple of values that are either types or functions. see

"last_name": (
    str,
    kwchecker.no_regex_validator(r"^\s*$", "Error: empty last name"),
    kwchecker.strip_leading_trailing_space(),
    kwchecker.capitalize_first_letter(),
)

The action for the kwargs last_name parameter will first verify that parameter to be of type string, then it will verify, that the value is not an empty string kwchecker.no_regex_validator(r"^\s*$", "Error: empty last name"), then it will strip the leading and trailing whitespaces kwchecker.strip_leading_trailing_space(), and capitalize the first letter of the value kwchecker.capitalize_first_letter()

Installation instructions

pip install kwchecker

Also see the project here kwchecker

Download files

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

Source Distribution

kwchecker-1.0.4.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kwchecker-1.0.4-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file kwchecker-1.0.4.tar.gz.

File metadata

  • Download URL: kwchecker-1.0.4.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for kwchecker-1.0.4.tar.gz
Algorithm Hash digest
SHA256 4d6fc7bdd49cefab29d4fc14fa1c90379bf65abe843a143c9745f81fa274a325
MD5 ff71731b7cb0da6cfdd2e4869c8adbeb
BLAKE2b-256 79ef2ce8b49dceb58ff3bdc39875f8e66b436a853c067dbfafb8c3f72e526af1

See more details on using hashes here.

File details

Details for the file kwchecker-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: kwchecker-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6

File hashes

Hashes for kwchecker-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5307624199e8d26b530c0ed1dea90c436bf870a1dba1e3a18da0b6379ba9e95c
MD5 1e622c2295c03e514129ec3c7fb12ac0
BLAKE2b-256 cfa00c7e75566fc9deb6368e341c9c9841a5471dfd88255059931ecd0ea04b89

See more details on using hashes here.

Release history Release notifications | RSS feed

1.1.0

2 files

This release

1.0.4 This release

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page