Registry / serialization / func-args

func-args

JSON →
library1.0.1pypypi✓ verified 33d ago

func-args is a lightweight Python library (current version 1.0.1) designed for creating wrapper functions with enhanced argument handling. It addresses common challenges encountered with third-party APIs that have suboptimal interface designs, allowing developers to explicitly mark parameters as required or optional using special sentinel values (REQ and OPT). The library is actively maintained with a stable release cadence.

serialization
Install & Compatibility
Where this runs
tested against v1.0.2 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.920 runs
installs and imports cleanly · install 0.0s · import 0.000s · 17.9MB
glibc
py 3.103.920 runs
installs and imports cleanly · install 1.5s · import 0.000s · 18MB
16MB installed
● package 16MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

from func_args import arg
from func_args import exc
from func_args import resolve_kwargs

This example demonstrates how to define a function using the `@delegator` decorator and `REQ`/`OPT` sentinel values. `REQ` marks a parameter as mandatory, ensuring a `TypeError` is raised if it's not provided. `OPT` acts as a placeholder for optional parameters, allowing you to differentiate between an explicitly passed `None` and an omitted optional argument.

from func_args import REQ, OPT, delegator @delegator def my_function(required_param: REQ, optional_param: OPT = None): """An example function using REQ and OPT for argument handling.""" print(f"Required: {required_param}") if optional_param is not OPT: print(f"Optional: {optional_param}") else: print("Optional parameter was not provided.") return {"required": required_param, "optional": optional_param} # Example 1: Providing both required and optional result1 = my_function(required_param="hello", optional_param="world") print(f"Result 1: {result1}") # Example 2: Providing only required, optional defaults to OPT sentinel result2 = my_function(required_param=123) print(f"Result 2: {result2}") # Example 3: Missing a required argument (will raise TypeError) try: my_function() except TypeError as e: print(f"Error: {e}")
Debug
Known footguns
gotchaThe `OPT` sentinel value is distinct from `None`. When an optional parameter is not provided, its value will be the `OPT` object, not `None`. Always check `if my_param is not OPT:` if you need to differentiate an omitted argument from an explicit `None`.
breakingOmitting a parameter marked with `REQ` will result in a `TypeError`, as the `delegator` decorator enforces its presence. This behavior ensures explicit argument handling and early error detection.
gotchaWhile `func-args` provides a mechanism for explicit argument handling, it does not directly prevent the general Python 'mutable default argument' footgun. If you assign a mutable object (like a list or dictionary) as a default value to a parameter *not* using `OPT`, that object will be shared across all calls to the function.
Upgrade
Version history

Breaking-change detection hasn't run for this library yet.

Audit
Security & dependencies

CVE tracking and dependency tree are planned for a later release.

Agent activity
15 hits · last 30 days
gptbot
4
ahrefsbot
4
script
1
Resources