@gen3/workspaces 0.12.63 → 0.12.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +201 -0
  2. package/dist/dts/components/MicroContainerPanel.stories.d.ts +6 -2
  3. package/dist/dts/components/MicroContainerPanel.stories.d.ts.map +1 -1
  4. package/dist/dts/components/MicroContainerPanel.stories.js +1 -1
  5. package/dist/dts/components/MicroContainerPanel.stories.js.map +1 -1
  6. package/dist/dts/components/MicroContainerReduxPanel.d.ts +3 -5
  7. package/dist/dts/components/MicroContainerReduxPanel.d.ts.map +1 -1
  8. package/dist/dts/components/MicroContainerReduxPanel.js +32 -6
  9. package/dist/dts/components/MicroContainerReduxPanel.js.map +1 -1
  10. package/dist/dts/pages/WorkspacesCenter/data.d.ts.map +1 -1
  11. package/dist/dts/pages/WorkspacesCenter/data.js +4 -1
  12. package/dist/dts/pages/WorkspacesCenter/data.js.map +1 -1
  13. package/dist/dts/providers/types.d.ts +1 -1
  14. package/dist/dts/providers/types.d.ts.map +1 -1
  15. package/dist/dts/providers/useMicroContainerRedux.d.ts.map +1 -1
  16. package/dist/dts/providers/useMicroContainerRedux.js +8 -2
  17. package/dist/dts/providers/useMicroContainerRedux.js.map +1 -1
  18. package/dist/dts/workspace/WorkspaceCenter.d.ts.map +1 -1
  19. package/dist/dts/workspace/WorkspaceCenter.js +1 -1
  20. package/dist/dts/workspace/WorkspaceCenter.js.map +1 -1
  21. package/dist/dts/workspace/WorkspaceLayout/WorkspaceLayout.d.ts.map +1 -1
  22. package/dist/dts/workspace/WorkspaceLayout/WorkspaceLayout.js +1 -1
  23. package/dist/dts/workspace/WorkspaceLayout/WorkspaceLayout.js.map +1 -1
  24. package/dist/dts/workspace/tiers/RemoteComputeWorkspace.d.ts +1 -0
  25. package/dist/dts/workspace/tiers/RemoteComputeWorkspace.d.ts.map +1 -1
  26. package/dist/dts/workspace/tiers/RemoteComputeWorkspace.js +2 -2
  27. package/dist/dts/workspace/tiers/RemoteComputeWorkspace.js.map +1 -1
  28. package/dist/dts/workspace/tiers/types.d.ts +2 -0
  29. package/dist/dts/workspace/tiers/types.d.ts.map +1 -1
  30. package/dist/index/cjs/index.js +97 -25
  31. package/dist/index/cjs/index.js.map +1 -1
  32. package/dist/index/esm/index.js +98 -26
  33. package/dist/index/esm/index.js.map +1 -1
  34. package/dist/index.d.ts +2 -0
  35. package/dist/jupyterlite-builds/free-private/jupyter_lite_config.json +5 -19
  36. package/dist/jupyterlite-builds/free-private/requirements.txt +1 -1
  37. package/dist/jupyterlite-builds/scripts/build-gen3sdk-lite.sh +428 -0
  38. package/dist/jupyterlite-builds/scripts/build-jupyterlite.sh +150 -33
  39. package/dist/jupyterlite-builds/scripts/setup-env.sh +81 -0
  40. package/dist/jupyterlite-builds/scripts/sync-jupyter-assets-into-package.sh +19 -2
  41. package/dist/jupyterlite-builds/scripts/validate-jupyterlite-assets.sh +3 -0
  42. package/jupyterlite-builds/free-private/jupyter_lite_config.json +5 -19
  43. package/jupyterlite-builds/free-private/requirements.txt +1 -1
  44. package/package.json +7 -4
  45. package/scripts/build-gen3sdk-lite.sh +428 -0
  46. package/scripts/build-jupyterlite.sh +150 -33
  47. package/scripts/patch-pyidode-lock.py +100 -0
  48. package/scripts/setup-env.sh +81 -0
  49. package/scripts/sync-jupyter-assets-into-package.sh +19 -2
  50. package/scripts/validate-jupyterlite-assets.sh +3 -0
  51. package/dist/jupyterlite-builds/free-private/.cache/pyodide-lock/_work/constraints.txt +0 -354
  52. package/dist/jupyterlite-builds/free-private/.cache/pyodide-lock/_work/excludes.txt +0 -3
  53. package/dist/jupyterlite-builds/free-private/.cache/pyodide-lock/_work/requirements.in +0 -11
  54. package/dist/jupyterlite-builds/free-private/.cache/pyodide-lock/pyodide-lock.json +0 -1
  55. package/dist/jupyterlite-builds/free-private/.cache/pyodide-lock/remote-pyodide-lock.json +0 -1
  56. package/dist/jupyterlite-builds/free-private/dist/cdislogging-1.2.0-py3-none-any.whl +0 -0
  57. package/dist/jupyterlite-builds/free-private/dist/dictionaryutils-4.0.0-py3-none-any.whl +0 -0
  58. package/dist/jupyterlite-builds/free-private/dist/drsclient-0.4.0-py3-none-any.whl +0 -0
  59. package/dist/jupyterlite-builds/free-private/dist/fastavro-1.12.2-cp313-cp313-pyemscripten_2025_0_wasm32.whl +0 -0
  60. package/dist/jupyterlite-builds/free-private/dist/gen3-4.28.2-py3-none-any.whl +0 -0
  61. package/dist/jupyterlite-builds/free-private/dist/gen3datamodel-4.0.1-py3-none-any.whl +0 -0
  62. package/dist/jupyterlite-builds/free-private/dist/pypfb-0.6.2-py3-none-any.whl +0 -0
  63. package/dist/jupyterlite-builds/free-private/dist/python_json_logger-4.2.0-py3-none-any.whl +0 -0
  64. package/jupyterlite-builds/free-private/dist/cdislogging-1.2.0-py3-none-any.whl +0 -0
  65. package/jupyterlite-builds/free-private/dist/dictionaryutils-4.0.0-py3-none-any.whl +0 -0
  66. package/jupyterlite-builds/free-private/dist/drsclient-0.4.0-py3-none-any.whl +0 -0
  67. package/jupyterlite-builds/free-private/dist/fastavro-1.12.2-cp313-cp313-pyemscripten_2025_0_wasm32.whl +0 -0
  68. package/jupyterlite-builds/free-private/dist/gen3-4.28.2-py3-none-any.whl +0 -0
  69. package/jupyterlite-builds/free-private/dist/gen3datamodel-4.0.1-py3-none-any.whl +0 -0
  70. package/jupyterlite-builds/free-private/dist/pypfb-0.6.2-py3-none-any.whl +0 -0
  71. package/jupyterlite-builds/free-private/dist/python_json_logger-4.2.0-py3-none-any.whl +0 -0
