Skip to main content

Functional helpers for Python

Project description

# UNDERPY

[![Build Status](https://travis-ci.org/ramonski/underpy.png)](https://travis-ci.org/ramonski/underpy)

```
_
_ _ _ __ __| | ___ _ __ _ __ _ _
| | | | '_ \ / _` |/ _ \ '__| '_ \| | | |
| |_| | | | | (_| | __/ | | |_) | |_| |
\__,_|_| |_|\__,_|\___|_| | .__/ \__, |
|_| |___/

functional helpers for python
```


## Functions

``` python
alias(col, mapping)
Returns a collection of dictionaries with the keys renamed according to
the mapping

>>> libraries = [{"isbn": 1, "ed": 1}, {"isbn": 2, "ed": 2}]
>>> alias(libraries, {"ed": "edition"})
[{'edition': 1, 'isbn': 1}, {'edition': 2, 'isbn': 2}]

>>> alias({"a": 1}, {"a": "b"})
[{'b': 1}]

convert(value, converter)
Converts a value with a given converter function.

>>> convert("1", to_int)
1
>>> convert("0", to_int)
0
>>> convert("a", to_int)

fail(error)
Raises a RuntimeError with the given error Message

>>> fail("This failed badly")
Traceback (most recent call last):
...
RuntimeError: This failed badly

falsy(thing)
checks if a value is False or None

>>> falsy(0)
False
>>> falsy({})
False
>>> falsy([])
False
>>> falsy(None)
True
>>> falsy(False)
True

first(lst, n=None)
get the first element of a list

>>> lst = [1, 2, 3, 4, 5]
>>> first(lst)
1
>>> first(lst, 3)
[1, 2, 3]

is_dict(thing)
checks if an object is a dictionary type

>>> is_dict({})
True
>>> is_dict(dict())
True
>>> is_dict("{}")
False
>>> is_dict([])
False

is_digit(thing)
checks if an object is a digit

>>> is_digit(1)
True
>>> is_digit("1")
True
>>> is_digit("a")
False
>>> is_digit([])
False

is_list(thing)
checks if an object is a list type

>>> is_list([])
True
>>> is_list(list())
True
>>> is_list("[]")
False
>>> is_list({})
False

is_string(thing)
checks if an object is a string/unicode type

>>> is_string("")
True
>>> is_string(u"")
True
>>> is_string(str())
True
>>> is_string(unicode())
True
>>> is_string(1)
False

is_tuple(thing)
checks if an object is a tuple type

>>> is_tuple(())
True
>>> is_tuple(tuple())
True
>>> is_tuple("()")
False
>>> is_tuple([])
False

omit(dct, *keys)
Returns a copy of the dictionary filtered to omit the blacklisted keys
(or list of keys)

>>> omit({"name": "moe", "age": 50, "userid": "moe1"}, "userid", "age")
{'name': 'moe'}

pick(dct, *keys)
Returns a copy of the dictionary filtered to only have values for the
whitelisted keys (or list of valid keys)

>>> pick({"name": "moe", "age": 50, "userid": "moe1"}, "name", "age")
{'age': 50, 'name': 'moe'}

pluck(col, key, default=None)
Extracts a list of values from a collection of dictionaries

>>> stooges = [{"name": "moe", "age": 40},
... {"name": "larry", "age": 50},
... {"name": "curly", "age": 60}]
>>> pluck(stooges, "name")
['moe', 'larry', 'curly']

It only works with collections

>>> curly = stooges.pop()
>>> pluck(curly, "age")
Traceback (most recent call last):
...
RuntimeError: First argument must be a list or tuple

rename(dct, mapping)
Rename the keys of a dictionary with the given mapping

>>> rename({"a": 1, "BBB": 2}, {"a": "AAA"})
{'AAA': 1, 'BBB': 2}

to_int(thing)
coverts an object to int

>>> to_int("0")
0
>>> to_int(1)
1
>>> to_int("1")
1
>>> to_int("a")

to_list(thing)
converts an object to a list

>>> to_list(1)
[1]

>>> to_list([1,2,3])
[1, 2, 3]

>>> to_list(("a", "b", "c"))
['a', 'b', 'c']

>>> to_list(dict(a=1, b=2))
[{'a': 1, 'b': 2}]

to_string(thing)
coverts an object to string

>>> to_string(1)
'1'
>>> to_string([])
'[]'
>>> to_string(u"a")
'a'

to_iso_date(thing):
converts an object to a iso date string

>>> to_iso_date("")
''
>>> dt = datetime.date.fromtimestamp(1387452665)
>>> to_iso_date(dt)
'2013-12-19'

truthy(thing)
checks if a value is True or not None

>>> truthy(0)
True
>>> truthy({})
True
>>> truthy([])
True
>>> truthy(None)
False
>>> truthy(False)
False
```


## Running the tests

```
python setup.py nosetests --with-doctest
```


## License

MIT

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

underpy-0.1.2.tar.gz (130.7 kB view details)

Uploaded Source

File details

Details for the file underpy-0.1.2.tar.gz.

File metadata

  • Download URL: underpy-0.1.2.tar.gz
  • Upload date:
  • Size: 130.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for underpy-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b4d460eabf3f8a6ddfc378eca47a03a98f3be2eb18a105adb3b1b1cecb29b34f
MD5 cf3fe276b1984b1838584344f8c73b2b
BLAKE2b-256 5c4a23e464fae0ba7134ae4a613e59647697e7bb71af7da693b3999fa71d4379

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