Skip to main content

Extra Functional Tools beyond Standard and Third-Party Libraries

Project description

PyPI version PyPI pyversions PyPI license

Extra functional tools that go beyond standard library's itertools, functools, etc. and popular third-party libraries like toolz, fancy, and more-itertools.

  • Like toolz and others, most of the tools are designed to be efficient, pure, and lazy. Several useful yet non-functional tools are also included.

  • While toolz and others target basic scenarios, most tools in this library target more advanced and complete scenarios.

  • A few useful CLI tools for respective functions are also installed. They are available as extratools-[funcname].

Full documentation available here.

Plans

This library is under active development, and new functions are added on regular basis.

Besides other interesting ideas, I am planning to make the following updates in recent days/weeks/months.

  • Add dicttools.unflatten and jsontools.unflatten.

  • Update seqtools.commonsubseq, seqtools.commonsubseqwithgap, seqtools.align, and strtools.commonsubstr to support more than two sequences/strings.

  • Add trie and suffixtree (according to generalized suffix tree).

Index of Available Tools

  • Functions:

seqtools sortedtools strtools rangetools dicttools jsontools settools tabletools mathtools stattools misctools printtools debugtools

  • Data Structures:

disjointsets defaultlist

  • CLI Tools:

dicttools.remap jsontools.flatten jsontools.teststats

Examples

Here are three examples out of dozens of our tools.

  • seqtools.compress(data, key=None) compresses the sequence by encoding continuous identical Item to (Item, Count), according to run-length encoding.
list(compress([1, 2, 2, 3, 3, 3, 4, 4, 4, 4]))
# [(1, 1), (2, 2), (3, 3), (4, 4)]
  • rangetools.gaps(covered, whole=(-inf, inf)) computes the uncovered ranges of the whole range whole, given the covered ranges covered.
list(gaps(
    [(-inf, 0), (0.1, 0.2), (0.5, 0.7), (0.6, 0.9)],
    (0, 1)
))
# [(0, 0.1), (0.2, 0.5), (0.9, 1)]
  • jsontools.flatten(data, force=False) flattens a JSON object by returning (Path, Value) tuples with each path Path from root to each value Value.
flatten(json.loads("""{
  "name": "John",
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "office",
      "number": "646 555-4567"
    }
  ],
  "children": [],
  "spouse": null
}"""))
# {'name': 'John',
#  'address.streetAddress': '21 2nd Street',
#  'address.city': 'New York',
#  'phoneNumbers[0].type': 'home',
#  'phoneNumbers[0].number': '212 555-1234',
#  'phoneNumbers[1].type': 'office',
#  'phoneNumbers[1].number': '646 555-4567',
#  'children': [],
#  'spouse': None}

Installation

This package is available on PyPI. Just use pip3 install -U extratools to install it.

Other Libraries

The following libraries are highly recommended to use together with extratools.

toolz sortedcontainers

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

extratools-0.6.1.tar.gz (12.6 kB view hashes)

Uploaded Source

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