Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Metagenomics
metagenedb
Commits
da92c961
Commit
da92c961
authored
Jul 16, 2019
by
Kenzo-Hugo Hillion
♻
Browse files
add option to keep original source dict
parent
fe154842
Changes
2
Hide whitespace changes
Inline
Side-by-side
backend/metagenedb/utils/dict_operations.py
View file @
da92c961
...
...
@@ -4,7 +4,7 @@ logging.basicConfig(level=logging.INFO)
_LOGGER
=
logging
.
getLogger
(
__name__
)
def
extract_dict
(
source_dict
,
keys
):
def
extract_dict
(
source_dict
,
keys
,
keep_original_source
=
False
):
"""
Extract a dict from a given dict based on a given set of keys
"""
...
...
@@ -12,7 +12,8 @@ def extract_dict(source_dict, keys):
for
key
in
keys
:
try
:
extracted_dict
[
key
]
=
source_dict
[
key
]
del
source_dict
[
key
]
if
not
keep_original_source
:
del
source_dict
[
key
]
except
KeyError
:
_LOGGER
.
warning
(
f
"[
{
key
}
] is not found in the source dict, extraction skipped for this key."
)
return
extracted_dict
backend/metagenedb/utils/test_dict_operations.py
View file @
da92c961
...
...
@@ -22,3 +22,12 @@ class TestExtractDict(TestCase):
test_extract_dict
=
extract_dict
(
source_dict
,
extract_keys
)
self
.
assertDictEqual
(
source_dict
,
expected_source_dict
)
self
.
assertDictEqual
(
test_extract_dict
,
expected_extract_dict
)
def
test_extract_dict_original_source
(
self
):
source_dict
=
{
'a'
:
1
,
'b'
:
2
}
extract_keys
=
[
'b'
]
expected_source_dict
=
{
'a'
:
1
,
'b'
:
2
}
expected_extract_dict
=
{
'b'
:
2
}
test_extract_dict
=
extract_dict
(
source_dict
,
extract_keys
,
keep_original_source
=
True
)
self
.
assertDictEqual
(
source_dict
,
expected_source_dict
)
self
.
assertDictEqual
(
test_extract_dict
,
expected_extract_dict
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment