From 2d6095cfffc4cfc8abc03289b75836d1ea2a7a91 Mon Sep 17 00:00:00 2001 From: Haoxi Zhang Date: Wed, 26 Aug 2026 23:34:43 -0700 Subject: [PATCH 1/2] Add: support trt-rtx ABI ep Signed-off-by: Haoxi Zhang --- examples/windows/onnx_ptq/genai_llm/README.md | 1 + .../windows/onnx_ptq/genai_llm/quantize.py | 7 ++ modelopt/onnx/quantization/__main__.py | 14 +++- modelopt/onnx/quantization/fp8.py | 2 + modelopt/onnx/quantization/graph_utils.py | 14 +++- modelopt/onnx/quantization/int4.py | 10 ++- modelopt/onnx/quantization/int8.py | 2 + modelopt/onnx/quantization/ort_patching.py | 30 ++++--- modelopt/onnx/quantization/ort_utils.py | 52 ++++++++++-- modelopt/onnx/quantization/quantize.py | 8 ++ .../unit/onnx/quantization/test_ort_utils.py | 80 +++++++++++++++++++ 11 files changed, 191 insertions(+), 29 deletions(-) diff --git a/examples/windows/onnx_ptq/genai_llm/README.md b/examples/windows/onnx_ptq/genai_llm/README.md index b2b3e525ea4..a03d4f94fb9 100644 --- a/examples/windows/onnx_ptq/genai_llm/README.md +++ b/examples/windows/onnx_ptq/genai_llm/README.md @@ -68,6 +68,7 @@ The table below lists key command-line arguments of the ONNX PTQ example script. | `--awqclip_alpha_min` | 0.5 (default) | Minimum AWQ weight-clipping threshold, user-defined | | `--awqclip_bsz_col` | 1024 (default) | Chunk size in columns during weight clipping, user-defined | | `--calibration_eps` | dml, cuda, cpu, NvTensorRtRtx (default: [cuda,cpu]) | List of execution-providers to use for session run during calibration | +| `--trt_rtx_backend` | legacy (default), abi | TensorRT-RTX implementation used when calibration_eps includes NvTensorRtRtx. Legacy uses TensorRT-RTX libraries on PATH; ABI uses the standalone EP plugin. | | `--add_position_ids` | Default: position_ids input is disabled | Use this option to enable position_ids input in calibration data| | `--enable_mixed_quant` | Default: mixed-quant is disabled | Use this option to enable mixed precision quantization| | `--layers_8bit` | Default: None | Use this option to override default mixed-quant strategy| diff --git a/examples/windows/onnx_ptq/genai_llm/quantize.py b/examples/windows/onnx_ptq/genai_llm/quantize.py index 01d25415188..1df5a8daa1a 100644 --- a/examples/windows/onnx_ptq/genai_llm/quantize.py +++ b/examples/windows/onnx_ptq/genai_llm/quantize.py @@ -390,6 +390,7 @@ def main(args): calibration_method=args.algo, calibration_data_reader=None if args.use_random_calib else calib_inputs, calibration_eps=args.calibration_eps, + trt_rtx_backend=args.trt_rtx_backend, use_zero_point=args.use_zero_point, block_size=args.block_size, input_shapes_profile=input_shapes_profile_data, @@ -569,6 +570,12 @@ def main(args): default=["cuda", "cpu"], # Default as a list help="Comma-separated list of calibration endpoints. Choose from 'cuda', 'cpu', 'dml', 'NvTensorRtRtx'.", ) + parser.add_argument( + "--trt_rtx_backend", + choices=["legacy", "abi"], + default="legacy", + help="TensorRT-RTX backend used with NvTensorRtRtx calibration: legacy or abi.", + ) parser.add_argument( "--trust_remote_code", help="Set trust_remote_code for Huggingface models and tokenizers", diff --git a/modelopt/onnx/quantization/__main__.py b/modelopt/onnx/quantization/__main__.py index edf05df30e3..249f6382fe6 100644 --- a/modelopt/onnx/quantization/__main__.py +++ b/modelopt/onnx/quantization/__main__.py @@ -163,10 +163,21 @@ def get_parser() -> argparse.ArgumentParser: nargs="+", help=( "Priority order for the execution providers (EP) to calibrate the model. " - "Any subset of ['trt', 'cuda:x', dml:x, 'cpu'], where 'x' is the device id." + "Any subset of ['NvTensorRtRtx', 'trt', 'cuda:x', dml:x, 'cpu'], where 'x' is " + "the device id." "If a custom op is detected in the model, 'trt' will automatically be added to the EP list." ), ) + argparser.add_argument( + "--trt_rtx_backend", + choices=["legacy", "abi"], + default="legacy", + help=( + "TensorRT-RTX implementation used with --calibration_eps NvTensorRtRtx. " + "The legacy backend uses TensorRT-RTX libraries on PATH; " + "the ABI backend uses the installed standalone EP plugin." + ), + ) argparser.add_argument( "--override_shapes", type=str, @@ -532,6 +543,7 @@ def main(): calibration_cache_path=args.calibration_cache_path, calibration_shapes=args.calibration_shapes, calibration_eps=args.calibration_eps, + trt_rtx_backend=args.trt_rtx_backend, override_shapes=args.override_shapes, op_types_to_quantize=args.op_types_to_quantize, op_types_to_exclude=args.op_types_to_exclude, diff --git a/modelopt/onnx/quantization/fp8.py b/modelopt/onnx/quantization/fp8.py index b31d80fa70b..5929b875600 100755 --- a/modelopt/onnx/quantization/fp8.py +++ b/modelopt/onnx/quantization/fp8.py @@ -233,6 +233,7 @@ def quantize( calibration_eps, calibration_shapes, input_shapes_profile, + kwargs.get("trt_rtx_backend", "legacy"), ) nodes_to_exclude.extend(matmul_nodes_to_exclude) # type: ignore[union-attr] logger.debug(f"Excluding {len(matmul_nodes_to_exclude)} MatMul nodes due to GEMV pattern") @@ -253,6 +254,7 @@ def quantize( custom_ops_to_quantize, kwargs.get("op_types_needing_output_quant"), input_shapes_profile, + kwargs.get("trt_rtx_backend", "legacy"), ) logger.info( f"Quantizable op types in the model: {[t for t in op_types_to_quantize if t in op_types]}" diff --git a/modelopt/onnx/quantization/graph_utils.py b/modelopt/onnx/quantization/graph_utils.py index 1087a8889aa..7ff285c58b5 100755 --- a/modelopt/onnx/quantization/graph_utils.py +++ b/modelopt/onnx/quantization/graph_utils.py @@ -1040,6 +1040,7 @@ def get_extended_model_outputs( calibration_data_reader: CalibrationDataReader, calibration_eps: list[str], input_shapes_profile: Sequence[dict[str, str]] | None = None, + trt_rtx_backend: str = "legacy", ) -> dict[str, np.ndarray]: """Run one inference step on an onnx model which has some intermediate tensor marked as model outputs. @@ -1072,11 +1073,14 @@ def get_extended_model_outputs( save_onnx(extended_model, extended_onnx_path, save_as_external_data=True) intermediate_generated_files.append(extended_onnx_path) session = create_inference_session( - extended_onnx_path, calibration_eps, input_shapes_profile + extended_onnx_path, calibration_eps, input_shapes_profile, trt_rtx_backend ) else: session = create_inference_session( - extended_model.SerializeToString(), calibration_eps, input_shapes_profile + extended_model.SerializeToString(), + calibration_eps, + input_shapes_profile, + trt_rtx_backend, ) # Run extended model's inference. @@ -1095,6 +1099,7 @@ def find_nodes_from_matmul_to_exclude( calibration_eps: list[str] = ["cpu", "cuda:0", "trt"], calibration_shapes: str | dict | None = None, input_shapes_profile: Sequence[dict[str, str]] | None = None, + trt_rtx_backend: str = "legacy", ) -> list[str]: """Find MatMul nodes that meet gemv or small-gemm conditions and should be excluded. @@ -1147,6 +1152,7 @@ def find_nodes_from_matmul_to_exclude( calibration_data_reader, calibration_eps, input_shapes_profile, + trt_rtx_backend, ) logger.debug(f"Matmul nodes to exclude: {nodes_to_exclude}") @@ -1365,6 +1371,7 @@ def _exclude_matmuls_by_inference( calibration_data_reader: CalibrationDataReader, calibration_eps: list[str], input_shapes_profile: Sequence[dict[str, str]] | None = None, + trt_rtx_backend: str = "legacy", ) -> list[str]: """Use actual inference to find MatMuls with dimension 1 or small K/N.""" # Add matmul outputs and second-input outputs to model outputs @@ -1389,6 +1396,7 @@ def _exclude_matmuls_by_inference( calibration_data_reader, calibration_eps, input_shapes_profile, + trt_rtx_backend, ) nodes_to_exclude = [] @@ -1432,6 +1440,7 @@ def find_nodes_from_mha_to_exclude( calibration_data_reader: CalibrationDataReader = None, calibration_eps: list[str] = ["cpu", "cuda:0", "trt"], input_shapes_profile: Sequence[dict[str, str]] | None = None, + trt_rtx_backend: str = "legacy", ) -> list[str]: """Find MatMul nodes in MHA pattern to exclude. @@ -1493,6 +1502,7 @@ def find_nodes_from_mha_to_exclude( calibration_data_reader, calibration_eps, input_shapes_profile, + trt_rtx_backend, ) # For each MHA block, diff --git a/modelopt/onnx/quantization/int4.py b/modelopt/onnx/quantization/int4.py index d680b47cfcb..a2d7b536c41 100644 --- a/modelopt/onnx/quantization/int4.py +++ b/modelopt/onnx/quantization/int4.py @@ -557,7 +557,10 @@ def _quantize_awq_clip( # Creating inference session and preparing inputs for calibration session = create_inference_session( - augmented_onnx_path, calibration_eps, input_shapes_profile + augmented_onnx_path, + calibration_eps, + input_shapes_profile, + kwargs.get("trt_rtx_backend", "legacy"), ) inputs = [] for inp_d in data_reader: @@ -1114,7 +1117,10 @@ def _quantize_awq_lite( # Creating inference session and preparing inputs for calibration session = create_inference_session( - augmented_onnx_path, calibration_eps, input_shapes_profile + augmented_onnx_path, + calibration_eps, + input_shapes_profile, + kwargs.get("trt_rtx_backend", "legacy"), ) inputs = [] for inp_d in data_reader: diff --git a/modelopt/onnx/quantization/int8.py b/modelopt/onnx/quantization/int8.py index c3f266d6193..9bc467a3341 100755 --- a/modelopt/onnx/quantization/int8.py +++ b/modelopt/onnx/quantization/int8.py @@ -180,6 +180,7 @@ def quantize( calibration_eps, calibration_shapes, input_shapes_profile, + kwargs.get("trt_rtx_backend", "legacy"), ) nodes_to_exclude.extend(matmul_nodes_to_exclude) # type: ignore[union-attr] logger.debug(f"Excluding {len(matmul_nodes_to_exclude)} MatMul nodes due to GEMV pattern") @@ -205,6 +206,7 @@ def quantize( custom_ops_to_quantize, kwargs.get("op_types_needing_output_quant"), input_shapes_profile, + kwargs.get("trt_rtx_backend", "legacy"), ) logger.info(f"Quantizable op types: {[t for t in quantizable_op_types if t in op_types]}") diff --git a/modelopt/onnx/quantization/ort_patching.py b/modelopt/onnx/quantization/ort_patching.py index c29f8b44dfa..b5213e525a6 100755 --- a/modelopt/onnx/quantization/ort_patching.py +++ b/modelopt/onnx/quantization/ort_patching.py @@ -292,6 +292,10 @@ def _create_inference_session_with_ep_config(calibrator, **kwargs): model_path = kwargs.get("model_path") logger.debug("Creating inference session with Execution Provider configuration") + trt_rtx_backend = kwargs.get("trt_rtx_backend", "legacy") + if trt_rtx_backend not in ("legacy", "abi"): + raise ValueError(f"trt_rtx_backend must be 'legacy' or 'abi', got {trt_rtx_backend!r}") + sess_options = ort.SessionOptions() sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_DISABLE_ALL sess_options.add_session_config_entry("session.use_device_allocator_for_initializers", "1") @@ -302,8 +306,7 @@ def _create_inference_session_with_ep_config(calibrator, **kwargs): # Note. This path can be an empty string, which denotes that the model has custom ops and TRT EP is needed. calibrator.trt_extra_plugin_lib_paths = kwargs.get("trt_extra_plugin_lib_paths") - - if calibrator.trt_extra_plugin_lib_paths is not None: + if trt_rtx_backend != "abi" and calibrator.trt_extra_plugin_lib_paths is not None: logger.debug(f"TRT extra plugin paths: {calibrator.trt_extra_plugin_lib_paths}") if "TensorrtExecutionProvider" not in ort.get_available_providers(): raise RuntimeError( @@ -336,20 +339,12 @@ def _update_provider_config(provider, config): providers[i], {"arena_extend_strategy": "kSameAsRequested"} ) - if model_path is None: - # Create the inference session with EP configuration on augmented_model - calibrator.infer_session = ort.InferenceSession( - calibrator.augmented_model_path, - sess_options=sess_options, - providers=providers, - ) - else: - # Create the inference session with EP configuration on provided model path - calibrator.infer_session = ort.InferenceSession( - model_path, - sess_options=sess_options, - providers=providers, - ) + session_path = calibrator.augmented_model_path if model_path is None else model_path + calibrator.infer_session = ort.InferenceSession( + session_path, + sess_options=sess_options, + providers=providers, + ) # Group qdq tensors will have the same scaling factor. calibrator.group_qdq_tensors = kwargs.get("group_qdq_tensors") @@ -1568,6 +1563,8 @@ def _quantize_static( ExecutionProviders = list[string] : Default is [("CUDAExecutionProvider", {"device_id": 0}), "CPUExecutionProvider", "TensorrtExecutionProvider"] + TrtRtxBackend = string : + Selects the legacy or ABI TensorRT-RTX execution provider implementation. """ logger.info("Starting static quantization") logger.debug(f"Quantization format: {quant_format}") @@ -1607,6 +1604,7 @@ def _quantize_static( # ====================== Modification ====================== ("TrtExtraPluginLibraryPaths", "trt_extra_plugin_lib_paths"), ("ExecutionProviders", "execution_providers"), + ("TrtRtxBackend", "trt_rtx_backend"), ("group_qdq_tensors", "group_qdq_tensors"), ("QDQDisableWeightAdjustForInt32Bias", "disable_int32_weight_adjustment"), # ========================================================== diff --git a/modelopt/onnx/quantization/ort_utils.py b/modelopt/onnx/quantization/ort_utils.py index a8d211b32c7..d36dd4090b3 100755 --- a/modelopt/onnx/quantization/ort_utils.py +++ b/modelopt/onnx/quantization/ort_utils.py @@ -26,6 +26,7 @@ import sys from collections.abc import Sequence from contextlib import redirect_stderr, redirect_stdout +from importlib import import_module from importlib.metadata import PackageNotFoundError, distribution import onnxruntime as ort @@ -321,6 +322,7 @@ def _check_for_nv_tensorrt_rtx_libs(): def _prepare_ep_list( calibration_eps: list[str], input_shapes_profile: Sequence[dict[str, str]] | None = None, + trt_rtx_backend: str = "legacy", ): """Prepares the EP list for ORT from the given user input.""" logger.debug(f"Preparing execution providers list from: {calibration_eps}") @@ -362,7 +364,25 @@ def _append_provider( elif "cpu" in ep: _append_provider(providers, i, "CPUExecutionProvider") logger.debug("Added CPU EP") - elif "NvTensorRtRtx" in ep: + elif ep == "NvTensorRtRtx": + if trt_rtx_backend == "abi": + try: + trt_rtx_ep = import_module("onnxruntime_ep_nv_tensorrt_rtx") + except ImportError as e: + raise ImportError( + "TensorRT-RTX ABI was requested, but " + "onnxruntime-ep-nv-tensorrt-rtx-cu13 is not installed." + ) from e + + ep_name = trt_rtx_ep.get_ep_name() + if ep_name not in ort.get_available_providers(): + ort.register_execution_provider_library(ep_name, trt_rtx_ep.get_library_path()) + logger.debug(f"Registered TensorRT-RTX ABI EP: {ep_name}") + _append_provider(providers, i, ep_name) + logger.debug(f"Added TensorRT-RTX ABI EP: {ep_name}") + continue + if trt_rtx_backend != "legacy": + continue try: _check_for_nv_tensorrt_rtx_libs() _append_provider(providers, i, "NvTensorRTRTXExecutionProvider") @@ -435,15 +455,25 @@ def _make_trt_ep_first_choice(calibration_eps, trt_plugins): "flag to simplify your model, as it may be able to remove some problematic ops." ) trt_plugins = _make_trt_ep_first_choice(calibration_eps, trt_plugins) + elif "NvTensorRtRtx" in calibration_eps and not trt_plugins: + logger.info( + "Custom ops detected; keeping NvTensorRtRtx as the selected execution provider" + ) else: - logger.error("DDS and custom ops require TensorRT EP") + logger.error("DDS and custom ops require TensorRT or TensorRT-RTX EP") raise Exception( - "This model contains DDS and custom ops. Custom ops are only supported with the TensorRT EP, but " - "that has been disabled. Please update your TRT and/or ORT version." + "This model contains DDS and custom ops. Select either the TensorRT EP or " + "NvTensorRtRtx. TensorRT plugin library paths are only supported by the " + "classic TensorRT EP." ) elif has_custom_op: - logger.info("Custom op detected, enabling TensorRT EP") - trt_plugins = _make_trt_ep_first_choice(calibration_eps, trt_plugins) + if "NvTensorRtRtx" in calibration_eps and not trt_plugins: + logger.info( + "Custom ops detected; keeping NvTensorRtRtx as the selected execution provider" + ) + else: + logger.info("Custom op detected, enabling TensorRT EP") + trt_plugins = _make_trt_ep_first_choice(calibration_eps, trt_plugins) return trt_plugins @@ -546,9 +576,13 @@ def create_inference_session( onnx_path_or_model: str | bytes, calibration_eps: list[str], input_shapes_profile: Sequence[dict[str, str]] | None = None, + trt_rtx_backend: str = "legacy", ): """Create an ORT InferenceSession.""" logger.info("Creating ORT InferenceSession") + if trt_rtx_backend not in ("legacy", "abi"): + raise ValueError(f"trt_rtx_backend must be 'legacy' or 'abi', got {trt_rtx_backend!r}") + sess_options = ort.SessionOptions() sess_options.graph_optimization_level = ort.GraphOptimizationLevel.ORT_DISABLE_ALL if input_shapes_profile is not None: @@ -567,7 +601,7 @@ def create_inference_session( logger.debug( f"Input-Shapes-Profile: EP: {calibration_eps[i]}, key: {k}, value: {v}" ) - providers = _prepare_ep_list(calibration_eps, input_shapes_profile) + providers = _prepare_ep_list(calibration_eps, input_shapes_profile, trt_rtx_backend) logger.debug(f"Creating session with providers: {providers}") return ort.InferenceSession( onnx_path_or_model, @@ -604,6 +638,7 @@ def configure_ort( custom_ops_to_quantize: list[str] = [], op_types_needing_output_quant: list[str] | None = None, input_shapes_profile: Sequence[dict[str, str]] | None = None, + trt_rtx_backend: str = "legacy", ): """Configure and patches ORT to support ModelOpt ONNX quantization.""" logger.info("Configuring ORT for ModelOpt ONNX quantization") @@ -662,7 +697,7 @@ def configure_ort( ] if trt_extra_plugin_lib_paths is not None: trt_extra_plugin_lib_paths = ";".join(trt_extra_plugin_lib_paths) - execution_providers = _prepare_ep_list(calibration_eps, input_shapes_profile) + execution_providers = _prepare_ep_list(calibration_eps, input_shapes_profile, trt_rtx_backend) trt_guided_options = { "QuantizeBias": False, @@ -681,6 +716,7 @@ def configure_ort( ), "TrtExtraPluginLibraryPaths": trt_extra_plugin_lib_paths, "ExecutionProviders": execution_providers, + "TrtRtxBackend": trt_rtx_backend, } quantizable_op_types = get_quantizable_op_types(op_types_to_quantize) diff --git a/modelopt/onnx/quantization/quantize.py b/modelopt/onnx/quantization/quantize.py index d8b2471f127..43c05045785 100755 --- a/modelopt/onnx/quantization/quantize.py +++ b/modelopt/onnx/quantization/quantize.py @@ -395,6 +395,7 @@ def quantize( autotune_warmup_runs: int = 50, autotune_timing_runs: int = 100, autotune_trtexec_args: str | None = None, + trt_rtx_backend: str = "legacy", **kwargs: Any, ) -> None: """Quantizes the provided ONNX model. @@ -423,6 +424,10 @@ def quantize( .. note:: If a custom op is detected in the model, 'trt' will automatically be added to the EP list. + trt_rtx_backend: + TensorRT-RTX implementation used when calibration_eps contains 'NvTensorRtRtx'. + Either 'legacy' (default) or 'abi'. The legacy backend uses TensorRT-RTX + libraries on PATH; the ABI backend uses the standalone EP plugin. override_shapes: Override model input shapes with static shapes. op_types_to_quantize: @@ -673,6 +678,7 @@ def quantize( calibration_data_reader, calibration_eps, input_shapes_profile, + trt_rtx_backend, ) if calibrate_per_node and not calibration_shapes: @@ -736,6 +742,7 @@ def quantize( opset=opset, autotune=autotune, input_shapes_profile=input_shapes_profile, + trt_rtx_backend=trt_rtx_backend, **kwargs, ) @@ -751,6 +758,7 @@ def quantize( use_zero_point=use_zero_point, log_level=log_level, input_shapes_profile=input_shapes_profile, + trt_rtx_backend=trt_rtx_backend, **kwargs, ) else: diff --git a/tests/unit/onnx/quantization/test_ort_utils.py b/tests/unit/onnx/quantization/test_ort_utils.py index ee4f81f5645..24ba803c265 100644 --- a/tests/unit/onnx/quantization/test_ort_utils.py +++ b/tests/unit/onnx/quantization/test_ort_utils.py @@ -17,6 +17,8 @@ import sys import types +import pytest + from modelopt.onnx.quantization import ort_utils from modelopt.onnx.quantization.ort_utils import create_input_shapes_profile @@ -166,3 +168,81 @@ def __init__(self, *args, **kwargs): assert captured_kwargs["providers"] == ["CPUExecutionProvider"] assert "provider_options" not in captured_kwargs + + +def test_prepare_ep_list_registers_missing_trt_rtx_abi_provider(monkeypatch): + register_calls = [] + fake_plugin = types.SimpleNamespace( + get_ep_name=lambda: "nv_tensorrt_rtx", + get_library_path=lambda: "trt_rtx.dll", + ) + monkeypatch.setattr(ort_utils, "import_module", lambda name: fake_plugin) + monkeypatch.setattr( + ort_utils.ort, + "get_available_providers", + lambda: ["CPUExecutionProvider"], + ) + monkeypatch.setattr( + ort_utils.ort, + "register_execution_provider_library", + lambda *args: register_calls.append(args), + ) + + providers = ort_utils._prepare_ep_list( + ["NvTensorRtRtx", "cpu"], + [{"nv_profile_min_shapes": "input:1x1"}, {}], + trt_rtx_backend="abi", + ) + + assert providers == [ + ("nv_tensorrt_rtx", {"nv_profile_min_shapes": "input:1x1"}), + "CPUExecutionProvider", + ] + assert register_calls == [("nv_tensorrt_rtx", "trt_rtx.dll")] + + +def test_prepare_ep_list_reuses_registered_trt_rtx_abi_provider(monkeypatch): + fake_plugin = types.SimpleNamespace( + get_ep_name=lambda: "nv_tensorrt_rtx", + get_library_path=lambda: "trt_rtx.dll", + ) + monkeypatch.setattr(ort_utils, "import_module", lambda name: fake_plugin) + monkeypatch.setattr( + ort_utils.ort, + "get_available_providers", + lambda: ["CPUExecutionProvider", "nv_tensorrt_rtx"], + ) + monkeypatch.setattr( + ort_utils.ort, + "register_execution_provider_library", + lambda *args: pytest.fail("The registered ABI EP should not be registered again"), + ) + + assert ort_utils._prepare_ep_list(["NvTensorRtRtx"], trt_rtx_backend="abi") == [ + "nv_tensorrt_rtx" + ] + + +def test_trt_rtx_backend_validation_is_deferred_until_session_creation(monkeypatch): + monkeypatch.setattr( + ort_utils, + "_check_for_nv_tensorrt_rtx_libs", + lambda: pytest.fail("Legacy TensorRT-RTX setup should not run for an invalid backend"), + ) + + assert ort_utils._prepare_ep_list(["NvTensorRtRtx"], trt_rtx_backend="invalid") == [] + with pytest.raises(ValueError, match="trt_rtx_backend must be 'legacy' or 'abi'"): + ort_utils.create_inference_session( + "model.onnx", ["NvTensorRtRtx"], trt_rtx_backend="invalid" + ) + + +def test_custom_ops_do_not_force_classic_tensorrt_when_trt_rtx_is_selected(): + calibration_eps = ["NvTensorRtRtx", "cpu"] + + plugins = ort_utils.update_trt_ep_support( + calibration_eps, has_dds_op=False, has_custom_op=True, trt_plugins=[] + ) + + assert calibration_eps == ["NvTensorRtRtx", "cpu"] + assert plugins == [] From 3052bc747acf28581e774f5ee13cb94dff96f000 Mon Sep 17 00:00:00 2001 From: Haoxi Zhang Date: Thu, 27 Aug 2026 01:43:00 -0700 Subject: [PATCH 2/2] Add TensorRT-RTX ABI EP dependencies and documentation Signed-off-by: Haoxi Zhang --- CHANGELOG.rst | 1 + .../windows/_installation_standalone.rst | 19 +- pyproject.toml | 8 +- uv.lock | 262 +++++++++++------- 4 files changed, 183 insertions(+), 107 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 724876fcafa..5685eb4e86f 100755 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -8,6 +8,7 @@ Changelog *Quantization* +- Add opt-in TensorRT-RTX ABI Execution Provider support for ONNX calibration on Windows x64. Select it with ``--calibration_eps=NvTensorRtRtx --trt_rtx_backend=abi``; the legacy backend remains the default. - Add the ``nvfp4_act_headroom`` calibration algorithm for NVFP4 **activation** global scales. Instead of setting the global scale from the largest per-block amax seen during calibration (plain ``max``, which leaves no room above it so any larger activation saturates), it anchors the scale to a low percentile of the per-block amax distribution, leaving the rest of the FP8 block-scale range as headroom: ``amax = max(rho * anchor, upper)``, where ``anchor`` and ``upper`` are the per-block amaxes at ``anchor_percentile`` (default 1) and ``upper_percentile`` (default 99.99; set to 100 to never clip calibration data), and ``rho`` (default 16384) is the headroom factor. Applies only to NVFP4 dynamic-block input quantizers; ``SequentialQuantizer`` activation quantizers raise. Weight scales are an orthogonal axis selected by a nested ``weight_scale_algorithm`` (``max`` by default, or ``mse`` / ``local_hessian``), so one recipe can combine a weight calibration with this activation policy in a single pass. Ships ``modelopt_recipes/general/ptq/nvfp4_act_headroom-kv_fp8_cast.yaml``, which mirrors ``nvfp4_default-kv_fp8_cast`` with only the calibration algorithm swapped and exports a standard NVFP4 checkpoint. *Megatron Framework (M-LM / M-Bridge)* diff --git a/docs/source/getting_started/windows/_installation_standalone.rst b/docs/source/getting_started/windows/_installation_standalone.rst index 6484bc8cdc2..a85111c543f 100644 --- a/docs/source/getting_started/windows/_installation_standalone.rst +++ b/docs/source/getting_started/windows/_installation_standalone.rst @@ -44,16 +44,26 @@ If you install ModelOpt-Windows without the extra ``[onnx]`` option, only the mi The Post-Training Quantization (PTQ) process for ONNX models usually involves running the base model with user-supplied inputs, a process called calibration. The user-supplied model inputs are referred to as calibration data. To perform calibration, the base model must be run using a suitable ONNX Execution Provider (EP), such as *DmlExecutionProvider* (DirectML EP) or *CUDAExecutionProvider* (CUDA EP). There are different ONNX Runtime packages for each EP: - *onnxruntime-directml* provides the DirectML EP. -- *onnxruntime-trt-rtx* provides TensorRT-RTX EP. +- *onnxruntime-ep-nv-tensorrt-rtx-cu13* provides the standalone TensorRT-RTX EP ABI plugin. - *onnxruntime-gpu* provides the CUDA EP. - *onnxruntime* provides the CPU EP. -By default, ModelOpt-Windows installs *onnxruntime-gpu*. The default CUDA version needed for *onnxruntime-gpu* since v1.19.0 is 12.x. The *onnxruntime-gpu* package (i.e. CUDA EP) has CUDA and cuDNN dependencies: +By default, ModelOpt-Windows on Windows x64 installs *onnxruntime-gpu* together with the +standalone TensorRT-RTX EP ABI plugin. Keeping *onnxruntime-gpu* allows calibration to +switch between CUDA EP and TensorRT-RTX. Select the TensorRT-RTX ABI implementation with +``--calibration_eps NvTensorRtRtx --trt_rtx_backend abi``. The legacy backend remains +available and uses TensorRT-RTX libraries supplied through ``PATH``. + +The ABI plugin requires an Ampere-or-newer RTX GPU and an NVIDIA driver with CUDA 13 support. +Python 3.10 and Windows architectures other than x64 continue to use the legacy backend. + +The *onnxruntime-gpu* package (i.e. CUDA EP) has CUDA and cuDNN dependencies: - Install CUDA and cuDNN: - For the ONNX Runtime GPU package, you need to install the appropriate version of CUDA and cuDNN. Refer to the `CUDA Execution Provider requirements `_ for compatible versions of CUDA and cuDNN. -If you need to use any other EP for calibration, you can uninstall the existing *onnxruntime-gpu* package and install the corresponding package. For example, to use the DirectML EP, you can uninstall the existing *onnxruntime-gpu* package and install the *onnxruntime-directml* package: +If you need to use an incompatible ORT package for calibration, uninstall the existing +*onnxruntime-gpu* package before installing it. For example, to use the DirectML EP: .. code-block:: bash @@ -95,9 +105,10 @@ Ensure the following steps are verified: - **Python Interpreter**: Open the command line and type python. The Python interpreter should start, displaying the Python version. - **Onnxruntime Package**: Ensure that exactly one of the following is installed: - *onnxruntime-directml* (DirectML EP) - - *onnxruntime-trt-rtx* (TensorRT-RTX EP) - *onnxruntime-gpu* (CUDA EP) - *onnxruntime* (CPU EP) + The *onnxruntime-ep-nv-tensorrt-rtx-cu13* plugin is installed alongside the selected + ONNX Runtime package; it does not replace *onnxruntime-gpu*. - **CUDA Toolkit**: For CUDA workflows, verify that the selected Toolkit is found first and that ``nvcc`` reports the expected major version: .. code-block:: bat diff --git a/pyproject.toml b/pyproject.toml index e090fb62f86..f9389ffe405 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,8 +60,12 @@ onnx = [ "onnx-graphsurgeon>=0.6.1", "onnx~=1.21.0", "onnxconverter-common~=1.16.0", - # ORT for Windows - "onnxruntime-gpu==1.22.0; platform_system == 'Windows'", + # ORT for Windows x64. ORT 1.26 provides the plugin EP APIs used by TensorRT-RTX ABI. + "onnxruntime-gpu~=1.26.0; python_version > '3.10' and platform_system == 'Windows' and platform_machine == 'AMD64'", + # Retain the existing ORT version where the TensorRT-RTX ABI dependencies are unavailable. + "onnxruntime-gpu==1.22.0; platform_system == 'Windows' and (python_version <= '3.10' or platform_machine != 'AMD64')", + # Standalone TensorRT-RTX ABI EP for supported Windows x64 environments. + "onnxruntime-ep-nv-tensorrt-rtx-cu13==0.4.0; python_version > '3.10' and platform_system == 'Windows' and platform_machine == 'AMD64'", # ORT with Python <= 3.10 "onnxruntime~=1.22.0; python_version <= '3.10' and (platform_machine == 'aarch64' or platform_system == 'Darwin')", "onnxruntime-gpu~=1.22.0; python_version <= '3.10' and platform_machine != 'aarch64' and platform_system != 'Darwin' and platform_system != 'Windows'", diff --git a/uv.lock b/uv.lock index b59413b6012..1f4594c753e 100644 --- a/uv.lock +++ b/uv.lock @@ -3,36 +3,40 @@ revision = 3 requires-python = ">=3.10, <3.15" resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version < '3.11' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version < '3.11' and platform_machine == 's390x' and sys_platform == 'darwin'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine == 's390x' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", @@ -2189,15 +2193,15 @@ version = "3.6.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "(python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", ] @@ -2357,7 +2361,8 @@ resolution-markers = [ "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", ] 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" } @@ -2441,25 +2446,28 @@ version = "2.5.2" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", ] sdist = { url = "https://files.pythonhosted.org/packages/9a/80/db0b4559e57ec36362bedbb05530a87fafbcb6067708c946967a41d449e7/numpy-2.5.2.tar.gz", hash = "sha256:d482d171c406ae88c5b19cad3b6a1c4c5209f886ab74bc44c2c865c23f52d860", size = 20773161, upload-time = "2026-08-09T13:48:27.962Z" } @@ -2564,8 +2572,10 @@ all = [ { name = "onnxconverter-common" }, { name = "onnxruntime", version = "1.22.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine == 'aarch64') or (python_full_version < '3.11' and sys_platform == 'darwin')" }, { name = "onnxruntime", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'aarch64') or (python_full_version >= '3.11' and sys_platform == 'darwin')" }, - { name = "onnxruntime-gpu", version = "1.22.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, + { name = "onnxruntime-ep-nv-tensorrt-rtx-cu13", marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32'" }, + { name = "onnxruntime-gpu", version = "1.22.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32') or (python_full_version < '3.11' and sys_platform == 'win32') or (platform_machine != 'AMD64' and sys_platform == 'win32')" }, { name = "onnxruntime-gpu", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32'" }, + { name = "onnxruntime-gpu", version = "1.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32'" }, { name = "onnxscript" }, { name = "onnxslim" }, { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, @@ -2604,8 +2614,10 @@ dev = [ { name = "onnxconverter-common" }, { name = "onnxruntime", version = "1.22.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine == 'aarch64') or (python_full_version < '3.11' and sys_platform == 'darwin')" }, { name = "onnxruntime", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'aarch64') or (python_full_version >= '3.11' and sys_platform == 'darwin')" }, - { name = "onnxruntime-gpu", version = "1.22.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, + { name = "onnxruntime-ep-nv-tensorrt-rtx-cu13", marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32'" }, + { name = "onnxruntime-gpu", version = "1.22.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32') or (python_full_version < '3.11' and sys_platform == 'win32') or (platform_machine != 'AMD64' and sys_platform == 'win32')" }, { name = "onnxruntime-gpu", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32'" }, + { name = "onnxruntime-gpu", version = "1.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32'" }, { name = "onnxscript" }, { name = "onnxslim" }, { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, @@ -2693,8 +2705,10 @@ onnx = [ { name = "onnxconverter-common" }, { name = "onnxruntime", version = "1.22.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine == 'aarch64') or (python_full_version < '3.11' and sys_platform == 'darwin')" }, { name = "onnxruntime", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and platform_machine == 'aarch64') or (python_full_version >= '3.11' and sys_platform == 'darwin')" }, - { name = "onnxruntime-gpu", version = "1.22.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin') or sys_platform == 'win32'" }, + { name = "onnxruntime-ep-nv-tensorrt-rtx-cu13", marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32'" }, + { name = "onnxruntime-gpu", version = "1.22.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32') or (python_full_version < '3.11' and sys_platform == 'win32') or (platform_machine != 'AMD64' and sys_platform == 'win32')" }, { name = "onnxruntime-gpu", version = "1.24.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32'" }, + { name = "onnxruntime-gpu", version = "1.26.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32'" }, { name = "onnxscript" }, { name = "onnxslim" }, { name = "polygraphy" }, @@ -2742,9 +2756,11 @@ requires-dist = [ { name = "onnxconverter-common", marker = "extra == 'onnx'", specifier = "~=1.16.0" }, { name = "onnxruntime", marker = "(python_full_version >= '3.11' and platform_machine == 'aarch64' and extra == 'onnx') or (python_full_version >= '3.11' and sys_platform == 'darwin' and extra == 'onnx')", specifier = "~=1.24.2" }, { name = "onnxruntime", marker = "(python_full_version < '3.11' and platform_machine == 'aarch64' and extra == 'onnx') or (python_full_version < '3.11' and sys_platform == 'darwin' and extra == 'onnx')", specifier = "~=1.22.0" }, + { name = "onnxruntime-ep-nv-tensorrt-rtx-cu13", marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32' and extra == 'onnx'", specifier = "==0.4.0" }, { name = "onnxruntime-gpu", marker = "python_full_version >= '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32' and extra == 'onnx'", specifier = "~=1.24.2" }, { name = "onnxruntime-gpu", marker = "python_full_version < '3.11' and platform_machine != 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32' and extra == 'onnx'", specifier = "~=1.22.0" }, - { name = "onnxruntime-gpu", marker = "sys_platform == 'win32' and extra == 'onnx'", specifier = "==1.22.0" }, + { name = "onnxruntime-gpu", marker = "python_full_version >= '3.11' and platform_machine == 'AMD64' and sys_platform == 'win32' and extra == 'onnx'", specifier = "~=1.26.0" }, + { name = "onnxruntime-gpu", marker = "(python_full_version < '3.11' and sys_platform == 'win32' and extra == 'onnx') or (platform_machine != 'AMD64' and sys_platform == 'win32' and extra == 'onnx')", specifier = "==1.22.0" }, { name = "onnxscript", marker = "extra == 'onnx'" }, { name = "onnxslim", marker = "extra == 'onnx'", specifier = ">=0.1.76" }, { name = "packaging" }, @@ -2928,15 +2944,15 @@ version = "1.24.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", ] @@ -2965,24 +2981,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cf/68/0c05d10f8f6c40fe0912ebec0d5a33884aaa2af2053507e864dab0883208/onnxruntime-1.24.4-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:aa12ddc54c9c4594073abcaa265cd9681e95fb89dae982a6f508a794ca42e661", size = 15176889, upload-time = "2026-03-17T22:03:48.021Z" }, ] +[[package]] +name = "onnxruntime-ep-nv-tensorrt-rtx-cu13" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/7d/7dae1810328c4ddc611129b66fa11edd14c8c814ac1b206c3fac481541af/onnxruntime_ep_nv_tensorrt_rtx_cu13-0.4.0-py3-none-win_amd64.whl", hash = "sha256:8aa0db63e31384024409818789eaa8ad136f0e83681dda204b7e3d178df2ff69", size = 104947525, upload-time = "2026-08-12T11:10:45.329Z" }, +] + [[package]] name = "onnxruntime-gpu" version = "1.22.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version < '3.11' and platform_machine == 'aarch64' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine == 's390x' and sys_platform == 'win32'", "python_full_version < '3.11' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", @@ -2992,8 +3016,8 @@ dependencies = [ { name = "coloredlogs" }, { name = "flatbuffers" }, { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or sys_platform != 'win32'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and sys_platform == 'win32'" }, - { name = "numpy", version = "2.5.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and sys_platform == 'win32'" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' and platform_machine != 'AMD64' and sys_platform == 'win32'" }, + { name = "numpy", version = "2.5.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' and platform_machine != 'AMD64' and sys_platform == 'win32'" }, { name = "packaging" }, { name = "protobuf" }, { name = "sympy" }, @@ -3016,8 +3040,8 @@ version = "1.24.4" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", @@ -3041,6 +3065,30 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1a/98/7707edefcecf69d6c45b83a83f13ac58257017b4eaf58772668d302f849f/onnxruntime_gpu-1.24.4-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:097c6f53e99ee35f21d0fdba76ca283b92465a0e364c6f0209cb9653c424e2a4", size = 252776951, upload-time = "2026-03-17T22:04:49.715Z" }, ] +[[package]] +name = "onnxruntime-gpu" +version = "1.26.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", +] +dependencies = [ + { name = "flatbuffers" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12'" }, + { name = "numpy", version = "2.5.2", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" }, + { name = "packaging" }, + { name = "protobuf" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/26/a417b7a1cdbbf56a389bfcd399255be23f30e5721e3e519472fe8dde9c99/onnxruntime_gpu-1.26.0-cp311-cp311-win_amd64.whl", hash = "sha256:cc5329aad02d9745cc3ae9cdb185bfa1aad242a7bf89b8c471280002ec40f98a", size = 226539455, upload-time = "2026-05-08T19:09:24.631Z" }, + { url = "https://files.pythonhosted.org/packages/a4/e4/9b378a5466ea0bed65e5beb8e09254973c580a6522810a38afbcc45e5105/onnxruntime_gpu-1.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:5f49c44689894650990e4c8a857d2edafc276fbd79bba57ceb224bd18d25d491", size = 226548963, upload-time = "2026-05-08T19:09:34.925Z" }, + { url = "https://files.pythonhosted.org/packages/67/3f/59f1777a394625ecc9a85636de57dc47c25dbb5f888da050f1463955a0ce/onnxruntime_gpu-1.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:6ab9f9c741d2e239b2e321ab0d389c04329d4ab7f11e3b92dd3aa7db1c59dee4", size = 226548083, upload-time = "2026-05-08T19:09:44.408Z" }, + { url = "https://files.pythonhosted.org/packages/41/e7/923298431e669567d7ccc2a4c898b6534a47641a051569fd97165fe6d9b8/onnxruntime_gpu-1.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:3e592439b0183d303c2374517b5b392599a3d50b2dc9de949b9b15731ac921c9", size = 229142768, upload-time = "2026-05-08T19:09:54.589Z" }, +] + [[package]] name = "onnxscript" version = "0.7.1" @@ -3212,32 +3260,36 @@ version = "3.0.5" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", ] dependencies = [ @@ -4332,7 +4384,8 @@ resolution-markers = [ "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", ] dependencies = [ @@ -4408,25 +4461,28 @@ version = "1.18.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", ] dependencies = [ @@ -4801,32 +4857,36 @@ version = "5.9.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ "python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", "(python_full_version >= '3.14' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version >= '3.14' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'darwin'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", - "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", - "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version >= '3.14' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.13.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.13.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'darwin'", + "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.13.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.12.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.12.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", + "python_full_version == '3.12.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform == 'win32'", + "(python_full_version == '3.11.*' and platform_machine != 's390x' and sys_platform == 'darwin') or (python_full_version == '3.11.*' and platform_machine == 'aarch64' and sys_platform != 'darwin' and sys_platform != 'win32')", + "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'darwin'", "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform != 'darwin' and sys_platform != 'win32'", - "python_full_version >= '3.14' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version >= '3.14' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.13.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", - "python_full_version == '3.12.*' and platform_machine == 's390x' and sys_platform == 'win32'", - "python_full_version == '3.11.*' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine == 'AMD64' and sys_platform == 'win32'", + "python_full_version == '3.11.*' and platform_machine != 'AMD64' and platform_machine != 'aarch64' and platform_machine != 's390x' and sys_platform == 'win32'", "python_full_version == '3.11.*' and platform_machine == 's390x' and sys_platform == 'win32'", ] sdist = { url = "https://files.pythonhosted.org/packages/d7/dd/04d56c2a5232358df41f3d0f0e31833d378b6c8ed7803a6b1b7867b0eba6/stevedore-5.9.0.tar.gz", hash = "sha256:abbd0af7a38a8bbb1d6adea2e35b17609cf004eaac323e88a8d8963640dd2b3c", size = 514850, upload-time = "2026-07-02T11:38:08.509Z" }