MCPcopy Create free account
hub / github.com/Persper/code-analytics / _inverse_diff_result

Function _inverse_diff_result

persper/graphs/call_commit_graph.py:14–53  ·  view source on GitHub ↗

>>> adds = [[11, 1], [32, 1]] >>> dels = [[11, 11], [31, 32]] >>> _inverse_diff_result(adds, dels) ([[10, 1], [30, 2]], [[11, 11], [31, 31]])

(adds, dels)

Source from the content-addressed store, hash-verified

12
13
14def _inverse_diff_result(adds, dels):
15 """
16 >>> adds = [[11, 1], [32, 1]]
17 >>> dels = [[11, 11], [31, 32]]
18 >>> _inverse_diff_result(adds, dels)
19 ([[10, 1], [30, 2]], [[11, 11], [31, 31]])
20 """
21 diff = 0
22 add_ptr, del_ptr = 0, 0
23 num_adds, num_dels = len(adds), len(dels)
24 inv_adds, inv_dels = [], []
25
26 def _handle_a(a):
27 nonlocal diff
28 inv_dels.append([diff + a[0] + 1, diff + a[0] + a[1]])
29 diff += a[1]
30
31 def _handle_d(d):
32 nonlocal diff
33 inv_adds.append([diff + d[0] - 1, d[1] - d[0] + 1])
34 diff -= (d[1] - d[0] + 1)
35
36 while add_ptr < num_adds or del_ptr < num_dels:
37 if add_ptr < num_adds and del_ptr < num_dels:
38 if adds[add_ptr][0] < dels[del_ptr][0]:
39 _handle_a(adds[add_ptr])
40 add_ptr += 1
41 else:
42 _handle_d(dels[del_ptr])
43 del_ptr += 1
44 elif add_ptr < num_adds and del_ptr >= num_dels:
45 # we have finished dels
46 _handle_a(adds[add_ptr])
47 add_ptr += 1
48 else:
49 # we have finished adds
50 _handle_d(dels[del_ptr])
51 del_ptr += 1
52
53 return inv_adds, inv_dels
54
55
56def _normalize_shares(email_to_share):

Callers 2

test_inverse_diffFunction · 0.90
_second_phaseMethod · 0.85

Calls 2

_handle_aFunction · 0.70
_handle_dFunction · 0.70

Tested by 1

test_inverse_diffFunction · 0.72