# Version constraints for pip-installation.
#
# This file doesn't install any packages. It specifies version constraints
# that will be applied if a package is needed.
#
# When pinning something here, please provide an explanation of why.  Ideally,
# link to other information that will help people in the future to remove the
# pin when possible.  Writing an issue against the offending project and
# linking to it here is good.

# NOTE: We intentionally do NOT include the org-wide common_constraints.txt
# from edx-lint. This repo tests against the exact package versions used in
# production by openedx-platform (see edx-platform-constraints.txt).

# Pin factory-boy major version for stability purposes.
factory-boy<4.0

# pinning Sphinx 8.x version
# Sphinx 9.x introduces significant changes and removals compared to Sphinx 8.x,
# particularly in internal APIs and default behaviors, including a substantial rewrite of the autodoc extension.
# https://github.com/openedx/edx-enterprise/issues/2494
Sphinx>=8.0,<9.0

# pylint 4 throws all sorts of errors and warnings at us
pylint<4

# pip 26.2+ is incompatible with pip-tools 7.6.0 (latest pip-tools release only
# supports pip up to 26.1), which breaks `make upgrade`. Remove this once a
# newer pip-tools release restores pip 26.2+ compatibility.
pip<26.2

# Pin pip-tools to the version verified compatible with the pip<26.2 constraint
# above; a newer pip-tools release could require a newer pip and reintroduce
# the `make upgrade` breakage this constraint set was added to fix.
pip-tools==7.6.0
