Metadata-Version: 2.1
Name: pure-utils
Version: 0.9.1
Summary: Yet another python utilities library for collecting useful bicycles and crutches in one place.
Author-email: Peter Bro <p3t3rbr0@gmail.com>
Project-URL: Homepage, https://git.peterbro.su/peter/py3-pure-utils
Project-URL: Documentation, https://pages.peterbro.su/py3-pure-utils/
Project-URL: Repository, https://git.peterbro.su/peter/py3-pure-utils.git
Project-URL: Issues, https://git.peterbro.su/peter/py3-pure-utils/issues
Project-URL: Changelog, https://pages.peterbro.su/py3-pure-utils/changelog.html
Keywords: utilities,bicycle,crutches
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Utilities
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: build
Requires-Dist: build==1.2.1; extra == "build"
Requires-Dist: twine==5.1.1; extra == "build"
Provides-Extra: docs
Requires-Dist: Sphinx==8.0.2; extra == "docs"
Requires-Dist: furo==2024.8.6; extra == "docs"
Provides-Extra: dev
Requires-Dist: mypy==1.11.2; extra == "dev"
Requires-Dist: isort==5.13.2; extra == "dev"
Requires-Dist: flake8==7.1.1; extra == "dev"
Requires-Dist: black==24.8.0; extra == "dev"
Requires-Dist: pydocstyle==6.3.0; extra == "dev"
Requires-Dist: pytest==8.3.2; extra == "dev"
Requires-Dist: pytest-cov==5.0.0; extra == "dev"
Requires-Dist: pytest-mock==3.14.0; extra == "dev"

# pure-utils

<!-- ![Build Status](https://github.com/p3t3rbr0/py3-pure-utils/actions/workflows/ci.yaml/badge.svg?branch=master) -->
[![Downloads](https://static.pepy.tech/badge/pure-utils)](https://pepy.tech/project/pure-utils)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pure-utils)
![PyPI Version](https://img.shields.io/pypi/v/pure-utils)
[![Code Coverage](https://codecov.io/gh/p3t3rbr0/py3-pure-utils/graph/badge.svg?token=283H0MAGUP)](https://codecov.io/gh/p3t3rbr0/py3-pure-utils)
[![Maintainability](https://api.codeclimate.com/v1/badges/14f70c48db708a419309/maintainability)](https://codeclimate.com/github/p3t3rbr0/py3-pure-utils/maintainability)

Yet another python utilities library for collecting useful bicycles and crutches in one place.

Main principles:

1. No third party dependencies (standart library only).
2. Mostly pure functions without side effects.
3. Interfaces with type annotations.
4. Comprehensive documentation with examples of use.
5. Full test coverage.

**For detail information read the [doc](https://pages.peterbro.su/py3-pure-utils/)**.

# Available utilities

* [common](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.common.html) - The common purpose utilities.
  * [Singleton](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.common.html#pure_utils.common.Singleton) - A metaclass, implements the singleton pattern for inheritors.
* [containers](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html) - Utilities for working with data containers (lists, dicts, tuples, sets, etc.).
  * [bisect](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.bisect)(collection, /) - Bisect the list into two parts/halves based on the number of elements.
  * [first](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.first)(collection, /) - Get the value of the first element from a homogeneous collection.
  * [flatten](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.flatten)(collection, /) - Make the iterated collection a flat (single nesting level).
  * [get_or_else](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.bisect)(collection, index[, default]) - Get value of element, and if it is missing, return the default value.
  * [omit](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.omit)(container, keys, /) - Omit key-value pairs from the source dictionary, by keys sequence.
  * [paginate](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.paginate)(collection, /, *, size) - Split the collection into page(s) according to the specified limit.
  * [pick](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.pick)(container, keys, /) - Pick key-value pairs from the source dictionary, by keys sequence.
  * [symmdiff](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.symmdiff)(collection1, collection2, /) - Obtain the symmetric difference of two sequences.
  * [unpack](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.containers.html#pure_utils.containers.unpack)(container, attributes, /) - Unpack the values of container object into separate variables.
* [debug](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.debug.html) - Utilities for debugging and development.
  * [around](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.debug.html#pure_utils.debug.around)(*[, before, after]) - Add additional behavior before and after execution of decorated function.
  * [caller](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.debug.html#pure_utils.debug.caller)(*[, at_frame]) - Get the name of calling function/method (from current function/method context).
  * [deltatime](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.debug.html#pure_utils.debug.deltatime)(*[, logger]) - Measure execution time of decorated function and print it to log.
  * [profileit](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.debug.html#pure_utils.debug.profileit)(*[, logger, stack_size]) - Profile decorated function being with 'cProfile'.
* [profiler](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.profiler.html) - Helper classes for working with the cProfile.
  * [Profiler](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.profiler.html#pure_utils.profiler.Profiler) - A class provides a simple interface for profiling code.
* [repeaters](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.repeaters.html) - Utilities for repeatedly execute custom logic.
  * [Repeater](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.repeaters.html#pure_utils.repeaters.Repeater) - Base Repeater, implements a main logic, such as constructor and execute method.
  * [ExceptionBasedRepeater](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.repeaters.html#pure_utils.repeaters.ExceptionBasedRepeater) - Repeater based on catching targeted exceptions.
  * [PredicateBasedRepeater](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.repeaters.html#pure_utils.repeaters.PredicateBasedRepeater) - Repeater based on predicate function.
  * [repeat](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.repeaters.html#pure_utils.repeaters.repeat)(repeater) - Repeat wrapped function by `repeater` logic.
* [strings](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.strings.html) - Utilities for working with strings.
  * [genstr](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.strings.html#pure_utils.strings.genstr)([length, is_uppercase]) - Generate ASCII-string with random letters.
  * [gunzip](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.strings.html#pure_utils.strings.gzip)(compressed_string, /) - Compress string (or bytes string) with gzip compression level.
  * [gzip](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.strings.html#pure_utils.strings.gunzip)(string, /, *[, level]) - Decompress bytes (earlier compressed with gzip) to string.
* [system](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.system.html) - The system purpose utilities.
  * [execute](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.system.html#pure_utils.system.execute)(args, *[, input, timeout]) - Execute command into external process.
* [times](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.times.html) - Utilities for working with datetime objects.
  * [apply_tz](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.times.html#pure_utils.times.apply_tz)(dt[, tz]) - Apply timezone context to datetime object.
  * [iso2format](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.times.html#pure_utils.times.iso2format)(isostr, fmt, /) - Convert ISO-8601 datetime string into a string of specified format.
  * [iso2dmy](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.times.html#pure_utils.times.iso2dmy)(isostr, /) - Convert ISO-8601 datetime string into a string of DMY (DD.MM.YYYY) format.
  * [iso2ymd](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.times.html#pure_utils.times.iso2ymd)(isostr, /) - Convert ISO-8601 datetime string into a string of YMD (YYYY-MM-DD) format.
  * [round_by](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.times.html#pure_utils.times.round_by)(dt, /, *, boundary) - Round datetime, discarding excessive precision.
* [types](https://pages.peterbro.su/py3-pure-utils/refs/pure_utils.types.html) - Helper module with common types.

# License

MIT License.

Copyright (c) 2024 Peter Bro <p3t3rbr0@gmail.com || peter@peterbro.su>

See LICENSE file for more information.
