Skip to main content

Convenience facilities related to Python functions.

Latest release 20261031: akw: better repr() and str().

Short summary:

  • akw: A trite class to store positional and keyword arguments.

  • callif: Call func(*a,**kw) if doit is true otherwise just print it out.

  • callmethod_if: Call the named method on the object obj if it exists.

  • derived_from: A property which must be recomputed if the revision of another property exceeds the snapshot revision.

  • derived_property: A property which must be recomputed if the reference revision (attached to self) exceeds the snapshot revision.

  • func_a_kw: Return a string representing a call to func(*a,**kw).

  • func_a_kw_fmt: Prepare a percent-format string and associated argument list describing a call to func(*a,**kw). Return format,args.

  • funccite: Return a citation for a function (name and code location).

  • funcname: Return a name for the supplied function func. Several objects do not have a name attribute, such as partials.

  • prop: A substitute for the builtin @property.

Functions

callif(doit, func, *a, **kw)

Call func(*a,**kw) if doit is true otherwise just print it out.

The parameter func may be preceeded optionally by a dict containing modes. The current modes are:

  • 'print': the print function, default the builtin print

callmethod_if(obj, method, default=None, a=None, kw=None)

Call the named method on the object obj if it exists.

If it does not exist, return default (which defaults to None). Otherwise call getattr(obj, method)(*a, **kw). a defaults to (). kw defaults to {}.

derived_from(property_name)

A property which must be recomputed if the revision of another property exceeds the snapshot revision.

derived_property(func, original_revision_name='_revision', lock_name='_lock', property_name=None, unset_object=None)

A property which must be recomputed if the reference revision (attached to self) exceeds the snapshot revision.

func_a_kw(func, *a, **kw)

Return a string representing a call to func(*a,**kw).

func_a_kw_fmt(func, *a, **kw)

Prepare a percent-format string and associated argument list describing a call to func(*a,**kw). Return format,args.

The func argument can also be a string, typically a prepared description of func such as funccite(func).

Note: the returned args is a list for easy incorporation into further arguments. The % operator requires a tuple.

funccite(func)

Return a citation for a function (name and code location).

funcname(func)

Return a name for the supplied function func. Several objects do not have a name attribute, such as partials.

prop(func)

A substitute for the builtin @property.

The builtin @property decorator lets internal AttributeErrors escape. While that can support properties that appear to exist conditionally, in practice this is almost never what I want, and it masks deeper errors. Hence this wrapper for @property that transmutes internal AttributeErrors into RuntimeErrors.

Classes

class akw

A trite class to store positional and keyword arguments.

It's a constant annoyance to me that there no neat way to store a pairing of positional and keyword arguments for use with a function. You can store easily a sequence or a mapping, and you can store a function with arguments using functools.partial.

Example:

>>> args = akw(1, 2, x=3, z=4, a=1)
>>> args
akw(1,2,x=3,z=4,a=1)
>>> args.args
(1, 2)
>>> args.kwargs
{'x': 3, 'z': 4, 'a': 1}
>>> import sys
>>> prakw=akw(1, 2, file=sys.stdout)
>>> prakw(print, 3)
1 2 3

akw.__call__(self, func, *cargs, **ckwargs)

Call func with self.args and cargs as positional arguments and self.kwargs and ckwargs as keyword arguments.

Release Log

Release 20261031: akw: better repr() and str().

Release 20261030: New akw(*args,**kwargs) for storing arguments for later use with a function.

Release 20250914: funcname: accomodate functions with no .__module__ attribute.

Release 20250724:

  • func_a_kw_fmt: shorten long %r, widen another field.
  • Drop Python 2 support.

Release 20240630: funcname: include the module name, handle functions with no module.

Release 20230331: Drop @trace, moved to cs.debug.

Release 20230210: Drop the returns_* and yields_* decorators, these days type annotations and @typechecked are the go.

Release 20221207:

  • @trace: trace exceptions by default, previously false.
  • Late import of cs.fs.shortpath to avoid import loop.
  • New func_a_kw(func,*a,**kw) returning the formatted form of func_a_kw_fmt(func,*a,**kw).

Release 20221118: @trace: add indenting.

Release 20220619: @trace: rename some parameters, add with_caller.

Release 20220311.1: New callif(doit[,modes],func,*a,**kw) to call or print a function, used in -n/--dry-run stuff sometimes.

Release 20220311:

  • @trace: new pprint=False option to use pprint.pformat instead of repr for the return value.
  • @trace: bugfix use of retval parameter.

Release 20210913: New func_a_kw_fmt(func,*a,**kw) imported from cs.pfx, hooked it into @trace.

Release 20210906: funcname: special case functools.partial, return concise name.

Release 20210717:

  • Move @trace from debug to py.func, defer log call imports to avoid loops.
  • Drop cs.pfx requirement, import opportunisticly with fallback.

Release 20200518: funcname: prefer func.__qualname__ over func.__name__

Release 20190729: funccite: handle callables with no code attribute.

Release 20190108: Break import loop. Use cs.py3.raise_from for portability.

Release 20181231:

  • Some type specific convenience wrappers for yields_type and returns_type.
  • Bugfix for @prop.

Release 20170906.1: Minor tweaks.

Release 20170906: Bugfix for @prop.

Release 20170608: New decorator @prop which works just like the builtin @property, but transmutes internal AttributeError into RuntimeError, unmasking many bugs.

Release 20160828: Use "install_requires" instead of "requires" in DISTINFO.

Release 20150115: First PyPI release.

Metadata

Release files for cs-py-func 20261031

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cs-py-func 20261031
File Size Uploaded Provenance Actions
cs_py_func-20261031.tar.gz 5.0 kB Without provenance Details for cs_py_func-20261031.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cs-py-func 20261031
File Interpreter ABI Platform Actions
cs_py_func-20261031-py3-none-any.whl Python 3 none any Details for cs_py_func-20261031-py3-none-any.whl

Total release size: 11.1 kB

Release files / cs_py_func-20261031.tar.gz

Download URL cs_py_func-20261031.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
3113b88fb557f71294dbc5eb905fac887c50eacdd8c7918439b34c6fff45027f
BLAKE2b-256 checksum
How to use checksums
726413ec026a9b6a3b3805091c6c3a2a72274772ae892ae33a9bb0b156531d76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.1

Release files / cs_py_func-20261031-py3-none-any.whl

Download URL cs_py_func-20261031-py3-none-any.whl
Size 6.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a0d4e734a75fba516d30d53130998de3f87b5377275851daaf6bfb8ff9aa0ef7
BLAKE2b-256 checksum
How to use checksums
f3bf66f4eebf576a88346ef1b8bd7ba767862ce17a874ef35fd53528f7b56746
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.1

Security for cs-py-func 20261031

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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