From ac68a30511f8255e4a73a0a8e583b39dcf8c5735 Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Mon, 11 May 2020 01:32:59 +0200 Subject: [PATCH 1/8] Supporty custom wheel locations in micropip --- conftest.py | 5 ++- packages/micropip/micropip/micropip.py | 58 +++++++++++++++++++++++--- packages/micropip/test_micropip.py | 44 +++++++++++++++++++ 3 files changed, 101 insertions(+), 6 deletions(-) diff --git a/conftest.py b/conftest.py index 44069dc1b..5792e0a85 100644 --- a/conftest.py +++ b/conftest.py @@ -97,7 +97,10 @@ class SeleniumWrapper: @property def logs(self): logs = self.driver.execute_script("return window.logs") - return '\n'.join(str(x) for x in logs) + if logs is not None: + return '\n'.join(str(x) for x in logs) + else: + return "" def clean_logs(self): self.driver.execute_script("window.logs = []") diff --git a/packages/micropip/micropip/micropip.py b/packages/micropip/micropip/micropip.py index 696447451..220c15cd4 100644 --- a/packages/micropip/micropip/micropip.py +++ b/packages/micropip/micropip/micropip.py @@ -2,7 +2,17 @@ try: from js import Promise, XMLHttpRequest except ImportError: XMLHttpRequest = None -from js import pyodide as js_pyodide + +try: + from js import pyodide as js_pyodide +except ImportError: + + class js_pyodide: # type: ignore + """A mock object to allow import of this package outside pyodide""" + class _module: + class packages: + dependencies = [] # type: ignore + import hashlib import importlib @@ -10,6 +20,7 @@ import io import json from pathlib import Path import zipfile +from typing import Dict, Any, Union, List, Tuple from distlib import markers, util, version @@ -64,12 +75,43 @@ def _get_pypi_json(pkgname): return json.load(fd) +def _parse_wheel_url(url: str) -> Tuple[str, Dict[str, Any], str]: + """Parse wheels url and extract available metadata + + See https://www.python.org/dev/peps/pep-0427/#file-name-convention + """ + file_name = Path(url).name + # also strip '.whl' extension. + wheel_name = Path(url).stem + tokens = wheel_name.split('-') + # TODO: support optional build tags in the filename (cf PEP 427) + if len(tokens) < 5: + raise ValueError(f'{file_name} is not a valid wheel file name.') + version, python_tag, abi_tag, platform = tokens[-4:] + name = '-'.join(tokens[:-4]) + wheel = { + 'digests': None, # checksums not available + 'filename': file_name, + 'packagetype': 'bdist_wheel', + 'python_version': python_tag, + 'abi_tag': abi_tag, + 'platform': platform, + 'url': url, + } + + return name, wheel, version + + class _WheelInstaller: def extract_wheel(self, fd): with zipfile.ZipFile(fd) as zf: zf.extractall(WHEEL_BASE) def validate_wheel(self, data, fileinfo): + if fileinfo.get('digests') is None: + # No checksums available, e.g. because installing + # from a different location than PyPi. + return sha256 = fileinfo['digests']['sha256'] m = hashlib.sha256() m.update(data.getvalue()) @@ -108,7 +150,7 @@ class _PackageManager: def install( self, - requirements, + requirements: Union[str, List[str]], ctx=None, wheel_installer=None, resolve=_nullop, @@ -127,7 +169,7 @@ class _PackageManager: if isinstance(requirements, str): requirements = [requirements] - transaction = { + transaction: Dict[str, Any] = { 'wheels': [], 'pyodide_packages': set(), 'locked': dict(self.installed_packages) @@ -162,7 +204,13 @@ class _PackageManager: wheel_installer(name, wheel, do_resolve, reject) self.installed_packages[name] = ver - def add_requirement(self, requirement, ctx, transaction): + def add_requirement(self, requirement: str, ctx, transaction): + if requirement.startswith(('http://', 'https://')): + # custom download location + name, wheel, version = _parse_wheel_url(requirement) + transaction['wheels'].append((name, wheel, version)) + return + req = util.parse_requirement(requirement) # If it's a Pyodide package, use that instead of the one on PyPI @@ -223,7 +271,7 @@ PACKAGE_MANAGER = _PackageManager() del _PackageManager -def install(requirements): +def install(requirements: Union[str, List[str]]): """ Install the given package and all of its dependencies. diff --git a/packages/micropip/test_micropip.py b/packages/micropip/test_micropip.py index 612411df2..7b74369a5 100644 --- a/packages/micropip/test_micropip.py +++ b/packages/micropip/test_micropip.py @@ -1,4 +1,10 @@ import time +import sys +from pathlib import Path + +import pytest + +sys.path.append(str(Path(__file__).resolve().parent / 'micropip')) def test_install_simple(selenium_standalone): @@ -24,3 +30,41 @@ def test_install_simple(selenium_standalone): "stemmer.stemWords('go going goes gone'.split())") == [ 'go', 'go', 'goe', 'gone' ] + print(selenium_standalone.logs) + + +def test_parse_wheel_url(): + import micropip + + url = "https://a/snowballstemmer-2.0.0-py2.py3-none-any.whl" + name, wheel, version = micropip._parse_wheel_url(url) + assert name == 'snowballstemmer' + assert version == '2.0.0' + assert wheel == { + 'digests': None, + 'filename': 'snowballstemmer-2.0.0-py2.py3-none-any.whl', + 'packagetype': 'bdist_wheel', + 'python_version': 'py2.py3', + 'abi_tag': 'none', + 'platform': 'any', + 'url': url + } + + msg = "not a valid wheel file name" + with pytest.raises(ValueError, match=msg): + url = "https://a/snowballstemmer-2.0.0-py2.whl" + name, params, version = micropip._parse_wheel_url(url) + + url = "http://scikit_learn-0.22.2.post1-cp35-cp35m-macosx_10_9_intel.whl" + name, wheel, version = micropip._parse_wheel_url(url) + assert name == 'scikit_learn' + assert wheel['platform'] == 'macosx_10_9_intel' + + +def test_install_custom_url(selenium_standalone, web_server_secondary): + server_hostname, server_port, server_log = web_server_secondary + selenium_standalone.load_package("micropip") + selenium_standalone.run("import micropip") + base_url = f'http://{server_hostname}:{server_port}/test/' + url = base_url + 'snowballstemmer-2.0.0-py2.py3-none-any.whl' + selenium_standalone.run(f"micropip.install('{url}')") From 76237050ebc3651b6ae07309bd30b8845558a834 Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Mon, 11 May 2020 10:06:33 +0200 Subject: [PATCH 2/8] Add documentation --- docs/pypi.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/pypi.md b/docs/pypi.md index 9f84af2a2..0e166ecb0 100644 --- a/docs/pypi.md +++ b/docs/pypi.md @@ -22,7 +22,7 @@ For use outside of Iodide (just Python), you can use the `then` method on the `Promise` that `micropip.install` returns to do work once the packages have finished loading: -``` +```py def do_work(*args): import snowballstemmer stemmer = snowballstemmer.stemmer('english') @@ -32,6 +32,31 @@ import micropip micropip.install('snowballstemmer').then(do_work) ``` +File integrity validation is implementing by checking the hash of the downloaded +wheel against pre-recorded hash digests from the PyPi JSON API. + +## Installing wheels from arbitrary URLs + +Pure python wheels can also be installed from any URL with micropip, +```py +import micropip +micropip.install( + 'https://example.com/files/snowballstemmer-2.0.0-py2.py3-none-any.whl' +) +``` + +The wheel name in the URL must follow [PEP 427 naming +convention](https://www.python.org/dev/peps/pep-0427/#file-format), which will +be the case if the wheels is made using standard python tools (`wheel`, +`setup.py bdist_wheel`). + +The remote server must set Cross-Origin Resource Sharing (CORS) headers to +allow access. Otherwise, you can prepend a CORS proxy to the URL. Note however +that using third-party CORS proxies has security implications, particularly +since we are not able to check the file integrity, unlike with installs from +PyPi. + + ## Complete example Adapting the setup from the section on ["using pyodide from From 4be718c852610d2009bd3bca7981e1c89c9f061b Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Mon, 11 May 2020 10:08:05 +0200 Subject: [PATCH 3/8] Add snowballstemmer example file --- packages/micropip/test_micropip.py | 2 +- .../snowballstemmer-2.0.0-py2.py3-none-any.whl | Bin 0 -> 97007 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 test/data/snowballstemmer-2.0.0-py2.py3-none-any.whl diff --git a/packages/micropip/test_micropip.py b/packages/micropip/test_micropip.py index 7b74369a5..f844aa7e1 100644 --- a/packages/micropip/test_micropip.py +++ b/packages/micropip/test_micropip.py @@ -65,6 +65,6 @@ def test_install_custom_url(selenium_standalone, web_server_secondary): server_hostname, server_port, server_log = web_server_secondary selenium_standalone.load_package("micropip") selenium_standalone.run("import micropip") - base_url = f'http://{server_hostname}:{server_port}/test/' + base_url = f'http://{server_hostname}:{server_port}/test/data/' url = base_url + 'snowballstemmer-2.0.0-py2.py3-none-any.whl' selenium_standalone.run(f"micropip.install('{url}')") diff --git a/test/data/snowballstemmer-2.0.0-py2.py3-none-any.whl b/test/data/snowballstemmer-2.0.0-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..0854a4a4188bdef6a0a46dc1588f3930c675968c GIT binary patch literal 97007 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

