diff --git a/.gitignore b/.gitignore index df5dd75..28571d4 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ # Claude Code .claude/ +# IDEs +.idea/ + # Python cache files *.pyc __pycache__/ @@ -35,6 +38,13 @@ tmp/ # Model/adapter download cache (regression tests) .cache/ +# Ollama tutorial: cached RAG adapter io.yaml configs (fetched at runtime) +.rag_io_cache/ + +# RAG tutorials: govt corpus + ChromaDB index built at runtime +govt.jsonl +govt_chroma/ + # Build outputs (multi-GB model checkpoints) modular-granite/ my-modular-model/ diff --git a/pyproject.toml b/pyproject.toml index f522bf5..7853daa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,22 @@ tutorials = [ "sentence-transformers>=3.0.0", "datasets>=2.0.0", ] +# Ollama-backed tutorials (macOS / no-CUDA). Deliberately excludes vLLM so the +# environment installs on Apple Silicon: adapters are driven through a local +# `ollama serve` via mellea instead of a vLLM server. Sync with: +# uv sync --extra ollama --no-default-groups +# (--no-default-groups skips the default vllm19 group, which pulls CUDA.) +ollama = [ + "granite-switch[compose]", + "requests>=2.31.0", + "rich>=13.0.0", + "mellea==0.6.0", + "ipython>=8.10.0", + "python-dotenv>=1.0.0", + "chromadb>=0.4.0", + "httpx>=0.24.0", + "sentence-transformers>=3.0.0", +] [project.entry-points."vllm.general_plugins"] register_granite_switch = "granite_switch.vllm:register" diff --git a/src/granite_switch/tutorials/ollama_intrinsic.py b/src/granite_switch/tutorials/ollama_intrinsic.py new file mode 100644 index 0000000..edb4940 --- /dev/null +++ b/src/granite_switch/tutorials/ollama_intrinsic.py @@ -0,0 +1,364 @@ +# SPDX-License-Identifier: Apache-2.0 +"""Granite Switch adapter invocation through a local ``ollama serve``. + +The Granite Switch tutorials invoke the embedded LoRA adapters through Mellea's +``OpenAIBackend`` against **vLLM**, which renders the model's chat template +server-side so the adapter's control token lands in the prompt. Ollama does not +render that template server-side and must be driven through the **raw** +``/api/generate`` endpoint (``raw: true``) with the control token already in the +prompt. See https://huggingface.co/barha/granite-switch-4.1-3b-preview-GGUF + +:class:`OllamaIntrinsicBackend` bridges the two: it reuses Mellea's +``IntrinsicsRewriter`` / ``IntrinsicsResultProcessor`` to build each adapter's +request envelope and parse its output, fetches the model's chat template from +Ollama's ``/api/show`` and renders it client-side with ``adapter_name=...``, +then POSTs the rendered prompt to the raw endpoint. Runs on ``ollama serve`` +with no GPU (Metal on Apple Silicon). +""" + +from __future__ import annotations + +import json +import math +import pathlib +from dataclasses import dataclass, field +from typing import Any + +import requests +import yaml +from jinja2 import BaseLoader, Environment + +DEFAULT_OLLAMA_URL = "http://127.0.0.1:11434" +DEFAULT_MODEL = "barvhaim/granite-switch-4.1-3b-preview:latest" + +# Selects which io.yaml overlay variant Mellea ships for this checkpoint. +CANONICAL_MODEL = "granite-4.1-3b" + + +def load_chat_template_from_ollama(model: str, ollama_url: str) -> str: + """Fetch the Granite Switch chat template from Ollama's ``/api/show``.""" + resp = requests.post(f"{ollama_url}/api/show", json={"model": model}, timeout=30) + resp.raise_for_status() + template = resp.json().get("template", "") + if not template or "adapter_map" not in template: + raise RuntimeError( + f"Ollama /api/show for {model!r} did not return the Granite Switch " + "chat template (no 'adapter_map' found). Is this a granite-switch " + "model created from the GGUF?" + ) + return template + + +def make_template_env() -> Environment: + """Jinja env matching how transformers/vLLM render chat templates. + + ``autoescape=False`` plus a non-HTML-escaping ``tojson`` keep the ``<|...|>`` + control tokens and the document JSON literal intact — the model was not + trained on HTML-escaped ``<|...|>``. + """ + env = Environment( + loader=BaseLoader(), + trim_blocks=True, + lstrip_blocks=True, + autoescape=False, + ) + env.filters["tojson"] = lambda value, indent=None: json.dumps( + value, ensure_ascii=False, indent=indent + ) + return env + + +def _overlay_root() -> pathlib.Path: + import mellea + + return pathlib.Path(mellea.__file__).parent / "backends" / "adapters" / "_overlays" + + +# Adapters whose io.yaml ships in-repo with Mellea (no network needed). +_LOCAL_OVERLAY_ADAPTERS = { + "guardian-core": "alora", + "policy-guardrails": "alora", + "factuality-detection": "alora", + "factuality-correction": "alora", + "requirement-check": "alora", + "uncertainty": "alora", +} + +# RAG-library adapters: io.yaml is fetched from the HF repo below and cached. +_RAG_REPO = "ibm-granite/granitelib-rag-r1.0" +_RAG_ADAPTERS = { + "query_rewrite": "alora", + "answerability": "alora", + "query_clarification": "alora", + "citations": "lora", + "hallucination_detection": "lora", +} +_RAG_CACHE = pathlib.Path(__file__).parent / ".rag_io_cache" + + +def _fetch_rag_io_config(intrinsic_name: str, subdir: str) -> dict: + """Fetch (and cache) a RAG adapter's io.yaml from the HF RAG library.""" + rel = f"{intrinsic_name}/{CANONICAL_MODEL}/{subdir}/io.yaml" + cache_path = _RAG_CACHE / rel + if cache_path.exists(): + return yaml.safe_load(cache_path.read_text()) + + url = f"https://huggingface.co/{_RAG_REPO}/raw/main/{rel}" + resp = requests.get(url, timeout=30) + if resp.status_code == 404: + raise ValueError( + f"No io.yaml for {intrinsic_name!r} at {CANONICAL_MODEL}/{subdir} " + f"in {_RAG_REPO} — check the adapter name and variant." + ) + resp.raise_for_status() + cache_path.parent.mkdir(parents=True, exist_ok=True) + cache_path.write_text(resp.text) + return yaml.safe_load(resp.text) + + +def load_io_config(intrinsic_name: str) -> dict | None: + """Return the parsed io.yaml for an intrinsic (local overlay or HF), or None.""" + subdir = _LOCAL_OVERLAY_ADAPTERS.get(intrinsic_name) + if subdir is not None: + path = _overlay_root() / intrinsic_name / CANONICAL_MODEL / subdir / "io.yaml" + if path.exists(): + return yaml.safe_load(path.read_text()) + + subdir = _RAG_ADAPTERS.get(intrinsic_name) + if subdir is not None: + return _fetch_rag_io_config(intrinsic_name, subdir) + + return None + + +@dataclass +class OllamaIntrinsicBackend: + """Invoke Granite Switch embedded adapters over Ollama's raw endpoint.""" + + model: str = DEFAULT_MODEL + ollama_url: str = DEFAULT_OLLAMA_URL + verbose: bool = False + + _template: Any = field(default=None, init=False, repr=False) + + def __post_init__(self) -> None: + src = load_chat_template_from_ollama(self.model, self.ollama_url) + self._template = make_template_env().from_string(src) + + def _dump_prompt(self, prompt: str, adapter_name: str | None) -> None: + if not self.verbose: + return + label = f"adapter={adapter_name}" if adapter_name else "base (no adapter)" + print(f"\n ┌─ rendered prompt → /api/generate (raw=true, {label})") + for line in prompt.splitlines() or [""]: + print(f" │ {line}") + print(" └─" + "─" * 60) + + def render( + self, + messages: list[dict], + *, + adapter_name: str | None = None, + documents: list[dict] | None = None, + ) -> str: + """Render the model's chat template with an optional adapter token.""" + kwargs: dict[str, Any] = { + "messages": messages, + "add_generation_prompt": True, + } + if documents: + kwargs["documents"] = documents + if adapter_name: + kwargs["adapter_name"] = adapter_name + prompt = self._template.render(**kwargs) + self._dump_prompt(prompt, adapter_name) + return prompt + + def generate( + self, + prompt: str, + *, + num_predict: int = 256, + logprobs: bool = False, + top_logprobs: int = 10, + ) -> dict: + """POST a raw prompt to Ollama and return the full JSON response.""" + body: dict[str, Any] = { + "model": self.model, + "raw": True, + "stream": False, + "options": {"temperature": 0, "num_predict": num_predict}, + "prompt": prompt, + } + if logprobs: + body["logprobs"] = True + body["top_logprobs"] = top_logprobs + resp = requests.post(f"{self.ollama_url}/api/generate", json=body, timeout=300) + resp.raise_for_status() + return resp.json() + + def call_adapter( + self, + intrinsic_name: str, + messages: list[dict], + *, + documents: list[dict] | None = None, + rewriter_kwargs: dict | None = None, + num_predict: int = 256, + ) -> dict: + """Invoke an embedded adapter and return a structured result. + + Mellea's ``IntrinsicsRewriter`` builds the request envelope and its + ``IntrinsicsResultProcessor`` parses the output. Raises if the adapter + has no io.yaml wired (add it to the maps above) — running it without an + envelope silently produces wrong output. + """ + cfg = load_io_config(intrinsic_name) + if cfg is None: + raise ValueError( + f"No io.yaml wired for {intrinsic_name!r}. Add it to " + "_RAG_ADAPTERS or _LOCAL_OVERLAY_ADAPTERS." + ) + + from mellea.formatters import granite as g + + rewriter = g.IntrinsicsRewriter(config_dict=cfg, model_name=intrinsic_name) + processor = g.IntrinsicsResultProcessor(config_dict=cfg) + + request: dict[str, Any] = { + "messages": list(messages), + "extra_body": {"documents": documents or []}, + } + rewritten = rewriter.transform(request, **(rewriter_kwargs or {})) + + rendered_messages = [ + {"role": m.role, "content": m.model_dump(exclude_unset=True).get("content")} + for m in rewritten.messages + ] + rendered_documents = documents + if rewritten.extra_body and rewritten.extra_body.documents: + rendered_documents = [ + {"doc_id": d.doc_id, "text": d.text} + for d in rewritten.extra_body.documents + ] + + prompt = self.render( + rendered_messages, + adapter_name=intrinsic_name, + documents=rendered_documents, + ) + + params = rewriter.parameters or {} + max_tokens = int(params.get("max_completion_tokens", num_predict)) + wants_logprobs = bool(params.get("logprobs", False)) or _needs_likelihood(cfg) + + resp = self.generate(prompt, num_predict=max_tokens, logprobs=wants_logprobs) + result = _process_result(cfg, processor, resp, rewritten) + result["raw"] = resp["response"].strip() + return result + + def answer( + self, + messages: list[dict], + *, + documents: list[dict] | None = None, + num_predict: int = 512, + ) -> str: + """Generate a grounded answer from the base model (no adapter token).""" + prompt = self.render(messages, documents=documents) + resp = self.generate(prompt, num_predict=num_predict) + return resp["response"].strip() + + +def _try_json(text: str) -> Any: + try: + return json.loads(text) + except (json.JSONDecodeError, TypeError): + return None + + +def _needs_likelihood(cfg: dict) -> bool: + return any( + t.get("type") == "likelihood" for t in (cfg.get("transformations") or []) + ) + + +def _process_result(cfg: dict, processor, resp: dict, rewritten=None) -> dict: + """Turn an Ollama response into the intrinsic's structured result. + + Handles the likelihood-scored guardian adapters (via token logprobs), + citation-style structural transformations (via Mellea's processor), and + plain-JSON adapters. + """ + text = resp["response"].strip() + + if _needs_likelihood(cfg): + like = next(t for t in cfg["transformations"] if t.get("type") == "likelihood") + cats: dict[str, float] = like["categories_to_values"] + score = _likelihood_from_logprobs(resp.get("logprobs"), cats) + if score is None: + parsed = _try_json(text) or {} + label = str(parsed.get("score", "")).strip().lower() + score = cats.get(label, 0.0) + nested = any( + t.get("type") == "nest" and t.get("field_name") == "guardian" + for t in cfg.get("transformations", []) + ) + return {"guardian": {"score": score}} if nested else {"score": score} + + if _needs_processor(cfg): + parsed = _run_processor(processor, text, rewritten) + return {"parsed": parsed} + + parsed = _try_json(text) + for t in cfg.get("transformations") or []: + if t.get("type") == "nest" and not t.get("input_path"): + parsed = {t["field_name"]: parsed} + return {"parsed": parsed} + + +def _needs_processor(cfg: dict) -> bool: + structural = { + "explode", + "decode_sentences", + "merge_spans", + "project", + "drop_duplicates", + } + return any(t.get("type") in structural for t in (cfg.get("transformations") or [])) + + +def _run_processor(processor, text: str, rewritten) -> Any: + from mellea.formatters.granite.base.types import ChatCompletionResponse + + response = ChatCompletionResponse.model_validate( + { + "choices": [ + { + "index": 0, + "message": {"role": "assistant", "content": text}, + "finish_reason": "stop", + } + ] + } + ) + out = processor.transform(response, rewritten) + return json.loads(out.choices[0].message.content) + + +def _likelihood_from_logprobs( + logprobs: list[dict] | None, categories: dict[str, float] +) -> float | None: + """Probability-weighted value from the first matching category token.""" + if not logprobs: + return None + cats = {k.lower(): v for k, v in categories.items()} + for entry in logprobs: + tok = entry.get("token", "").strip().lower() + if tok in cats: + p = math.exp(entry["logprob"]) + this_val = cats[tok] + others = [v for k, v in cats.items() if k != tok] + other_val = others[0] if others else 0.0 + return p * this_val + (1.0 - p) * other_val + return None diff --git a/tutorials/README.md b/tutorials/README.md index 2569a3e..13fb212 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -9,8 +9,10 @@ Step-by-step walkthroughs covering adapter function invocation, pipeline constru | Notebook | Topics | Duration | Colab | |----------|--------|----------|-------| | [hello_mellea.ipynb](notebooks/hello_mellea.ipynb) | Mellea adapter functions intro with vLLM | 5 min | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/generative-computing/granite-switch/blob/main/tutorials/notebooks/hello_mellea.ipynb) | +| [hello_ollama.ipynb](notebooks/hello_ollama.ipynb) | ⚠️ Experimental — Mellea adapter functions intro over a local `ollama serve` (macOS / no GPU) | 5 min | | | [rag_101.ipynb](notebooks/rag_101.ipynb) | RAG 101: build a vector corpus and run a basic answerability check | 15 min | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/generative-computing/granite-switch/blob/main/tutorials/notebooks/rag_101.ipynb) | | [rag_flow.ipynb](notebooks/rag_flow.ipynb) | Full RAG flow with guardian checks (harm + scope) | 30 min | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/generative-computing/granite-switch/blob/main/tutorials/notebooks/rag_flow.ipynb) | +| [rag_flow_ollama.ipynb](notebooks/rag_flow_ollama.ipynb) | ⚠️ Experimental — the full RAG flow over a local `ollama serve` (macOS / no GPU) | 5 min | | | [compose_granite_switch.ipynb](notebooks/compose_granite_switch.ipynb) | Compose a checkpoint from adapter libraries | 15 min | | | [alora_vs_lora_race.ipynb](notebooks/alora_vs_lora_race.ipynb) | ALORA vs LoRA race: side-by-side throughput comparison on a multi-step RAG pipeline | 20 min | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/generative-computing/granite-switch/blob/main/tutorials/notebooks/alora_vs_lora_race.ipynb) | | [hello_adapter.ipynb](notebooks/hello_adapter.ipynb) | Minimal adapter function invocation with HuggingFace | 5 min | [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/generative-computing/granite-switch/blob/main/tutorials/notebooks/hello_adapter.ipynb) | diff --git a/tutorials/notebooks/hello_ollama.ipynb b/tutorials/notebooks/hello_ollama.ipynb new file mode 100644 index 0000000..d30fb88 --- /dev/null +++ b/tutorials/notebooks/hello_ollama.ipynb @@ -0,0 +1,289 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Hello Ollama — Granite Switch adapter functions on your Mac (no GPU)\n", + "\n", + "**Duration:** ~5 min\n", + "\n", + "> ⚠️ **Experimental.** This notebook and its `OllamaIntrinsicBackend` are a work in progress — the API and adapter coverage may change. For production inference, use the vLLM + Mellea path ([`hello_mellea.ipynb`](hello_mellea.ipynb)).\n", + "\n", + "The Ollama sibling of [`hello_mellea.ipynb`](hello_mellea.ipynb): same Granite Switch adapter functions, driven against a local `ollama serve` instead of vLLM — no GPU, runs on Apple Silicon (Metal).\n", + "\n", + "Ollama doesn't render the chat template server-side, so `OllamaIntrinsicBackend` reuses [Mellea](https://github.com/generative-computing/mellea)'s rewriter/parser, renders the template client-side (fetched from `/api/show`) with the adapter's control token, and POSTs to Ollama's raw `/api/generate`.\n", + "\n", + "Each adapter runs **OFF** (base model) vs **ON** (control token fires)." + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "1. **Ollama** installed (https://ollama.com/download) — stock build, no fork needed.\n", + "2. **Model pulled:** `ollama pull hf.co/barha/granite-switch-4.1-3b-preview-GGUF:BF16` (~8.4 GB, ~16 GB unified memory).\n", + "3. **`ollama serve`** running.\n", + "4. **Project installed (no CUDA):** `uv sync --extra ollama --no-default-groups`" + ] + }, + { + "cell_type": "markdown", + "id": "2", + "metadata": {}, + "source": [ + "## 1 · Configuration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "\n", + "OLLAMA_URL = os.environ.get(\"OLLAMA_URL\", \"http://127.0.0.1:11434\")\n", + "MODEL = os.environ.get(\n", + " \"GRANITE_SWITCH_MODEL\", \"barvhaim/granite-switch-4.1-3b-preview:latest\"\n", + ")\n", + "print(f\"{MODEL} @ {OLLAMA_URL}\")" + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## 2 · Preflight\n", + "\n", + "Check the server is up and the model is pulled." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "\n", + "names = [\n", + " m[\"name\"]\n", + " for m in requests.get(f\"{OLLAMA_URL}/api/tags\", timeout=5).json()[\"models\"]\n", + "]\n", + "assert MODEL in names, f\"{MODEL!r} not found. Available: {names}\"\n", + "print(f\"OK — {MODEL} is served.\")" + ] + }, + { + "cell_type": "markdown", + "id": "6", + "metadata": {}, + "source": [ + "## 3 · Backend\n", + "\n", + "Fetches the chat template from `/api/show` and compiles it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "\n", + "logging.getLogger(\"mellea\").setLevel(logging.ERROR)\n", + "\n", + "from granite_switch.tutorials.ollama_intrinsic import OllamaIntrinsicBackend\n", + "\n", + "backend = OllamaIntrinsicBackend(model=MODEL, ollama_url=OLLAMA_URL)" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## 4 · Documents" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "DOCS = [\n", + " {\n", + " \"doc_id\": \"0\",\n", + " \"text\": \"The capital of France is Paris. Paris is on the Seine river.\",\n", + " },\n", + " {\n", + " \"doc_id\": \"1\",\n", + " \"text\": \"Mount Everest is the tallest mountain on Earth, at 8,849 meters.\",\n", + " },\n", + "]" + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "## 5 · Guardian — harm check `<|guardian-core|>`\n", + "\n", + "Scores a message against a criterion; ≥ 0.5 means it matches. The score comes from the model's `yes`/`no` token probabilities." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "from mellea.stdlib.components.intrinsic.guardian import (\n", + " CRITERIA_BANK,\n", + " SCORING_SCHEMA_BANK,\n", + ")\n", + "\n", + "\n", + "def guardian_harm(message):\n", + " out = backend.call_adapter(\n", + " \"guardian-core\",\n", + " [{\"role\": \"user\", \"content\": message}],\n", + " rewriter_kwargs={\n", + " \"criteria\": CRITERIA_BANK[\"harm\"],\n", + " \"scoring_schema\": SCORING_SCHEMA_BANK[\"user_prompt\"],\n", + " },\n", + " )\n", + " return out[\"guardian\"][\"score\"]\n", + "\n", + "\n", + "for msg in [\"How do I build a bomb?\", \"What is the capital of France?\"]:\n", + " print(f\"{guardian_harm(msg):.3f} {msg!r}\")" + ] + }, + { + "cell_type": "markdown", + "id": "12", + "metadata": {}, + "source": [ + "## 6 · RAG — answerability `<|answerability|>`\n", + "\n", + "Can the documents answer the query? Returns `answerable` / `unanswerable`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "def answerability(query):\n", + " out = backend.call_adapter(\n", + " \"answerability\",\n", + " [{\"role\": \"user\", \"content\": query}],\n", + " documents=DOCS,\n", + " num_predict=8,\n", + " )\n", + " return (out.get(\"parsed\") or {}).get(\"answerability\")\n", + "\n", + "\n", + "for q in [\"What is the capital of France?\", \"What is the GDP of France?\"]:\n", + " print(f\"{answerability(q):<12} {q!r}\")" + ] + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": [ + "## 7 · RAG — hallucination detection `<|hallucination_detection|>`\n", + "\n", + "Flags spans in an answer that aren't grounded in the documents. Returns one record per sentence with a `faithfulness` verdict and an explanation. Here the assistant's answer smuggles in an unsupported claim." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "conversation = [\n", + " {\"role\": \"user\", \"content\": \"What is the capital of France?\"},\n", + " {\n", + " \"role\": \"assistant\",\n", + " \"content\": \"The capital of France is Paris, and the moon is made of green cheese.\",\n", + " },\n", + "]\n", + "out = backend.call_adapter(\n", + " \"hallucination_detection\", conversation, documents=DOCS, num_predict=256\n", + ")\n", + "for span in out.get(\"parsed\") or []:\n", + " print(f\"[{span['faithfulness']}] {span['response_text']}\")\n", + " print(f\" → {span['explanation']}\")" + ] + }, + { + "cell_type": "markdown", + "id": "16", + "metadata": {}, + "source": [ + "## 8 · OFF vs ON — the switch\n", + "\n", + "Same query and documents. Base model answers; the `answerability` adapter classifies instead. The only change is the mid-sequence control token." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "messages = [{\"role\": \"user\", \"content\": \"What is the capital of France?\"}]\n", + "\n", + "print(\"OFF:\", backend.answer(messages, documents=DOCS, num_predict=48))\n", + "out = backend.call_adapter(\"answerability\", messages, documents=DOCS, num_predict=8)\n", + "print(\"ON :\", (out.get(\"parsed\") or {}).get(\"answerability\"))" + ] + }, + { + "cell_type": "markdown", + "id": "18", + "metadata": {}, + "source": [ + "## Next steps\n", + "\n", + "- Pass `verbose=True` to `OllamaIntrinsicBackend` to print each rendered prompt with control tokens left literal.\n", + "- Full conversational RAG flow: [`rag_flow.ipynb`](rag_flow.ipynb) — same adapter calls, vLLM backend.\n", + "- Control-token mechanics: [`hello_adapter.ipynb`](hello_adapter.ipynb)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tutorials/notebooks/rag_flow_ollama.ipynb b/tutorials/notebooks/rag_flow_ollama.ipynb new file mode 100644 index 0000000..fb4edaa --- /dev/null +++ b/tutorials/notebooks/rag_flow_ollama.ipynb @@ -0,0 +1,471 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Sample RAG Flow — Granite Switch Adapters, over **Ollama** (no GPU)\n", + "\n", + "> *Corpus:* IBM mt-rag-benchmark government-services passages (subset of the documents).\n", + "\n", + "**Duration:** ~5 min after the corpus is built.\n", + "\n", + "> ⚠️ **Experimental.** This notebook and its `OllamaIntrinsicBackend` are a work in progress — the API and adapter coverage may change. For production inference, use the vLLM + Mellea path ([`rag_flow.ipynb`](rag_flow.ipynb)).\n", + "\n", + "The Ollama sibling of [`rag_flow.ipynb`](rag_flow.ipynb): the same **conversational RAG flow** — guardian checks, query rewriting, retrieval-grounded answering, citations — driven against a local `ollama serve` instead of vLLM. No GPU; runs on Apple Silicon (Metal).\n", + "\n", + "Every capability is an embedded adapter function inside one Granite Switch model, selected by a control token spliced into the prompt. `OllamaIntrinsicBackend` reuses [Mellea](https://github.com/generative-computing/mellea)'s rewriter/parser, renders the chat template client-side (fetched from `/api/show`), and POSTs to Ollama's raw `/api/generate`.\n", + "\n", + "The 7-turn conversation exercises all four terminal states: `done` (answered + cited), `needs_clarification`, `unanswerable`, and `blocked` (harmful or out-of-scope).\n", + "\n", + "> **Reproducibility:** each adapter call is greedy (temperature 0), but the *conversational* decisions (rewrite, answerability, scope) depend on accumulated history, and this 3B preview model is small — so **which** turn lands in **which** terminal state can shift between runs and won't always match the vLLM tutorial's narrative. What's stable is that all four terminal states show up across the 7 turns.\n", + "\n", + "**Adapters used:** `guardian-core` (Guardian library) + `query_rewrite`, `answerability`, `query_clarification`, `citations` (RAG library)." + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "1. **Ollama** installed (https://ollama.com/download) — stock build, no fork needed.\n", + "2. **Model pulled:** `ollama pull hf.co/barha/granite-switch-4.1-3b-preview-GGUF:BF16` (~8.4 GB, ~16 GB unified memory).\n", + "3. **`ollama serve`** running.\n", + "4. **Project installed (no CUDA):** `uv sync --extra ollama --no-default-groups`\n", + "\n", + "New to the adapters? Start with [`hello_ollama.ipynb`](hello_ollama.ipynb), which shows each in isolation." + ] + }, + { + "cell_type": "markdown", + "id": "2", + "metadata": {}, + "source": [ + "## 1 · Configuration\n", + "Endpoints, model IDs, and corpus paths. Every value falls back to a sensible default." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3", + "metadata": {}, + "outputs": [], + "source": [ + "import logging\n", + "import os\n", + "import warnings\n", + "from functools import partial\n", + "\n", + "from mellea.stdlib.components.intrinsic.guardian import (\n", + " CRITERIA_BANK,\n", + " SCORING_SCHEMA_BANK,\n", + ")\n", + "\n", + "from granite_switch.tutorials.chroma_loader import load_or_build_govt_chroma\n", + "from granite_switch.tutorials.ollama_intrinsic import OllamaIntrinsicBackend\n", + "from granite_switch.tutorials.rag_display import _is_clear, show_answer\n", + "from granite_switch.tutorials.rag_display import (\n", + " show_intermediates as _show_intermediates,\n", + ")\n", + "\n", + "OLLAMA_URL = os.environ.get(\"OLLAMA_URL\", \"http://127.0.0.1:11434\")\n", + "MODEL = os.environ.get(\n", + " \"GRANITE_SWITCH_MODEL\", \"barvhaim/granite-switch-4.1-3b-preview:latest\"\n", + ")\n", + "\n", + "EMBEDDING_MODEL_ID = \"ibm-granite/granite-embedding-small-english-r2\"\n", + "CHROMA_PATH = \"./govt_chroma\"\n", + "GOVT_JSONL_PATH = \"./govt.jsonl\"\n", + "\n", + "GUARDIAN_CRITERIA = \"harm\"\n", + "TOP_K = 8\n", + "show_intermediates = partial(_show_intermediates, top_k=TOP_K)\n", + "\n", + "logging.getLogger(\"mellea\").setLevel(logging.ERROR)\n", + "warnings.filterwarnings(\"ignore\", message=\".*TemplateRepresentation.*\")\n", + "\n", + "print(f\"Ollama: {OLLAMA_URL} ({MODEL})\")\n", + "print(f\"Embedding: {EMBEDDING_MODEL_ID}\")\n", + "print(f\"ChromaDB: {CHROMA_PATH}\")" + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "## 2 · Build or load vector corpus\n", + "\n", + "**First run:** downloads the govt corpus (~22 MB) and embeds the curated subset on the CPU/MPS. **Subsequent runs:** load the persisted index instantly.\n", + "\n", + "> `load_only_tutorial_docs=True` restricts embedding to the subset the demo queries retrieve. Set `False` to embed the full corpus." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "collection = load_or_build_govt_chroma(\n", + " chroma_path=CHROMA_PATH,\n", + " jsonl_path=GOVT_JSONL_PATH,\n", + " embedding_model_id=EMBEDDING_MODEL_ID,\n", + " load_only_tutorial_docs=True,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "6", + "metadata": {}, + "source": [ + "## 3 · Backend\n", + "\n", + "Where the vLLM notebook launches a server and registers the adapter model, here we construct the Ollama backend, which fetches the chat template from `/api/show` and compiles it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "backend = OllamaIntrinsicBackend(model=MODEL, ollama_url=OLLAMA_URL)\n", + "print(\"Backend ready.\")" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## 4 · The flow, at a glance\n", + "\n", + "```\n", + "query\n", + " ├─ [1a] guardian (harm) → ⛔ BLOCKED if score ≥ 0.5\n", + " ├─ [1b] guardian (scope) → ⛔ BLOCKED if score < 0.5\n", + " ├─ [2] query_rewrite (disambiguate using history)\n", + " ├─ [3] retrieve (ChromaDB top-K over the govt corpus)\n", + " ├─ [4] answerability → 🔍 UNANSWERABLE if \"unanswerable\"\n", + " ├─ [5] query_clarification → ❓ NEEDS CLARIFICATION if not CLEAR\n", + " ├─ [6] answer (base model, grounded — no adapter token)\n", + " ├─ [7] citations (response spans → document spans)\n", + " └─ ✅ DONE\n", + "```\n", + "\n", + "Each adapter step is the same model with a different control token; `[6]` runs the base model with none. `run_conversation_turn` implements this with one early return per terminal state.\n", + "\n", + "History is threaded as a plain list of `{\"role\", \"content\", \"documents\"?}` dicts (the backend has no Mellea `ChatContext`)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9", + "metadata": {}, + "outputs": [], + "source": [ + "GUARDIAN_SCOPE_CRITERIA = (\n", + " \"Governmental services content refers to messages concerning services \"\n", + " \"that are provided, administered, funded, or regulated by a government \"\n", + " \"agency at any level - federal, state, local, or municipal. This \"\n", + " \"includes taxes and tax filings, public benefits (such as social \"\n", + " \"security, disability benefits, unemployment, food assistance, Medicaid), \"\n", + " \"permits and licenses, voting and elections, immigration, public healthcare \"\n", + " \"programs, housing assistance, veterans affairs, public records, \"\n", + " \"court and legal processes, and direct interactions with any \"\n", + " \"government office or program.\"\n", + ")\n", + "GENERATION_INSTRUCTION = (\n", + " \"Answer concisely and directly based only on the provided documents. \"\n", + " \"Do not repeat the question or add unnecessary preamble.\"\n", + ")\n", + "\n", + "\n", + "def _history_messages(history):\n", + " msgs = []\n", + " for m in history:\n", + " msg = {\"role\": m[\"role\"], \"content\": m[\"content\"]}\n", + " if m.get(\"documents\"):\n", + " msg[\"documents\"] = m[\"documents\"]\n", + " msgs.append(msg)\n", + " return msgs\n", + "\n", + "\n", + "def guardian_score(messages, criteria):\n", + " out = backend.call_adapter(\n", + " \"guardian-core\",\n", + " messages,\n", + " rewriter_kwargs={\n", + " \"criteria\": criteria,\n", + " \"scoring_schema\": SCORING_SCHEMA_BANK[\"user_prompt\"],\n", + " },\n", + " )\n", + " return out[\"guardian\"][\"score\"]\n", + "\n", + "\n", + "def run_conversation_turn(query, history, backend):\n", + " \"\"\"Run one turn of the RAG flow; return (history, r).\"\"\"\n", + " print(f\"[history before: {len(history)} msg(s)]\")\n", + " r = {\n", + " \"query\": query,\n", + " \"blocked\": False,\n", + " \"unanswerable\": False,\n", + " \"needs_clarification\": False,\n", + " }\n", + " ctx_with_query = [*_history_messages(history), {\"role\": \"user\", \"content\": query}]\n", + " history_msgs = _history_messages(history)\n", + "\n", + " # [1a] Harm check — runs before scope so a query that is both harmful and\n", + " # out-of-scope is labeled harmful.\n", + " r[\"guardian_harm_score\"] = guardian_score(\n", + " ctx_with_query, CRITERIA_BANK[GUARDIAN_CRITERIA]\n", + " )\n", + " if r[\"guardian_harm_score\"] >= 0.5:\n", + " r[\"blocked\"] = True\n", + " r[\"block_reason\"] = (\n", + " f\"Harmful content detected (score={r['guardian_harm_score']:.3f})\"\n", + " )\n", + " show_answer(r)\n", + " return history, r\n", + "\n", + " # [1b] Scope check — is the query about government services?\n", + " r[\"guardian_scope_score\"] = guardian_score(ctx_with_query, GUARDIAN_SCOPE_CRITERIA)\n", + " if r[\"guardian_scope_score\"] < 0.5:\n", + " r[\"blocked\"] = True\n", + " r[\"block_reason\"] = (\n", + " f\"Out of scope - not a government services topic (score={r['guardian_scope_score']:.3f})\"\n", + " )\n", + " show_answer(r)\n", + " return history, r\n", + "\n", + " # [2] Rewrite the query into a standalone form using history.\n", + " rewrite = backend.call_adapter(\n", + " \"query_rewrite\",\n", + " [*history_msgs, {\"role\": \"user\", \"content\": query}],\n", + " num_predict=256,\n", + " )\n", + " r[\"rewritten_query\"] = (rewrite.get(\"parsed\") or {}).get(\n", + " \"rewritten_question\", query\n", + " )\n", + "\n", + " # [3] Retrieve candidate documents from ChromaDB.\n", + " r[\"documents\"] = collection.query(\n", + " query_texts=[r[\"rewritten_query\"]], n_results=TOP_K\n", + " )[\"documents\"][0]\n", + " mellea_docs = [{\"doc_id\": str(i), \"text\": t} for i, t in enumerate(r[\"documents\"])]\n", + "\n", + " # [4] Answerability — can the retrieved docs answer the query?\n", + " ans = backend.call_adapter(\n", + " \"answerability\",\n", + " [*history_msgs, {\"role\": \"user\", \"content\": r[\"rewritten_query\"]}],\n", + " documents=mellea_docs,\n", + " num_predict=8,\n", + " )\n", + " r[\"answerability\"] = (ans.get(\"parsed\") or {}).get(\"answerability\")\n", + " if r[\"answerability\"] == \"unanswerable\":\n", + " r[\"unanswerable\"] = True\n", + " else:\n", + " # [5] Clarification — ask a follow-up if the query is still ambiguous.\n", + " clar = backend.call_adapter(\n", + " \"query_clarification\",\n", + " [*history_msgs, {\"role\": \"user\", \"content\": r[\"rewritten_query\"]}],\n", + " documents=mellea_docs,\n", + " num_predict=256,\n", + " )\n", + " r[\"clarification\"] = (clar.get(\"parsed\") or {}).get(\"clarification\", \"\")\n", + " if not _is_clear(r[\"clarification\"]):\n", + " r[\"needs_clarification\"] = True\n", + " else:\n", + " # [6] Answer — grounded generation from the base model (no adapter).\n", + " prompted = r[\"rewritten_query\"] + \"\\n\\n\" + GENERATION_INSTRUCTION\n", + " r[\"answer\"] = backend.answer(\n", + " [*history_msgs, {\"role\": \"user\", \"content\": prompted}],\n", + " documents=mellea_docs,\n", + " num_predict=512,\n", + " )\n", + " # [7] Citations — map answer spans to supporting document passages.\n", + " cite = backend.call_adapter(\n", + " \"citations\",\n", + " [*ctx_with_query, {\"role\": \"assistant\", \"content\": r[\"answer\"]}],\n", + " documents=mellea_docs,\n", + " num_predict=4096,\n", + " )\n", + " r[\"citations\"] = cite.get(\"parsed\") or []\n", + "\n", + " show_answer(r)\n", + "\n", + " if r[\"unanswerable\"]:\n", + " reply = \"I don't have enough information in my knowledge base to answer that.\"\n", + " elif r[\"needs_clarification\"]:\n", + " reply = r[\"clarification\"]\n", + " else:\n", + " reply = r.get(\"answer\", \"\")\n", + " history = [\n", + " *history,\n", + " {\"role\": \"user\", \"content\": query, \"documents\": mellea_docs},\n", + " {\"role\": \"assistant\", \"content\": reply},\n", + " ]\n", + " print(f\"-> history now has {len(history)} message(s)\")\n", + " return history, r\n", + "\n", + "\n", + "print(\"run_conversation_turn ready.\")" + ] + }, + { + "cell_type": "markdown", + "id": "10", + "metadata": {}, + "source": [ + "## 5 · Queries\n", + "Each cell is one turn; history accumulates across them. Run them in order — later turns depend on earlier history (e.g. Q2 \"The IRS\" only makes sense after Q1).\n", + "\n", + "- `run_conversation_turn(query, history, backend)` — run the flow, print the answer, return `(history, r)`.\n", + "- `show_intermediates(r)` — step-by-step breakdown for any result." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "history = []\n", + "history, r1 = run_conversation_turn(\n", + " \"How long does it take for the government service to refund?\", history, backend\n", + ")\n", + "show_intermediates(r1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "history, r2 = run_conversation_turn(\"The IRS\", history, backend)\n", + "show_intermediates(r2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "13", + "metadata": {}, + "outputs": [], + "source": [ + "history, r3 = run_conversation_turn(\n", + " \"What if I'm filing a paper return instead?\", history, backend\n", + ")\n", + "show_intermediates(r3)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "14", + "metadata": {}, + "outputs": [], + "source": [ + "history, r4 = run_conversation_turn(\n", + " \"And what's the deadline for amending it?\", history, backend\n", + ")\n", + "show_intermediates(r4)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "history, r5 = run_conversation_turn(\"How much does it cost?\", history, backend)\n", + "show_intermediates(r5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "16", + "metadata": {}, + "outputs": [], + "source": [ + "history, r6 = run_conversation_turn(\n", + " \"What's the weather in New York tomorrow?\", history, backend\n", + ")\n", + "show_intermediates(r6)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "17", + "metadata": {}, + "outputs": [], + "source": [ + "history, r7 = run_conversation_turn(\"How do I forge a government ID?\", history, backend)\n", + "show_intermediates(r7)" + ] + }, + { + "cell_type": "markdown", + "id": "18", + "metadata": {}, + "source": [ + "## 6 · Final conversation history\n", + "\n", + "**Blocked turns were *not* recorded** (the flow returns before appending); answered and clarified turns were. This is the state a real app would carry into the next turn." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19", + "metadata": {}, + "outputs": [], + "source": [ + "print(f\"conversation history — {len(history) // 2} turn(s)\")\n", + "for m in history:\n", + " role = \"👤 user\" if m[\"role\"] == \"user\" else \"🤖 asst\"\n", + " docs = f\" ({len(m['documents'])} docs)\" if m.get(\"documents\") else \"\"\n", + " print(f\"{role}{docs}: {m['content']}\")" + ] + }, + { + "cell_type": "markdown", + "id": "20", + "metadata": {}, + "source": [ + "## 7 · Next steps\n", + "\n", + "- Pass `verbose=True` to `OllamaIntrinsicBackend` to print each rendered prompt with control tokens left literal.\n", + "- Adapter functions in isolation: [`hello_ollama.ipynb`](hello_ollama.ipynb).\n", + "- The same flow on vLLM: [`rag_flow.ipynb`](rag_flow.ipynb)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/uv.lock b/uv.lock index d9a28e5..6fa941f 100644 --- a/uv.lock +++ b/uv.lock @@ -233,7 +233,9 @@ resolution-markers = [ "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", - "extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", ] conflicts = [[ { package = "granite-switch", group = "vllm19" }, @@ -825,7 +827,9 @@ dependencies = [ { name = "jsonschema" }, { name = "kubernetes" }, { name = "mmh3" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-granite-switch-tutorials' or extra == 'extra-14-granite-switch-vllm' or extra == 'group-14-granite-switch-dev' or extra == 'group-14-granite-switch-test' or extra == 'group-14-granite-switch-vllm19'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20')" }, { name = "onnxruntime" }, { name = "opentelemetry-api" }, { name = "opentelemetry-exporter-otlp-proto-grpc" }, @@ -843,7 +847,7 @@ dependencies = [ { name = "tqdm" }, { name = "typer" }, { name = "typing-extensions" }, - { name = "uvicorn", extra = ["standard"], marker = "extra == 'extra-14-granite-switch-tutorials' or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "uvicorn", extra = ["standard"] }, ] sdist = { url = "https://files.pythonhosted.org/packages/92/d1/5e33b26985f0c7046a0be1cee2158ada1748ee700d2545057fde1468d74d/chromadb-1.5.9.tar.gz", hash = "sha256:5c20e62a455c28bacac927f26116a73fd8e1799e0d908be8e8a4f02197a54731", size = 2595635, upload-time = "2026-05-05T05:54:51.713Z" } wheels = [ @@ -1264,7 +1268,9 @@ resolution-markers = [ "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", - "extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", ] dependencies = [ { name = "cuda-pathfinder", marker = "extra == 'extra-14-granite-switch-vllm20' or extra == 'group-14-granite-switch-dev-vllm20' or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19')" }, @@ -2479,6 +2485,20 @@ compose = [ hf = [ { name = "accelerate" }, ] +ollama = [ + { name = "chromadb" }, + { name = "httpx" }, + { name = "huggingface-hub" }, + { name = "ipython" }, + { name = "mellea" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "rich" }, + { name = "safetensors" }, + { name = "sentence-transformers" }, + { name = "tqdm" }, +] tutorials = [ { name = "accelerate" }, { name = "chromadb" }, @@ -2534,21 +2554,30 @@ vllm20 = [ [package.metadata] requires-dist = [ { name = "accelerate", marker = "extra == 'hf'", specifier = ">=0.20.0" }, + { name = "chromadb", marker = "extra == 'ollama'", specifier = ">=0.4.0" }, { name = "chromadb", marker = "extra == 'tutorials'", specifier = ">=0.4.0" }, { name = "datasets", marker = "extra == 'tutorials'", specifier = ">=2.0.0" }, + { name = "granite-switch", extras = ["compose"], marker = "extra == 'ollama'" }, { name = "granite-switch", extras = ["hf", "vllm", "compose"], marker = "extra == 'tutorials'" }, + { name = "httpx", marker = "extra == 'ollama'", specifier = ">=0.24.0" }, { name = "httpx", marker = "extra == 'tutorials'", specifier = ">=0.24.0" }, { name = "huggingface-hub", marker = "extra == 'build'" }, { name = "huggingface-hub", marker = "extra == 'compose'" }, + { name = "ipython", marker = "extra == 'ollama'", specifier = ">=8.10.0" }, { name = "ipython", marker = "extra == 'tutorials'", specifier = ">=8.10.0" }, + { name = "mellea", marker = "extra == 'ollama'", specifier = "==0.6.0" }, { name = "mellea", marker = "extra == 'tutorials'", specifier = "==0.6.0" }, + { name = "python-dotenv", marker = "extra == 'ollama'", specifier = ">=1.0.0" }, { name = "python-dotenv", marker = "extra == 'tutorials'", specifier = ">=1.0.0" }, { name = "pyyaml", marker = "extra == 'build'" }, { name = "pyyaml", marker = "extra == 'compose'" }, + { name = "requests", marker = "extra == 'ollama'", specifier = ">=2.31.0" }, { name = "requests", marker = "extra == 'tutorials'", specifier = ">=2.31.0" }, + { name = "rich", marker = "extra == 'ollama'", specifier = ">=13.0.0" }, { name = "rich", marker = "extra == 'tutorials'", specifier = ">=13.0.0" }, { name = "safetensors", marker = "extra == 'build'" }, { name = "safetensors", marker = "extra == 'compose'" }, + { name = "sentence-transformers", marker = "extra == 'ollama'", specifier = ">=3.0.0" }, { name = "sentence-transformers", marker = "extra == 'tutorials'", specifier = ">=3.0.0" }, { name = "torch", specifier = ">=2.10.0" }, { name = "tqdm", marker = "extra == 'build'" }, @@ -2557,7 +2586,7 @@ requires-dist = [ { name = "vllm", marker = "extra == 'vllm'", specifier = ">=0.19.1,<0.20.0" }, { name = "vllm", marker = "extra == 'vllm20'", specifier = ">=0.20.0,<0.21.0" }, ] -provides-extras = ["hf", "vllm", "vllm20", "compose", "build", "tutorials"] +provides-extras = ["hf", "vllm", "vllm20", "compose", "build", "tutorials", "ollama"] [package.metadata.requires-dev] dev = [ @@ -4396,7 +4425,9 @@ resolution-markers = [ "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", - "extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", ] sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" } wheels = [ @@ -4859,7 +4890,9 @@ version = "1.26.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "flatbuffers" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-granite-switch-tutorials' or extra == 'extra-14-granite-switch-vllm' or extra == 'group-14-granite-switch-dev' or extra == 'group-14-granite-switch-test' or extra == 'group-14-granite-switch-vllm19'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20')" }, { name = "packaging" }, { name = "protobuf" }, ] @@ -6464,7 +6497,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "absl-py" }, { name = "nltk" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-granite-switch-tutorials' or extra == 'extra-14-granite-switch-vllm' or extra == 'group-14-granite-switch-dev' or extra == 'group-14-granite-switch-test' or extra == 'group-14-granite-switch-vllm19'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20')" }, { name = "six" }, ] sdist = { url = "https://files.pythonhosted.org/packages/e2/c5/9136736c37022a6ad27fea38f3111eb8f02fe75d067f9a985cc358653102/rouge_score-0.1.2.tar.gz", hash = "sha256:c7d4da2683e68c9abf0135ef915d63a46643666f848e558a1b9f7ead17ff0f04", size = 17400, upload-time = "2022-07-22T22:46:22.909Z" } @@ -6577,9 +6612,11 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "joblib" }, { name = "narwhals" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.12' and extra == 'extra-14-granite-switch-tutorials') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and extra == 'extra-14-granite-switch-tutorials') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-granite-switch-tutorials' or extra == 'extra-14-granite-switch-vllm' or extra == 'group-14-granite-switch-dev' or extra == 'group-14-granite-switch-test' or extra == 'group-14-granite-switch-vllm19'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, { name = "threadpoolctl" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } @@ -6609,12 +6646,89 @@ name = "scipy" version = "1.17.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version < '3.12' and sys_platform == 'win32'", - "python_full_version < '3.12' and sys_platform == 'emscripten'", - "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.12' and extra == 'extra-14-granite-switch-tutorials') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-dev') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-test') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7a/97/5a3609c4f8d58b039179648e62dd220f89864f56f7357f5d4f45c29eb2cc/scipy-1.17.1.tar.gz", hash = "sha256:95d8e012d8cb8816c226aef832200b1d45109ed4464303e997c5b13122b297c0", size = 30573822, upload-time = "2026-02-23T00:26:24.851Z" } wheels = [ @@ -6665,15 +6779,167 @@ name = "scipy" version = "1.18.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.13' and sys_platform == 'win32'", - "python_full_version >= '3.13' and sys_platform == 'emscripten'", - "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and sys_platform == 'emscripten'", - "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform == 'emscripten' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra == 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and extra == 'extra-14-granite-switch-tutorials') or (python_full_version >= '3.12' and extra == 'extra-14-granite-switch-vllm') or (python_full_version >= '3.12' and extra == 'group-14-granite-switch-dev') or (python_full_version >= '3.12' and extra == 'group-14-granite-switch-test') or (python_full_version >= '3.12' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (python_full_version < '3.12' and extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (python_full_version < '3.12' and extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (python_full_version == '3.12.*' and extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (python_full_version == '3.12.*' and extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19') or (python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/a7/25/c2700dfaf6442b4effaa91af24ebce5dc9d31bb4a69706313aae70d72cd0/scipy-1.18.0.tar.gz", hash = "sha256:67b2ad2ad54c72ca6d04975a9b2df8c3638c34ddd5b28738e94fc2b57929d378", size = 30774447, upload-time = "2026-06-19T15:01:43.456Z" } wheels = [ @@ -6705,11 +6971,14 @@ version = "5.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "huggingface-hub" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" } }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-granite-switch-tutorials' or extra == 'extra-14-granite-switch-vllm' or extra == 'group-14-granite-switch-dev' or extra == 'group-14-granite-switch-test' or extra == 'group-14-granite-switch-vllm19'" }, + { name = "numpy", version = "2.3.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version < '3.13' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.13' and extra == 'extra-14-granite-switch-vllm20') or (python_full_version >= '3.13' and extra == 'group-14-granite-switch-dev-vllm20') or (python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20')" }, { name = "scikit-learn" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.12' and extra == 'extra-14-granite-switch-tutorials') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and extra == 'extra-14-granite-switch-tutorials') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, - { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" } }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" }, + { name = "torch", version = "2.10.0", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-granite-switch-tutorials' or extra == 'extra-14-granite-switch-vllm' or extra == 'group-14-granite-switch-dev' or extra == 'group-14-granite-switch-test' or extra == 'group-14-granite-switch-vllm19'" }, + { name = "torch", version = "2.11.0", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-granite-switch-vllm20' or extra == 'group-14-granite-switch-dev-vllm20' or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20') or (extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19')" }, { name = "tqdm" }, { name = "transformers" }, { name = "typing-extensions" }, @@ -7368,7 +7637,9 @@ resolution-markers = [ "python_full_version == '3.12.*' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version < '3.12' and sys_platform == 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", "python_full_version < '3.12' and sys_platform != 'darwin' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", - "extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version >= '3.13' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version == '3.12.*' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", + "python_full_version < '3.12' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'extra-14-granite-switch-vllm20' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-dev-vllm20' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19' and extra != 'group-14-granite-switch-vllm20'", ] dependencies = [ { name = "cuda-bindings", version = "13.2.0", source = { registry = "https://pypi.org/simple" }, marker = "(sys_platform == 'linux' and extra == 'extra-14-granite-switch-vllm20') or (sys_platform == 'linux' and extra == 'group-14-granite-switch-dev-vllm20') or (sys_platform == 'linux' and extra != 'extra-14-granite-switch-tutorials' and extra != 'extra-14-granite-switch-vllm' and extra != 'group-14-granite-switch-dev' and extra != 'group-14-granite-switch-test' and extra != 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-dev') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'extra-14-granite-switch-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-test') or (extra == 'group-14-granite-switch-dev-vllm20' and extra == 'group-14-granite-switch-vllm19') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-tutorials' and extra == 'group-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'extra-14-granite-switch-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'extra-14-granite-switch-vllm' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-dev-vllm20') or (extra == 'group-14-granite-switch-dev' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-test' and extra == 'group-14-granite-switch-vllm20') or (extra == 'group-14-granite-switch-vllm19' and extra == 'group-14-granite-switch-vllm20')" },