Skip to content

Commit

Permalink
Merge e480f1f into b384a5b
Browse files Browse the repository at this point in the history
  • Loading branch information
stolarczyk committed Oct 15, 2019
2 parents b384a5b + e480f1f commit 4551c65
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 4 deletions.
4 changes: 3 additions & 1 deletion MANIFEST.in
@@ -1,3 +1,5 @@
include LICENSE.txt
include requirements/*
include README.md

recursive-include docs *.md
recursive-include tests *.py
5 changes: 5 additions & 0 deletions docs/changelog.md
@@ -1,5 +1,10 @@
# Changelog

## [0.5.0] - 2019-10-XX
### Added
- add `asciify_dict` function


## [0.4.9] - 2019-09-17
### Added
- add `--version` argument in `VersionInHelpParser`
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -41,7 +41,7 @@ def read_reqs(reqs_name):
keywords="utility, utilities, tools",
url="https://github.com/pepkit/{}/".format(PKG),
author=u"Vince Reuter",
license="BSD2",
license="BSD-2-Clause",
scripts=None,
include_package_data=True,
test_suite="tests",
Expand Down
9 changes: 9 additions & 0 deletions tests/test_collection.py
Expand Up @@ -205,3 +205,12 @@ def test_powerset_illegal_input(arbwrap, kwargs, exp_err, pool):
format(powerset.__name__, ", ".join(invalid_kwargs))
with pytest.raises(exp_err):
powerset(arbwrap(pool), **kwargs)


@pytest.mark.parametrize("dict", [{"a": 1}, {"b": None}])
def test_asciifying_dicts(dict):
if sys.version_info[0] <= 3:
with pytest.warns(UserWarning):
assert dict == asciify_dict(dict)
else:
asciify_dict(dict)
2 changes: 1 addition & 1 deletion ubiquerg/_version.py
@@ -1 +1 @@
__version__ = "0.4.9"
__version__ = "0.5.0"
36 changes: 35 additions & 1 deletion ubiquerg/collection.py
Expand Up @@ -2,6 +2,7 @@

import itertools
import sys
from warnings import warn
if sys.version_info < (3, 3):
from collections import Iterable
else:
Expand All @@ -11,7 +12,7 @@
__email__ = "vreuter@virginia.edu"


__all__ = ["is_collection_like", "powerset"]
__all__ = ["is_collection_like", "powerset", "asciify_dict"]


def is_collection_like(c):
Expand Down Expand Up @@ -60,3 +61,36 @@ def powerset(items, min_items=None, include_full_pop=True, nonempty=False):
return list(itertools.chain.from_iterable(
itertools.combinations(items, k)
for k in range(min_items, max_items)))


def asciify_dict(data):
""" https://gist.github.com/chris-hailstorm/4989643 """

def _asciify_list(lst):
ret = []
for item in lst:
if isinstance(item, unicode):
item = item.encode('utf-8')
elif isinstance(item, list):
item = _asciify_list(item)
elif isinstance(item, dict):
item = asciify_dict(item)
ret.append(item)
return ret

if sys.version_info[0] <= 3:
warn("This operation is supported only in Python2", UserWarning)
return data

ret = {}
for key, value in data.iteritems():
if isinstance(key, unicode):
key = key.encode('utf-8')
if isinstance(value, unicode):
value = value.encode('utf-8')
elif isinstance(value, list):
value = _asciify_list(value)
elif isinstance(value, dict):
value = asciify_dict(value)
ret[key] = value
return ret

0 comments on commit 4551c65

Please sign in to comment.