Skip to main content

Convenience facilities related to Python functions. * funccite: cite a function (name and code location) * @prop: replacement for @property which turns internal AttributeErrors into RuntimeErrors * some decorators to verify the return types of functions

Project description

Convenience facilities related to Python functions.

  • funccite: cite a function (name and code location)
  • @prop: replacement for @property which turns internal AttributeErrors into RuntimeErrors
  • some decorators to verify the return types of functions

Latest release 20200518: funcname: prefer func.__qualname__ over func.__name__

Function callmethod_if(o, method, default=None, a=None, kw=None)

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

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

Function derived_from(property_name)

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

Function 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.

Function funccite(func)

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

Function funcname(func)

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

Function 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.

Function returns_bool(func)

Decorator for functions which should return Booleans.

Function returns_str(func)

Decorator for functions which should return strings.

Function returns_type(func, basetype)

Decrator which checks that a function returns values of type basetype.

Function yields_str(func)

Decorator for generators which should yield strings.

Function yields_type(func, basetype)

Decorator which checks that a generator yields values of type basetype.

Release Log

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.

Project details


Download files

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

Source Distribution

cs.py.func-20200518.tar.gz (4.2 kB view details)

Uploaded Source

File details

Details for the file cs.py.func-20200518.tar.gz.

File metadata

  • Download URL: cs.py.func-20200518.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.7

File hashes

Hashes for cs.py.func-20200518.tar.gz
Algorithm Hash digest
SHA256 3098b9cf4df52bbed12d65d027bc6d33162d07010f0fde0a6f0c89f5d30e2f12
MD5 728c1ff9dc284f8389cdd7289ce4905d
BLAKE2b-256 4ac43fceb25c577908bf9e1d6e3636ae28d6b757d50b267554b71c72eac07561

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page