@@ -0,0 +1,100 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Localize CDN wheels referenced by a JupyterLite pyodide-lock.json.
4
+
5
+ Replaces the inline heredoc in build-jupyterlite.sh. Two fixes over the
6
+ original:
7
+
8
+ 1. Writes ``file_name`` (the only field Pyodide reads) instead of ``url``,
9
+ which is not part of the pyodide-lock schema and is silently ignored.
10
+ 2. Writes a bare filename. ``file_name`` is resolved relative to the
11
+ directory holding pyodide-lock.json, which is where we download to,
12
+ so no "../../static/..." prefix is needed.
13
+
14
+ Fails loudly if any CDN reference survives, so a no-op patch can never be
15
+ reported as success.
16
+
17
+ Usage:
18
+ LOCK_FILE=... LOCK_OUT=... python3 patch-pyodide-lock.py
19
+ """
20
+
21
+ import json
22
+ import os
23
+ import sys
24
+ import urllib.request
25
+
26
+ CDN_HOSTS = ("cdn.jsdelivr.net", "pypi.org", "files.pythonhosted.org")
27
+
28
+ lock_file = os.environ["LOCK_FILE"]
29
+ lock_out = os.environ["LOCK_OUT"]
30
+
31
+ with open(lock_file) as fh:
32
+ lock = json.load(fh)
33
+
34
+ packages = lock.get("packages", {})
35
+ localized = 0
36
+ failed = []
37
+
38
+ for name, meta in packages.items():
39
+ ref = meta.get("file_name", "")
40
+ if not any(host in ref for host in CDN_HOSTS):
41
+ continue
42
+
43
+ fname = ref.split("/")[-1].split("?")[0]
44
+ dest = os.path.join(lock_out, fname)
45
+
46
+ if not os.path.exists(dest):
47
+ try:
48
+ urllib.request.urlretrieve(ref, dest)
49
+ print(f" downloaded {fname}", flush=True)
50
+ except Exception as exc:
51
+ failed.append((name, fname, exc))
52
+ print(f" WARN: {fname}: {exc}", file=sys.stderr, flush=True)
53
+ continue
54
+
55
+ # The only field Pyodide reads. sha256 is unchanged because it is the
56
+ # same artifact, so integrity checks still pass.
57
+ meta["file_name"] = fname
58
+ meta.pop("url", None) # drop the stale no-op key if a prior run added it
59
+ localized += 1
60
+
61
+ with open(lock_file, "w") as fh:
62
+ json.dump(lock, fh)
63
+
64
+ # ---- verification: no CDN reference may survive -----------------------------
65
+ with open(lock_file) as fh:
66
+ reloaded = json.load(fh)
67
+
68
+ survivors = [
69
+ (n, m.get("file_name", ""))
70
+ for n, m in reloaded.get("packages", {}).items()
71
+ if any(host in m.get("file_name", "") for host in CDN_HOSTS)
72
+ ]
73
+
74
+ print(f"Lock patched: {localized} localized, {len(failed)} download failures")
75
+
76
+ if survivors:
77
+ print(
78
+ f"ERROR: {len(survivors)} package(s) still point at a remote host; "
79
+ "the browser will fetch these at import time and may hang:",
80
+ file=sys.stderr,
81
+ )
82
+ for n, ref in survivors[:20]:
83
+ print(f" {n}: {ref}", file=sys.stderr)
84
+ sys.exit(1)
85
+
86
+ # Every localized reference must actually exist on disk next to the lock.
87
+ missing = [
88
+ (n, m["file_name"])
89
+ for n, m in reloaded.get("packages", {}).items()
90
+ if m.get("file_name")
91
+ and "/" not in m["file_name"]
92
+ and not os.path.exists(os.path.join(lock_out, m["file_name"]))
93
+ ]
94
+ if missing:
95
+ print(f"ERROR: {len(missing)} lock entries reference missing files:", file=sys.stderr)
96
+ for n, f in missing[:20]:
97
+ print(f" {n}: {f}", file=sys.stderr)
98
+ sys.exit(1)
99
+
100
+ print("Verified: all package references are local and present.")
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/env bash
2
+ # =============================================================================
3
+ # setup-env.sh — Shared build-environment bootstrap
4
+ #
5
+ # Guarantees both build-gen3sdk-lite and build-jupyterlite use the same
6
+ # Python interpreter and virtual environment.
7
+ #
8
+ # BUILD_DIR resolution (first match wins):
9
+ # 1. Pre-set BUILD_DIR environment variable (export BUILD_DIR=…)
10
+ # 2. First positional argument (source setup-env.sh [/tmp/mybuild | ./mybuild])
11
+ # 3. Default: "builds"
12
+ #
13
+ # Usage:
14
+ # source setup-env.sh [build_dir]
15
+ #
16
+ # After sourcing, the venv at $BUILD_DIR/.venv is activated in the calling
17
+ # shell, and VENV_DIR is exported.
18
+ # =============================================================================
19
+
20
+ # ── Configuration ────────────────────────────────────────────────────────────
21
+ PYTHON_VERSION="3.14.2"
22
+
23
+ # Resolves a possibly-relative path against INIT_CWD (or $PWD) rather than
24
+ # whatever directory happens to be current when this runs.
25
+ _resolve_against_init_cwd() {
26
+ local path="$1"
27
+ local base="${INIT_CWD:-$(pwd)}"
28
+ case "$path" in
29
+ /*) printf '%s' "$path" ;;
30
+ *) printf '%s/%s' "$base" "$path" ;;
31
+ esac
32
+ }
33
+
34
+ BUILD_DIR="${BUILD_DIR:-$(_resolve_against_init_cwd "${1:-builds}")}"
35
+
36
+ mkdir -p "$BUILD_DIR"
37
+ BUILD_DIR="$(cd "$BUILD_DIR" && pwd)"
38
+
39
+ VENV_DIR="$BUILD_DIR/.venv"
40
+ export BUILD_DIR VENV_DIR PYTHON_VERSION
41
+
42
+ # ── Colours / helpers ────────────────────────────────────────────────────────
43
+ RED='\033[0;31m'
44
+ GREEN='\033[0;32m'
45
+ YELLOW='\033[1;33m'
46
+ CYAN='\033[0;36m'
47
+ NC='\033[0m'
48
+
49
+ info() { echo -e "${CYAN}[INFO]${NC} $*"; }
50
+ success() { echo -e "${GREEN}[OK]${NC} $*"; }
51
+ warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
52
+ fail() { echo -e "${RED}[FAIL]${NC} $*"; return 1 2>/dev/null || exit 1; }
53
+
54
+ # Export helpers so functions in the calling script can use them.
55
+ export -f info success warn fail
56
+
57
+ # ── uv ───────────────────────────────────────────────────────────────────────
58
+ if ! command -v uv &>/dev/null; then
59
+ fail "uv is not installed. Install it first: https://docs.astral.sh/uv/getting-started/installation/"
60
+ fi
61
+ success "uv found: $(uv --version)"
62
+
63
+ # ── Python (via uv) ─────────────────────────────────────────────────────────
64
+ info "Ensuring Python ${PYTHON_VERSION} is available via uv …"
65
+ uv python install "${PYTHON_VERSION}" 2>&1 | tail -1
66
+ success "Python ${PYTHON_VERSION} ready"
67
+
68
+ # ── Virtual environment (create once, reuse everywhere) ──────────────────────
69
+ if [[ ! -d "${VENV_DIR}" ]]; then
70
+ info "Creating virtual environment at ${VENV_DIR} …"
71
+ uv venv --python "${PYTHON_VERSION}" "${VENV_DIR}"
72
+ fi
73
+
74
+ # shellcheck disable=SC1091
75
+ source "${VENV_DIR}/bin/activate"
76
+ success "Activated venv ($(python --version))"
77
+
78
+ # ── Core Python tooling (idempotent — uv skips already-installed) ────────────
79
+ info "Ensuring core Python build tooling …"
80
+ uv pip install --upgrade pip build 2>&1 | tail -3
81
+ success "Core tooling ready"
@@ -1,12 +1,23 @@
1
1
  #!/usr/bin/env bash
2
2
  set -euo pipefail
3
3
 
4
-
5
- BUILD_SRC="${1:-}"
4
+ _resolve_against_init_cwd() {
5
+ local path="$1"
6
+ local base="${INIT_CWD:-$(pwd)}"
7
+ case "$path" in
8
+ /*) printf '%s' "$path" ;;
9
+ *) printf '%s/%s' "$base" "$path" ;;
10
+ esac
11
+ }
12
+
13
+ BUILD_SRC="$(_resolve_against_init_cwd "${1:-builds}")"
6
14
  if [[ -z "$BUILD_SRC" ]]; then
7
15
  usage "set to the output of the juypterlite install"
8
16
  fi
9
17
 
18
+
19
+ echo "Build directory is $BUILD_SRC"
20
+
10
21
  PKG_DIR="${2:-jupyter-workspaces}"
11
22
  echo "assets directory is: $PKG_DIR"
12
23
 
@@ -16,6 +27,7 @@ REMOTE_SRC="$BUILD_SRC/remote"
16
27
  FREE_DST="$PKG_DIR/assets/free"
17
28
  REMOTE_DST="$PKG_DIR/assets/remote"
18
29
  VALIDATE_SCRIPT="$SCRIPT_DIR/scripts/validate-jupyterlite-assets.sh"
30
+ source "${SCRIPT_DIR}/scripts/setup-env.sh"
19
31
 
20
32
  if [[ ! -d "$FREE_SRC" ]]; then
21
33
  echo "Missing free JupyterLite build output: $FREE_SRC"
@@ -29,6 +41,11 @@ if [[ ! -d "$REMOTE_SRC" ]]; then
29
41
  exit 1
30
42
  fi
31
43
 
44
+ echo $VALIDATE_SCRIPT
45
+ echo $FREE_SRC
46
+ echo $REMOTE_SRC
47
+
48
+
32
49
  bash "$VALIDATE_SCRIPT" --free-dir "$FREE_SRC" --remote-dir "$REMOTE_SRC"
33
50
 
34
51
  rm -rf "$FREE_DST" "$REMOTE_DST"
@@ -48,6 +48,9 @@ fi
48
48
  FREE_JSON="$FREE_DIR/jupyter-lite.json"
49
49
  REMOTE_JSON="$REMOTE_DIR/jupyter-lite.json"
50
50
 
51
+
52
+ echo "Free $FREE_DIR, Remote $REMOTE_DIR"
53
+
51
54
  if [[ ! -f "$FREE_JSON" ]]; then
52
55
  echo "Missing free config: $FREE_JSON"
53
56
  exit 1
@@ -1,354 +0,0 @@
1
- affine @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/affine-2.4.0-py3-none-any.whl
2
- affine-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/affine-tests.tar
3
- aiohappyeyeballs @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/aiohappyeyeballs-2.6.1-py3-none-any.whl
4
- aiohttp @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/aiohttp-3.13.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl
5
- aiohttp-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/aiohttp-tests.tar
6
- aiosignal @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/aiosignal-1.4.0-py3-none-any.whl
7
- altair @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/altair-6.0.0-py3-none-any.whl
8
- annotated-doc @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/annotated_doc-0.0.4-py3-none-any.whl
9
- annotated-types @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/annotated_types-0.7.0-py3-none-any.whl
10
- annotated-types-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/annotated-types-tests.tar
11
- anyio @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/anyio-4.13.0-py3-none-any.whl
12
- apsw @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/apsw-3.51.3.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
13
- apsw-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/apsw-tests.tar
14
- argon2-cffi @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/argon2_cffi-23.1.0-py3-none-any.whl
15
- argon2-cffi-bindings @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/argon2_cffi_bindings-25.1.0-cp314-abi3-pyemscripten_2026_0_wasm32.whl
16
- astropy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/astropy-7.2.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
17
- astropy-iers-data @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/astropy_iers_data-0.2026.4.1.15.5.49-py3-none-any.whl
18
- astropy-iers-data-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/astropy-iers-data-tests.tar
19
- asttokens @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/asttokens-3.0.1-py3-none-any.whl
20
- async-timeout @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/async_timeout-5.0.1-py3-none-any.whl
21
- atomicwrites @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/atomicwrites-1.4.1-py2.py3-none-any.whl
22
- attrs @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/attrs-26.1.0-py3-none-any.whl
23
- audioop-lts @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/audioop_lts-0.2.2-cp313-abi3-pyemscripten_2026_0_wasm32.whl
24
- awkward-cpp @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/awkward_cpp-52-cp314-cp314-pyemscripten_2026_0_wasm32.whl
25
- b2d @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/b2d-0.7.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
26
- bcrypt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bcrypt-5.0.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
27
- beautifulsoup4 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/beautifulsoup4-4.14.3-py3-none-any.whl
28
- bilby-cython @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bilby_cython-0.5.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
29
- bilby-cython-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bilby-cython-tests.tar
30
- biopython @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/biopython-1.87-cp314-cp314-pyemscripten_2026_0_wasm32.whl
31
- bitarray @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bitarray-3.8.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
32
- bitarray-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bitarray-tests.tar
33
- bitstring @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bitstring-4.4.0-py3-none-any.whl
34
- bleach @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bleach-6.3.0-py3-none-any.whl
35
- bokeh @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bokeh-3.9.0-py3-none-any.whl
36
- boost-histogram @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/boost_histogram-1.7.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
37
- bottleneck @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/bottleneck-1.6.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
38
- brotli @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/brotli-1.2.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
39
- cachetools @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cachetools-7.0.5-py3-none-any.whl
40
- cartopy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cartopy-0.25.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
41
- cartopy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cartopy-tests.tar
42
- casadi @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/casadi-3.7.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
43
- cbor-diag @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cbor_diag-1.1.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
44
- certifi @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/certifi-2026.4.22-py3-none-any.whl
45
- cffi @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cffi-2.0.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
46
- cffi-example @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cffi_example-0.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
47
- cftime @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cftime-1.6.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl
48
- charset-normalizer @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/charset_normalizer-3.4.7-py3-none-any.whl
49
- clarabel @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/clarabel-0.11.1-cp39-abi3-pyemscripten_2026_0_wasm32.whl
50
- click @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/click-8.3.1-py3-none-any.whl
51
- cligj @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cligj-0.7.2-py3-none-any.whl
52
- clingo @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/clingo-5.8.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
53
- cloudpickle @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cloudpickle-3.1.2-py3-none-any.whl
54
- cmyt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cmyt-2.0.2-py3-none-any.whl
55
- cobs @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cobs-1.2.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
56
- colorspacious @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/colorspacious-1.1.2-py2.py3-none-any.whl
57
- contourpy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/contourpy-1.3.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
58
- coolprop @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/coolprop-7.2.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
59
- coolprop-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/coolprop-tests.tar
60
- coverage @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/coverage-7.13.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl
61
- crc32c @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/crc32c-2.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl
62
- crcmod @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/crcmod-1.7-cp314-cp314-pyemscripten_2026_0_wasm32.whl
63
- cryptography @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cryptography-47.0.0-cp314-abi3-pyemscripten_2026_0_wasm32.whl
64
- cssselect @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cssselect-1.4.0-py3-none-any.whl
65
- cvxpy-base @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cvxpy_base-1.8.2-py3-none-any.whl
66
- cvxpy-base-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cvxpy-base-tests.tar
67
- cycler @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cycler-0.12.1-py3-none-any.whl
68
- cysignals @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cysignals-1.12.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
69
- cytoolz @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cytoolz-1.1.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
70
- cytoolz-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/cytoolz-tests.tar
71
- decorator @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/decorator-5.2.1-py3-none-any.whl
72
- demes @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/demes-0.2.3-py3-none-any.whl
73
- deprecated @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/deprecated-1.3.1-py2.py3-none-any.whl
74
- deprecation @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/deprecation-2.1.0-py2.py3-none-any.whl
75
- diskcache @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/diskcache-5.6.3-py3-none-any.whl
76
- distlib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/distlib-0.4.0-py2.py3-none-any.whl
77
- distro @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/distro-1.9.0-py3-none-any.whl
78
- dnspython @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/dnspython-2.8.0-py3-none-any.whl
79
- docutils @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/docutils-0.22.4-py3-none-any.whl
80
- donfig @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/donfig-0.8.1.post1-py3-none-any.whl
81
- donfig-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/donfig-tests.tar
82
- duckdb @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/duckdb-1.5.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
83
- ewah-bool-utils @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ewah_bool_utils-1.3.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
84
- ewah-bool-utils-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ewah-bool-utils-tests.tar
85
- exceptiongroup @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/exceptiongroup-1.3.1-py3-none-any.whl
86
- executing @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/executing-2.2.1-py2.py3-none-any.whl
87
- fastapi @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/fastapi-0.136.1-py3-none-any.whl
88
- fiona @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/fiona-1.10.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
89
- fonttools @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/fonttools-4.62.1-py3-none-any.whl
90
- freesasa @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/freesasa-2.2.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
91
- frozenlist @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/frozenlist-1.8.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
92
- fsspec @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/fsspec-2026.3.0-py3-none-any.whl
93
- fsspec-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/fsspec-tests.tar
94
- future @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/future-1.0.0-py3-none-any.whl
95
- future-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/future-tests.tar
96
- galpy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/galpy-1.11.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
97
- geopandas @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/geopandas-1.1.3-py3-none-any.whl
98
- geopandas-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/geopandas-tests.tar
99
- gmpy2 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/gmpy2-2.3.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
100
- google-crc32c @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/google_crc32c-1.8.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
101
- h11 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/h11-0.16.0-py3-none-any.whl
102
- h3 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/h3-4.4.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
103
- h5py @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/h5py-3.13.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
104
- h5py-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/h5py-tests.tar
105
- healpy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/healpy-1.19.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
106
- healpy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/healpy-tests.tar
107
- highspy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/highspy-1.13.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
108
- html5lib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/html5lib-1.1-py2.py3-none-any.whl
109
- httpcore @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/httpcore-1.0.9-py3-none-any.whl
110
- httpx @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/httpx-0.28.1-py3-none-any.whl
111
- idna @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/idna-3.11-py3-none-any.whl
112
- igraph @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/igraph-1.0.0-cp39-abi3-pyemscripten_2026_0_wasm32.whl
113
- imageio @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/imageio-2.37.3-py3-none-any.whl
114
- iminuit @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/iminuit-2.30.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
115
- iniconfig @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/iniconfig-2.3.0-py3-none-any.whl
116
- ipython @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ipython-9.12.0-py3-none-any.whl
117
- ipython-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ipython-tests.tar
118
- jedi @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jedi-0.19.2-py2.py3-none-any.whl
119
- jedi-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jedi-tests.tar
120
- jinja2 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jinja2-3.1.6-py3-none-any.whl
121
- jiter @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jiter-0.13.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
122
- joblib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/joblib-1.5.3-py3-none-any.whl
123
- joblib-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/joblib-tests.tar
124
- jsonpatch @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jsonpatch-1.33-py2.py3-none-any.whl
125
- jsonpointer @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jsonpointer-3.1.1-py3-none-any.whl
126
- jsonschema @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jsonschema-4.26.0-py3-none-any.whl
127
- jsonschema-specifications @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jsonschema_specifications-2025.9.1-py3-none-any.whl
128
- jsonschema-specifications-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jsonschema-specifications-tests.tar
129
- jsonschema-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/jsonschema-tests.tar
130
- kiwisolver @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/kiwisolver-1.5.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
131
- lakers-python @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/lakers_python-0.6.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
132
- lazy-loader @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/lazy_loader-0.5-py3-none-any.whl
133
- lazy-object-proxy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/lazy_object_proxy-1.12.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
134
- libcrc32c @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libcrc32c-1.1.0.zip
135
- libcst @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libcst-1.8.6-cp314-cp314-pyemscripten_2026_0_wasm32.whl
136
- libcst-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libcst-tests.tar
137
- libgdal @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libgdal-3.8.3.zip
138
- libgeos @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libgeos-3.12.1.zip
139
- libhdf5 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libhdf5-1.12.1.zip
140
- libheif @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libheif-1.12.0.zip
141
- libopenblas @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libopenblas-0.3.28.zip
142
- libproj @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libproj-9.6.2.zip
143
- librt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/librt-0.8.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
144
- libsuitesparse @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libsuitesparse-5.11.0.zip
145
- libtaglib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/libtaglib-2.1.1.zip
146
- lightgbm @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/lightgbm-4.6.0-py3-none-pyemscripten_2026_0_wasm32.whl
147
- logbook @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/logbook-1.9.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
148
- lxml @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/lxml-6.0.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
149
- lz4 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/lz4-4.4.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl
150
- markupsafe @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/markupsafe-3.0.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
151
- matplotlib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/matplotlib-3.10.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl
152
- matplotlib-inline @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/matplotlib_inline-0.2.1-py3-none-any.whl
153
- matplotlib-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/matplotlib-tests.tar
154
- memory-allocator @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/memory_allocator-0.2.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
155
- micropip @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/micropip-0.11.1-py3-none-any.whl
156
- ml-dtypes @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ml_dtypes-0.5.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
157
- mmh3 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/mmh3-5.2.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
158
- more-itertools @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/more_itertools-11.0.1-py3-none-any.whl
159
- mpmath @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/mpmath-1.4.1-py3-none-any.whl
160
- mpmath-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/mpmath-tests.tar
161
- msgpack @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/msgpack-1.1.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
162
- msgspec @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/msgspec-0.20.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
163
- msprime @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/msprime-1.4.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
164
- multidict @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/multidict-6.7.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
165
- munch @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/munch-4.0.0-py2.py3-none-any.whl
166
- mypy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/mypy-1.19.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
167
- mypy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/mypy-tests.tar
168
- narwhals @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/narwhals-2.18.1-py3-none-any.whl
169
- ndindex @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ndindex-1.10.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
170
- ndindex-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ndindex-tests.tar
171
- netcdf4 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/netcdf4-1.7.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
172
- networkx @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/networkx-3.6.1-py3-none-any.whl
173
- networkx-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/networkx-tests.tar
174
- newick @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/newick-1.11.0-py2.py3-none-any.whl
175
- nh3 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/nh3-0.3.4-cp38-abi3-pyemscripten_2026_0_wasm32.whl
176
- nlopt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/nlopt-2.9.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
177
- nltk @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/nltk-3.9.4-py3-none-any.whl
178
- nltk-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/nltk-tests.tar
179
- numcodecs @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/numcodecs-0.15.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
180
- numcodecs-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/numcodecs-tests.tar
181
- numpy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/numpy-2.4.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
182
- numpy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/numpy_tests-2.4.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
183
- openai @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/openai-2.30.0-py3-none-any.whl
184
- opencv-python @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/opencv_python-4.11.0.86-cp314-cp314-pyemscripten_2026_0_wasm32.whl
185
- optlang @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/optlang-1.9.0-py2.py3-none-any.whl
186
- optlang-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/optlang-tests.tar
187
- orjson @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/orjson-3.11.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl
188
- packaging @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/packaging-26.1-py3-none-any.whl
189
- pandas @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pandas-3.0.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
190
- pandas-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pandas-tests.tar
191
- parso @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/parso-0.8.6-py2.py3-none-any.whl
192
- patsy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/patsy-1.0.2-py2.py3-none-any.whl
193
- patsy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/patsy-tests.tar
194
- pcodec @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pcodec-1.0.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
195
- peewee @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/peewee-4.0.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
196
- peewee-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/peewee-tests.tar
197
- phispy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/phispy-5.0.6-cp314-cp314-pyemscripten_2026_0_wasm32.whl
198
- pi-heif @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pi_heif-1.3.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
199
- pillow @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pillow-12.2.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
200
- pillow-heif @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pillow_heif-1.3.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
201
- pkgconfig @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pkgconfig-1.6.0-py3-none-any.whl
202
- platformdirs @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/platformdirs-4.9.4-py3-none-any.whl
203
- pluggy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pluggy-1.6.0-py3-none-any.whl
204
- ply @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ply-3.11-py2.py3-none-any.whl
205
- polars @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/polars-1.33.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
206
- prompt-toolkit @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/prompt_toolkit-3.0.52-py3-none-any.whl
207
- propcache @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/propcache-0.4.1-py3-none-any.whl
208
- protobuf @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/protobuf-7.34.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
209
- pure-eval @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pure_eval-0.2.3-py3-none-any.whl
210
- py @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/py-1.11.0-py2.py3-none-any.whl
211
- pyarrow @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyarrow-22.0.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
212
- pyclipper @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyclipper-1.4.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
213
- pycparser @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pycparser-3.0-py3-none-any.whl
214
- pycryptodome @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pycryptodome-3.23.0-cp37-abi3-pyemscripten_2026_0_wasm32.whl
215
- pycryptodome-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pycryptodome-tests.tar
216
- pydantic @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pydantic-2.12.5-py3-none-any.whl
217
- pydantic-core @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pydantic_core-2.41.5-cp314-cp314-pyemscripten_2026_0_wasm32.whl
218
- pydoc-data @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pydoc_data-1.0.0-py2.py3-none-any.whl
219
- pyerfa @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyerfa-2.0.1.5-cp39-abi3-pyemscripten_2026_0_wasm32.whl
220
- pyerfa-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyerfa-tests.tar
221
- pygame-ce @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pygame_ce-2.5.7-cp314-cp314-pyemscripten_2026_0_wasm32.whl
222
- pygments @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pygments-2.20.0-py3-none-any.whl
223
- pyheif @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyheif-0.8.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
224
- pyiceberg @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyiceberg-0.11.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
225
- pyinstrument @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyinstrument-5.1.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
226
- pymongo @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pymongo-4.16.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
227
- pymupdf @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pymupdf-1.27.2.2-cp314-abi3-pyemscripten_2026_0_wasm32.whl
228
- pynacl @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pynacl-1.6.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
229
- pyodide-http @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyodide_http-0.2.2-py3-none-any.whl
230
- pyodide-unix-timezones @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyodide_unix_timezones-1.0.0-py3-none-any.whl
231
- pyparsing @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyparsing-3.3.2-py3-none-any.whl
232
- pyproj @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyproj-3.7.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
233
- pyroaring @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyroaring-1.0.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
234
- pyrodigal @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyrodigal-3.7.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
235
- pyrodigal-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyrodigal-tests.tar
236
- pyrsistent @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyrsistent-0.20.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
237
- pysam @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pysam-0.23.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
238
- pyshp @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyshp-3.0.3-py3-none-any.whl
239
- pytaglib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pytaglib-3.2.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
240
- pytest @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pytest-9.0.2-py3-none-any.whl
241
- pytest-asyncio @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pytest_asyncio-0.25.3-py3-none-any.whl
242
- pytest-benchmark @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pytest_benchmark-4.0.0-py3-none-any.whl
243
- pytest-httpx @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pytest_httpx-0.36.0-py3-none-any.whl
244
- python-calamine @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/python_calamine-0.6.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
245
- python-dateutil @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/python_dateutil-2.9.0.post0-py2.py3-none-any.whl
246
- python-flint @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/python_flint-0.8.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
247
- python-flirt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/python_flirt-0.9.10-cp314-cp314-pyemscripten_2026_0_wasm32.whl
248
- python-sat @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/python_sat-1.8.dev26-cp314-cp314-pyemscripten_2026_0_wasm32.whl
249
- python-solvespace @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/python_solvespace-3.0.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl
250
- pytz @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pytz-2026.1.post1-py2.py3-none-any.whl
251
- pywavelets @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pywavelets-1.9.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
252
- pywavelets-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pywavelets-tests.tar
253
- pyxirr @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyxirr-0.10.8-cp314-cp314-pyemscripten_2026_0_wasm32.whl
254
- pyyaml @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/pyyaml-6.0.3-cp314-cp314-pyemscripten_2026_0_wasm32.whl
255
- rasterio @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/rasterio-1.5.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
256
- rateslib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/rateslib-2.7.1-cp310-abi3-pyemscripten_2026_0_wasm32.whl
257
- rebound @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/rebound-4.4.7-cp314-cp314-pyemscripten_2026_0_wasm32.whl
258
- reboundx @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/reboundx-4.4.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
259
- referencing @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/referencing-0.37.0-py3-none-any.whl
260
- referencing-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/referencing-tests.tar
261
- regex @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/regex-2026.3.32-cp314-cp314-pyemscripten_2026_0_wasm32.whl
262
- regex-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/regex-tests.tar
263
- requests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/requests-2.33.1-py3-none-any.whl
264
- retrying @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/retrying-1.4.2-py3-none-any.whl
265
- rich @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/rich-14.3.3-py3-none-any.whl
266
- rpds-py @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/rpds_py-0.30.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
267
- ruamel-yaml @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ruamel_yaml-0.19.1-py3-none-any.whl
268
- safetensors @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/safetensors-0.7.0-cp38-abi3-pyemscripten_2026_0_wasm32.whl
269
- scikit-image @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/scikit_image-0.25.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
270
- scikit-image-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/scikit-image-tests.tar
271
- scikit-learn @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/scikit_learn-1.8.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
272
- scikit-learn-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/scikit-learn-tests.tar
273
- scipy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/scipy-1.18.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
274
- scipy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/scipy-tests.tar
275
- screed @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/screed-1.1.3-py2.py3-none-any.whl
276
- screed-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/screed-tests.tar
277
- sentencepiece @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sentencepiece-0.2.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
278
- setuptools @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/setuptools-82.0.1-py3-none-any.whl
279
- setuptools-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/setuptools-tests.tar
280
- shapely @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/shapely-2.1.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
281
- shapely-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/shapely-tests.tar
282
- simplejson @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/simplejson-3.20.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
283
- simplejson-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/simplejson-tests.tar
284
- sisl @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sisl-0.16.4-cp314-cp314-pyemscripten_2026_0_wasm32.whl
285
- sisl-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sisl-tests.tar
286
- six @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/six-1.17.0-py2.py3-none-any.whl
287
- smart-open @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/smart_open-7.5.1-py3-none-any.whl
288
- sniffio @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sniffio-1.3.1-py3-none-any.whl
289
- sniffio-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sniffio-tests.tar
290
- sortedcontainers @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sortedcontainers-2.4.0-py2.py3-none-any.whl
291
- soundfile @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/soundfile-0.12.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
292
- soupsieve @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/soupsieve-2.8.3-py3-none-any.whl
293
- sourmash @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sourmash-4.8.14-py3-none-pyemscripten_2026_0_wasm32.whl
294
- soxr @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/soxr-0.5.0.post1-cp312-abi3-pyemscripten_2026_0_wasm32.whl
295
- sparseqr @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sparseqr-1.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
296
- sqlalchemy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sqlalchemy-2.0.48-cp314-cp314-pyemscripten_2026_0_wasm32.whl
297
- sqlalchemy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sqlalchemy-tests.tar
298
- stack-data @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/stack_data-0.6.3-py3-none-any.whl
299
- starlette @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/starlette-1.0.0-py3-none-any.whl
300
- statsmodels @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/statsmodels-0.14.6-cp314-cp314-pyemscripten_2026_0_wasm32.whl
301
- strictyaml @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/strictyaml-1.7.3-py3-none-any.whl
302
- svgwrite @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/svgwrite-1.4.3-py3-none-any.whl
303
- swiglpk @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/swiglpk-5.0.13-cp314-cp314-pyemscripten_2026_0_wasm32.whl
304
- sympy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sympy-1.14.0-py3-none-any.whl
305
- sympy-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/sympy-tests.tar
306
- tblib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tblib-3.2.2-py3-none-any.whl
307
- termcolor @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/termcolor-3.3.0-py3-none-any.whl
308
- texttable @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/texttable-1.7.0-py2.py3-none-any.whl
309
- texture2ddecoder @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/texture2ddecoder-1.0.6-cp314-cp314-pyemscripten_2026_0_wasm32.whl
310
- threadpoolctl @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/threadpoolctl-3.6.0-py3-none-any.whl
311
- tiktoken @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tiktoken-0.12.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
312
- tomli @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tomli-2.4.1-py3-none-any.whl
313
- tomli-w @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tomli_w-1.2.0-py3-none-any.whl
314
- toolz @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/toolz-1.1.0-py3-none-any.whl
315
- toolz-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/toolz-tests.tar
316
- tqdm @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tqdm-4.67.3-py3-none-any.whl
317
- traitlets @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/traitlets-5.14.3-py3-none-any.whl
318
- traitlets-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/traitlets-tests.tar
319
- traits @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/traits-7.1.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
320
- traits-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/traits-tests.tar
321
- tree-sitter @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tree_sitter-0.23.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
322
- tree-sitter-go @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tree_sitter_go-0.23.3-cp39-abi3-pyemscripten_2026_0_wasm32.whl
323
- tree-sitter-java @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tree_sitter_java-0.23.4-cp39-abi3-pyemscripten_2026_0_wasm32.whl
324
- tree-sitter-python @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tree_sitter_python-0.23.4-cp39-abi3-pyemscripten_2026_0_wasm32.whl
325
- tskit @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tskit-1.0.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
326
- typing-extensions @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/typing_extensions-4.15.0-py3-none-any.whl
327
- typing-inspection @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/typing_inspection-0.4.2-py3-none-any.whl
328
- tzdata @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/tzdata-2025.3-py2.py3-none-any.whl
329
- ujson @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/ujson-5.12.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
330
- uncertainties @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/uncertainties-3.2.3-py3-none-any.whl
331
- unyt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/unyt-3.1.0-py3-none-any.whl
332
- unyt-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/unyt-tests.tar
333
- urllib3 @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/urllib3-2.6.3-py3-none-any.whl
334
- vega-datasets @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/vega_datasets-0.9.0-py3-none-any.whl
335
- vega-datasets-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/vega-datasets-tests.tar
336
- vrplib @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/vrplib-2.1.0-py3-none-any.whl
337
- wcwidth @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/wcwidth-0.6.0-py3-none-any.whl
338
- webencodings @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/webencodings-0.5.1-py2.py3-none-any.whl
339
- wordcloud @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/wordcloud-1.9.6-cp314-cp314-pyemscripten_2026_0_wasm32.whl
340
- wrapt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/wrapt-2.1.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
341
- xarray @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/xarray-2026.2.0-py3-none-any.whl
342
- xarray-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/xarray-tests.tar
343
- xgboost @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/xgboost-2.1.4-py3-none-pyemscripten_2026_0_wasm32.whl
344
- xlrd @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/xlrd-2.0.2-py2.py3-none-any.whl
345
- xxhash @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/xxhash-3.6.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
346
- xyzservices @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/xyzservices-2026.3.0-py3-none-any.whl
347
- xyzservices-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/xyzservices-tests.tar
348
- yarl @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/yarl-1.23.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
349
- yt @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/yt-4.4.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
350
- zarr @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/zarr-3.2.1-py3-none-any.whl
351
- zarr-tests @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/zarr-tests.tar
352
- zengl @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/zengl-2.7.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl
353
- zfpy @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/zfpy-1.0.1-cp314-cp314-pyemscripten_2026_0_wasm32.whl
354
- zstandard @ https://cdn.jsdelivr.net/pyodide/v314.0.4/full/zstandard-0.25.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl
@@ -1,3 +0,0 @@
1
- jupyter-server
2
- jupyterlab
3
- notebook