[build-system]
build-backend = 'mesonpy'
requires = [
'cypari2 >=2.2.1; sys_platform != "win32"',
'meson-python',
'cysignals >=1.11.2, != 1.12.0',
'cython >=3.0, != 3.0.3',
'gmpy2 ~=2.1.b999',
'jinja2',
'memory_allocator',
'numpy >=1.25',
]
[tool.meson-python.args]
install = ['--skip-subprojects']
setup = ['--default-library=static']
[project]
authors = [
{ email = "[email protected]", name = "The Sage Developers" },
]
classifiers = [
"Development Status :: 6 - Mature",
"Intended Audience :: Education",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)",
"Operating System :: MacOS :: MacOS X",
"Operating System :: POSIX",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Topic :: Scientific/Engineering :: Mathematics",
]
dependencies = [
'conway-polynomials >=0.8',
'cypari2 >=2.2.1; sys_platform != "win32"',
'six >=1.15.0',
'cysignals >=1.11.2, != 1.12.0',
'cython >=3.0, != 3.0.3',
'fpylll >=0.5.9; sys_platform != "win32"',
'gmpy2 ~=2.1.b999',
'ipykernel >=5.2.1',
'ipython >=8.9.0',
'ipywidgets >=7.5.1',
'jupyter-client',
'matplotlib >=3.7.0',
'memory_allocator',
'mpmath >=1.1.0',
'networkx >=3.1',
'numpy >=1.25',
'pexpect >=4.8.0',
'pillow >=7.2.0',
'platformdirs',
'pplpy >=0.8.6; sys_platform != "win32"',
'primecountpy; sys_platform != "win32"',
'ptyprocess > 0.5',
'requests >=2.13.0',
'scipy >=1.11',
'sphinx >=5.2, <9',
'sympy >=1.6, <2.0',
'typing_extensions >= 4.4.0; python_version<"3.11"',
'pkgconfig',
'traitlets',
]
description = "Sage: Open Source Mathematics Software: Standard Python Library"
dynamic = ["version"]
license = { text = "GNU General Public License (GPL) v2 or later" }
name = "sagemath"
requires-python = ">=3.11, <3.14"
urls = { Homepage = "https://www.sagemath.org" }
[project.optional-dependencies]
R = ['rpy2 >=3.3']
extra = [
'igraph',
'lrcalc ~=2.1; sys_platform != "win32"',
'p_group_cohomology >=3.3',
'pycosat >=0.6.3',
'pynormaliz >=2.18; platform_machine != "aarch64" and platform_machine != "arm64"',
'sage_numerical_backends_coin',
'symengine >= 0.6.1',
]
giac = ['sagemath_giac']
[project.readme]
content-type = "text/markdown"
file = "README.md"
[project.scripts]
sage = "sage.cli:main"
[tool.conda-lock]
platforms = ['linux-64', 'linux-aarch64', 'osx-64', 'osx-arm64']
[tool.pytest.ini_options]
norecursedirs = "local prefix venv build builddir pkgs .git src/doc src/bin src/sage_setup/autogen/flint tools"
python_files = "*_test.py"
addopts = "--import-mode importlib -p no:warnings"
doctest_optionflags = "NORMALIZE_WHITESPACE ELLIPSIS"
consider_namespace_packages = true
[external]
build-requires = [
"pkg:generic/pkg-config",
"virtual:compiler/c",
"virtual:compiler/cpp",
]
host-requires = [
"pkg:generic/boost",
"pkg:generic/cddlib",
"pkg:generic/cliquer",
"pkg:generic/ecl",
"pkg:generic/ecm",
"pkg:generic/fflas-ffpack",
"pkg:generic/flint",
"pkg:generic/gap",
"pkg:generic/gfan",
"pkg:generic/givaro",
"pkg:generic/glpk",
"pkg:generic/gmp",
"pkg:generic/gsl",
"pkg:generic/iml",
"pkg:generic/lcalc",
"pkg:generic/libbraiding",
"pkg:generic/libgd",
"pkg:generic/libhomfly",
"pkg:generic/linbox",
"pkg:generic/lrcalc",
"pkg:generic/m4ri",
"pkg:generic/m4rie",
"pkg:generic/maxima",
"pkg:generic/mpc",
"pkg:generic/mpfi",
"pkg:generic/mpfr",
"pkg:generic/nauty",
"pkg:generic/ntl",
"pkg:generic/palp",
"pkg:generic/pari",
"pkg:generic/pari-elldata",
"pkg:generic/pari-galdata",
"pkg:generic/pari-seadata",
"pkg:generic/planarity",
"pkg:generic/primecount",
"pkg:generic/primesieve",
"pkg:generic/qhull",
"pkg:generic/rw",
"pkg:generic/singular",
"pkg:generic/symmetrica",
"pkg:generic/sympow",
"virtual:compiler/fortran",
"virtual:interface/blas",
]
dependencies = [
"pkg:generic/sagemath-elliptic-curves",
"pkg:generic/sagemath-graphs",
"pkg:generic/sagemath-polytopes-db",
"pkg:generic/tachyon",
]
[external.optional-host-requires]
extra = [
"pkg:generic/bliss",
"pkg:generic/brial",
"pkg:generic/coxeter3",
"pkg:generic/eclib",
"pkg:generic/mcqd",
"pkg:generic/meataxe",
"pkg:generic/sirocco",
"pkg:generic/tdlib",
]
[external.optional-dependencies]
R = ["pkg:generic/r-lattice"]
extra = [
"pkg:generic/4ti2",
"pkg:generic/benzene",
"pkg:generic/buckygen",
"pkg:generic/csdp",
"pkg:generic/frobby",
"pkg:generic/kenzo",
"pkg:generic/latte-integrale",
"pkg:generic/lrslib",
"pkg:generic/plantri",
"pkg:generic/qepcad",
"pkg:generic/tides",
]
[dependency-groups]
dev = ["conda-lock", "grayskull", "meson", "pygithub", "toml", "tqdm", "uv"]
docs = [
"furo",
"jupyter-sphinx",
"python-dateutil",
"sphinx",
"sphinx-copybutton",
"sphinx-inline-tabs",
]
lint = ["flake8-rst-docstrings", "pycodestyle", "relint", "ruff"]
test = ["coverage", "pytest", "pytest-xdist"]
[tool.ruff]
target-version = "py311"
[tool.ruff.lint]
ignore = [
"E501",
]
select = [
"E",
"F",
"I",
"PL",
]
[tool.ruff.lint.per-file-ignores]
"all.py" = [
"F401",
]
[tool.uv]
no-build-isolation-package = ["sagemath"]