From dc578f6582b5b2256bd1de880c958eaf39f9184f Mon Sep 17 00:00:00 2001 From: jcaesar Date: Fri, 27 Mar 2020 01:17:38 +0900 Subject: [PATCH] pyodide: no mmap (#39) This lets the library work on platforms without `mmap()`. --- jplephem/daf.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/jplephem/daf.py b/jplephem/daf.py index ce75875..20c1d23 100644 --- a/jplephem/daf.py +++ b/jplephem/daf.py @@ -104,14 +104,18 @@ class DAF(object): fileno = self.file.fileno() except (AttributeError, io.UnsupportedOperation): fileno = None - if fileno is None: + m = None + if fileno is not None: + skip = i % mmap.ALLOCATIONGRANULARITY + r = mmap.ACCESS_READ + try: + m = mmap.mmap(fileno, length=j-i+skip, access=r, offset=i-skip) + except OSError: + m = None + if m is None: skip = 0 self.file.seek(i) m = self.file.read(j - i) - else: - skip = i % mmap.ALLOCATIONGRANULARITY - r = mmap.ACCESS_READ - m = mmap.mmap(fileno, length=j-i+skip, access=r, offset=i-skip) if sys.version_info > (3,): m = memoryview(m) # so further slicing can return views return m, skip