1 |
|
# -*- coding: utf-8 -*- |
2 |
|
|
3 |
|
# Copyright 2020 Whitestack, LLC |
4 |
|
# ************************************************************* |
5 |
|
# |
6 |
|
# This file is part of OSM NBI module |
7 |
|
# All Rights Reserved to Whitestack, LLC |
8 |
|
# |
9 |
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may |
10 |
|
# not use this file except in compliance with the License. You may obtain |
11 |
|
# a copy of the License at |
12 |
|
# |
13 |
|
# http://www.apache.org/licenses/LICENSE-2.0 |
14 |
|
# |
15 |
|
# Unless required by applicable law or agreed to in writing, software |
16 |
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
17 |
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
18 |
|
# License for the specific language governing permissions and limitations |
19 |
|
# under the License. |
20 |
|
# |
21 |
|
# For those usages not covered by the Apache License, Version 2.0 please |
22 |
|
# contact: fbravo@whitestack.com or agarcia@whitestack.com |
23 |
|
## |
24 |
|
|
25 |
|
|
26 |
1 |
def find_in_list(the_list, condition_lambda): |
27 |
1 |
for item in the_list: |
28 |
1 |
if condition_lambda(item): |
29 |
1 |
return item |
30 |
|
else: |
31 |
1 |
return None |
32 |
|
|
33 |
|
|
34 |
1 |
def filter_in_list(the_list, condition_lambda): |
35 |
1 |
ret = [] |
36 |
1 |
for item in the_list: |
37 |
1 |
if condition_lambda(item): |
38 |
1 |
ret.append(item) |
39 |
1 |
return ret |
40 |
|
|
41 |
|
|
42 |
1 |
def find_index_in_list(the_list, condition_lambda): |
43 |
0 |
for index, item in enumerate(the_list): |
44 |
0 |
if condition_lambda(item): |
45 |
0 |
return index |
46 |
|
else: |
47 |
0 |
return -1 |
48 |
|
|
49 |
|
|
50 |
1 |
def deep_update_dict(data, updated_data): |
51 |
1 |
if isinstance(data, list): |
52 |
1 |
processed_items_data = [] |
53 |
1 |
for index, item in enumerate(data): |
54 |
1 |
processed_items_data.append(deep_update_dict(item, updated_data[index])) |
55 |
1 |
return processed_items_data |
56 |
|
|
57 |
1 |
if isinstance(data, dict): |
58 |
1 |
for key in data.keys(): |
59 |
1 |
if key in updated_data: |
60 |
1 |
if not isinstance(data[key], dict) and not isinstance(data[key], list): |
61 |
1 |
data[key] = updated_data[key] |
62 |
|
else: |
63 |
1 |
data[key] = deep_update_dict(data[key], updated_data[key]) |
64 |
1 |
return data |
65 |
|
|
66 |
1 |
return data |