mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-05-04 18:12:59 +00:00
Merge pull request #1054 from tahoe-lafs/3699.flakes-on-py3
Run flake8 on Python 3 Fixes ticket:3699
This commit is contained in:
commit
16dd3e96f0
@ -9,6 +9,8 @@ WebAPI *should* do in every situation. It's not clear the latter
|
|||||||
exists anywhere, however.
|
exists anywhere, however.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from past.builtins import unicode
|
||||||
|
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
import urllib2
|
import urllib2
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
from past.builtins import unicode
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import json
|
import json
|
||||||
|
@ -52,6 +52,8 @@ system where Tahoe is installed, or in a source tree with setup.py like this:
|
|||||||
setup.py run_with_pythonpath -p -c 'misc/make-canary-files.py ARGS..'
|
setup.py run_with_pythonpath -p -c 'misc/make-canary-files.py ARGS..'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from past.builtins import cmp
|
||||||
|
|
||||||
import os, hashlib
|
import os, hashlib
|
||||||
from twisted.python import usage
|
from twisted.python import usage
|
||||||
from allmydata.immutable import upload
|
from allmydata.immutable import upload
|
||||||
|
@ -18,7 +18,7 @@ def factorial(n):
|
|||||||
factorial(n) with n<0 is -factorial(abs(n))
|
factorial(n) with n<0 is -factorial(abs(n))
|
||||||
"""
|
"""
|
||||||
result = 1
|
result = 1
|
||||||
for i in xrange(1, abs(n)+1):
|
for i in range(1, abs(n)+1):
|
||||||
result *= i
|
result *= i
|
||||||
assert n >= 0
|
assert n >= 0
|
||||||
return result
|
return result
|
||||||
@ -30,7 +30,7 @@ def binomial(n, k):
|
|||||||
# calculate n!/k! as one product, avoiding factors that
|
# calculate n!/k! as one product, avoiding factors that
|
||||||
# just get canceled
|
# just get canceled
|
||||||
P = k+1
|
P = k+1
|
||||||
for i in xrange(k+2, n+1):
|
for i in range(k+2, n+1):
|
||||||
P *= i
|
P *= i
|
||||||
# if you are paranoid:
|
# if you are paranoid:
|
||||||
# C, rem = divmod(P, factorial(n-k))
|
# C, rem = divmod(P, factorial(n-k))
|
||||||
|
@ -79,7 +79,7 @@ def make_candidate(B, K, K1, K2, q, T, T_min, L_hash, lg_N, sig_bytes, c_sign, c
|
|||||||
|
|
||||||
# Winternitz with B < 4 is never optimal. For example, going from B=4 to B=2 halves the
|
# Winternitz with B < 4 is never optimal. For example, going from B=4 to B=2 halves the
|
||||||
# chain depth, but that is cancelled out by doubling (roughly) the number of digits.
|
# chain depth, but that is cancelled out by doubling (roughly) the number of digits.
|
||||||
range_B = xrange(4, 33)
|
range_B = range(4, 33)
|
||||||
|
|
||||||
M = pow(2, lg_M)
|
M = pow(2, lg_M)
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ def calculate(K, K1, K2, q_max, L_hash, trees):
|
|||||||
T_min = ceil_div(lg_M - lg_K1, lg_K)
|
T_min = ceil_div(lg_M - lg_K1, lg_K)
|
||||||
|
|
||||||
last_q = None
|
last_q = None
|
||||||
for T in xrange(T_min, T_min+21):
|
for T in range(T_min, T_min+21):
|
||||||
# lg(total number of leaf private keys)
|
# lg(total number of leaf private keys)
|
||||||
lg_S = lg_K1 + lg_K*T
|
lg_S = lg_K1 + lg_K*T
|
||||||
lg_N = lg_S + lg_K2
|
lg_N = lg_S + lg_K2
|
||||||
@ -137,14 +137,14 @@ def calculate(K, K1, K2, q_max, L_hash, trees):
|
|||||||
|
|
||||||
# We approximate lg(M-x) as lg(M)
|
# We approximate lg(M-x) as lg(M)
|
||||||
lg_px_step = lg_M + lg_p - lg_1_p
|
lg_px_step = lg_M + lg_p - lg_1_p
|
||||||
for x in xrange(1, j):
|
for x in range(1, j):
|
||||||
lg_px[x] = lg_px[x-1] - lg(x) + lg_px_step
|
lg_px[x] = lg_px[x-1] - lg(x) + lg_px_step
|
||||||
|
|
||||||
q = None
|
q = None
|
||||||
# Find the minimum acceptable value of q.
|
# Find the minimum acceptable value of q.
|
||||||
for q_cand in xrange(1, q_max+1):
|
for q_cand in range(1, q_max+1):
|
||||||
lg_q = lg(q_cand)
|
lg_q = lg(q_cand)
|
||||||
lg_pforge = [lg_px[x] + (lg_q*x - lg_K2)*q_cand for x in xrange(1, j)]
|
lg_pforge = [lg_px[x] + (lg_q*x - lg_K2)*q_cand for x in range(1, j)]
|
||||||
if max(lg_pforge) < -L_hash + lg(j) and lg_px[j-1] + 1.0 < -L_hash:
|
if max(lg_pforge) < -L_hash + lg(j) and lg_px[j-1] + 1.0 < -L_hash:
|
||||||
#print("K = %d, K1 = %d, K2 = %d, L_hash = %d, lg_K2 = %.3f, q = %d, lg_pforge_1 = %.3f, lg_pforge_2 = %.3f, lg_pforge_3 = %.3f"
|
#print("K = %d, K1 = %d, K2 = %d, L_hash = %d, lg_K2 = %.3f, q = %d, lg_pforge_1 = %.3f, lg_pforge_2 = %.3f, lg_pforge_3 = %.3f"
|
||||||
# % (K, K1, K2, L_hash, lg_K2, q, lg_pforge_1, lg_pforge_2, lg_pforge_3))
|
# % (K, K1, K2, L_hash, lg_K2, q, lg_pforge_1, lg_pforge_2, lg_pforge_3))
|
||||||
@ -246,13 +246,13 @@ def search():
|
|||||||
K_max = 50
|
K_max = 50
|
||||||
c2 = compressions(2*L_hash)
|
c2 = compressions(2*L_hash)
|
||||||
c3 = compressions(3*L_hash)
|
c3 = compressions(3*L_hash)
|
||||||
for dau in xrange(0, 10):
|
for dau in range(0, 10):
|
||||||
a = pow(2, dau)
|
a = pow(2, dau)
|
||||||
for tri in xrange(0, ceil_log(30-dau, 3)):
|
for tri in range(0, ceil_log(30-dau, 3)):
|
||||||
x = int(a*pow(3, tri))
|
x = int(a*pow(3, tri))
|
||||||
h = dau + 2*tri
|
h = dau + 2*tri
|
||||||
c_x = int(sum_powers(2, dau)*c2 + a*sum_powers(3, tri)*c3)
|
c_x = int(sum_powers(2, dau)*c2 + a*sum_powers(3, tri)*c3)
|
||||||
for y in xrange(1, x+1):
|
for y in range(1, x+1):
|
||||||
if tri > 0:
|
if tri > 0:
|
||||||
# If the bottom level has arity 3, then for every 2 nodes by which the tree is
|
# If the bottom level has arity 3, then for every 2 nodes by which the tree is
|
||||||
# imperfect, we can save c3 compressions by pruning 3 leaves back to their parent.
|
# imperfect, we can save c3 compressions by pruning 3 leaves back to their parent.
|
||||||
@ -267,16 +267,16 @@ def search():
|
|||||||
if y not in trees or (h, c_y, (dau, tri)) < trees[y]:
|
if y not in trees or (h, c_y, (dau, tri)) < trees[y]:
|
||||||
trees[y] = (h, c_y, (dau, tri))
|
trees[y] = (h, c_y, (dau, tri))
|
||||||
|
|
||||||
#for x in xrange(1, K_max+1):
|
#for x in range(1, K_max+1):
|
||||||
# print(x, trees[x])
|
# print(x, trees[x])
|
||||||
|
|
||||||
candidates = []
|
candidates = []
|
||||||
progress = 0
|
progress = 0
|
||||||
fuzz = 0
|
fuzz = 0
|
||||||
complete = (K_max-1)*(2200-200)/100
|
complete = (K_max-1)*(2200-200)/100
|
||||||
for K in xrange(2, K_max+1):
|
for K in range(2, K_max+1):
|
||||||
for K2 in xrange(200, 2200, 100):
|
for K2 in range(200, 2200, 100):
|
||||||
for K1 in xrange(max(2, K-fuzz), min(K_max, K+fuzz)+1):
|
for K1 in range(max(2, K-fuzz), min(K_max, K+fuzz)+1):
|
||||||
candidates += calculate(K, K1, K2, q_max, L_hash, trees)
|
candidates += calculate(K, K1, K2, q_max, L_hash, trees)
|
||||||
progress += 1
|
progress += 1
|
||||||
print("searching: %3d %% \r" % (100.0 * progress / complete,), end=' ', file=stderr)
|
print("searching: %3d %% \r" % (100.0 * progress / complete,), end=' ', file=stderr)
|
||||||
@ -285,7 +285,7 @@ def search():
|
|||||||
step = 2.0
|
step = 2.0
|
||||||
bins = {}
|
bins = {}
|
||||||
limit = floor_div(limit_cost, step)
|
limit = floor_div(limit_cost, step)
|
||||||
for bin in xrange(0, limit+2):
|
for bin in range(0, limit+2):
|
||||||
bins[bin] = []
|
bins[bin] = []
|
||||||
|
|
||||||
for c in candidates:
|
for c in candidates:
|
||||||
@ -296,7 +296,7 @@ def search():
|
|||||||
|
|
||||||
# For each in a range of signing times, find the best candidate.
|
# For each in a range of signing times, find the best candidate.
|
||||||
best = []
|
best = []
|
||||||
for bin in xrange(0, limit):
|
for bin in range(0, limit):
|
||||||
candidates = bins[bin] + bins[bin+1] + bins[bin+2]
|
candidates = bins[bin] + bins[bin+1] + bins[bin+2]
|
||||||
if len(candidates) > 0:
|
if len(candidates) > 0:
|
||||||
best += [min(candidates, key=lambda c: c['sig_bytes'])]
|
best += [min(candidates, key=lambda c: c['sig_bytes'])]
|
||||||
|
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
|
from past.builtins import cmp
|
||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
||||||
SERVER_CAPACITY = 10**12
|
SERVER_CAPACITY = 10**12
|
||||||
|
@ -2,6 +2,11 @@
|
|||||||
|
|
||||||
from __future__ import print_function
|
from __future__ import print_function
|
||||||
|
|
||||||
|
from future.utils import PY2
|
||||||
|
if PY2:
|
||||||
|
from future.builtins import input
|
||||||
|
|
||||||
|
|
||||||
import random, math, re
|
import random, math, re
|
||||||
from twisted.python import usage
|
from twisted.python import usage
|
||||||
|
|
||||||
@ -205,7 +210,7 @@ def graph():
|
|||||||
series["alacrity"][file_size] = s.bytes_until_some_data
|
series["alacrity"][file_size] = s.bytes_until_some_data
|
||||||
g.plot([ (fs, series["overhead"][fs])
|
g.plot([ (fs, series["overhead"][fs])
|
||||||
for fs in sizes ])
|
for fs in sizes ])
|
||||||
raw_input("press return")
|
input("press return")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
0
newsfragments/3699.minor
Normal file
0
newsfragments/3699.minor
Normal file
@ -7,6 +7,9 @@ from future.utils import PY3
|
|||||||
if PY3:
|
if PY3:
|
||||||
raise RuntimeError("Just use subprocess.Popen")
|
raise RuntimeError("Just use subprocess.Popen")
|
||||||
|
|
||||||
|
# This is necessary to pacify flake8 on Python 3, while we're still supporting
|
||||||
|
# Python 2.
|
||||||
|
from past.builtins import unicode
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
@ -660,7 +660,6 @@ class Grid(GridTestMixin, WebErrorMixin, ShouldFailMixin, testutil.ReallyEqualMi
|
|||||||
if line]
|
if line]
|
||||||
except ValueError:
|
except ValueError:
|
||||||
print("response is:", res)
|
print("response is:", res)
|
||||||
print("undecodeable line was '%s'" % line)
|
|
||||||
raise
|
raise
|
||||||
self.failUnlessReallyEqual(len(units), 5+1)
|
self.failUnlessReallyEqual(len(units), 5+1)
|
||||||
# should be parent-first
|
# should be parent-first
|
||||||
|
@ -16,7 +16,7 @@ if PY2:
|
|||||||
# Don't import bytes or str, to prevent future's newbytes leaking and
|
# Don't import bytes or str, to prevent future's newbytes leaking and
|
||||||
# breaking code that only expects normal bytes.
|
# breaking code that only expects normal bytes.
|
||||||
from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, dict, list, object, range, max, min # noqa: F401
|
from future.builtins import filter, map, zip, ascii, chr, hex, input, next, oct, open, pow, round, super, dict, list, object, range, max, min # noqa: F401
|
||||||
str = unicode
|
from past.builtins import unicode as str
|
||||||
|
|
||||||
from past.builtins import unicode, long
|
from past.builtins import unicode, long
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ def get_registry_setting(key, name, _topkey=None):
|
|||||||
regkey = winreg.OpenKey(topkey, key)
|
regkey = winreg.OpenKey(topkey, key)
|
||||||
|
|
||||||
sublen, vallen, timestamp = winreg.QueryInfoKey(regkey)
|
sublen, vallen, timestamp = winreg.QueryInfoKey(regkey)
|
||||||
for validx in xrange(vallen):
|
for validx in range(vallen):
|
||||||
keyname, value, keytype = winreg.EnumValue(regkey, validx)
|
keyname, value, keytype = winreg.EnumValue(regkey, validx)
|
||||||
if keyname == name and keytype == winreg.REG_SZ:
|
if keyname == name and keytype == winreg.REG_SZ:
|
||||||
return value
|
return value
|
||||||
|
14
tox.ini
14
tox.ini
@ -10,14 +10,14 @@ python =
|
|||||||
3.6: py36-coverage
|
3.6: py36-coverage
|
||||||
3.7: py37-coverage
|
3.7: py37-coverage
|
||||||
3.8: py38-coverage
|
3.8: py38-coverage
|
||||||
3.9: py39-coverage,typechecks
|
3.9: py39-coverage,typechecks,codechecks3
|
||||||
pypy-3.7: pypy3
|
pypy-3.7: pypy3
|
||||||
|
|
||||||
[pytest]
|
[pytest]
|
||||||
twisted = 1
|
twisted = 1
|
||||||
|
|
||||||
[tox]
|
[tox]
|
||||||
envlist = typechecks,codechecks,py{27,36,37,38,39}-{coverage},pypy27,pypy3
|
envlist = typechecks,codechecks,codechecks3,py{27,36,37,38,39}-{coverage},pypy27,pypy3
|
||||||
minversion = 2.4
|
minversion = 2.4
|
||||||
|
|
||||||
[testenv]
|
[testenv]
|
||||||
@ -128,6 +128,16 @@ commands =
|
|||||||
python -m towncrier.check --config towncrier.pyproject.toml
|
python -m towncrier.check --config towncrier.pyproject.toml
|
||||||
|
|
||||||
|
|
||||||
|
[testenv:codechecks3]
|
||||||
|
basepython = python3
|
||||||
|
setenv =
|
||||||
|
# If no positional arguments are given, try to run the checks on the
|
||||||
|
# entire codebase, including various pieces of supporting code.
|
||||||
|
DEFAULT_FILES=src integration static misc setup.py
|
||||||
|
commands =
|
||||||
|
flake8 {posargs:{env:DEFAULT_FILES}}
|
||||||
|
|
||||||
|
|
||||||
[testenv:typechecks]
|
[testenv:typechecks]
|
||||||
basepython = python3
|
basepython = python3
|
||||||
skip_install = True
|
skip_install = True
|
||||||
|
Loading…
x
Reference in New Issue
Block a user