From 4dc422e2ab330e31e1c6550ff3db2589db8db9b5 Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Tue, 12 May 2020 12:33:20 +0200 Subject: [PATCH] Avoid duplicates in the list of built packages --- pyodide_build/buildall.py | 3 ++- pyodide_build/common.py | 10 +++++----- test/pyodide_build/test_common.py | 9 +++++++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/pyodide_build/buildall.py b/pyodide_build/buildall.py index 173b21782..162374693 100755 --- a/pyodide_build/buildall.py +++ b/pyodide_build/buildall.py @@ -106,7 +106,8 @@ def make_parser(parser): help='The path to the target Python installation') parser.add_argument( '--only', type=str, nargs='?', default=None, - help='Only build the specified packages') + help=('Only build the specified packages, provided as a comma ' + 'separated list')) return parser diff --git a/pyodide_build/common.py b/pyodide_build/common.py index ec9a35834..a82c10d30 100644 --- a/pyodide_build/common.py +++ b/pyodide_build/common.py @@ -1,5 +1,5 @@ from pathlib import Path -from typing import Optional, List +from typing import Optional, Set ROOTDIR = Path(__file__).parents[1].resolve() / 'tools' @@ -27,17 +27,17 @@ def parse_package(package): return yaml.load(fd) -def _parse_package_subset(query: Optional[str]) -> Optional[List[str]]: +def _parse_package_subset(query: Optional[str]) -> Optional[Set[str]]: """Parse the list of packages specified with PYODIDE_PACKAGES env var. Also add the list of mandatory packages: ['micropip', 'distlib'] Returns: - a list of package names to build or None. The list may contain duplicate - values. + a set of package names to build or None. """ if query is None: return None packages = query.split(',') packages = [el.strip() for el in packages] - return ['micropip', 'distlib'] + packages + packages = ['micropip', 'distlib'] + packages + return set(packages) diff --git a/test/pyodide_build/test_common.py b/test/pyodide_build/test_common.py index 05b2fe0bd..5fd05c1fb 100644 --- a/test/pyodide_build/test_common.py +++ b/test/pyodide_build/test_common.py @@ -9,6 +9,11 @@ from pyodide_build.common import _parse_package_subset # noqa def test_parse_package_subset(): assert _parse_package_subset(None) is None # micropip is always included - assert _parse_package_subset("numpy,pandas") == [ + assert _parse_package_subset("numpy,pandas") == { 'micropip', 'distlib', 'numpy', 'pandas' - ] + } + + # duplicates are removed + assert _parse_package_subset("numpy,numpy") == { + 'micropip', 'distlib', 'numpy' + }