Allow zipfile to be imported on wasm

This commit is contained in:
Noah committed 2021-03-14 12:49:59 -05:00
1 parent d11cfd52e7
commit 57540ad2e1
5 files changed
+87 -6

No files matched your search

+61
View File
@@ -0,0 +1,61 @@
"""
A shim of the os module containing only simple path-related utilities
"""
try:
from os import *
except ImportError:
import abc
# this will throw an appropriate error if os isn't available and a module
# tries to use an os function. If os has become available, then this will
# just work.
def __getattr__(name):
import os
return getattr(os, name)
sep = '/'
def fspath(path):
"""Return the path representation of a path-like object.
If str or bytes is passed in, it is returned unchanged. Otherwise the
os.PathLike interface is used to get the path representation. If the
path representation is not str or bytes, TypeError is raised. If the
provided path is not str, bytes, or os.PathLike, TypeError is raised.
"""
if isinstance(path, (str, bytes)):
return path
# Work from the object's type to match method resolution of other magic
# methods.
path_type = type(path)
try:
path_repr = path_type.__fspath__(path)
except AttributeError:
if hasattr(path_type, '__fspath__'):
raise
else:
raise TypeError("expected str, bytes or os.PathLike object, "
"not " + path_type.__name__)
if isinstance(path_repr, (str, bytes)):
return path_repr
else:
raise TypeError("expected {}.__fspath__() to return str or bytes, "
"not {}".format(path_type.__name__,
type(path_repr).__name__))
class PathLike(abc.ABC):
"""Abstract base class for implementing the file system path protocol."""
@abc.abstractmethod
def __fspath__(self):
"""Return the file system path representation of the object."""
raise NotImplementedError
@classmethod
def __subclasshook__(cls, subclass):
return hasattr(subclass, '__fspath__')
+4 -1
View File
@@ -3,7 +3,10 @@ Path operations common to more than one OS
Do not use directly. The OS specific modules import the appropriate
functions from this module themselves.
"""
import os
try:
import os
except ImportError:
import _dummy_os as os
import stat
__all__ = ['commonprefix', 'exists', 'getatime', 'getctime', 'getmtime',
Vendored
+6 -1
View File
@@ -52,12 +52,17 @@ import _io
import abc
from _io import (DEFAULT_BUFFER_SIZE, BlockingIOError, UnsupportedOperation,
open, open_code, FileIO, BytesIO, StringIO, BufferedReader,
open, open_code, BytesIO, StringIO, BufferedReader,
BufferedWriter, BufferedRWPair, BufferedRandom,
# XXX RUSTPYTHON TODO: IncrementalNewlineDecoder
# IncrementalNewlineDecoder, TextIOWrapper)
TextIOWrapper)
try:
from _io import FileIO
except ImportError:
pass
OpenWrapper = _io.open # for compatibility with _pyio
# Pretend this exception was created here.
+4 -1
View File
@@ -22,7 +22,10 @@ defpath = '/bin:/usr/bin'
altsep = None
devnull = '/dev/null'
import os
try:
import os
except ImportError:
import _dummy_os as os
import sys
import stat
import genericpath
+12 -3
View File
@@ -8,13 +8,22 @@ import functools
import importlib.util
import io
import itertools
import os
try:
import os
except ImportError:
import _dummy_os as os
import posixpath
import shutil
try:
import shutil
except ImportError:
pass
import stat
import struct
import sys
import threading
try:
import threading
except ImportError:
import _dummy_thread as threading
import time
import contextlib
from collections import OrderedDict