Skip to content

Commit bfe605e

Browse files
committed
chore: update to python3
Signed-off-by: Seena Fallah <[email protected]>
1 parent 37f758d commit bfe605e

File tree

2 files changed

+30
-30
lines changed

2 files changed

+30
-30
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ to maintain precision when dealing with tiny numbers, and prints out the results
4242
for a given set of assumptions:
4343

4444
```
45-
$ python durability.py
45+
$ python3 durability.py
4646
usage: durability.py [-h]
4747
data_shards parity_shards annual_shard_failure_rate
4848
shard_replacement_days
4949
durability.py: error: too few arguments
50-
$ python durability.py 4 2 0.10 1python durability.py 17 3 0.00405 6.5
50+
$ python3 durability.py 17 3 0.00405 6.5
5151
5252
#
5353
# total shards: 20

durability.py

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python2
1+
#!/usr/bin/env python3
22
######################################################################
33
#
44
# File: durability.py
@@ -82,12 +82,12 @@ def pad(self, s, width):
8282

8383

8484
def print_markdown_table(data, column_names):
85-
print
86-
print ' | '.join(column_names)
87-
print ' | '.join(['---'] * len(column_names))
85+
print()
86+
print(' | '.join(column_names))
87+
print(' | '.join(['---'] * len(column_names)))
8888
for item in data:
89-
print ' | '.join(item[cn] for cn in column_names)
90-
print
89+
print(' | '.join(item[cn] for cn in column_names))
90+
print()
9191

9292

9393
def factorial(n):
@@ -108,8 +108,8 @@ def choose(n, r):
108108
assert n >= 0
109109
assert 0 <= r <= n
110110

111-
c = 1L
112-
for num, denom in zip(xrange(n, n-r, -1), xrange(1, r+1, 1)):
111+
c = 1
112+
for num, denom in zip(range(n, n-r, -1), range(1, r+1, 1)):
113113
c = (c * num) // denom
114114
return c
115115

@@ -175,7 +175,7 @@ def probability_of_failure_in_any_period(p, n):
175175
n_int = int(n)
176176
result = 0.0
177177
sign = 1
178-
for i in xrange(1, n_int + 1):
178+
for i in range(1, n_int + 1):
179179
p_exp_i = p ** i
180180
if p_exp_i != 0:
181181
result += sign * choose(n_int, i) * (p ** i)
@@ -270,18 +270,18 @@ def do_scenario(total_shards, min_shards, annual_shard_failure_rate, shard_repla
270270
num_periods = 365.0 / shard_replacement_days
271271
failure_rate_per_period = annual_shard_failure_rate / num_periods
272272

273-
print
274-
print '#'
275-
print '# total shards:', total_shards
276-
print '# replacement period (days): %6.4f' % (shard_replacement_days)
277-
print '# annual shard failure rate: %6.4f' % (annual_shard_failure_rate)
278-
print '#'
279-
print
273+
print()
274+
print('#')
275+
print('# total shards:', total_shards)
276+
print('# replacement period (days): %6.4f' % (shard_replacement_days))
277+
print('# annual shard failure rate: %6.4f' % (annual_shard_failure_rate))
278+
print('#')
279+
print()
280280

281281
failure_probability_per_period = 1.0 - math.exp(-failure_rate_per_period)
282282
data = []
283283
period_cumulative_prob = 0.0
284-
for failed_shards in xrange(total_shards, -1, -1):
284+
for failed_shards in range(total_shards, -1, -1):
285285
period_failure_prob = binomial_probability(failed_shards, total_shards, failure_probability_per_period)
286286
period_cumulative_prob += period_failure_prob
287287
annual_loss_prob = probability_of_failure_in_any_period(period_cumulative_prob, num_periods)
@@ -299,14 +299,14 @@ def do_scenario(total_shards, min_shards, annual_shard_failure_rate, shard_repla
299299
'nines' : nines
300300
})
301301

302-
print Table(data, ['failure_threshold',
302+
print(Table(data, ['failure_threshold',
303303
'individual_prob',
304304
'cumulative_prob',
305305
'annual_loss_rate',
306306
'annual_odds',
307307
'durability',
308308
'nines'
309-
])
309+
]))
310310
print
311311

312312
return dict(
@@ -323,18 +323,18 @@ def example():
323323
p = 2.0
324324
data = [
325325
{ 'k': str(k), 'p': '%6.4f' % (math.exp(-p) * p**k / factorial(k),) }
326-
for k in xrange(7)
326+
for k in range(7)
327327
]
328328
print_markdown_table(data, ['k', 'p'])
329329

330-
print 'Probability of n Failing'
330+
print('Probability of n Failing')
331331
annual_rate = 0.25
332332
p_one_failing = probability_of_failure_for_failure_rate(annual_rate)
333-
print 'probability of one failing: %6.4f' % p_one_failing
334-
print 'probability of none failing: %6.4f' % (1 - p_one_failing)
335-
print 'probability of three not failing: %6.4f' % (1 - p_one_failing) ** 3
336-
print 'probability of two or more failing: %6.4f' % (binomial_probability(2, 3, p_one_failing) + binomial_probability(3, 3, p_one_failing))
337-
print
333+
print('probability of one failing: %6.4f' % p_one_failing)
334+
print('probability of none failing: %6.4f' % (1 - p_one_failing))
335+
print('probability of three not failing: %6.4f' % (1 - p_one_failing) ** 3)
336+
print('probability of two or more failing: %6.4f' % (binomial_probability(2, 3, p_one_failing) + binomial_probability(3, 3, p_one_failing)))
337+
print()
338338
probs = {'ok': (1 - p_one_failing), 'FAIL': p_one_failing}
339339
data = []
340340
total_prob = 0.0
@@ -352,12 +352,12 @@ def example():
352352
})
353353
total_prob += probs[a] * probs[b] * probs[c]
354354
print_markdown_table(data, ['A', 'A prob', 'B', 'B prob', 'C', 'C prob', 'Probability'])
355-
print 'sum of probabilities: %6.4f' % total_prob
355+
print('sum of probabilities: %6.4f' % total_prob)
356356
print
357357

358358
data = [
359359
{'Number of Failures': str(k), 'Probability': '%6.4f' % binomial_probability(k, 3, p_one_failing)}
360-
for k in xrange(4)
360+
for k in range(4)
361361
]
362362
print_markdown_table(data, ['Number of Failures', 'Probability'])
363363

0 commit comments

Comments
 (0)