Skip to main content

pyTooling is a powerful collection of arbitrary useful classes, decorators, meta-classes and exceptions.

Project description

Sourcecode on GitHub Sourcecode License Documentation Documentation License
PyPI PyPI - Status PyPI - Python Version
GitHub Workflow - Build and Test Status Libraries.io status for latest release Codacy - Quality Codacy - Coverage Codecov - Branch Coverage

pyTooling

pyTooling is a powerful collection of arbitrary useful abstract data models, classes, decorators, meta-classes and exceptions. It also provides lots of helper functions e.g. to ease the handling of package descriptions.

It's useful for any Python-base project independent if it's a library, framework or CLI tool.

Introduction

pyTooling is a basic collection of powerful helpers needed by almost any Python project. More specialized helpers can be found in sub-namespaces like:

In addition, pyTooling provides a collection of CI job templates for GitHub Actions. This drastically simplifies GHA-based CI pipelines for Python projects.

Package Details

Common Helper Functions

This is a set of useful helper functions:

  • getsizeof calculates the "real" size of a data structure.
  • isnestedclass checks if a class is nested inside another class.
  • mergedicts merges multiple dictionaries into a new dictionary.
  • zipdicts iterate multiple dictionaries simultaneously.

Common Classes

Data Structures

pyTooling also provides fast and powerful data structures offering object-oriented APIs:

Decorators

Exceptions

Meta-Classes

  • Overloading
    Overloading allows method overloading in Python classes. It dispatches method calls based on method signatures (type annotations).
  • Singleton
    → A class created from meta-class Singleton allows only a single instance to exist. If a further instance is tried to be created, a cached instance will be returned.
  • SlottedType
    → All type-annotated fields in a class get stored in a slot rather than in __dict__. This improves the memory footprint as well as the field access performance of all class instances. The behavior is automatically inherited to all derived classes.

Packaging

tbd

Examples

@export Decorator

from pyTooling.Decorators import export

@export
class MyClass:
  pass

CallByRefIntParam

from pyTooling.CallByRef import CallByRefIntParam

# define a call-by-reference parameter for integer values
myInt = CallByRefIntParam(3)

# a function using a call-by-reference parameter
def func(param: CallByRefIntParam):
  param <<= param * 4

# call the function and pass the wrapper object
func(myInt)

print(myInt.Value)

Contributors

License

This Python package (source code) licensed under Apache License 2.0.
The accompanying documentation is licensed under Creative Commons - Attribution 4.0 (CC-BY 4.0).


SPDX-License-Identifier: Apache-2.0

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

pyTooling-2.5.0.tar.gz (48.0 kB view hashes)

Uploaded Source

Built Distribution

pyTooling-2.5.0-py3-none-any.whl (58.5 kB view hashes)

Uploaded Python 3

Supported by

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