TiA&y39D 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 Date: Mon, 11 May 2020 10:30:25 +0200 Subject: [PATCH 4/8] Fix typo --- docs/pypi.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pypi.md b/docs/pypi.md index 0e166ecb0..d5ccd360a 100644 --- a/docs/pypi.md +++ b/docs/pypi.md @@ -32,8 +32,8 @@ import micropip micropip.install('snowballstemmer').then(do_work) ``` -File integrity validation is implementing by checking the hash of the downloaded -wheel against pre-recorded hash digests from the PyPi JSON API. +Micropip implements file integrity validation by checking the hash of the +downloaded wheel against pre-recorded hash digests from the PyPi JSON API. ## Installing wheels from arbitrary URLs From 467f08203e9e51897fc0094969f0f9aa30bfa59f Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Mon, 11 May 2020 10:34:34 +0200 Subject: [PATCH 5/8] Better formulation --- docs/pypi.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/pypi.md b/docs/pypi.md index d5ccd360a..3f7870ccc 100644 --- a/docs/pypi.md +++ b/docs/pypi.md @@ -47,7 +47,7 @@ micropip.install( The wheel name in the URL must follow [PEP 427 naming convention](https://www.python.org/dev/peps/pep-0427/#file-format), which will -be the case if the wheels is made using standard python tools (`wheel`, +be the case if the wheels is made using standard python tools (`pip wheel`, `setup.py bdist_wheel`). The remote server must set Cross-Origin Resource Sharing (CORS) headers to From b9a346e90f7e3d91d46f37a5a0e54260673446c5 Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Mon, 11 May 2020 10:38:27 +0200 Subject: [PATCH 6/8] Improve docs --- docs/pypi.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/pypi.md b/docs/pypi.md index 3f7870ccc..1098e8e06 100644 --- a/docs/pypi.md +++ b/docs/pypi.md @@ -50,6 +50,9 @@ convention](https://www.python.org/dev/peps/pep-0427/#file-format), which will be the case if the wheels is made using standard python tools (`pip wheel`, `setup.py bdist_wheel`). +All required dependencies need also to be previously installed with `micropip` +or `pyodide.loadPackage`. + The remote server must set Cross-Origin Resource Sharing (CORS) headers to allow access. Otherwise, you can prepend a CORS proxy to the URL. Note however that using third-party CORS proxies has security implications, particularly From 21cd9fd36642eb989ef972122d6a760d38e9918c Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Tue, 12 May 2020 12:19:15 +0200 Subject: [PATCH 7/8] Minor fix in tests --- packages/micropip/test_micropip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/micropip/test_micropip.py b/packages/micropip/test_micropip.py index f844aa7e1..9bdf28ac8 100644 --- a/packages/micropip/test_micropip.py +++ b/packages/micropip/test_micropip.py @@ -30,7 +30,6 @@ def test_install_simple(selenium_standalone): "stemmer.stemWords('go going goes gone'.split())") == [ 'go', 'go', 'goe', 'gone' ] - print(selenium_standalone.logs) def test_parse_wheel_url(): @@ -68,3 +67,4 @@ def test_install_custom_url(selenium_standalone, web_server_secondary): base_url = f'http://{server_hostname}:{server_port}/test/data/' url = base_url + 'snowballstemmer-2.0.0-py2.py3-none-any.whl' selenium_standalone.run(f"micropip.install('{url}')") + selenium_standalone.run(f"import snowballstemmer')") From 354f79aefdf7b1a3d6960f9080082b10f5dcf4cb Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Tue, 12 May 2020 14:11:22 +0200 Subject: [PATCH 8/8] Fix typo in test --- packages/micropip/test_micropip.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/micropip/test_micropip.py b/packages/micropip/test_micropip.py index 9bdf28ac8..30e9435bc 100644 --- a/packages/micropip/test_micropip.py +++ b/packages/micropip/test_micropip.py @@ -67,4 +67,4 @@ def test_install_custom_url(selenium_standalone, web_server_secondary): base_url = f'http://{server_hostname}:{server_port}/test/data/' url = base_url + 'snowballstemmer-2.0.0-py2.py3-none-any.whl' selenium_standalone.run(f"micropip.install('{url}')") - selenium_standalone.run(f"import snowballstemmer')") + selenium_standalone.run("import snowballstemmer")