aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShadab Zafar <dufferzafar0@gmail.com>2016-06-02 13:00:44 +0530
committerShadab Zafar <dufferzafar0@gmail.com>2016-06-02 13:00:44 +0530
commitb510616c69135ff2e8f18da3a5fd9a19ddcdfc63 (patch)
tree7c045e10900bed0b6357aa2c66803cf0b6e6fa01
parenta04d7fd166498b54316571a4e71a58837cf11df8 (diff)
downloadmitmproxy-b510616c69135ff2e8f18da3a5fd9a19ddcdfc63.tar.gz
mitmproxy-b510616c69135ff2e8f18da3a5fd9a19ddcdfc63.tar.bz2
mitmproxy-b510616c69135ff2e8f18da3a5fd9a19ddcdfc63.zip
Py3: Return bytes from FileGenerator
and use __getitem__ instead of __getslice__
-rw-r--r--pathod/language/generators.py10
-rw-r--r--test/pathod/test_language_generators.py10
2 files changed, 11 insertions, 9 deletions
diff --git a/pathod/language/generators.py b/pathod/language/generators.py
index fdba1ab2..bbad3d18 100644
--- a/pathod/language/generators.py
+++ b/pathod/language/generators.py
@@ -77,17 +77,17 @@ class FileGenerator(object):
def __init__(self, path):
self.path = path
- self.fp = file(path, "rb")
+ self.fp = open(path, "rb")
self.map = mmap.mmap(self.fp.fileno(), 0, access=mmap.ACCESS_READ)
def __len__(self):
return len(self.map)
def __getitem__(self, x):
- return self.map.__getitem__(x)
-
- def __getslice__(self, a, b):
- return self.map.__getslice__(a, b)
+ if isinstance(x, slice):
+ return self.map.__getitem__(x)
+ # A slice of length 1 returns a byte object (not an integer)
+ return self.map.__getitem__(slice(x, x+1 or self.map.size()))
def __repr__(self):
return "<%s" % self.path
diff --git a/test/pathod/test_language_generators.py b/test/pathod/test_language_generators.py
index 33ab4879..51f55991 100644
--- a/test/pathod/test_language_generators.py
+++ b/test/pathod/test_language_generators.py
@@ -19,13 +19,15 @@ def test_filegenerator():
with tutils.tmpdir() as t:
path = os.path.join(t, "foo")
f = open(path, "wb")
- f.write("x" * 10000)
+ f.write(b"x" * 10000)
f.close()
g = generators.FileGenerator(path)
assert len(g) == 10000
- assert g[0] == "x"
- assert g[-1] == "x"
- assert g[0:5] == "xxxxx"
+ assert g[0] == b"x"
+ assert g[-1] == b"x"
+ assert g[0:5] == b"xxxxx"
+ assert len(g[1:10]) == 9
+ assert len(g[10000:10001]) == 0
assert repr(g)
# remove all references to FileGenerator instance to close the file
# handle.