# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
# Pinned packages of the grading runtime image: the packages the protected runner and comparator use (pydantic,
# sympy and its mpmath), plus the numerical packages (NumPy and SciPy) that task reference code and candidate code
# import. The server's example tasks and the runner need none of the numerical packages. Versions match
# Gym/uv.lock except numpy: uv.lock resolves numpy differently for the host venv, and the image pins the version
# noted below.

# task_data.py and comparator.py use Pydantic v2 validators and strict models.
# uv.lock package pydantic: version 2.13.4, registry https://pypi.org/simple.
# Inspected pydantic-2.13.4.dist-info/METADATA: License-Expression: MIT;
# Project-URL: Source, https://github.com/pydantic/pydantic.
# That metadata also requires pydantic-core==2.46.4 (resolved transitively).
pydantic==2.13.4

# symbolic.py and runner.py use SymPy expressions and the explicit SymPy adapter.
# uv.lock package sympy: version 1.14.0, registry https://pypi.org/simple;
# its recorded dependency is mpmath (lockfile version 1.3.0), pinned directly below.
# Public metadata: https://pypi.org/pypi/sympy/1.14.0/json — license BSD, license_expression null.
# Source: https://github.com/sympy/sympy.
# Versioned notices: https://raw.githubusercontent.com/sympy/sympy/1.14.0/LICENSE.
# Composite license: SymPy, Diofant-derived patches, multipledispatch and PyDy notices
# have BSD-3-Clause terms; sympy/parsing/latex includes the MIT/latex2sympy notice.
# Retain upstream copyright and license notices in any distributed runtime.
# No package code is vendored here.
sympy==1.14.0

# SymPy's own dependency, pinned as a requirement of its own so that the image carries exactly the version uv.lock
# records: left to SymPy's range (>=1.1.0,<1.4) it would be whatever pip resolves on the day of the build. The
# Dockerfile checks the installed version.
mpmath==1.3.0

# Task reference solutions and candidate solutions import NumPy and SciPy. The runner and the
# comparator do not. uv.lock resolves scipy to the same 1.18.0 and numpy to 2.3.2; the runtime image pins
# numpy 2.5.1.
numpy==2.5.1
scipy==1.18.0
