Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

understreck

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

understreck

A collection of nice utility functions for python

  • 1.0.0
  • PyPI
  • Socket score

Maintainers
1

=========== Understreck

.. image:: https://img.shields.io/pypi/v/understreck.svg :target: https://pypi.python.org/pypi/understreck

.. image:: https://travis-ci.com/cfarvidson/understreck.svg?branch=master :target: https://travis-ci.com/cfarvidson/understreck

.. image:: https://readthedocs.org/projects/understreck/badge/?version=latest :target: https://understreck.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/ambv/black :alt: Code style: black

.. image:: https://pepy.tech/badge/understreck :target: https://pepy.tech/project/understreck :alt: downloads

A collection of nice utility functions for python

Features

  • Perform a safe get on a nested dictionary with the nested_get function
  • Split a list into chunks
  • Filter a list of dictionaries
  • Strip indents from multiline strings

Examples

Get example::

import understreck as _

test_dictionary = {
    "foo": {
        "second_level": {"third_level": "it works", "third_level_sibling": False},
        "second_level_list": ["Hello", "World", {"planet": "Earth"}, ["Hello", "World", {"planet": "jupiter"}, ]],
    }
}

# Using dot delimited strings
result = _.get(test_dictionary, "foo.second_level.third_level")  # result == "it works"
result = _.get(test_dictionary, "foo.second_level.DOES_NOT_EXIST")  # result == None

# Using a list or tuple
result = _.get(test_dictionary, ["foo", "second_level", "third_level"])  # result == "it works"
result = _.get(test_dictionary, ["foo", "second_level", "DOES_NOT_EXIST"])  # result == None

# Getting elements in list

result = _.get(test_dictionary, "foo.second_level_list[0]")  # result == "Hello"
result = _.get(test_dictionary, "foo.second_level_list[1]")  # result == "World"
result = _.get(test_dictionary, "foo.second_level_list[2].planet")  # result == "Earth"

# Getting a property in a nested list 
nested_list = {
                "foo": {
                    "bar": [
                        "x", [
                            "first", "second", {"name": "Hello World"}
                        ]
                    ]
                }
              }

result = _.get(nested_list, "foo.bar[1][2].name")  # result == "Hello World"

Chunks example::

import understreck as _

to_chunk = ["one", "two", "three", "four", "five"]
result = _.chunks.split(to_chunk, 2)  # result == [["one", "two", "three"], ["four", "five"]]

Filter example::

import understreck as _

users = [
        {"user": "barney", "age": 36, "active": True},
        {"user": "fred", "age": 40, "active": False},
    ]

# Using a lambda function
result = _.filter(users, lambda x: not x.get("active"))  # result == [{"user": "fred", "age": 40, "active": False}]

# Using partial dictionary
result = _.filter(users, {"age": 36, "active": True})  # result == [{"user": "barney", "age": 36, "active": True}]

# Using a list with a property name and value
result = _.filter(users, ["active", False])  # result == [{"user": "fred", "age": 40, "active": False}]

# Using a list with a property name. The value must be truthy.
result = _.filter(users, ["active"])  # result == [{"user": "barney", "age": 36, "active": True}]

Strip indents example::

import understreck as _

def some_function():
    to_strip = """This is a
    multi-line
    string"""

    _.strip(to_strip)  # "This is a\nmulti-line\nstring"

Credits

I have to credit the Lodash_ project for inspiration!

This package was created with Cookiecutter_ and the audreyr/cookiecutter-pypackage_ project template.

.. _Lodash: https://lodash.com .. _Cookiecutter: https://github.com/audreyr/cookiecutter .. _audreyr/cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage

======= History

Unreleased

1.0.0 (2020-03-03)

  • Get elements from nested lists

0.5.1 (2019-11-09)

  • Updates dev dependencies

0.5.0 (2019-05-03)

  • Updates dev dependencies
  • Moves to the new repository

0.4.0 (2019-05-03)

  • Adds Understreck.strip that strips indents

0.3.0 (2019-05-03)

  • Adds Understreck.filter with inspired by https://lodash.com/docs/4.17.11#filter
  • Updated the travis button URL
  • Replaced nested_get with get in the README. (nested_get still works)
  • Black formatting

0.2.1 (2018-12-10)

  • Add Understreck.chunks

0.2.0 (2018-11-12)

  • Add get as an alias for nested get

0.1.1 (2018-11-02)

  • Update the readme

0.1.0 (2018-11-02)

  • First release on PyPI.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc