Skip to main content

Democritus functions for working with lists.

Project description

Democritus Lists

PyPI CI Lint codecov The Democritus Project uses semver version 2.0.0 The Democritus Project uses black to format code License: LGPL v3

Democritus functions[1] for working with lists.

[1] Democritus functions are simple, effective, modular, well-tested, and well-documented Python functions.

We use d8s (pronounced "dee-eights") as an abbreviation for democritus (you can read more about this here).

Installation

pip install d8s-lists

Usage

You import the library like:

from d8s_lists import *

Once imported, you can use any of the functions listed below.

Functions

  • def iterable_sort_by_length(iterable: Iterable[Any], **kwargs) -> List[Any]:
        """."""
    
  • def longest(iterable: Iterable[Any]) -> Any:
        """."""
    
  • def shortest(iterable: Iterable[Any]) -> Any:
        """."""
    
  • def flatten(iterable: Iterable[Any], level: int = None, **kwargs) -> Iterator[Any]:
        """Flatten all items in the iterable so that they are all items in the same list."""
    
  • def has_index(iterable: Sized, index: int) -> bool:
        """."""
    
  • def types(iterable: Iterable[Any]) -> Iterator[Type]:
        """Return a set containing the types of all items in the list_arg."""
    
  • def iterable_item_of_types(iterable: Iterable[Any], item_types: Iterable[type]) -> bool:
        """Return True if the iterable has any item that is of the item_types. Otherwise, return False."""
    
  • def iterable_all_items_of_types(iterable: Iterable[Any], item_types: Iterable[type]) -> bool:
        """Return True if all items in the iterable are of a type given in item_types. Otherwise, return False."""
    
  • def iterable_has_all_items_of_type(iterable: Iterable[Any], type_arg: type) -> bool:
        """Return whether or not all iterable in iterable are of the type specified by the type_arg."""
    
  • def deduplicate(iterable: Iterable[Any]) -> Iterator[Any]:
        """Deduplicate the iterable."""
    
  • def cycle(iterable: Iterable[Any], length: Optional[int] = None) -> Iterator[Any]:
        """Cycle through the iterable as much as needed."""
    
  • def truthy_items(iterable: Iterable[Any]) -> Iterator[Any]:
        """Return an iterable with only elements of the given iterable which evaluate to True.
    
    (see https://docs.python.org/3.9/library/stdtypes.html#truth-value-testing)"""
    
  • def nontruthy_items(iterable: Iterable[Any]) -> Iterator[Any]:
        """Return an iterable with only elements of the given iterable which evaluate to False.
    
    (see https://docs.python.org/3.9/library/stdtypes.html#truth-value-testing)"""
    
  • def iterable_has_single_item(iterable: Iterable[Any]) -> bool:
        """Return whether the iterable has a single item in it."""
    
  • def iterables_are_same_length(a: Sized, b: Sized, *args: Sized, debug_failure: bool = False) -> bool:
        """Return whether or not the given iterables are the same lengths."""
    
  • def iterables_have_same_items(a: Sequence, b: Sequence, *args: Sequence) -> bool:
        """Return whether iterables have identical items (considering both identity and count)."""
    
  • def run_length_encoding(iterable: Iterable[Any]) -> Iterator[str]:
        """Perform run-length encoding on the given array.
    
    See https://en.wikipedia.org/wiki/Run-length_encoding for more details."""
    
  • def iterable_count(iterable: Iterable[Any]) -> Dict[Any, int]:
        """Count each item in the iterable."""
    
  • def iterable_item_index(iterable: Sequence, item: Any) -> int:
        """Find the given item in the iterable. Return -1 if the item is not found."""
    
  • def iterable_item_indexes(iterable: Iterable[Any], item: Any) -> Iterator[int]:
        """Find the given item in the iterable. Return -1 if the item is not found."""
    
  • def duplicates(iterable: Sequence) -> Iterator[Sequence]:
        """Find duplicates in the given iterable."""
    
  • def iterable_has_mixed_types(iterable: Iterable[Any]) -> bool:
        """Return whether or not the iterable has items with two or more types."""
    
  • def iterable_has_single_type(iterable: Iterable[Any]) -> bool:
        """Return whether or not the iterable has items of only one type."""
    
  • def iterable_replace(iterable: Iterable[Any], old_value: Any, new_value: Any) -> Iterator[Any]:
        """Replace all instances of the old_value with the new_value in the given iterable."""
    

Development

👋  If you want to get involved in this project, we have some short, helpful guides below:

If you have any questions or there is anything we did not cover, please raise an issue and we'll be happy to help.

Credits

This package was created with Cookiecutter and Floyd Hightower's Python project template.

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

d8s_lists-0.8.0.tar.gz (27.4 kB view details)

Uploaded Source

Built Distribution

d8s_lists-0.8.0-py2.py3-none-any.whl (23.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file d8s_lists-0.8.0.tar.gz.

File metadata

  • Download URL: d8s_lists-0.8.0.tar.gz
  • Upload date:
  • Size: 27.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for d8s_lists-0.8.0.tar.gz
Algorithm Hash digest
SHA256 6a7709a9a64a64f77a85051d6887117ec216a2dd71d02477bcd0277e9fd4477e
MD5 9413930de32a9687873d38054532fc3d
BLAKE2b-256 8d1e5303df0a4b55f3db49805e9a34c20eecb67ea7855ac348d17ee80d7816a9

See more details on using hashes here.

File details

Details for the file d8s_lists-0.8.0-py2.py3-none-any.whl.

File metadata

  • Download URL: d8s_lists-0.8.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for d8s_lists-0.8.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 93b7f6f402af580467a058d941673dcc3911084aa58cdc95f458f58ad8d81af4
MD5 fe6d8d36d403e7827b0bbfe082a8f934
BLAKE2b-256 aab29d2839b7da38b97afca11cd7192638b1c240f0e513b98de428420ab81357

See more details on using hashes here.

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