Packages and Features
Release 10.4

The Sage Development TeamJul 23, 2024

CONTENTS

1Standard Packages

1

2

Optional Packages

113

Features17

4

Distribution Packages of the Sage Library73

5

Experimental Packages

75

6

All External Packages

77

Python Module Index

627

Index

629

i

ii

CHAPTERONESTANDARD PACKAGESThe Sage distribution includes most programs and libraries on which Sage depends. It installs them automatically if it
does not find equivalent system packages.

1.1 Mathematics• brial: Boolean Ring Algebra implementation using binary decision diagrams• cddlib: Double description method for polyhedral representation conversion• cliquer: Routines for clique searching• combinatorial_designs: Data from the Handbook of Combinatorial Designs• conway_polynomials: Python interface to Frank Lübeck’s Conway polynomial database• cvxopt: Python software for convex optimization• cypari2: Python interface to the number theory library libpari• eclib: Enumerating and computing with elliptic curves defined over the rational numbers• ecm: Elliptic curve method for integer factorization• elliptic_curves: Databases of elliptic curves• fflas_ffpack: Dense linear algebra over word-size finite fields• flint: Fast Library for Number Theory• fplll: Lattice algorithms, including LLL with floating-point orthogonalization• fpylll: Python interface for FPLLL• gap: Groups, Algorithms, Programming - a system for computational discrete algebra• gf2x: Fast arithmetic in GF(2)[x] and searching for irreducible/primitive trinomials• gfan: Groebner fans and tropical varieties• giac: A general purpose computer algebra system• givaro: C++ library for arithmetic and algebraic computations• glpk: GNU Linear Programming Kit• gmp: Library for arbitrary precision arithmetic• gmpy2: Python interface to GMP/MPIR, MPFR, and MPC• graphs: A database of combinatorial graphs

1Packages and Features, Release 10.4

• gsl: The GNU Scientific Library• iml: Integer Matrix Library• lcalc: L-function calculator• libbraiding: Computing with braids• libhomfly: Compute the homfly polynomial of knots and links• linbox: Linear algebra with dense, sparse, structured matrices over the integers and finite fields• lrcalc: Littlewood-Richardson calculator• lrcalc_python: Littlewood-Richardson calculator• m4ri: fast arithmetic with dense matrices over GF(2)• m4rie: Arithmetic with dense matrices over GF(2^e)• maxima: System for manipulating symbolic and numerical expressions• mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding• mpfi: Multiple precision interval arithmetic library based on MPFR
• mpfr: Multiple-precision floating-point computations with correct rounding• mpmath: Pure Python library for multiprecision floating-point arithmetic• nauty: Find automorphism groups of graphs, generate non-isomorphic graphs• networkx: Python package for complex networks• ntl: A library for doing number theory• numpy: Package for scientific computing with Python• openblas: An optimized implementation of BLAS (Basic Linear Algebra Subprograms)• palp: A package for Analyzing Lattice Polytopes• pari: Computer algebra system for fast computations in number theory• pari_galdata: PARI data package needed to compute Galois groups in degrees 8 through 11• pari_seadata_small: PARI data package needed by ellap for large primes (small version)• planarity: Planarity-related graph algorithms• polytopes_db: Databases of 2- and 3-dimensional reflexive polytopes• ppl: Parma Polyhedra Library• pplpy: Python interface to the Parma Polyhedra Library• primecount: Algorithms for counting primes• primecountpy: Cython interface for C++ primecount library• primesieve: CLI program and C/C++ library for generating primes• qhull: Compute convex hulls, Delaunay triangulations, Voronoi diagrams• rpy2: Python interface to R
• rw: Compute rank-width and rank-decompositions• scipy: Scientific tools for Python• singular: Computer algebra system for polynomial computations, algebraic geometry, singularity theory

2

Chapter 1. Standard Packages

Packages and Features, Release 10.4

• suitesparse: A suite of sparse matrix software• symmetrica: Library for representation theory• sympow: Computes special values of symmetric power elliptic curve L-functions• sympy: Python library for symbolic mathematics

1.2 Front-end, graphics, document preparation• ipympl: Matplotlib Jupyter Extension• ipython: Interactive computing environment with an enhanced interactive Python shell• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• jmol: Java viewer for chemical structures in 3D• jupyter_jsmol: JSmol viewer widget for Jupyter• jupyterlab: JupyterLab computational environment• jupyterlab_widgets: Jupyter interactive widgets for JupyterLab• matplotlib: Python 2D plotting library• matplotlib_inline: Inline Matplotlib backend for Jupyter• nbconvert: Converting Jupyter Notebooks• notebook: Jupyter notebook, a web-based notebook environment for interactive computing• sagenb_export: Convert legacy SageNB notebooks to Jupyter notebooks and other formats• sagetex: Embed code, results of computations, and plots from Sage into LaTeX documents• tachyon: A ray tracing system• threejs: JavaScript library to display 3D graphics in the browser

1.3 Other dependencies• _prereq: Represents system packages required for installing SageMath from source• alabaster: Default theme for the Sphinx documentation system• anyio: High level compatibility layer for multiple asynchronous event loop implementations• appdirs: Small Python module for determining appropriate platform-specific dirs, e.g. a “user data dir”
• appnope: Disable App Nap on macOS >= 10.9
• argon2_cffi: The secure Argon2 password hashing algorithm• argon2_cffi_bindings: Low-level CFFI bindings for Argon2• arrow: Better dates & times for Python• asttokens: Annotate AST trees with source code positions• async_lru: Simple LRU cache for asyncio• attrs: Decorator for Python classes with attributes

1.2. Front-end, graphics, document preparation

3

Packages and Features, Release 10.4

• babel: Internationalization utilities• beautifulsoup4: Screen-scraping library• beniget: Extract semantic information about static Python code
• bleach: An HTML-sanitizing tool
• boost_cropped: Portable C++ libraries (subset needed for Sage)• bzip2: High-quality data compressor• cachetools: Extensible memoizing collections and decorators• calver: Setuptools extension for CalVer package versions• certifi: Python package for providing Mozilla’s CA Bundle• cffi: Foreign Function Interface for Python calling C code
• chardet: Universal encoding detector for Python 3• charset_normalizer: The Real First Universal Charset Detector. Open, modern and actively maintained alternative
to Chardet.
• cmake: A cross-platform build system generator• colorama: Cross-platform colored terminal text
• comm: Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc.
• contourpy: Python library for calculating contours of 2D quadrilateral grids• cppy: C++ headers for C extension development• curl: Multiprotocol data transfer library and utility• cycler: Composable cycles• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• dateutil: Extensions to the standard Python module datetime• debugpy: Implementation of the Debug Adapter Protocol for Python• decorator: Python library providing decorators• defusedxml: Addresses vulnerabilities of XML parsers and XML libraries• distlib: Distribution utilities• docutils: Processing plaintext documentation into useful formats, such as HTML or LaTeX• ecl: An implementation of the Common Lisp language• editables: Editable installations• entrypoints: Discover and load entry points from installed Python packages• exceptiongroup: Backport of PEP 654 (exception groups)• executing: Get the currently executing AST node of a frame, and other information• fastjsonschema: Fastest Python implementation of JSON schema• filelock: Platform independent file lock• flit_core: Distribution-building parts of Flit. See flit package for more information

4

Chapter 1. Standard Packages

Packages and Features, Release 10.4

• fonttools: Tools to manipulate font files• fqdn: Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers• freetype: A free, high-quality, and portable font engine• furo: A clean customizable Sphinx documentation theme• gast: Python AST that abstracts the underlying Python version• gc: The Boehm-Demers-Weiser conservative garbage collector• gcc: The GNU Compiler Collection or other suitable C and C++ compilers• gengetopt: getopt_long parser generator• gfortran: Fortran compiler from the GNU Compiler Collection• gnulib: Modules imported from Gnulib• gnumake_tokenpool: Jobclient and jobserver for the GNU make tokenpool protocol• h11: A pure-Python, bring-your-own-I/O implementation of HTTP/1.1• hatchling: Modern, extensible Python build backend• httpcore: Minimal low-level HTTP client• httpx: The next generation HTTP client.
• iconv: Library for language/country-dependent character encodings• idna: Internationalized Domain Names in Applications (IDNA)• imagesize: Getting image size from png/jpeg/jpeg2000/gif file• importlib_metadata: Library to access the metadata for a Python package• importlib_resources: Read resources from Python packages• info: stand-alone Info documentation reader• ipykernel: IPython Kernel for Jupyter• ipython_genutils: Vestigial utilities from IPython• isoduration: Operations with ISO 8601 durations• jedi: Static analysis tool providing IDE support for Python• jinja2: General purpose template engine for Python• json5: Python implementation of the JSON5 data format• jsonpointer: Identify specific nodes in a JSON document (RFC 6901)• jsonschema: Python implementation of JSON Schema• jsonschema_specifications: The JSON Schema meta-schemas and vocabularies, exposed as a Registry• jupyter_client: Jupyter protocol implementation and client libraries• jupyter_core: Jupyter core package• jupyter_events: Jupyter Event System library• jupyter_lsp: Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server• jupyter_server: The backend (core services, APIs, REST endpoints) to Jupyter web applications• jupyter_server_terminals: A Jupyter Server Extension Providing Terminals

1.3. Other dependencies

5Packages and Features, Release 10.4

• jupyter_sphinx: Jupyter Sphinx Extension• jupyterlab_mathjax2: A MathJax Typesetting provider for JupyterLab 4 and above• jupyterlab_pygments: Pygments theme using JupyterLab CSS variables• jupyterlab_server: Set of server components for JupyterLab and JupyterLab like applications• kiwisolver: Fast implementation of the Cassowary constraint solver• libatomic_ops: Access hardware-provided atomic memory update operations• libffi: A portable foreign-function interface library• libgd: Dynamic graphics generation tool
• liblzma: General-purpose data compression software• libpng: Bitmap image support• markupsafe: Safely add untrusted strings to HTML/XML markup• mathjax: A JavaScript library for displaying mathematical formulas• memory_allocator: An extension class to allocate memory easily with Cython• meson: A high performance build system• meson_python: Meson Python build backend (PEP 517)
• mistune: Sane and fast Markdown parser with useful plugins and renderers• nbclient: Client library for executing notebooks. Formerly nbconvert’s ExecutePreprocessor• nbformat: The Jupyter Notebook format• ncurses: Classic terminal output library• nest_asyncio: Patch asyncio to allow nested event loops• ninja_build: A build system with a focus on speed• notebook_shim: A shim layer for notebook traits and config• openssl: Implementation of the SSL and TLS protocols• overrides: Decorator to automatically detect mismatch when overriding a method• packaging: Core utilities for Python packages• pandocfilters: A Python module for writing pandoc filters• parso: Python Parser• patch: Applies diffs and patches to files• patchelf: A small utility to modify the dynamic linker and RPATH of ELF executables• pathspec: Utility library for gitignore style pattern matching of file paths• pexpect: Python module for controlling and automating other programs• pickleshare: A ‘shelve’ like datastore with concurrency support• pillow: Python Imaging Library• pip: Tool for installing and managing Python packages• pkgconf: An implementation of the pkg-config spec
• pkgconfig: Python interface to pkg-config

6

Chapter 1. Standard Packages

Packages and Features, Release 10.4

• platformdirs: Small Python package for determining appropriate platform-specific dirs, e.g. a “user data dir”
• pluggy: Plugin and hook calling mechanisms for python• ply: Python Lex & Yacc
• pplpy_doc: Python interface to the Parma Polyhedra Library (documentation)• prometheus_client: Python client for the systems monitoring and alerting toolkit Prometheus• prompt_toolkit: Interactive command lines for Python• psutil: Cross-platform lib for process and system monitoring in Python.
• ptyprocess: Python interaction with subprocesses in a pseudoterminal• pure_eval: Safely evaluate AST nodes without side effects• py: Library with cross-python path, ini-parsing, io, code, log facilities• pybind11: Create Python bindings to C++ code
• pycparser: Parser of the C language in Python• pygments: Generic syntax highlighter• pyparsing: A Python parsing module• pyproject_api: API to interact with the python pyproject.toml based projects• pyproject_hooks: Wrappers to call pyproject.toml-based build backend hooks.
• pyproject_metadata: PEP 621 metadata parsing• pyrsistent: Persistent data structures in Python• python3: The Python programming language• python_build: A simple, correct PEP517 package builder• python_json_logger: Python library adding a json log formatter• pythran: Ahead of Time compiler for numeric kernels• pytz: Timezone definitions for Python• pytz_deprecation_shim: Shims to make deprecation of pytz easier• pyyaml: YAML parser and emitter for Python• pyzmq: Python bindings for the zeromq networking library• readline: Command line editing library• referencing: JSON Referencing + Python• requests: An HTTP library for Python• rfc3339_validator: A pure python RFC3339 validator• rfc3986_validator: Pure python rfc3986 validator• sage_conf: Configuration module for the SageMath library (distributable version)• sage_docbuild: Build system of the Sage documentation• sage-setup: Build system of the SageMath library• send2trash: Send file to trash natively under Mac OS X, Windows and Linux• setuptools: Build system for Python packages

1.3. Other dependencies

7

Packages and Features, Release 10.4

• setuptools_scm: Python build system extension to obtain package version from version control• six: Python 2 and 3 compatibility utilities• sniffio: Sniff out which async library your code is running under• snowballstemmer: Stemmer algorithms for natural language processing in Python• soupsieve: Modern CSS selector implementation for Beautiful Soup
• sphinx: Python documentation generator• sphinx_basic_ng: Modern skeleton for Sphinx themes• sphinx_copybutton: Add a copy button to each of your code cells• sphinx_inline_tabs: Add inline tabbed content to your Sphinx documentation• sphinxcontrib_applehelp: Sphinx extension which outputs Apple help book• sphinxcontrib_devhelp: Sphinx extension which outputs Devhelp documents• sphinxcontrib_htmlhelp: Sphinx extension which outputs HTML help book• sphinxcontrib_jsmath: Sphinx extension which renders display math in HTML via JavaScript• sphinxcontrib_qthelp: Sphinx extension which outputs QtHelp documents• sphinxcontrib_serializinghtml: Sphinx extension which outputs serialized HTML files• sphinxcontrib_websupport: Sphinx API for Web apps
• sqlite: An SQL database engine• stack_data: Extract data from python stack frames and tracebacks for informative displays• terminado: Tornado websocket backend for the term.js Javascript terminal emulator library• tinycss2: A tiny CSS parser• tomli: A lil’ TOML parser• tornado: Python web framework and asynchronous networking library• tox: tox is a generic virtualenv management and test command line tool
• traitlets: Traitlets Python configuration system• trove_classifiers: Canonical source for classifiers on PyPI (pypi.org)• types_python_dateutil: Typing stubs for python-dateutil• typing_extensions: Backported and Experimental Type Hints for Python 3.8+
• tzdata: Provider of IANA time zone data
• tzlocal: Python timezone information for the local timezone• uri_template: RFC 6570 URI Template Processor• urllib3: HTTP library with thread-safe connection pooling, file post, and more
• virtualenv: Virtual Python Environment builder• wcwidth: Measures the displayed width of unicode strings in a terminal• webcolors: Library for working with the color formats defined by HTML and CSS• webencodings: Character encoding aliases for legacy web content• websocket_client: WebSocket client for Python with low level API options

8

Chapter 1. Standard Packages

Packages and Features, Release 10.4

• wheel: A built-package format for Python• widgetsnbextension: Jupyter interactive widgets for Jupyter Notebook• xz: General-purpose data compression software• zeromq: A modern networking library• zipp: A pathlib-compatible zipfile object wrapper• zlib: Data compression library

1.3. Other dependencies

9Packages and Features, Release 10.4

10Chapter 1. Standard Packages

CHAPTERTWOOPTIONAL PACKAGES

For additional functionality, you can install some of the following optional packages.

2.1 Mathematics• 4ti2: Algebraic, geometric and combinatorial problems on linear spaces• admcycles: Computation in the tautological ring of the moduli space of curves• benzene: Generate fusenes and benzenoids with a given number of faces• bliss: Computing automorphism groups and canonical forms of graphs• buckygen: Efficient generation of nonisomorphic fullerenes• cbc: COIN-OR branch and cut solver for mixed-integer programs• clarabel: Clarabel Conic Interior Point Solver for Rust / Python• coxeter3: Library for Coxeter groups, Bruhat ordering, Kazhdan-Lusztig polynomials• csdp: Solver for semidefinite programs• cunningham_tables: List of the prime numbers occuring in the Cunningham table• cvxpy: Domain-specific language for modeling convex optimization problems in Python• cylp: Python interface for CLP, CBC, and CGL• database_cremona_ellcurve: Database of elliptic curves• database_cubic_hecke: Ivan Marin’s representations of the cubic Hecke algebra• database_jones_numfield: Table of number fields• database_knotinfo: Content of the KnotInfo and LinkInfo databases as lists of dictionaries• database_kohel: Database of modular and Hilbert polynomials• database_mutation_class: Database of exceptional mutation classes of quivers• database_odlyzko_zeta: Table of zeros of the Riemann zeta function• database_stein_watkins: Database of elliptic curves (full version)• database_stein_watkins_mini: Database of elliptic curves (small version)• database_symbolic_data: Database from the SymbolicData project• dsdp: Semidefinite programming solver• e_antic: Real embedded number fields
11Packages and Features, Release 10.4

• ecos_python: Embedded Cone Solver (Python wrapper)• fricas: A general purpose computer algebra system• frobby: Computations on monomial ideals• gap_jupyter: Jupyter kernel for GAP• gap_packages: A collection of GAP packages• glucose: A SAT solver• gp2c: A compiler for translating GP routines to C
• igraph: A library for creating and manipulating graphs• isl: Sets and relations of integer points bounded by affine constraints• jupymake: A Python wrapper for the polymake shell• kenzo: Construct topological spaces and compute homology groups• kissat: SAT solver• latte_int: Count lattice points, compute volumes, and integrate over convex polytopes• libnauty: Find automorphism groups of graphs, generate non-isomorphic graphs (callable library)• libsemigroups: Library for semigroups and monoids• lidia: A library for computational number theory• lrslib: Reverse search algorithm for vertex enumeration and convex hull problems• mathics: General-purpose computer algebra system• mathics_scanner: Character Tables and Tokenizer for Mathics and the Wolfram Language• mcqd: An exact algorithm for finding a maximum clique in an undirected graph• meataxe: Library for computing with modular representations• modular_resolution: Modular cohomology rings of finite groups• mpfrcx: Arithmetic of univariate polynomials over arbitrary precision real or complex numbers• msolve: Multivariate polynomial system solver• normaliz: Computations in affine monoids, vector configurations, lattice polytopes, and rational cones• ore_algebra: Ore algebra• osqp_python: The Operator Splitting QP Solver (Python wrapper)• p_group_cohomology: Modular cohomology rings of finite groups• papilo: Parallel presolve for integer and linear optimization• pari_elldata: PARI data package for elliptic curves• pari_galpol: PARI data package for polynomials defining Galois extensions of the rationals• pari_jupyter: Jupyter kernel for PARI/GP• pari_nftables: PARI data package for number fields• pari_seadata: PARI data package needed by ellap for large primes (full version)• phitigra: Graph editor for SageMath/Jupyter• plantri: Generate non-isomorphic sphere-embdedded graphs

12

Chapter 2. Optional Packages

Packages and Features, Release 10.4

• polymake: Computations with polyhedra, fans, simplicial complexes, matroids, graphs, tropical hypersurfaces• polytopes_db_4d: Database of 4-dimensional reflexive polytopes• pycosat: SAT solver picosat with Python bindings• pycryptosat: Python module of cryptominisat• pynormaliz: Python bindings for the normaliz library• pyscipopt: Python interface and modeling environment for SCIP
• pysingular: A basic Python interface to Singular• python_igraph: Python bindings for igraph• qdldl_python: QDLDL, a free LDL factorization routine (Python wrapper)• qepcad: Quantifier elimination by partial cylindrical algebraic decomposition• r: A free software environment for statistical computing and graphics• rubiks: Programs for Rubik’s cube
• saclib: Computations with real algebraic numbers• sage_flatsurf: Flat surfaces in SageMath• sage_numerical_backends_coin: COIN-OR backend for Sage MixedIntegerLinearProgram• sage_numerical_backends_cplex: Cplex backend for Sage MixedIntegerLinearProgram• sage_numerical_backends_gurobi: Gurobi backend for Sage MixedIntegerLinearProgram• sbcl: a lisp compiler and runtime system• scip: Mixed integer programming solver• scip_sdp: Mixed integer semidefinite programming plugin for SCIP
• scs: Splitting conic solver• singular_jupyter: Jupyter kernel for Singular• sirocco: Compute topologically certified root continuation of bivariate polynomials• slabbe: Sébastien Labbé’s Research code• snappy: Topology and geometry of 3-manifolds, with a focus on hyperbolic structures• soplex: Linear optimization solver using the revised simplex method• surface_dynamics: dynamics on surfaces (measured foliations, interval exchange transformation, Teichmüller flow,etc)• symengine: A C++ symbolic manipulation library• symengine_py: Python wrappers for SymEngine• tdlib: Algorithms for computing tree decompositions of graphs• tides: Integration of ODEs
• topcom: Compute triangulations of point configurations and oriented matroids

2.1. Mathematics

13

Packages and Features, Release 10.4

2.2 Front-end, graphics, document preparation• dot2tex: Create PGF/TikZ commands from Graphviz output• graphviz: Graph visualization software• pandoc: A document converter• pdf2svg: PDF to SVG convertor• pygraphviz: Python interface to Graphviz• rst2ipynb: Convert reStructuredText files to Jupyter notebooks• sage_sws2rst: Translate legacy Sage worksheet files (.sws) to reStructuredText (.rst) files• texlive: A comprehensive TeX system

2.3 Other dependencies• _bootstrap: Represents system packages required for running the top-level bootstrap script• _develop: Represents system packages recommended for development• _recommended: Represents system packages recommended for additional functionality• _sagemath: Downstream package of Sage in distributions• auditwheel_or_delocate: Repair wheels on Linux or macOS• biopython: Tools for computational molecular biology• ccache: A compiler cache• d3js: JavaScript library for manipulating documents based on data
• ffmpeg: ffmpeg video converter• free_fonts: a free family of scalable outline fonts• git: Version control system• github_cli: Command-line interface for GitHub• gitpython: GitPython is a python library used to interact with Git repositories• hypothesis: A library for property-based testing• imagemagick: A collection of tools and libraries for many image file formats• libgraphviz: Graph visualization software (callable library)• libjpeg: JPEG image support• libogg: Library for the Ogg multimedia container format• libxml2: XML parser and toolkit• llvm: The LLVM Compiler Infrastructure, including the Clang C/C++/Objective-C compiler• matroid_database: Python interface to matroid database• nibabel: Access a multitude of neuroimaging data formats• notedown: Create IPython notebooks from markdown

14

Chapter 2. Optional Packages

Packages and Features, Release 10.4

• onetbb: oneAPI Threading Building Blocks• palettable: Color palettes for Python• pandoc_attributes: A parser and generator for pandoc block attributes• perl_cpan_polymake_prereq: Represents all Perl packages that are prerequisites for polymake• perl_mongodb: A prerequisite for polymake’s PolyDB feature• perl_term_readline_gnu: Perl extension for the GNU Readline/History libraries• pint: Physical quantities module• pybtex: A BibTeX-compatible bibliography processor in Python• pyppeteer: Headless chrome/chromium automation library• pytest: Simple powerful testing with Python• pytest_mock: Thin-wrapper around the mock package for easier use with pytest• pytest_xdist: pytest xdist plugin for distributed testing and loop-on-failing modes• python_flint: Bindings for FLINT and Arb• pyx: Generate PostScript, PDF, and SVG files in Python• sqlalchemy: A database abstraction library• texlive_luatex: LuaTeX packages• texttable: Python module for creating simple ASCII tables• xindy: a general-purpose index processor

2.3. Other dependencies

15

Packages and Features, Release 10.4

16

Chapter 2. Optional Packages

CHAPTER

THREE

FEATURES

3.1 Testing for features of the environment at runtime
A computation can require a certain package to be installed in the runtime environment. Abstractly such a package
describes a Feature which can be tested for at runtime. It can be of various kinds, most prominently an Executablein the PATH, a PythonModule, or an additional package for some installed system such as a GapPackage.
AUTHORS:• Julian Rüth (2016-04-07): Initial version• Jeroen Demeyer (2018-02-12): Refactoring and clean up
EXAMPLES:
Some generic features are available for common cases. For example, to test for the existence of a binary, one can use an
Executable feature:sage: from sage.features import Executablesage: Executable(name="sh", executable="sh").is_present()
FeatureTestResult( sh , True)>>> from sage.all import *>>> from sage.features import Executable>>> Executable(name="sh", executable="sh").is_present()
FeatureTestResult( sh , True)

Here we test whether the grape GAP package is available:
sage: from sage.features.gap import GapPackage
sage: GapPackage("grape", spkg="gap_packages").is_present()
˓→grapeFeatureTestResult( gap_package_grape , True)>>> from sage.all import *>>> from sage.features.gap import GapPackage>>> GapPackage("grape", spkg="gap_packages").is_present()
˓→grapeFeatureTestResult( gap_package_grape , True)# optional - gap_package_# optional - gap_package_

Note that a FeatureTestResult acts like a bool in most contexts:
sage: if Executable(name="sh", executable="sh").is_present(): "present."
present.

17

Packages and Features, Release 10.4>>> from sage.all import *>>> if Executable(name="sh", executable="sh").is_present(): "present."
present.

When one wants to raise an error if the feature is not available, one can use the require method:
sage: Executable(name="sh", executable="sh").require()sage: Executable(name="random", executable="randomOochoz6x", spkg="random", url=
˓→"http://rand.om").require() # optional - sage_spkg
Traceback (most recent call last):...
FeatureNotPresentError: random is not available.
Executable randomOochoz6x not found on PATH.
...try to run...sage -i random...
Further installation instructions might be available at http://rand.om.
>>> from sage.all import *>>> Executable(name="sh", executable="sh").require()>>> Executable(name="random", executable="randomOochoz6x", spkg="random", url="http://
˓→rand.om").require() # optional - sage_spkg
Traceback (most recent call last):...
FeatureNotPresentError: random is not available.
Executable randomOochoz6x not found on PATH.
...try to run...sage -i random...
Further installation instructions might be available at http://rand.om.

As can be seen above, features try to produce helpful error messages.
class sage.features.CythonFeature(*args, **kwds)
Bases: Feature
A Feature which describes the ability to compile and import a particular piece of Cython code.
To test the presence of name, the cython compiler is run on test_code and the resulting module is imported.
EXAMPLES:
sage: from sage.features import CythonFeaturesage: fabs_test_code =....: cdef extern from "<math.h>":....:double fabs(double x)....:....: assert fabs(-1) == 1....:
sage: fabs = CythonFeature("fabs", test_code=fabs_test_code,
˓→needs sage.misc.cython....:
spkg="gcc", url="https://gnu.org",....:
type="standard")
sage: fabs.is_present()
˓→needs sage.misc.cython
FeatureTestResult( fabs , True)#␣#␣>>> from sage.all import *>>> from sage.features import CythonFeature>>> fabs_test_code =(continues on next page)

18

Chapter 3. Features

Packages and Features, Release 10.4

(continued from previous page)... cdef extern from "<math.h>":...
double fabs(double x)....:>>> assert fabs(-Integer(1)) == Integer(1)...
>>> fabs = CythonFeature("fabs", test_code=fabs_test_code,
˓→needs sage.misc.cython...
spkg="gcc", url="https://gnu.org",...
type="standard")>>> fabs.is_present()
˓→needs sage.misc.cython
FeatureTestResult( fabs , True)#␣#␣

Test various failures:sage: broken_code =this is not a valid Cython program!
sage: broken = CythonFeature("broken", test_code=broken_code)
sage: broken.is_present()
FeatureTestResult( broken , False)>>> from sage.all import *>>> broken_code =this is not a valid Cython program!
>>> broken = CythonFeature("broken", test_code=broken_code)>>> broken.is_present()
FeatureTestResult( broken , False)
sage: broken_code =cdef extern from "no_such_header_file": pass
sage: broken = CythonFeature("broken", test_code=broken_code)
sage: broken.is_present()
FeatureTestResult( broken , False)>>> from sage.all import *>>> broken_code =cdef extern from "no_such_header_file": pass>>> broken = CythonFeature("broken", test_code=broken_code)>>> broken.is_present()
FeatureTestResult( broken , False)
sage: broken_code =import no_such_python_module
sage: broken = CythonFeature("broken", test_code=broken_code)
sage: broken.is_present()
FeatureTestResult( broken , False)>>> from sage.all import *>>> broken_code =import no_such_python_module>>> broken = CythonFeature("broken", test_code=broken_code)>>> broken.is_present()
FeatureTestResult( broken , False)
sage: broken_code =raise AssertionError("sorry!")
sage: broken = CythonFeature("broken", test_code=broken_code)
sage: broken.is_present()
FeatureTestResult( broken , False)

3.1. Testing for features of the environment at runtime

19

Packages and Features, Release 10.4>>> from sage.all import *>>> broken_code =raise AssertionError("sorry!")>>> broken = CythonFeature("broken", test_code=broken_code)>>> broken.is_present()
FeatureTestResult( broken , False)class sage.features.Executable(*args, **kwds)
Bases: FileFeature
A feature describing an executable in the PATH.
In an installation of Sage with SAGE_LOCAL different from SAGE_VENV, the executable is searched first in
SAGE_VENV/bin, then in SAGE_LOCAL/bin, then in PATH.
Note: Overwrite is_functional() if you also want to check whether the executable shows proper behaviour.
Calls to is_present() are cached. You might want to cache the Executable object to prevent unnecessary
calls to the executable.
EXAMPLES:
sage: from sage.features import Executablesage: Executable(name="sh", executable="sh").is_present()
FeatureTestResult( sh , True)
sage: Executable(name="does-not-exist", executable="does-not-exist-xxxxyxyyxyy").
˓→is_present()
FeatureTestResult( does-not-exist , False)>>> from sage.all import *>>> from sage.features import Executable>>> Executable(name="sh", executable="sh").is_present()
FeatureTestResult( sh , True)>>> Executable(name="does-not-exist", executable="does-not-exist-xxxxyxyyxyy").is_˓→present()
FeatureTestResult( does-not-exist , False)

absolute_filename()
The absolute path of the executable as a string.
EXAMPLES:
sage: from sage.features import Executablesage: Executable(name="sh", executable="sh").absolute_filename()/...bin/sh>>> from sage.all import *>>> from sage.features import Executable>>> Executable(name="sh", executable="sh").absolute_filename()/...bin/sh

A FeatureNotPresentError is raised if the file cannot be found:sage: Executable(name="does-not-exist", executable="does-not-exist-xxxxyxyyxyy
˓→").absolute_filename()
Traceback (most recent call last):...
(continues on next page)

20

Chapter 3. Features

Packages and Features, Release 10.4

(continued from previous page)

sage.features.FeatureNotPresentError: does-not-exist is not available.
Executable does-not-exist-xxxxyxyyxyy not found on PATH.
>>> from sage.all import *>>> Executable(name="does-not-exist", executable="does-not-exist-xxxxyxyyxyy
˓→").absolute_filename()
Traceback (most recent call last):...
sage.features.FeatureNotPresentError: does-not-exist is not available.
Executable does-not-exist-xxxxyxyyxyy not found on PATH.

is_functional()
Return whether an executable in the path is functional.
This method is used internally and can be overridden in subclasses in order to implement a feature test. It
should not be called directly. Use Feature.is_present() instead.
EXAMPLES:
The function returns True unless explicitly overwritten:
sage: from sage.features import Executablesage: Executable(name="sh", executable="sh").is_functional()
FeatureTestResult( sh , True)>>> from sage.all import *>>> from sage.features import Executable>>> Executable(name="sh", executable="sh").is_functional()
FeatureTestResult( sh , True)class sage.features.Feature(*args, **kwds)
Bases: TrivialUniqueRepresentation
A feature of the runtime environment
INPUT:• name – (string) name of the feature; this should be suitable as an optional tag for the Sage doctester, i.e.,lowercase alphanumeric with underscores (_) allowed; features that correspond to Python modules/packages
may use periods (.)• spkg – (string) name of the SPKG providing the feature• description – (string) optional; plain English description of the feature• url – a URL for the upstream package providing the feature• type – (string) one of standard , optional (default), experimental
Overwrite _is_present() to add feature checks.
EXAMPLES:
sage: from sage.features.gap import GapPackage
sage: GapPackage("grape", spkg="gap_packages")
Feature( gap_package_grape )3.1. Testing for features of the environment at runtime# indirect doctest

21

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.gap import GapPackage>>> GapPackage("grape", spkg="gap_packages")
Feature( gap_package_grape )# indirect doctest

For efficiency, features are unique:sage: GapPackage("grape") is GapPackage("grape")
True>>> from sage.all import *>>> GapPackage("grape") is GapPackage("grape")Truehide()
Hide this feature. For example this is used when the doctest option --hide is set. Setting an installed feature
as hidden pretends that it is not available. To revert this use unhide().
EXAMPLES:
Benzene is an optional SPKG. The following test fails if it is hidden or not installed. Thus, in the second
invocation the optional tag is needed:sage: from sage.features.graph_generators import Benzene
sage: Benzene().hide()sage: len(list(graphs.fusenes(2)))˓→needs sage.graphs
Traceback (most recent call last):...
FeatureNotPresentError: benzene is not available.
Feature benzene is hidden.
Use method unhide to make it available again.
sage: Benzene().unhide()sage: len(list(graphs.fusenes(2)))
1#␣# optional - benzene, needs sage.graphs# optional - benzene, needs sage.graphs>>> from sage.all import *>>> from sage.features.graph_generators import Benzene>>> Benzene().hide()>>> len(list(graphs.fusenes(Integer(2))))˓→# needs sage.graphs
Traceback (most recent call last):...
FeatureNotPresentError: benzene is not available.
Feature benzene is hidden.
Use method unhide to make it available again.

␣>>> Benzene().unhide()# optional - benzene, needs sage.graphs>>> len(list(graphs.fusenes(Integer(2)))) # optional - benzene, needs sage.
˓→graphs1

is_hidden()
Return whether self is present but currently hidden.
EXAMPLES:

22

Chapter 3. Features

Packages and Features, Release 10.4

sage:
from sage.features.sagemath import sage__plot sage:
sage__plot().hide() sage:
sage__plot().is_hidden() # needs sage.plot True sage:
sage__plot().unhide() sage:
sage__plot().is_hidden() False
is_optional()
Return whether this feature corresponds to an optional SPKG.
EXAMPLES:
sage: from sage.features.databases import DatabaseCremona
sage: DatabaseCremona().is_optional()
True>>> from sage.all import *>>> from sage.features.databases import DatabaseCremona>>> DatabaseCremona().is_optional()
True

is_present()
Return whether the feature is present.
OUTPUT:
A FeatureTestResult which can be used as a boolean and contains additional information about thefeature test.
EXAMPLES:
sage: from sage.features.gap import GapPackage
sage: GapPackage("grape", spkg="gap_packages").is_present() # optional - gap_
˓→package_grape
FeatureTestResult( gap_package_grape , True)
sage: GapPackage("NOT_A_PACKAGE", spkg="gap_packages").is_present()
FeatureTestResult( gap_package_NOT_A_PACKAGE , False)>>> from sage.all import *>>> from sage.features.gap import GapPackage>>> GapPackage("grape", spkg="gap_packages").is_present() # optional - gap_
˓→package_grape
FeatureTestResult( gap_package_grape , True)>>> GapPackage("NOT_A_PACKAGE", spkg="gap_packages").is_present()
FeatureTestResult( gap_package_NOT_A_PACKAGE , False)

The result is cached:sage: from sage.features import Featuresage: class TestFeature(Feature):....:
def _is_present(self):....:
print("checking presence")....:
return True
sage: TestFeature("test").is_present()
checking presence
FeatureTestResult( test , True)
sage: TestFeature("test").is_present()
FeatureTestResult( test , True)
sage: TestFeature("other").is_present()
checking presence
FeatureTestResult( other , True)(continues on next page)

3.1. Testing for features of the environment at runtime

23

Packages and Features, Release 10.4

(continued from previous page)

sage: TestFeature("other").is_present()
FeatureTestResult( other , True)>>> from sage.all import *>>> from sage.features import Feature>>> class TestFeature(Feature):...
def _is_present(self):...
print("checking presence")...
return True>>> TestFeature("test").is_present()
checking presence
FeatureTestResult( test , True)>>> TestFeature("test").is_present()
FeatureTestResult( test , True)>>> TestFeature("other").is_present()
checking presence
FeatureTestResult( other , True)>>> TestFeature("other").is_present()
FeatureTestResult( other , True)is_standard()
Return whether this feature corresponds to a standard SPKG.
EXAMPLES:
sage: from sage.features.databases import DatabaseCremona
sage: DatabaseCremona().is_standard()
False>>> from sage.all import *>>> from sage.features.databases import DatabaseCremona>>> DatabaseCremona().is_standard()
False

joined_features()
Return a list of features that self is the join of.
OUTPUT:
A (possibly empty) list of instances of Feature.
EXAMPLES:
sage: from sage.features.graphviz import Graphviz
sage: Graphviz().joined_features()[Feature( dot ), Feature( neato ), Feature( twopi )]sage: from sage.features.sagemath import sage__rings__function_fieldsage: sage__rings__function_field().joined_features()[Feature( sage.rings.function_field.function_field_polymod ),Feature( sage.libs.singular ),Feature( sage.libs.singular.singular ),Feature( sage.interfaces.singular )]sage: from sage.features.interfaces import Mathematica
sage: Mathematica().joined_features()[]24

Chapter 3. Features

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.graphviz import Graphviz>>> Graphviz().joined_features()[Feature( dot ), Feature( neato ), Feature( twopi )]>>> from sage.features.sagemath import sage__rings__function_field>>> sage__rings__function_field().joined_features()[Feature( sage.rings.function_field.function_field_polymod ),Feature( sage.libs.singular ),Feature( sage.libs.singular.singular ),Feature( sage.interfaces.singular )]>>> from sage.features.interfaces import Mathematica>>> Mathematica().joined_features()[]require()Raise a FeatureNotPresentError if the feature is not present.
EXAMPLES:
sage: from sage.features.gap import GapPackage
sage: GapPackage("ve1EeThu").require()
˓→needs sage.libs.gap
Traceback (most recent call last):...
FeatureNotPresentError: gap_package_ve1EeThu is not available.
LoadPackage("ve1EeThu") evaluated to fail in GAP.

#␣>>> from sage.all import *>>> from sage.features.gap import GapPackage>>> GapPackage("ve1EeThu").require()
˓→needs sage.libs.gap
Traceback (most recent call last):...
FeatureNotPresentError: gap_package_ve1EeThu is not available.
LoadPackage("ve1EeThu") evaluated to fail in GAP.

#␣

resolution()
Return a suggestion on how to make is_present() pass if it did not pass.
OUTPUT:A string.
EXAMPLES:
sage: from sage.features import Executablesage: Executable(name="CSDP", spkg="csdp", executable="theta", url="https://˓→github.com/dimpase/csdp").resolution()# optional - sage_spkg...To install CSDP...you can try to run...sage -i csdp...Further␣˓→installation instructions might be available at https://github.com/dimpase/˓→csdp.
>>> from sage.all import *>>> from sage.features import Executable>>> Executable(name="CSDP", spkg="csdp", executable="theta", url="https://˓→github.com/dimpase/csdp").resolution()# optional - sage_spkg...To install CSDP...you can try to run...sage -i csdp...Further␣(continues on next page)

3.1. Testing for features of the environment at runtime

25

Packages and Features, Release 10.4

(continued from previous page)

installation instructions might be available at https://github.com/dimpase/˓→csdp.
˓→unhide()Revert what hide() did.
EXAMPLES:
sage:
from sage.features.sagemath import sage__plot sage:
sage__plot().hide() sage:
sage__plot().is_present() FeatureTestResult(‘sage.plot’, False) sage: sage__plot().unhide() #needs sage.plot sage: sage__plot().is_present() # needs sage.plot FeatureTestResult(‘sage.plot’,
True)
exception sage.features.FeatureNotPresentError(feature, reason=None, resolution=None)
Bases: RuntimeError
A missing feature error.
EXAMPLES:
sage: from sage.features import Feature, FeatureTestResult
sage: class Missing(Feature):....:
def _is_present(self):....:
return False
sage: Missing(name="missing").require()
Traceback (most recent call last):...
FeatureNotPresentError: missing is not available.
>>> from sage.all import *>>> from sage.features import Feature, FeatureTestResult>>> class Missing(Feature):...
def _is_present(self):...
return False>>> Missing(name="missing").require()
Traceback (most recent call last):...
FeatureNotPresentError: missing is not available.

property resolution
Initialize self. See help(type(self)) for accurate signature.
class sage.features.FeatureTestResult(feature, is_present, reason=None, resolution=None)
Bases: object
The result of a Feature.is_present() call.
Behaves like a boolean with some extra data which may explain why a feature is not present and how this may beresolved.
EXAMPLES:
sage: from sage.features.gap import GapPackage
sage: presence = GapPackage("NOT_A_PACKAGE").is_present(); presence
˓→doctest
FeatureTestResult( gap_package_NOT_A_PACKAGE , False)# indirect␣

(continues on next page)

26

Chapter 3. Features

Packages and Features, Release 10.4

(continued from previous page)

sage: bool(presence)
False>>> from sage.all import *>>> from sage.features.gap import GapPackage>>> presence = GapPackage("NOT_A_PACKAGE").is_present(); presence
˓→doctest
FeatureTestResult( gap_package_NOT_A_PACKAGE , False)>>> bool(presence)
False# indirect␣

Explanatory messages might be available as reason and resolution:
sage: presence.reason
˓→needs sage.libs.gap
LoadPackage("NOT_A_PACKAGE") evaluated tosage: bool(presence.resolution)
False>>> from sage.all import *>>> presence.reason
˓→needs sage.libs.gap
LoadPackage("NOT_A_PACKAGE")>>> bool(presence.resolution)
False

#␣
fail

in GAP.

#␣evaluated to

failin GAP.

If a feature is not present, resolution defaults to feature.resolution() if this is defined. If you do
not want to use this default you need explicitly set resolution to a string:sage: from sage.features import FeatureTestResult
sage: package = GapPackage("NOT_A_PACKAGE", spkg="no_package")sage: str(FeatureTestResult(package, True).resolution) # optional - sage_spkg...To install gap_package_NOT_A_PACKAGE...you can try to run...sage -i no_
˓→package...
sage: str(FeatureTestResult(package, False).resolution) # optional - sage_spkg...To install gap_package_NOT_A_PACKAGE...you can try to run...sage -i no_
˓→package...
sage: FeatureTestResult(package, False, resolution="rtm").resolution
rtm>>> from sage.all import *>>> from sage.features import FeatureTestResult>>> package = GapPackage("NOT_A_PACKAGE", spkg="no_package")>>> str(FeatureTestResult(package, True).resolution) # optional - sage_spkg...To install gap_package_NOT_A_PACKAGE...you can try to run...sage -i no_
˓→package...
>>> str(FeatureTestResult(package, False).resolution) # optional - sage_spkg...To install gap_package_NOT_A_PACKAGE...you can try to run...sage -i no_
˓→package...
>>> FeatureTestResult(package, False, resolution="rtm").resolution
rtm

property resolution
Initialize self. See help(type(self)) for accurate signature.

3.1. Testing for features of the environment at runtime

27

Packages and Features, Release 10.4class sage.features.FileFeature(*args, **kwds)
Bases: Feature
Base class for features that describe a file or directory in the file system.
A subclass should implement a method absolute_filename().
EXAMPLES:
Two direct concrete subclasses of FileFeature are defined:
sage: from sage.features import StaticFile, Executable, FileFeaturesage: issubclass(StaticFile, FileFeature)Truesage: issubclass(Executable, FileFeature)
True>>> from sage.all import *>>> from sage.features import StaticFile, Executable, FileFeature>>> issubclass(StaticFile, FileFeature)
True>>> issubclass(Executable, FileFeature)
True

To work with the file described by the feature, use the method absolute_filename(). A FeatureNotPresentError is raised if the file cannot be found:sage: Executable(name="does-not-exist", executable="does-not-exist-xxxxyxyyxyy").
˓→absolute_filename()
Traceback (most recent call last):...
sage.features.FeatureNotPresentError: does-not-exist is not available.
Executable does-not-exist-xxxxyxyyxyy not found on PATH.
>>> from sage.all import *>>> Executable(name="does-not-exist", executable="does-not-exist-xxxxyxyyxyy").
˓→absolute_filename()
Traceback (most recent call last):...
sage.features.FeatureNotPresentError: does-not-exist is not available.
Executable does-not-exist-xxxxyxyyxyy not found on PATH.

A FileFeature also provides the is_present() method to test for the presence of the file at run time. This
is inherited from the base class Feature:sage: Executable(name="sh", executable="sh").is_present()
FeatureTestResult( sh , True)>>> from sage.all import *>>> Executable(name="sh", executable="sh").is_present()
FeatureTestResult( sh , True)absolute_filename()
The absolute path of the file as a string.
Concrete subclasses must override this abstract method.

28

Chapter 3. Features

Packages and Features, Release 10.4class sage.features.PythonModule(*args, **kwds)
Bases: Feature
A Feature which describes whether a python module can be imported.
EXAMPLES:
Not all builds of python include the ssl module, so you could check whether it is available:
sage: from sage.features import PythonModule
sage: PythonModule("ssl").require() # not tested - output depends on the python␣˓→build>>> from sage.all import *>>> from sage.features import PythonModule>>> PythonModule("ssl").require() # not tested - output depends on the python␣˓→build

class sage.features.StaticFile(*args, **kwds)
Bases: FileFeature
A Feature which describes the presence of a certain file such as a database.
EXAMPLES:
sage: from sage.features import StaticFile
sage: StaticFile(name="no_such_file", filename="KaT1aihu",#␣˓→optional - sage_spkg....:
search_path="/", spkg="some_spkg",....:
url="http://rand.om").require()
Traceback (most recent call last):...
FeatureNotPresentError: no_such_file is not available.
KaT1aihu not found in any of [ / ]...
To install no_such_file...you can try to run...sage -i some_spkg...
Further installation instructions might be available at http://rand.om.
>>> from sage.all import *>>> from sage.features import StaticFile>>> StaticFile(name="no_such_file", filename="KaT1aihu",# optional ˓→ sage_spkg...
search_path="/", spkg="some_spkg",...
url="http://rand.om").require()
Traceback (most recent call last):...
FeatureNotPresentError: no_such_file is not available.
KaT1aihu not found in any of [ / ]...
To install no_such_file...you can try to run...sage -i some_spkg...
Further installation instructions might be available at http://rand.om.

absolute_filename()
The absolute path of the file as a string.
EXAMPLES:
sage: from sage.features import StaticFile
sage: from sage.misc.temporary_file import tmp_dir
sage: dir_with_file = tmp_dir()(continues on next page)

3.1. Testing for features of the environment at runtime

29

Packages and Features, Release 10.4

(continued from previous page)

sage: file_path = os.path.join(dir_with_file, "file.txt")
sage: open(file_path, a ).close() # make sure the file exists
sage: search_path = ( /foo/bar , dir_with_file ) # file is somewhere in the␣˓→search pathsage: feature = StaticFile(name="file", filename="file.txt", search_
˓→path=search_path)sage: feature.absolute_filename() == file_path
True>>> from sage.all import *>>> from sage.features import StaticFile>>> from sage.misc.temporary_file import tmp_dir>>> dir_with_file = tmp_dir()>>> file_path = os.path.join(dir_with_file, "file.txt")>>> open(file_path, a ).close() # make sure the file exists>>> search_path = ( /foo/bar , dir_with_file ) # file is somewhere in the␣˓→search path>>> feature = StaticFile(name="file", filename="file.txt", search_path=search_
˓→path)>>> feature.absolute_filename() == file_path
True

A FeatureNotPresentError is raised if the file cannot be found:sage: from sage.features import StaticFile
sage: StaticFile(name="no_such_file", filename="KaT1aihu",\search_path=(), spkg="some_spkg",\url="http://rand.om").absolute_filename() # optional - sage_
˓→spkgTraceback (most recent call last):...
FeatureNotPresentError: no_such_file is not available.
KaT1aihu not found in any of []...
To install no_such_file...you can try to run...sage -i some_spkg...
Further installation instructions might be available at http://rand.om.
>>> from sage.all import *>>> from sage.features import StaticFile>>> StaticFile(name="no_such_file", filename="KaT1aihu",\search_path=(), spkg="some_spkg",\url="http://rand.om").absolute_filename() # optional - sage_
˓→spkgTraceback (most recent call last):...
FeatureNotPresentError: no_such_file is not available.
KaT1aihu not found in any of []...
To install no_such_file...you can try to run...sage -i some_spkg...
Further installation instructions might be available at http://rand.om.

class sage.features.TrivialClasscallMetaClass
Bases: type
A trivial version of sage.misc.classcall_metaclass.ClasscallMetaclass without Cython dependencies.
class sage.features.TrivialUniqueRepresentation(*args, **kwds)
Bases: object
30

Chapter 3. Features

Packages and Features, Release 10.4

A trivial version of UniqueRepresentation without Cython dependencies.
sage.features.package_systems()
Return a list of PackageSystem objects representing the available package systems.
The list is ordered by decreasing preference.
EXAMPLES:
sage: from sage.features import package_systems
sage: package_systems()# random[Feature( homebrew ), Feature( sage_spkg ), Feature( pip )]>>> from sage.all import *>>> from sage.features import package_systems>>> package_systems()# random[Feature( homebrew ), Feature( sage_spkg ), Feature( pip )]3.2 Join featuresclass sage.features.join_feature.JoinFeature(*args, **kwds)
Bases: Feature
Join of several Feature instances.
This creates a new feature as the union of the given features. Typically these are executables of an SPKG. For an
example, see Rubiks.
Furthermore, this can be the union of a single feature. This is used to map the given feature to a more convenientname to be used in optional tags of doctests. Thus you can equip a feature such as a PythonModule with a
tag name that differs from the systematic tag name. As an example for this use case, see Meataxe.
EXAMPLES:
sage: from sage.features import Executablesage: from sage.features.join_feature import JoinFeaturesage: F = JoinFeature("shell-boolean",....:(Executable( shell-true , true ),....:Executable( shell-false , false )))sage: F.is_present()
FeatureTestResult( shell-boolean , True)
sage: F = JoinFeature("asdfghjkl",....:(Executable( shell-true , true ),....:Executable( xxyyyy , xxyyyy-does-not-exist )))sage: F.is_present()
FeatureTestResult( xxyyyy , False)>>> from sage.all import *>>> from sage.features import Executable>>> from sage.features.join_feature import JoinFeature>>> F = JoinFeature("shell-boolean",...
(Executable( shell-true , true ),...
Executable( shell-false , false )))>>> F.is_present()
FeatureTestResult( shell-boolean , True)>>> F = JoinFeature("asdfghjkl",(continues on next page)3.2. Join features

31

Packages and Features, Release 10.4

(continued from previous page)...
(Executable( shell-true , true ),...
Executable( xxyyyy , xxyyyy-does-not-exist )))>>> F.is_present()
FeatureTestResult( xxyyyy , False)hide()
Hide this feature and all its joined features.
EXAMPLES:
sage: from sage.features.sagemath import sage__groups
sage: f = sage__groups()
sage: f.hide()sage: f._features[0].is_present()
FeatureTestResult( sage.groups.perm_gps.permgroup , False)
sage: f.require()
Traceback (most recent call last):...
FeatureNotPresentError: sage.groups is not available.
Feature sage.groups is hidden.
Use method unhide to make it available again.
>>> from sage.all import *>>> from sage.features.sagemath import sage__groups>>> f = sage__groups()>>> f.hide()>>> f._features[Integer(0)].is_present()
FeatureTestResult( sage.groups.perm_gps.permgroup , False)>>> f.require()
Traceback (most recent call last):...
FeatureNotPresentError: sage.groups is not available.
Feature sage.groups is hidden.
Use method unhide to make it available again.

unhide()Revert what hide() did.
EXAMPLES:
sage: from sage.features.sagemath import sage__groups
sage: f = sage__groups()
sage: f.hide()sage: f.is_present()
FeatureTestResult( sage.groups , False)
sage: f._features[0].is_present()
FeatureTestResult( sage.groups.perm_gps.permgroup , False)
sage: f.unhide()sage: f.is_present()# optional sage.groups
FeatureTestResult( sage.groups , True)
sage: f._features[0].is_present() # optional sage.groups
FeatureTestResult( sage.groups.perm_gps.permgroup , True)

32

Chapter 3. Features

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.sagemath import sage__groups>>> f = sage__groups()>>> f.hide()>>> f.is_present()
FeatureTestResult( sage.groups , False)>>> f._features[Integer(0)].is_present()
FeatureTestResult( sage.groups.perm_gps.permgroup , False)>>> f.unhide()>>> f.is_present()# optional sage.groups
FeatureTestResult( sage.groups , True)>>> f._features[Integer(0)].is_present() # optional sage.groups
FeatureTestResult( sage.groups.perm_gps.permgroup , True)

3.3 Enumeration of all defined features
sage.features.all.all_features()
Return an iterable of all features.
EXAMPLES:
sage: from sage.features.all import all_features
sage: sorted(all_features(), key=lambda f: f.name)[...Feature( sage.combinat )...]>>> from sage.all import *>>> from sage.features.all import all_features>>> sorted(all_features(), key=lambda f: f.name)[...Feature( sage.combinat )...]# random# randomsage.features.all.module_feature(module_name)Find a top-level Feature that provides the Python module of the given module_name.
Only features known to all_features() are considered.
INPUT:• module_name – string
OUTPUT: a Feature or None.
EXAMPLES:
sage: from sage.features.all import module_featuresage: module_feature( sage.combinat.tableau )˓→needs sage.combinat
Feature( sage.combinat )sage: module_feature( sage.combinat.posets.poset )˓→needs sage.graphs
Feature( sage.graphs )sage: module_feature( sage.schemes.toric.variety )˓→needs sage.geometry.polyhedron
Feature( sage.geometry.polyhedron )sage: module_feature( scipy )˓→needs scipy

#␣

#␣

#␣

#␣
(continues on next page)3.3. Enumeration of all defined features

33

Packages and Features, Release 10.4

(continued from previous page)

Feature( scipy )sage: print(module_feature( sage.structure.element ))Nonesage: print(module_feature( sage.does_not_exist ))None>>> from sage.all import *>>> from sage.features.all import module_feature>>> module_feature( sage.combinat.tableau )˓→needs sage.combinat
Feature( sage.combinat )>>> module_feature( sage.combinat.posets.poset )˓→needs sage.graphs
Feature( sage.graphs )>>> module_feature( sage.schemes.toric.variety )˓→needs sage.geometry.polyhedron
Feature( sage.geometry.polyhedron )>>> module_feature( scipy )˓→needs scipy
Feature( scipy )>>> print(module_feature( sage.structure.element ))None>>> print(module_feature( sage.does_not_exist ))
None

#␣

#␣

#␣

#␣

sage.features.all.name_feature(name, toplevel=None)
Find a top-level Feature that provides the top-level name.
Only features known to all_features() are considered.
INPUT:• name – string• toplevel – a module or other namespace
OUTPUT: a Feature or None.
EXAMPLES:
sage: from sage.features.all import name_featuresage: name_feature( QuadraticField )˓→needs sage.rings.number_field
Feature( sage.rings.number_field )sage: name_feature( line )˓→needs sage.plot
Feature( sage.plot )sage: print(name_feature( ZZ ))Nonesage: print(name_feature( does_not_exist ))None>>> from sage.all import *>>> from sage.features.all import name_feature>>> name_feature( QuadraticField )˓→needs sage.rings.number_field
Feature( sage.rings.number_field )>>> name_feature( line )

#␣

#␣

#␣

#␣
(continues on next page)

34

Chapter 3. Features

Packages and Features, Release 10.4

(continued from previous page)needs sage.plot
Feature( sage.plot )>>> print(name_feature( ZZ ))None>>> print(name_feature( does_not_exist ))None˓→

3.4 Features for testing the presence of Python modules in the Sagelibrary
All of these features are present in a monolithic installation of the Sage library, such as the one made by the SageMath
distribution.
The features are defined for the purpose of separately testing modularized distributions such as sagemath-categories andsagemath-repl.
Often, doctests in a module of the Sage library illustrate the interplay with a range of different objects; this is a formof integration testing. These objects may come from modules shipped in other distributions. For example, sage.
structure.element (shipped by sagemath-objects, one of the most fundamental distributions) contains the doctest:
sage: G = SymmetricGroup(4)˓→needs sage.groups
sage: g = G([2, 3, 4, 1])
˓→needs sage.groups
sage: g.powers(4)˓→needs sage.groups[(), (1,2,3,4), (1,3)(2,4), (1,4,3,2)]>>> from sage.all import *>>> G = SymmetricGroup(Integer(4))˓→# needs sage.groups>>> g = G([Integer(2), Integer(3), Integer(4), Integer(1)])˓→# needs sage.groups>>> g.powers(Integer(4))˓→# needs sage.groups[(), (1,2,3,4), (1,3)(2,4), (1,4,3,2)]

#␣
#␣
#␣

␣
␣
␣

This test cannot pass when the distribution sagemath-objects is tested separately (in a virtual environment): In this situation,
SymmetricGroup is not defined anywhere (and thus not present in the top-level namespace). Hence, we conditionalize
this doctest on the presence of the feature sage.groups.
class sage.features.sagemath.SAGE_SRC(*args, **kwds)
Bases: StaticFile
A Feature which describes the presence of the monolithic source tree of the Sage library.
sage.features.sagemath.all_features()
Return features corresponding to parts of the Sage library.
These features are named after Python packages/modules (e.g., sage.symbolic), not distribution packages(sagemath-symbolics).
This design is motivated by a separation of concerns: The author of a module that depends on some functionality
provided by a Python module usually already knows the name of the Python module, so we do not want to force
the author to also know about the distribution package that provides the Python module.
3.4. Features for testing the presence of Python modules in the Sage library35

Packages and Features, Release 10.4

Instead, we associate distribution packages to Python modules in sage.features.sagemath via the spkg
parameter of Feature.
EXAMPLES:
sage: from sage.features.sagemath import all_features
sage: list(all_features())[...Feature( sage.combinat ), ...]>>> from sage.all import *>>> from sage.features.sagemath import all_features>>> list(all_features())[...Feature( sage.combinat ), ...]

class sage.features.sagemath.sage__combinat(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.combinat.
EXAMPLES:
Python modules that provide elementary combinatorial objects such as sage.combinat.subset, sage.
combinat.composition, sage.combinat.permutation are always available; there is no need for an# optional/needs tag:sage: Permutation([1,2,3]).is_even()True
sage: Permutation([6,1,4,5,2,3]).bruhat_inversions()[[0, 1], [0, 2], [0, 3], [2, 4], [2, 5], [3, 4], [3, 5]]>>> from sage.all import *>>> Permutation([Integer(1),Integer(2),Integer(3)]).is_even()
True>>> Permutation([Integer(6),Integer(1),Integer(4),Integer(5),Integer(2),˓→Integer(3)]).bruhat_inversions()[[0, 1], [0, 2], [0, 3], [2, 4], [2, 5], [3, 4], [3, 5]]

Use # needs sage.combinat for doctests that use any other Python modules from sage.combinat, forexample sage.combinat.tableau_tuple:
sage: TableauTuple([[[7,8,9]],[],[[1,2,3],[4,5],[6]]]).shape()
˓→needs sage.combinat([3], [], [3, 2, 1])#␣>>> from sage.all import *>>> TableauTuple([[[Integer(7),Integer(8),Integer(9)]],[],[[Integer(1),Integer(2),˓→Integer(3)],[Integer(4),Integer(5)],[Integer(6)]]]).shape()#␣˓→needs sage.combinat([3], [], [3, 2, 1])

Doctests that use Python modules from sage.combinat that involve trees, graphs, hypergraphs, posets, quivers,
combinatorial designs, finite state machines etc. should be marked # needs sage.combinat sage.
graphs:sage: L = Poset({0: [1], 1: [2], 2:[3], 3:[4]})˓→needs sage.combinat sage.graphs
sage: L.is_chain()#␣#␣(continues on next page)

36

Chapter 3. Features

Packages and Features, Release 10.4

(continued from previous page)needs sage.combinat sage.graphs
True˓→>>> from sage.all import *>>> L = Poset({Integer(0): [Integer(1)], Integer(1): [Integer(2)],␣
˓→Integer(2):[Integer(3)], Integer(3):[Integer(4)]})˓→# needs sage.combinat sage.graphs>>> L.is_chain()
˓→needs sage.combinat sage.graphs
True

␣
#␣

Doctests that use combinatorial modules/algebras, or root systems should use the tag # needs sage.combinat
sage.modules:
sage: # needs sage.combinat sage.modules
sage: A = SchurAlgebra(QQ, 2, 3)
sage: a = A.an_element(); a2*S((1, 1, 1), (1, 1, 1)) + 2*S((1, 1, 1), (1, 1, 2))+ 3*S((1, 1, 1), (1, 2, 2))
sage: L = RootSystem([ A ,3,1]).root_lattice()
sage: PIR = L.positive_imaginary_roots(); PIR
Positive imaginary roots of type [ A , 3, 1]>>> from sage.all import *>>> # needs sage.combinat sage.modules>>> A = SchurAlgebra(QQ, Integer(2), Integer(3))>>> a = A.an_element(); a2*S((1, 1, 1), (1, 1, 1)) + 2*S((1, 1, 1), (1, 1, 2))+ 3*S((1, 1, 1), (1, 2, 2))>>> L = RootSystem([ A ,Integer(3),Integer(1)]).root_lattice()>>> PIR = L.positive_imaginary_roots(); PIR
Positive imaginary roots of type [ A , 3, 1]

Doctests that use lattices, semilattices, or Dynkin diagrams should use the tag # needs sage.combinat
sage.graphs sage.modules:
sage: L = LatticePoset({0: [1,2], 1: [3], 2: [3,4], 3: [5], 4: [5]})˓→needs sage.combinat sage.graphs sage.modules
sage: L.meet_irreducibles()˓→needs sage.combinat sage.graphs sage.modules[1, 3, 4]#␣#␣>>> from sage.all import *>>> L = LatticePoset({Integer(0): [Integer(1),Integer(2)], Integer(1):␣
˓→[Integer(3)], Integer(2): [Integer(3),Integer(4)], Integer(3): [Integer(5)],␣
˓→Integer(4): [Integer(5)]})# needs sage.combinat sage.graphs sage.
˓→modules>>> L.meet_irreducibles()#␣˓→needs sage.combinat sage.graphs sage.modules[1, 3, 4]class sage.features.sagemath.sage__geometry__polyhedron(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.geometry.polyhedron.
EXAMPLES:
3.4. Features for testing the presence of Python modules in the Sage library37

Packages and Features, Release 10.4

Doctests that use polyhedra, cones, geometric complexes, triangulations, etc. should use the tag # needs sage.
geometry.polyhedron:sage: co = polytopes.truncated_tetrahedron()˓→needs sage.geometry.polyhedronsage: co.volume()
˓→needs sage.geometry.polyhedron
184/3

#␣
#␣

>>> from sage.all import *>>> co = polytopes.truncated_tetrahedron()˓→needs sage.geometry.polyhedron>>> co.volume()
˓→needs sage.geometry.polyhedron
184/3

#␣
#␣

Some constructions of polyhedra require additional tags:
sage: # needs sage.combinat sage.geometry.polyhedron sage.rings.number_fieldsage: perm_a3_reg_nf = polytopes.generalized_permutahedron(....:[ A ,3], regular=True, backend= number_field ); perm_a3_reg_nf
A 3-dimensional polyhedron in AA^3 defined as the convex hull of 24 vertices>>> from sage.all import *>>> # needs sage.combinat sage.geometry.polyhedron sage.rings.number_field>>> perm_a3_reg_nf = polytopes.generalized_permutahedron(...
[ A ,Integer(3)], regular=True, backend= number_field ); perm_a3_reg_nf
A 3-dimensional polyhedron in AA^3 defined as the convex hull of 24 vertices

class sage.features.sagemath.sage__graphs(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.graphs.
EXAMPLES:
Doctests that use anything from sage.graphs (Graph, DiGraph, …) should be marked # needs sage.
graphs. The same applies to any doctest that uses a Poset, cluster algebra quiver, finite state machines, abelian
sandpiles, or Dynkin diagrams:
sage: g = graphs.PetersenGraph()˓→needs sage.graphs
sage: r, s = g.is_weakly_chordal(certificate=True); r˓→needs sage.graphs
False>>> from sage.all import *>>> g = graphs.PetersenGraph()˓→needs sage.graphs>>> r, s = g.is_weakly_chordal(certificate=True); r˓→needs sage.graphs
False

#␣
#␣

#␣
#␣

Also any use of tree classes defined in sage.combinat (BinaryTree, RootedTree, …) in doctests should
be marked the same.
By way of generalization, any use of SimplicialComplex or other abstract complexes from sage.
topology, hypergraphs, and combinatorial designs, should be marked # needs sage.graphs as well:38

Chapter 3. Features

Packages and Features, Release 10.4

sage: X = SimplicialComplex([[0,1,2], [1,2,3]])
˓→needs sage.graphs
sage: X.link(Simplex([0]))˓→needs sage.graphs
Simplicial complex with vertex set (1, 2) and facets {(1, 2)}#␣sage: IncidenceStructure([[1,2,3],[1,4]]).degrees(2)˓→needs sage.graphs{(1, 2): 1, (1, 3): 1, (1, 4): 1, (2, 3): 1, (2, 4): 0, (3, 4): 0}#␣>>> from sage.all import *>>> X = SimplicialComplex([[Integer(0),Integer(1),Integer(2)], [Integer(1),˓→Integer(2),Integer(3)]])# needs sage.graphs>>> X.link(Simplex([Integer(0)]))˓→# needs sage.graphs
Simplicial complex with vertex set (1, 2) and facets {(1, 2)}#␣␣>>> IncidenceStructure([[Integer(1),Integer(2),Integer(3)],[Integer(1),˓→Integer(4)]]).degrees(Integer(2))# needs sage.graphs{(1, 2): 1, (1, 3): 1, (1, 4): 1, (2, 3): 1, (2, 4): 0, (3, 4): 0}

On the other hand, matroids are not implemented as posets in Sage but are instead closely tied to linear algebra
over fields; hence use # needs sage.modules instead:sage: # needs sage.modules
sage: M = Matroid(Matrix(QQ, [[1, 0, 0, 0, 1, 1, 1],....:[0, 1, 0, 1, 0, 1, 1],....:[0, 0, 1, 1, 1, 0, 1]]))
sage: N = (M / [2]).delete([3, 4])
sage: sorted(N.groundset())[0, 1, 5, 6]>>> from sage.all import *>>> # needs sage.modules>>> M = Matroid(Matrix(QQ, [[Integer(1), Integer(0), Integer(0), Integer(0),␣
˓→Integer(1), Integer(1), Integer(1)],...
[Integer(0), Integer(1), Integer(0), Integer(1),␣
˓→Integer(0), Integer(1), Integer(1)],...
[Integer(0), Integer(0), Integer(1), Integer(1),␣
˓→Integer(1), Integer(0), Integer(1)]]))>>> N = (M / [Integer(2)]).delete([Integer(3), Integer(4)])>>> sorted(N.groundset())[0, 1, 5, 6]

However, many constructions (and some methods) of matroids do involve graphs:
sage: # needs sage.modules
sage: W = matroids.Wheel(3)# despite the name, not created via graphs
sage: W.is_isomorphic(N)# goes through a graph isomorphism test
˓→needs sage.graphs
False
sage: K4 = matroids.CompleteGraphic(4)# this one is created via graphs
˓→needs sage.graphs
sage: K4.is_isomorphic(W)˓→needs sage.graphs
True

3.4. Features for testing the presence of Python modules in the Sage library

#␣

#␣
#␣

39

Packages and Features, Release 10.4>>> from sage.all import *>>> # needs sage.modules>>> W = matroids.Wheel(Integer(3))# despite the name, not created via graphs>>> W.is_isomorphic(N)# goes through a graph isomorphism test#␣˓→needs sage.graphs
False>>> K4 = matroids.CompleteGraphic(Integer(4))# this one is created via graphs␣˓→# needs sage.graphs>>> K4.is_isomorphic(W)#␣˓→needs sage.graphs
Trueclass sage.features.sagemath.sage__groups(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.groups.
EXAMPLES:
Permutations and sets of permutations are always available, but permutation groups are implemented in Sage using
the GAP system and require the tag # needs sage.groups:
sage: p = Permutation([2,1,4,3])
sage: p.to_permutation_group_element()
˓→needs sage.groups(1,2)(3,4)#␣>>> from sage.all import *>>> p = Permutation([Integer(2),Integer(1),Integer(4),Integer(3)])>>> p.to_permutation_group_element()
˓→needs sage.groups(1,2)(3,4)#␣

class sage.features.sagemath.sage__libs__braiding(*args, **kwds)
Bases: PythonModule
A Feature describing the presence of sage.libs.braiding.
EXAMPLES:
sage: from sage.features.sagemath import sage__libs__braiding
sage: sage__libs__braiding().is_present()˓→# needs sage.libs.braiding
FeatureTestResult( sage.libs.braiding , True)>>> from sage.all import *>>> from sage.features.sagemath import sage__libs__braiding>>> sage__libs__braiding().is_present()
˓→ # needs sage.libs.braiding
FeatureTestResult( sage.libs.braiding , True)␣␣class sage.features.sagemath.sage__libs__ecl(*args, **kwds)
Bases: PythonModule
A Feature describing the presence of sage.libs.ecl.
EXAMPLES:

40

Chapter 3. Features

Packages and Features, Release 10.4

sage: from sage.features.sagemath import sage__libs__ecl
sage: sage__libs__ecl().is_present()
˓→libs.ecl
FeatureTestResult( sage.libs.ecl , True)>>> from sage.all import *>>> from sage.features.sagemath import sage__libs__ecl>>> sage__libs__ecl().is_present()
˓→ecl
FeatureTestResult( sage.libs.ecl , True)# optional - sage.

# optional - sage.libs.

class sage.features.sagemath.sage__libs__flint(*args, **kwds)
Bases: JoinFeature
A sage.features.Feature describing the presence of sage.libs.flint and other modules depending
on FLINT.
In addition to the modularization purposes that this tag serves, it also provides attribution to the upstream project.
class sage.features.sagemath.sage__libs__gap(*args, **kwds)
Bases: JoinFeature
A sage.features.Feature describing the presence of sage.libs.gap (the library interface to GAP)and sage.interfaces.gap (the pexpect interface to GAP). By design, we do not distinguish between thesetwo, in order to facilitate the conversion of code from the pexpect interface to the library interface.
See also:
Features for GAP packages
class sage.features.sagemath.sage__libs__linbox(*args, **kwds)
Bases: JoinFeature
A sage.features.Feature describing the presence of sage.libs.linbox and other modules depending on Givaro, FFLAS-FFPACK, LinBox.
In addition to the modularization purposes that this tag serves, it also provides attribution to the upstream project.
class sage.features.sagemath.sage__libs__m4ri(*args, **kwds)
Bases: JoinFeature
A sage.features.Feature describing the presence of Cython modules depending on the M4RI and/or
M4RIe libraries.
In addition to the modularization purposes that this tag serves, it also provides attribution to the upstream project.
class sage.features.sagemath.sage__libs__ntl(*args, **kwds)
Bases: JoinFeature
A sage.features.Feature describing the presence of sage.libs.ntl and other modules depending
on NTL.
In addition to the modularization purposes that this tag serves, it also provides attribution to the upstream project.
class sage.features.sagemath.sage__libs__pari(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.libs.pari.
SageMath uses the PARI library (via cypari2) for numerous purposes. Doctests that involves such features should
be marked # needs sage.libs.pari.

3.4. Features for testing the presence of Python modules in the Sage library41

Packages and Features, Release 10.4

In addition to the modularization purposes that this tag serves, it also provides attribution to the upstream project.
EXAMPLES:
sage: R.<a> = QQ[]
sage: S.<x> = R[]
sage: f = x^2 + a; g = x^3 + a
sage: r = f.resultant(g); r
˓→needs sage.libs.paria^3 + a^2>>> from sage.all import *>>> R = QQ[ a ]; (a,) = R._first_ngens(1)>>> S = R[ x ]; (x,) = S._first_ngens(1)>>> f = x**Integer(2) + a; g = x**Integer(3) + a>>> r = f.resultant(g); r
˓→needs sage.libs.paria^3 + a^2#␣#␣class sage.features.sagemath.sage__libs__singular(*args, **kwds)
Bases: JoinFeature
A sage.features.Feature describing the presence of sage.libs.singular (the library interface
to Singular) and sage.interfaces.singular (the pexpect interface to Singular). By design, we do not
distinguish between these two, in order to facilitate the conversion of code from the pexpect interface to the libraryinterface.
See also:
Feature singularclass sage.features.sagemath.sage__modular(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.modular.
class sage.features.sagemath.sage__modules(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.modules.
EXAMPLES:
All uses of implementations of vector spaces / free modules in SageMath, whether sage.modules.
free_module.FreeModule, sage.combinat.free_module.CombinatorialFreeModule,
sage.tensor.modules.finite_rank_free_module.FiniteRankFreeModule, or additive
abelian groups, should be marked # needs sage.modules.
The same holds for matrices, tensors, algebras, quadratic forms, point lattices, root systems, matrix/affine/Weyl/Coxeter groups, matroids, and ring derivations.
Likewise, all uses of sage.coding, sage.crypto, and sage.homology in doctests should be marked #needs sage.modules.
class sage.features.sagemath.sage__numerical__mip(*args, **kwds)
Bases: PythonModule
A Feature describing the presence of sage.numerical.mip.

42

Chapter 3. Features

Packages and Features, Release 10.4class sage.features.sagemath.sage__plot(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.plot.
class sage.features.sagemath.sage__rings__complex_double(*args, **kwds)
Bases: PythonModule
A Feature describing the presence of sage.rings.complex_double.
class sage.features.sagemath.sage__rings__finite_rings(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.rings.finite_rings; specifically, the element implementations using the PARI library.
class sage.features.sagemath.sage__rings__function_field(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.rings.function_field.
EXAMPLES:
Rational function fields are always available:
sage: K.<x> = FunctionField(QQ)
sage: K.maximal_order()Maximal order of Rational function field in x over Rational Field>>> from sage.all import *>>> K = FunctionField(QQ, names=( x ,)); (x,) = K._first_ngens(1)>>> K.maximal_order()Maximal order of Rational function field in x over Rational Field

Use the tag # needs sage.rings.function_field whenever extensions of function fields (by adjoining
a root of a univariate polynomial) come into play:sage: R.<y> = K[]
sage: L.<y> = K.extension(y^5 - (x^3 + 2*x*y + 1/x)); L˓→needs sage.rings.function_field
Function field in y defined by y^5 - 2*x*y + (-x^4 - 1)/x

#␣>>> from sage.all import *>>> R = K[ y ]; (y,) = R._first_ngens(1)>>> L = K.extension(y**Integer(5) - (x**Integer(3) + Integer(2)*x*y + Integer(1)/˓→x), names=( y ,)); (y,) = L._first_ngens(1); L# needs␣
˓→sage.rings.function_field
Function field in y defined by y^5 - 2*x*y + (-x^4 - 1)/x

Such extensions of function fields are implemented using Gröbner bases of polynomial rings; Sage makes essential
use of the Singular system for this. (It is not necessary to use the tag # needs sage.libs.singular; it is
implied by # needs sage.rings.function_field.)class sage.features.sagemath.sage__rings__number_field(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.rings.number_field.
Number fields are implemented in Sage using a complicated mixture of various libraries, including FLINT, GAP,MPFI, NTL, and PARI.
3.4. Features for testing the presence of Python modules in the Sage library43

Packages and Features, Release 10.4

EXAMPLES:
Rational numbers are, of course, always available:
sage: QQ in NumberFields()
True>>> from sage.all import *>>> QQ in NumberFields()
True

Doctests that construct algebraic number fields should be marked # needs sage.rings.number_field:
sage: # needs sage.rings.number_fieldsage: K.<cuberoot2> = NumberField(x^3 - 2)sage: L.<cuberoot3> = K.extension(x^3 - 3)sage: S.<sqrt2> = L.extension(x^2 - 2); S
Number Field in sqrt2 with defining polynomial x^2 - 2 over its base fieldsage: # needs sage.rings.number_fieldsage: K.<zeta> = CyclotomicField(15)sage: CC(zeta)
0.913545457642601 + 0.406736643075800*I>>> from sage.all import *>>> # needs sage.rings.number_field>>> K = NumberField(x**Integer(3) - Integer(2), names=( cuberoot2 ,)); (cuberoot2,
˓→) = K._first_ngens(1)>>> L = K.extension(x**Integer(3) - Integer(3), names=( cuberoot3 ,)); (cuberoot3,˓→) = L._first_ngens(1)>>> S = L.extension(x**Integer(2) - Integer(2), names=( sqrt2 ,)); (sqrt2,) = S._
˓→first_ngens(1); S
Number Field in sqrt2 with defining polynomial x^2 - 2 over its base field>>> # needs sage.rings.number_field>>> K = CyclotomicField(Integer(15), names=( zeta ,)); (zeta,) = K._first_ngens(1)>>> CC(zeta)
0.913545457642601 + 0.406736643075800*I

Doctests that make use of the algebraic field QQbar or the algebraic real field AA should be marked likewise:
sage: # needs sage.rings.number_fieldsage: AA(-1)^(1/3)-1sage: QQbar(-1)^(1/3)
0.500000000000000? + 0.866025403784439?*I>>> from sage.all import *>>> # needs sage.rings.number_field>>> AA(-Integer(1))**(Integer(1)/Integer(3))-1>>> QQbar(-Integer(1))**(Integer(1)/Integer(3))
0.500000000000000? + 0.866025403784439?*I

Use of the universal cyclotomic field should be marked #number_field.

needs

sage.libs.gap

sage.rings.

sage: # needs sage.libs.gap sage.rings.number_field sage: UCF = UniversalCyclotomicField(); UCF
44

Chapter 3. Features

Packages and Features, Release 10.4

Universal Cyclotomic Field sage: E = UCF.gen sage: f = E(2) + E(3); f 2*E(3) + E(3)^2 sage: f.galois_conjugates() [2*E(3) + E(3)^2, E(3) + 2*E(3)^2]
class sage.features.sagemath.sage__rings__padics(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.rings.padics.
class sage.features.sagemath.sage__rings__polynomial__pbori(*args, **kwds)
Bases: JoinFeature
A sage.features.Feature describing the presence of sage.rings.polynomial.pbori.
class sage.features.sagemath.sage__rings__real_double(*args, **kwds)
Bases: PythonModule
A Feature describing the presence of sage.rings.real_double.
EXAMPLES:The Real Double Field is basically always available, and no # optional/needs tag is needed:sage: RDF.characteristic()
0>>> from sage.all import *>>> RDF.characteristic()
0

The feature exists for use in doctests of Python modules that are shipped by the most fundamental distributions.
class sage.features.sagemath.sage__rings__real_mpfr(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.rings.real_mpfr.
class sage.features.sagemath.sage__sat(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.sat.
class sage.features.sagemath.sage__schemes(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.schemes.
class sage.features.sagemath.sage__symbolic(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of sage.symbolic.
EXAMPLES:
The symbolics subsystem of Sage will be provided by the distribution sagemath-symbolics, in preparation at Issue#35095. If it is not installed, Sage will be able to provide installation advice:
sage: from sage.features.sagemath import sage__symbolic
sage: print(sage__symbolic().resolution())˓→optional - sage_spkg, not tested...To install sagemath_symbolics...you can try to run...
pip install sagemath-symbolics...

3.4. Features for testing the presence of Python modules in the Sage library#␣

45

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.sagemath import sage__symbolic>>> print(sage__symbolic().resolution())˓→optional - sage_spkg, not tested...To install sagemath_symbolics...you can try to run...
pip install sagemath-symbolics...

#␣class sage.features.sagemath.sagemath_doc_html(*args, **kwds)
Bases: StaticFile
A Feature which describes the presence of the documentation of the Sage library in HTML format.
Developers often use make build instead of make to avoid the long time it takes to compile the documentation.
Although commands such as make ptest build the documentation before testing, other test commands such as
make ptestlong-nodoc or ./sage -t --all do not.
All doctests that refer to the built documentation need to be marked # needs sagemath_doc_html.

3.5 Features for testing the presence of package systems
sage_spkg, conda, pip, debian, fedora etc.
class sage.features.pkg_systems.PackageSystem(*args, **kwds)
Bases: Feature
A Feature describing a system package manager.
EXAMPLES:
sage: from sage.features.pkg_systems import PackageSystem
sage: PackageSystem( conda )Feature( conda )>>> from sage.all import *>>> from sage.features.pkg_systems import PackageSystem>>> PackageSystem( conda )Feature( conda )spkg_installation_hint(spkgs, prompt, feature)
Return a string that explains how to install feature.
EXAMPLES:
sage: from sage.features.pkg_systems import PackageSystem
sage: homebrew = PackageSystem( homebrew )sage: homebrew.spkg_installation_hint( openblas ) # optional - SAGE_ROOT
To install openblas using the homebrew package manager, you can try to run:\˓→n!brew install openblas>>> from sage.all import *>>> from sage.features.pkg_systems import PackageSystem>>> homebrew = PackageSystem( homebrew )>>> homebrew.spkg_installation_hint( openblas ) # optional - SAGE_ROOT
To install openblas using the homebrew package manager, you can try to run:\˓→n!brew install openblas

46

Chapter 3. Features

Packages and Features, Release 10.4class sage.features.pkg_systems.PipPackageSystem(*args, **kwds)
Bases: PackageSystem
A Feature describing the Pip package manager.
EXAMPLES:
sage: from sage.features.pkg_systems import PipPackageSystem
sage: PipPackageSystem()
Feature( pip )>>> from sage.all import *>>> from sage.features.pkg_systems import PipPackageSystem>>> PipPackageSystem()
Feature( pip )class sage.features.pkg_systems.SagePackageSystem(*args, **kwds)
Bases: PackageSystem
A Feature describing the package manager of the SageMath distribution.
EXAMPLES:
sage: from sage.features.pkg_systems import SagePackageSystem
sage: SagePackageSystem()
Feature( sage_spkg )>>> from sage.all import *>>> from sage.features.pkg_systems import SagePackageSystem>>> SagePackageSystem()
Feature( sage_spkg )3.6 Features for testing the presence of blissclass sage.features.bliss.Bliss(*args, **kwds)
Bases: JoinFeature
A Feature which describes whether the sage.graphs.bliss module is available in this installation of Sage.
EXAMPLES:
sage: from sage.features.bliss import Blisssage: Bliss().require() # optional - bliss>>> from sage.all import *>>> from sage.features.bliss import Bliss>>> Bliss().require() # optional - blissclass sage.features.bliss.BlissLibrary(*args, **kwds)
Bases: CythonFeature
A Feature which describes whether the Bliss library is present and functional.
EXAMPLES:

3.6. Features for testing the presence of bliss

47

Packages and Features, Release 10.4

sage: from sage.features.bliss import BlissLibrarysage: BlissLibrary().require() # optional - libbliss>>> from sage.all import *>>> from sage.features.bliss import BlissLibrary>>> BlissLibrary().require() # optional - libbliss

sage.features.bliss.all_features()

3.7 Feature for testing the presence of csdp
class sage.features.csdp.CSDP(*args, **kwds)
Bases: Executable
A Feature which checks for the theta binary of CSDP.
EXAMPLES:
sage: from sage.features.csdp import CSDP
sage: CSDP().is_present() # optional - csdp
FeatureTestResult( csdp , True)>>> from sage.all import *>>> from sage.features.csdp import CSDP>>> CSDP().is_present() # optional - csdp
FeatureTestResult( csdp , True)is_functional()
Check whether theta works on a trivial example.
EXAMPLES:
sage: from sage.features.csdp import CSDP
sage: CSDP().is_functional() # optional - csdp
FeatureTestResult( csdp , True)>>> from sage.all import *>>> from sage.features.csdp import CSDP>>> CSDP().is_functional() # optional - csdp
FeatureTestResult( csdp , True)sage.features.csdp.all_features()48

Chapter 3. Features

Packages and Features, Release 10.4

3.8 Features for testing the presence of various databases
class sage.features.databases.DatabaseCremona(*args, **kwds)
Bases: StaticFile
A Feature which describes the presence of John Cremona’s database of elliptic curves.
INPUT:• name – either cremona (the default) for the full large database or cremona_mini for the small
database.
EXAMPLES:
sage: from sage.features.databases import DatabaseCremona
sage: DatabaseCremona( cremona_mini , type= standard ).is_present()
FeatureTestResult( database_cremona_mini_ellcurve , True)
sage: DatabaseCremona().is_present()
˓→optional - database_cremona_ellcurve
FeatureTestResult( database_cremona_ellcurve , True)>>> from sage.all import *>>> from sage.features.databases import DatabaseCremona>>> DatabaseCremona( cremona_mini , type= standard ).is_present()
FeatureTestResult( database_cremona_mini_ellcurve , True)>>> DatabaseCremona().is_present()
˓→ database_cremona_ellcurve
FeatureTestResult( database_cremona_ellcurve , True)#␣# optional -class sage.features.databases.DatabaseCubicHecke(*args, **kwds)
Bases: PythonModule
A Feature which describes the presence of the Cubic Hecke algebra database package.
The home of this database is the web-page Cubic Hecke algebra on 4 strands of Ivan Marin.
EXAMPLES:
sage: from sage.features.databases import DatabaseCubicHecke
sage: DatabaseCubicHecke().is_present() # optional - database_cubic_hecke
FeatureTestResult( database_cubic_hecke , True)>>> from sage.all import *>>> from sage.features.databases import DatabaseCubicHecke>>> DatabaseCubicHecke().is_present() # optional - database_cubic_hecke
FeatureTestResult( database_cubic_hecke , True)class sage.features.databases.DatabaseEllcurves(*args, **kwds)
Bases: StaticFile
A Feature which describes the presence of William Stein’s database of interesting curves.
EXAMPLES:
sage: from sage.features.databases import DatabaseEllcurves
sage: bool(DatabaseEllcurves().is_present()) # optional - database_ellcurves
True

3.8. Features for testing the presence of various databases

49

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.databases import DatabaseEllcurves>>> bool(DatabaseEllcurves().is_present()) # optional - database_ellcurves
Trueclass sage.features.databases.DatabaseGraphs(*args, **kwds)
Bases: StaticFile
A Feature which describes the presence of the graphs database.
EXAMPLES:
sage: from sage.features.databases import DatabaseGraphs
sage: bool(DatabaseGraphs().is_present()) # optional - database_graphs
True>>> from sage.all import *>>> from sage.features.databases import DatabaseGraphs>>> bool(DatabaseGraphs().is_present()) # optional - database_graphs
Trueclass sage.features.databases.DatabaseJones(*args, **kwds)
Bases: StaticFile
A Feature which describes the presence of John Jones’s tables of number fields.
EXAMPLES:
sage: from sage.features.databases import DatabaseJonessage: bool(DatabaseJones().is_present()) # optional - database_jones_numfield
True>>> from sage.all import *>>> from sage.features.databases import DatabaseJones>>> bool(DatabaseJones().is_present()) # optional - database_jones_numfield
True

class sage.features.databases.DatabaseKnotInfo(*args, **kwds)
Bases: PythonModule
A Feature which describes the presence of the package providing the KnotInfo and LinkInfo databases.
The homes of these databases are the web-pages KnotInfo and LinkInfo.
EXAMPLES:
sage: from sage.features.databases import DatabaseKnotInfo
sage: DatabaseKnotInfo().is_present() # optional - database_knotinfo
FeatureTestResult( database_knotinfo , True)>>> from sage.all import *>>> from sage.features.databases import DatabaseKnotInfo>>> DatabaseKnotInfo().is_present() # optional - database_knotinfo
FeatureTestResult( database_knotinfo , True)class sage.features.databases.DatabaseMatroids(*args, **kwds)
Bases: PythonModule

50

Chapter 3. Features

Packages and Features, Release 10.4

A Feature which describes the presence of Yoshitake Matsumoto’s Database of Matroids.
EXAMPLES:
sage: from sage.features.databases import DatabaseMatroids
sage: DatabaseMatroids().is_present()
˓→optional - matroid_database
FeatureTestResult( matroid_database , True)#␣>>> from sage.all import *>>> from sage.features.databases import DatabaseMatroids>>> DatabaseMatroids().is_present()
˓→optional - matroid_database
FeatureTestResult( matroid_database , True)#␣

REFERENCES:[Mat2012]
class sage.features.databases.DatabaseReflexivePolytopes(*args, **kwds)
Bases: StaticFile
A Feature which describes the presence of the PALP databases of reflexive three-dimensional andfour-dimensional lattice polytopes.
EXAMPLES:
sage: from sage.features.databases import DatabaseReflexivePolytopes
sage: bool(DatabaseReflexivePolytopes().is_present())
˓→optional - polytopes_db
True
sage: bool(DatabaseReflexivePolytopes( polytopes_db_4d ).is_present())
˓→optional - polytopes_db_4d
True>>> from sage.all import *>>> from sage.features.databases import DatabaseReflexivePolytopes>>> bool(DatabaseReflexivePolytopes().is_present())
˓→ polytopes_db
True>>> bool(DatabaseReflexivePolytopes( polytopes_db_4d ).is_present())
˓→ polytopes_db_4d
True

#␣

#␣

# optional -# optional -sage.features.databases.all_features()sage.features.databases.sage_data_path(data_name)
Search path for database 𝑑𝑎𝑡𝑎𝑛 𝑎𝑚𝑒.
EXAMPLES:
sage: from sage.features.databases import sage_data_path
sage: sage_data_path("cremona")[ .../cremona ]>>> from sage.all import *>>> from sage.features.databases import sage_data_path>>> sage_data_path("cremona")[ .../cremona ]3.8. Features for testing the presence of various databases

51

Packages and Features, Release 10.4

3.9 Feature for testing the presence of dvipng
sage.features.dvipng.all_features()class sage.features.dvipng.dvipng(*args, **kwds)
Bases: Executable
A Feature describing the presence of dvipng
EXAMPLES:
sage: from sage.features.dvipng import dvipng
sage: dvipng().is_present()# optional - dvipng
FeatureTestResult( dvipng , True)>>> from sage.all import *>>> from sage.features.dvipng import dvipng>>> dvipng().is_present()# optional - dvipng
FeatureTestResult( dvipng , True)

3.10 Feature for testing the presence of ffmpeg
class sage.features.ffmpeg.FFmpeg(*args, **kwds)
Bases: Executable
A Feature describing the presence of ffmpeg.
EXAMPLES:
sage: from sage.features.ffmpeg import FFmpeg
sage: FFmpeg().is_present() # optional - ffmpeg
FeatureTestResult( ffmpeg , True)>>> from sage.all import *>>> from sage.features.ffmpeg import FFmpeg>>> FFmpeg().is_present() # optional - ffmpeg
FeatureTestResult( ffmpeg , True)is_functional()
Return whether command ffmpeg in the path is functional.
EXAMPLES:
sage: from sage.features.ffmpeg import FFmpeg
sage: FFmpeg().is_functional()# optional - ffmpeg
FeatureTestResult( ffmpeg , True)>>> from sage.all import *>>> from sage.features.ffmpeg import FFmpeg>>> FFmpeg().is_functional()# optional - ffmpeg
FeatureTestResult( ffmpeg , True)sage.features.ffmpeg.all_features()52

Chapter 3. Features

Packages and Features, Release 10.4

3.11 Features for testing the presence of 4ti2
class sage.features.four_ti_2.FourTi2(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of all 4ti2 executables.
EXAMPLES:
sage: from sage.features.four_ti_2 import FourTi2
sage: FourTi2().is_present() # optional - 4ti2
FeatureTestResult( 4ti2 , True)>>> from sage.all import *>>> from sage.features.four_ti_2 import FourTi2>>> FourTi2().is_present() # optional - 4ti2
FeatureTestResult( 4ti2 , True)class sage.features.four_ti_2.FourTi2Executable(*args, **kwds)
Bases: Executable
A Feature for the 4ti2 executables.
sage.features.four_ti_2.all_features()3.12 Features for testing the presence of the SageMath interfaces to
gap and of GAP packages
class sage.features.gap.GapPackage(*args, **kwds)
Bases: Feature
A Feature describing the presence of a GAP package.
A GAP package is “present” if it can be loaded, not if it has been loaded.
See also:
Feature sage.libs.gap
EXAMPLES:
sage: from sage.features.gap import GapPackage
sage: GapPackage("grape", spkg="gap_packages")
Feature( gap_package_grape )>>> from sage.all import *>>> from sage.features.gap import GapPackage>>> GapPackage("grape", spkg="gap_packages")
Feature( gap_package_grape )sage.features.gap.all_features()3.11. Features for testing the presence of 4ti2

53

Packages and Features, Release 10.4

3.13 Features for testing the presence of graph generator programs
benzene, buckygen, plantriclass sage.features.graph_generators.Benzene(*args, **kwds)
Bases: Executable
A Feature which checks for the benzene binary.
EXAMPLES:
sage: from sage.features.graph_generators import Benzene
sage: Benzene().is_present() # optional - benzene
FeatureTestResult( benzene , True)>>> from sage.all import *>>> from sage.features.graph_generators import Benzene>>> Benzene().is_present() # optional - benzene
FeatureTestResult( benzene , True)is_functional()
Check whether benzene works on trivial input.
EXAMPLES:
sage: from sage.features.graph_generators import Benzene
sage: Benzene().is_functional() # optional - benzene
FeatureTestResult( benzene , True)>>> from sage.all import *>>> from sage.features.graph_generators import Benzene>>> Benzene().is_functional() # optional - benzene
FeatureTestResult( benzene , True)class sage.features.graph_generators.Buckygen(*args, **kwds)
Bases: Executable
A Feature which checks for the buckygen binary.
EXAMPLES:
sage: from sage.features.graph_generators import Buckygensage: Buckygen().is_present() # optional - buckygen
FeatureTestResult( buckygen , True)>>> from sage.all import *>>> from sage.features.graph_generators import Buckygen>>> Buckygen().is_present() # optional - buckygen
FeatureTestResult( buckygen , True)is_functional()
Check whether buckygen works on trivial input.
EXAMPLES:
sage: from sage.features.graph_generators import Buckygensage: Buckygen().is_functional() # optional - buckygen
FeatureTestResult( buckygen , True)

54

Chapter 3. Features

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.graph_generators import Buckygen>>> Buckygen().is_functional() # optional - buckygen
FeatureTestResult( buckygen , True)class sage.features.graph_generators.Plantri(*args, **kwds)
Bases: Executable
A Feature which checks for the plantri binary.
EXAMPLES:
sage: from sage.features.graph_generators import Plantri
sage: Plantri().is_present() # optional - plantri
FeatureTestResult( plantri , True)>>> from sage.all import *>>> from sage.features.graph_generators import Plantri>>> Plantri().is_present() # optional - plantri
FeatureTestResult( plantri , True)is_functional()
Check whether plantri works on trivial input.
EXAMPLES:
sage: from sage.features.graph_generators import Plantri
sage: Plantri().is_functional() # optional - plantri
FeatureTestResult( plantri , True)>>> from sage.all import *>>> from sage.features.graph_generators import Plantri>>> Plantri().is_functional() # optional - plantri
FeatureTestResult( plantri , True)sage.features.graph_generators.all_features()3.14 Features for testing the presence of graphviz
class sage.features.graphviz.Graphviz(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the dot, neato, and twopi executables from the graphviz package.
EXAMPLES:
sage: from sage.features.graphviz import Graphviz
sage: Graphviz().is_present() # optional - graphviz
FeatureTestResult( graphviz , True)>>> from sage.all import *>>> from sage.features.graphviz import Graphviz>>> Graphviz().is_present() # optional - graphviz
FeatureTestResult( graphviz , True)

3.14. Features for testing the presence of graphviz

55Packages and Features, Release 10.4

sage.features.graphviz.all_features()class sage.features.graphviz.dot(*args, **kwds)
Bases: Executable
A Feature describing the presence of dot.
class sage.features.graphviz.neato(*args, **kwds)
Bases: Executable
A Feature describing the presence of neato.
class sage.features.graphviz.twopi(*args, **kwds)
Bases: Executable
A Feature describing the presence of twopi.

3.15 Feature for testing the presence of imagemagick
Currently we only check for the presence of convert or magick. When needed, other commands like magick-script, mogrify, identify, composite, montage, compare, etc. could be also checked in this module.
class sage.features.imagemagick.ImageMagick(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of ImageMagick
Currently, only the availability of the magick (or convert) program is checked.
EXAMPLES:
sage: from sage.features.imagemagick import ImageMagick
sage: ImageMagick().is_present() # optional - imagemagick
FeatureTestResult( imagemagick , True)>>> from sage.all import *>>> from sage.features.imagemagick import ImageMagick>>> ImageMagick().is_present() # optional - imagemagick
FeatureTestResult( imagemagick , True)class sage.features.imagemagick.Magick(*args, **kwds)
Bases: Executable
A Feature describing the presence of magick or the deprecated convert.
EXAMPLES:
sage: from sage.features.imagemagick import Magick
sage: Magick().is_present() # optional - imagemagick
FeatureTestResult( magick , True)>>> from sage.all import *>>> from sage.features.imagemagick import Magick>>> Magick().is_present() # optional - imagemagick
FeatureTestResult( magick , True)

56

Chapter 3. Features

Packages and Features, Release 10.4

is_functional()
Return whether command magick or convert in the path is functional.
EXAMPLES:
sage: from sage.features.imagemagick import Magick
sage: Magick().is_functional()# optional - imagemagick
FeatureTestResult( magick , True)>>> from sage.all import *>>> from sage.features.imagemagick import Magick>>> Magick().is_functional()# optional - imagemagick
FeatureTestResult( magick , True)sage.features.imagemagick.all_features()3.16 Features for testing whether interpreter interfaces to magma,
maple, mathematica etc. are functionalclass sage.features.interfaces.InterfaceFeature(*args, **kwds)
Bases: Feature
A Feature describing whether an Interface is present and functional.
class sage.features.interfaces.Macaulay2(*args, **kwds)
Bases: InterfaceFeature
A Feature describing whether sage.interfaces.macaulay2.Macaulay2 is present and functional.
EXAMPLES:
sage: from sage.features.interfaces import Macaulay2
sage: Macaulay2().is_present() # random
FeatureTestResult( macaulay2 , False)>>> from sage.all import *>>> from sage.features.interfaces import Macaulay2>>> Macaulay2().is_present() # random
FeatureTestResult( macaulay2 , False)class sage.features.interfaces.Magma(*args, **kwds)
Bases: InterfaceFeature
A Feature describing whether sage.interfaces.magma.Magma is present and functional.
EXAMPLES:
sage: from sage.features.interfaces import Magmasage: Magma().is_present() # random
FeatureTestResult( magma , False)>>> from sage.all import *>>> from sage.features.interfaces import Magma>>> Magma().is_present() # random
FeatureTestResult( magma , False)

3.16. Features for testing whether interpreter interfaces to magma, maple, mathematica etc. are57
functional

Packages and Features, Release 10.4class sage.features.interfaces.Maple(*args, **kwds)
Bases: InterfaceFeature
A Feature describing whether sage.interfaces.maple.Maple is present and functional.
EXAMPLES:
sage: from sage.features.interfaces import Maple
sage: Maple().is_present() # random
FeatureTestResult( maple , False)>>> from sage.all import *>>> from sage.features.interfaces import Maple>>> Maple().is_present() # random
FeatureTestResult( maple , False)class sage.features.interfaces.Mathematica(*args, **kwds)
Bases: InterfaceFeature
A Feature describing whether sage.interfaces.mathematica.Mathematica is present and functional.
EXAMPLES:
sage: from sage.features.interfaces import Mathematica
sage: Mathematica().is_present() # not tested
FeatureTestResult( mathematica , False)>>> from sage.all import *>>> from sage.features.interfaces import Mathematica>>> Mathematica().is_present() # not tested
FeatureTestResult( mathematica , False)class sage.features.interfaces.Matlab(*args, **kwds)
Bases: InterfaceFeature
A Feature describing whether sage.interfaces.matlab.Matlab is present and functional.
EXAMPLES:
sage: from sage.features.interfaces import Matlab
sage: Matlab().is_present() # random
FeatureTestResult( matlab , False)>>> from sage.all import *>>> from sage.features.interfaces import Matlab>>> Matlab().is_present() # random
FeatureTestResult( matlab , False)class sage.features.interfaces.Octave(*args, **kwds)
Bases: InterfaceFeature
A Feature describing whether sage.interfaces.octave.Octave is present and functional.
EXAMPLES:
sage: from sage.features.interfaces import Octave
sage: Octave().is_present() # random
FeatureTestResult( octave , False)

58

Chapter 3. Features

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.interfaces import Octave>>> Octave().is_present() # random
FeatureTestResult( octave , False)class sage.features.interfaces.Scilab(*args, **kwds)
Bases: InterfaceFeature
A Feature describing whether sage.interfaces.scilab.Scilab is present and functional.
EXAMPLES:
sage: from sage.features.interfaces import Scilab
sage: Scilab().is_present() # random
FeatureTestResult( scilab , False)>>> from sage.all import *>>> from sage.features.interfaces import Scilab>>> Scilab().is_present() # random
FeatureTestResult( scilab , False)

sage.features.interfaces.all_features()
Return features corresponding to interpreter interfaces.
EXAMPLES:
sage: from sage.features.interfaces import all_features
sage: list(all_features())[Feature( magma ),Feature( matlab ),Feature( mathematica ),Feature( maple ),Feature( macaulay2 ),Feature( octave ),Feature( scilab )]>>> from sage.all import *>>> from sage.features.interfaces import all_features>>> list(all_features())[Feature( magma ),Feature( matlab ),Feature( mathematica ),Feature( maple ),Feature( macaulay2 ),Feature( octave ),Feature( scilab )]3.16. Features for testing whether interpreter interfaces to magma, maple, mathematica etc. are59
functional

Packages and Features, Release 10.4

3.17 Feature for testing if the Internet is available
class sage.features.internet.Internet(*args, **kwds)
Bases: Feature
A Feature describing if Internet is available.
Failure of connecting to the site “https://www.sagemath.org” within a second is regarded as internet being notavailable.
EXAMPLES:
sage: from sage.features.internet import Internet
sage: Internet()Feature( internet )>>> from sage.all import *>>> from sage.features.internet import Internet>>> Internet()Feature( internet )sage.features.internet.all_features()3.18 Feature for testing the presence of kenzo
class sage.features.kenzo.Kenzo(*args, **kwds)
Bases: Feature
A Feature describing the presence of Kenzo.
EXAMPLES:
sage: from sage.features.kenzo import Kenzo
sage: Kenzo().is_present() # optional - kenzo
FeatureTestResult( kenzo , True)>>> from sage.all import *>>> from sage.features.kenzo import Kenzo>>> Kenzo().is_present() # optional - kenzo
FeatureTestResult( kenzo , True)sage.features.kenzo.all_features()3.19 Features for testing the presence of latex and equivalent programs
class sage.features.latex.LaTeX(*args, **kwds)
Bases: Executable
A Feature describing the presence of latex
EXAMPLES:
60

Chapter 3. Features

Packages and Features, Release 10.4

sage: from sage.features.latex import latex
sage: latex().is_present()# optional - latex
FeatureTestResult( latex , True)>>> from sage.all import *>>> from sage.features.latex import latex>>> latex().is_present()# optional - latex
FeatureTestResult( latex , True)is_functional()
Return whether latex in the path is functional.
EXAMPLES:
sage: from sage.features.latex import latex
sage: latex().is_functional()# optional - latex
FeatureTestResult( latex , True)>>> from sage.all import *>>> from sage.features.latex import latex>>> latex().is_functional()# optional - latex
FeatureTestResult( latex , True)

When the feature is not functional, more information on the reason can be obtained as follows:
sage: result = latex().is_functional()# not tested
sage: print(result.reason)# not tested
Running latex on a sample file(with command= latex -interaction=nonstopmode tmp_wmpos8ak.tex )returned non-zero exit status= 1 with stderr=and stdout= This is pdfTeX,...
Runaway argument?
{document! File ended while scanning use of \end.
...
No pages of output.
Transcript written on tmp_wmpos8ak.log.
>>> from sage.all import *>>> result = latex().is_functional()# not tested>>> print(result.reason)# not tested
Running latex on a sample file(with command= latex -interaction=nonstopmode tmp_wmpos8ak.tex )returned non-zero exit status= 1 with stderr=and stdout= This is pdfTeX,...
Runaway argument?
{document! File ended while scanning use of \end.
...
No pages of output.
Transcript written on tmp_wmpos8ak.log.

class sage.features.latex.LaTeXPackage(*args, **kwds)
Bases: TeXFile

3.19. Features for testing the presence of latex and equivalent programs

61

Packages and Features, Release 10.4

A sage.features.Feature describing the presence of a LaTeX package (.sty file).
EXAMPLES:
sage: from sage.features.latex import LaTeXPackage
sage: LaTeXPackage( graphics ).is_present() # optional - latex
FeatureTestResult( latex_package_graphics , True)>>> from sage.all import *>>> from sage.features.latex import LaTeXPackage>>> LaTeXPackage( graphics ).is_present() # optional - latex
FeatureTestResult( latex_package_graphics , True)class sage.features.latex.TeXFile(*args, **kwds)
Bases: StaticFile
A sage.features.Feature describing the presence of a TeX file
EXAMPLES:
sage: from sage.features.latex import TeXFile
sage: TeXFile( x , x.tex ).is_present() # optional - latex
FeatureTestResult( x , True)>>> from sage.all import *>>> from sage.features.latex import TeXFile>>> TeXFile( x , x.tex ).is_present() # optional - latex
FeatureTestResult( x , True)absolute_filename()
The absolute path of the file.
EXAMPLES:
sage: from sage.features.latex import TeXFile
sage: feature = TeXFile( latex_class_article , article.cls )sage: feature.absolute_filename() # optional - latex.../latex/base/article.cls>>> from sage.all import *>>> from sage.features.latex import TeXFile>>> feature = TeXFile( latex_class_article , article.cls )>>> feature.absolute_filename() # optional - latex.../latex/base/article.cls

sage.features.latex.all_features()class sage.features.latex.dvips(*args, **kwds)
Bases: Executable
A Feature describing the presence of dvips
EXAMPLES:
sage: from sage.features.latex import dvips
sage: dvips().is_present()# optional - dvips
FeatureTestResult( dvips , True)

62

Chapter 3. Features

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.latex import dvips>>> dvips().is_present()# optional - dvips
FeatureTestResult( dvips , True)class sage.features.latex.latex(*args, **kwds)
Bases: LaTeX
A Feature describing the presence of latex
EXAMPLES:
sage: from sage.features.latex import latex
sage: latex().is_present()# optional - latex
FeatureTestResult( latex , True)>>> from sage.all import *>>> from sage.features.latex import latex>>> latex().is_present()# optional - latex
FeatureTestResult( latex , True)class sage.features.latex.lualatex(*args, **kwds)
Bases: LaTeX
A Feature describing the presence of lualatex
EXAMPLES:
sage: from sage.features.latex import lualatex
sage: lualatex().is_present()# optional - lualatex
FeatureTestResult( lualatex , True)>>> from sage.all import *>>> from sage.features.latex import lualatex>>> lualatex().is_present()# optional - lualatex
FeatureTestResult( lualatex , True)class sage.features.latex.pdflatex(*args, **kwds)
Bases: LaTeX
A Feature describing the presence of pdflatex
EXAMPLES:
sage: from sage.features.latex import pdflatex
sage: pdflatex().is_present()# optional - pdflatex
FeatureTestResult( pdflatex , True)>>> from sage.all import *>>> from sage.features.latex import pdflatex>>> pdflatex().is_present()# optional - pdflatex
FeatureTestResult( pdflatex , True)class sage.features.latex.xelatex(*args, **kwds)
Bases: LaTeX
A Feature describing the presence of xelatex
EXAMPLES:
3.19. Features for testing the presence of latex and equivalent programs

63

Packages and Features, Release 10.4

sage: from sage.features.latex import xelatex
sage: xelatex().is_present()# optional - xelatex
FeatureTestResult( xelatex , True)>>> from sage.all import *>>> from sage.features.latex import xelatex>>> xelatex().is_present()# optional - xelatex
FeatureTestResult( xelatex , True)

3.20 Features for testing the presence of latte_int
class sage.features.latte.Latte(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of excecutables from LattE integrale.
EXAMPLES:
sage: from sage.features.latte import Lattesage: Latte().is_present() # optional - latte_int
FeatureTestResult( latte_int , True)>>> from sage.all import *>>> from sage.features.latte import Latte>>> Latte().is_present() # optional - latte_int
FeatureTestResult( latte_int , True)class sage.features.latte.Latte_count(*args, **kwds)
Bases: Executable
Feature for the executable count from LattE integrale.
class sage.features.latte.Latte_integrate(*args, **kwds)
Bases: Executable
Feature for the executable integrate from LattE integrale.
sage.features.latte.all_features()3.21 Feature for testing the presence of lrslib
class sage.features.lrs.Lrs(*args, **kwds)
Bases: Executable
A Feature describing the presence of the lrs binary which comes as a part of lrslib.
EXAMPLES:
sage: from sage.features.lrs import Lrs
sage: Lrs().is_present() # optional - lrslib
FeatureTestResult( lrs , True)

64

Chapter 3. Features

Packages and Features, Release 10.4>>> from sage.all import *>>> from sage.features.lrs import Lrs>>> Lrs().is_present() # optional - lrslib
FeatureTestResult( lrs , True)is_functional()
Test whether lrs works on a trivial input.
EXAMPLES:
sage: from sage.features.lrs import Lrs
sage: Lrs().is_functional() # optional - lrslib
FeatureTestResult( lrs , True)>>> from sage.all import *>>> from sage.features.lrs import Lrs>>> Lrs().is_functional() # optional - lrslib
FeatureTestResult( lrs , True)class sage.features.lrs.LrsNash(*args, **kwds)
Bases: Executable
A Feature describing the presence of the lrsnash binary which comes as a part of lrslib.
EXAMPLES:
sage: from sage.features.lrs import LrsNash
sage: LrsNash().is_present() # optional - lrslib
FeatureTestResult( lrsnash , True)>>> from sage.all import *>>> from sage.features.lrs import LrsNash>>> LrsNash().is_present() # optional - lrslib
FeatureTestResult( lrsnash , True)is_functional()
Test whether lrsnash works on a trivial input.
EXAMPLES:
sage: from sage.features.lrs import LrsNash
sage: LrsNash().is_functional() # optional - lrslib
FeatureTestResult( lrsnash , True)>>> from sage.all import *>>> from sage.features.lrs import LrsNash>>> LrsNash().is_functional() # optional - lrslib
FeatureTestResult( lrsnash , True)class sage.features.lrs.Lrslib(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the executables lrs and lrsnash provided by the lrslib package.
EXAMPLES:

3.21. Feature for testing the presence of lrslib

65

Packages and Features, Release 10.4

sage: from sage.features.lrs import Lrslib
sage: Lrslib().is_present() # optional - lrslib
FeatureTestResult( lrslib , True)>>> from sage.all import *>>> from sage.features.lrs import Lrslib>>> Lrslib().is_present() # optional - lrslib
FeatureTestResult( lrslib , True)sage.features.lrs.all_features()3.22 Features for testing the presence of mcqd
class sage.features.mcqd.Mcqd(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the mcqd module, which is the SageMath interface to the mcqd library
EXAMPLES:
sage: from sage.features.mcqd import Mcqd
sage: Mcqd().is_present() # optional - mcqd
FeatureTestResult( mcqd , True)>>> from sage.all import *>>> from sage.features.mcqd import Mcqd>>> Mcqd().is_present() # optional - mcqd
FeatureTestResult( mcqd , True)sage.features.mcqd.all_features()3.23 Feature for testing the presence of meataxe
class sage.features.meataxe.Meataxe(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the Sage modules that depend on the meataxe library.
EXAMPLES:
sage: from sage.features.meataxe import Meataxe
sage: Meataxe().is_present() # optional - meataxe
FeatureTestResult( meataxe , True)>>> from sage.all import *>>> from sage.features.meataxe import Meataxe>>> Meataxe().is_present() # optional - meataxe
FeatureTestResult( meataxe , True)sage.features.meataxe.all_features()

66

Chapter 3. Features

Packages and Features, Release 10.4

3.24 Features for testing the presence of MixedIntegerLinearProgram backends
class sage.features.mip_backends.COIN(*args, **kwds)
Bases: JoinFeature
A Feature describing whether the MixedIntegerLinearProgram backend COIN is available.
class sage.features.mip_backends.CPLEX(*args, **kwds)
Bases: MIPBackend
A Feature describing whether the MixedIntegerLinearProgram backend CPLEX is available.
class sage.features.mip_backends.CVXOPT(*args, **kwds)
Bases: JoinFeature
A Feature describing whether the MixedIntegerLinearProgram backend CVXOPT is available.
class sage.features.mip_backends.Gurobi(*args, **kwds)
Bases: MIPBackend
A Feature describing whether the MixedIntegerLinearProgram backend Gurobi is available.
class sage.features.mip_backends.MIPBackend(*args, **kwds)
Bases: Feature
A Feature describing whether a MixedIntegerLinearProgram backend is available.
sage.features.mip_backends.all_features()3.25 Feature for testing the presence of pynormaliz
class sage.features.normaliz.PyNormaliz(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the Python package PyNormaliz.
EXAMPLES:
sage: from sage.features.normaliz import PyNormaliz
sage: PyNormaliz().is_present()# optional - pynormaliz
FeatureTestResult( pynormaliz , True)>>> from sage.all import *>>> from sage.features.normaliz import PyNormaliz>>> PyNormaliz().is_present()# optional - pynormaliz
FeatureTestResult( pynormaliz , True)sage.features.normaliz.all_features()3.24. Features for testing the presence of MixedIntegerLinearProgram backends

67

Packages and Features, Release 10.4

3.26 Feature for testing the presence of pandoc
class sage.features.pandoc.Pandoc(*args, **kwds)
Bases: Executable
A Feature describing the presence of pandoc.
EXAMPLES:
sage: from sage.features.pandoc import Pandoc
sage: Pandoc().is_present() # optional - pandoc
FeatureTestResult( pandoc , True)>>> from sage.all import *>>> from sage.features.pandoc import Pandoc>>> Pandoc().is_present() # optional - pandoc
FeatureTestResult( pandoc , True)sage.features.pandoc.all_features()3.27 Feature for testing the presence of pdf2svg
sage.features.pdf2svg.all_features()class sage.features.pdf2svg.pdf2svg(*args, **kwds)
Bases: Executable
A Feature describing the presence of pdf2svg.
EXAMPLES:
sage: from sage.features.pdf2svg import pdf2svg
sage: pdf2svg().is_present()# optional - pdf2svg
FeatureTestResult( pdf2svg , True)>>> from sage.all import *>>> from sage.features.pdf2svg import pdf2svg>>> pdf2svg().is_present()# optional - pdf2svg
FeatureTestResult( pdf2svg , True)

3.28 Feature for testing the presence of jupymake, the Python interface to polymake
class sage.features.polymake.JuPyMake(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the JuPyMake module, a Python interface to the polymake library.
EXAMPLES:

68

Chapter 3. Features

Packages and Features, Release 10.4

sage: from sage.features.polymake import JuPyMakesage: JuPyMake().is_present() # optional - jupymake
FeatureTestResult( jupymake , True)>>> from sage.all import *>>> from sage.features.polymake import JuPyMake>>> JuPyMake().is_present() # optional - jupymake
FeatureTestResult( jupymake , True)sage.features.polymake.all_features()3.29 Features for testing the presence of rubiks
class sage.features.rubiks.Rubiks(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the cu2, cubex, dikcube, mcube, optimal, and size222 programs from the rubiks package.
EXAMPLES:
sage: from sage.features.rubiks import Rubiks
sage: Rubiks().is_present() # optional - rubiks
FeatureTestResult( rubiks , True)>>> from sage.all import *>>> from sage.features.rubiks import Rubiks>>> Rubiks().is_present() # optional - rubiks
FeatureTestResult( rubiks , True)sage.features.rubiks.all_features()class sage.features.rubiks.cu2(*args, **kwds)
Bases: Executable
A Feature describing the presence of cu2.
EXAMPLES:
sage: from sage.features.rubiks import cu2
sage: cu2().is_present() # optional - rubiks
FeatureTestResult( cu2 , True)>>> from sage.all import *>>> from sage.features.rubiks import cu2>>> cu2().is_present() # optional - rubiks
FeatureTestResult( cu2 , True)class sage.features.rubiks.cubex(*args, **kwds)
Bases: Executable
A Feature describing the presence of cubex.
EXAMPLES:

3.29. Features for testing the presence of rubiks

69

Packages and Features, Release 10.4

sage: from sage.features.rubiks import cubex
sage: cubex().is_present() # optional - rubiks
FeatureTestResult( cubex , True)>>> from sage.all import *>>> from sage.features.rubiks import cubex>>> cubex().is_present() # optional - rubiks
FeatureTestResult( cubex , True)class sage.features.rubiks.dikcube(*args, **kwds)
Bases: Executable
A Feature describing the presence of dikcube.
EXAMPLES:
sage: from sage.features.rubiks import dikcube
sage: dikcube().is_present() # optional - rubiks
FeatureTestResult( dikcube , True)>>> from sage.all import *>>> from sage.features.rubiks import dikcube>>> dikcube().is_present() # optional - rubiks
FeatureTestResult( dikcube , True)class sage.features.rubiks.mcube(*args, **kwds)
Bases: Executable
A Feature describing the presence of mcube.
EXAMPLES:
sage: from sage.features.rubiks import mcube
sage: mcube().is_present() # optional - rubiks
FeatureTestResult( mcube , True)>>> from sage.all import *>>> from sage.features.rubiks import mcube>>> mcube().is_present() # optional - rubiks
FeatureTestResult( mcube , True)class sage.features.rubiks.optimal(*args, **kwds)
Bases: Executable
A Feature describing the presence of optimal.
EXAMPLES:
sage: from sage.features.rubiks import optimal
sage: optimal().is_present() # optional - rubiks
FeatureTestResult( optimal , True)>>> from sage.all import *>>> from sage.features.rubiks import optimal>>> optimal().is_present() # optional - rubiks
FeatureTestResult( optimal , True)

70

Chapter 3. Features

Packages and Features, Release 10.4class sage.features.rubiks.size222(*args, **kwds)
Bases: Executable
A Feature describing the presence of size222.
EXAMPLES:
sage: from sage.features.rubiks import size222
sage: size222().is_present() # optional - rubiks
FeatureTestResult( size222 , True)>>> from sage.all import *>>> from sage.features.rubiks import size222>>> size222().is_present() # optional - rubiks
FeatureTestResult( size222 , True)

3.30 Features for testing the presence of tdlib
class sage.features.tdlib.Tdlib(*args, **kwds)
Bases: JoinFeature
A Feature describing the presence of the SageMath interface to the tdlib library.
sage.features.tdlib.all_features()3.30. Features for testing the presence of tdlib

71

Packages and Features, Release 10.4

72

Chapter 3. Features

CHAPTER

FOUR

DISTRIBUTION PACKAGES OF THE SAGE LIBRARY• sagemath_bliss: Graph (iso/auto)morphisms with bliss• sagemath_categories: Sage categories and basic rings• sagemath_coxeter3: Coxeter groups, Bruhat ordering, Kazhdan-Lusztig polynomials with coxeter3• sagemath_doc_html: SageMath documentation in HTML format• sagemath_doc_pdf: SageMath documentation in PDF format• sagemath_environment: System and software environment• sagemath_mcqd: Finding maximum cliques with mcqd
• sagemath_meataxe: Matrices over small finite fields with meataxe• sagemath_objects: Sage objects, elements, parents, categories, coercion, metaclasses• sagemath_repl: IPython kernel, Sage preparser, doctester• sagemath_sirocco: Certified root continuation with sirocco• sagemath_tdlib: Tree decompositions with tdlib

73

Packages and Features, Release 10.4

74

Chapter 4. Distribution Packages of the Sage LibraryCHAPTER

FIVE

EXPERIMENTAL PACKAGES

Some packages that provide additional functionality are marked as “experimental”. Developers are needed in order toimprove the integration of these packages into the Sage distribution.

5.1 Mathematics• awali: Computation of/with finite state machines• barvinok: Projections of integer point sets of parametric polytopes• cocoalib: Computations in commutative algebra• deformation: Count points on hypersurfaces using the deformation method• gap3: A minimal distribution of GAP 3 containing packages that have no equivalent in GAP 4• lie: Library for the representation theory of complex semisimple Lie groups and algebras• modular_decomposition: A modular decomposition algorithm• polylib: Operations on unions of polyhedra• r_jupyter: Jupyter kernel for R• surf: Visualization of algebraic curves, algebraic surfaces and hyperplane sections of surfaces

5.2 Other dependencies• gdb: The GNU Project debugger• libtheora: Library for the Theora video codec• valgrind: Memory error detector, call graph generator, runtime profiler

75

Packages and Features, Release 10.4

76

Chapter 5. Experimental Packages

CHAPTER

SIX

ALL EXTERNAL PACKAGES

6.1 Details of external packages
Packages are in alphabetical order.

6.1.1 4ti2: Algebraic, geometric and combinatorial problems on linear spaces
Description
A software package for algebraic, geometric and combinatorial problems on linear spaces. Available at https://4ti2.github.
io/.
License4ti2 is released under a GPL v2 license.
Upstream Contact• https://4ti2.github.io/• Raymond Hemmecke, TU Munich, Germany• Matthias Köppe, UC Davis, CA, USAType
optional
Dependencies• $(MP_LIBRARY)• glpk: GNU Linear Programming Kit• zlib: Data compression library77

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.6.10Equivalent System Packages$ sudo pacman -S 4ti2
$ conda install 4ti2
$ apt-cyg install lib4ti2_0 lib4ti2-devel$ sudo apt-get install 4ti2
$ sudo yum install 4ti2
$ sudo pkg install math/4ti2$ sudo emerge sci-mathematics/4ti2$ sudo zypper install 4ti2 4ti2-devel

See https://repology.org/project/4ti2/versions
If the system package is installed, ./configure will check if it can be used.

6.1.2 _bootstrap: Represents system packages required for running the top-levelbootstrap script
Description
This optional script package represents the requirements (system packages) that are needed in addition to those represented
by the _prereq package in order to run the top-level bootstrap script.
Typeoptional

78

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies
Version Information
Equivalent System Packages$ apk add bash gettext-dev autoconf automake libtool pkgconf$ sudo pacman -S autoconf automake libtool pkgconf$ conda install autoconf automake libtool pkg-config$ apt-cyg install autoconf automake libtool$ sudo apt-get install autoconf automake libtool pkg-config$ sudo yum install autoconf automake libtool pkg-config$ sudo pkg install autoconf automake libtool pkg-config$ sudo emerge dev-build/autoconf dev-build/automake dev-build/libtool$ brew install autoconf automake libtool pkg-config$ sudo port install gettext autoconf automake libtool pkgconfig$ nix-env --install autoconf automake libtool pkg-config$ sudo zypper install autoconf automake libtool pkgconfig$ sudo slackpkg install autoconf automake libtool pkg-config$ sudo xbps-install autoconf automake libtool xtools mk-configure \pkg-config

6.1.3 _develop: Represents system packages recommended for development
Description
Script package representing a list of system packages recommended for developers.

6.1. Details of external packages

79

Packages and Features, Release 10.4

Type
optional
Dependencies• _bootstrap: Represents system packages required for running the top-level bootstrap script• git: Version control system• github_cli: Command-line interface for GitHub• pytest: Simple powerful testing with Python• pytest_xdist: pytest xdist plugin for distributed testing and loop-on-failing modes
Version Information
Equivalent System Packages$ apk add gnupg-gpgconf openssh-client$ sudo pacman -S gnupg openssh$ conda install openssh pycodestyle esbonio$ apt-cyg install gnupg2$ sudo apt-get install gpgconf openssh-client$ sudo yum install gnupg2 openssh$ sudo pkg install security/gnupg security/openssh-portable$ sudo emerge app-crypt/gnupg net-misc/openssh$ brew install gnupg$ sudo port install gnupg2$ nix-env --install gnupg openssh$ sudo zypper install gpg2 openssh$ sudo slackpkg install gnupg2 openssh$ sudo xbps-install gnupg2 openssh

See https://repology.org/project/gnupg/versions, https://repology.org/project/openssh/versions
If the system package is installed, ./configure will check if it can be used.

80

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.4 _prereq: Represents system packages required for installing SageMath fromsourceDescription
This dummy package represents the minimal requirements (system packages) for installing SageMath from source.
In addition to standard POSIX utilities and the bash shell, the following standard command-line development tools must
be installed on your computer:• make: GNU make, version 3.80 or later. Version 3.82 or later is recommended.
• m4: GNU m4 1.4.2 or later (non-GNU or older versions might also work).
• perl: version 5.8.0 or later.
• ar and ranlib: can be obtained as part of GNU binutils.
• tar: GNU tar version 1.17 or later, or BSD tar (as provided on macOS).
• python: Python 3.4 or later, or Python 2.7. (This range of versions is a minimal requirement for internal purposesof the SageMath build system, which is referred to as sage-bootstrap-python.)
Other versions of these may work, but they are untested.
On macOS, suitable versions of all of these tools are provided by the Xcode Command Line Tools. To install them, open aterminal window and run xcode-select --install; then click “Install” in the pop-up window. If the Xcode Command Line Tools are already installed, you may want to check if they need to be updated by typing softwareupdate-l.
On Linux, ar and ranlib are in the binutils package. The other programs are usually located in packages with theirrespective names.
On Redhat-derived systems not all perl components are installed by default and you might have to install the perl-ExtUtils-MakeMaker package.
To check if you have the above prerequisites installed, for example perl, type:$ command -v perlor:
$ which perlon the command line. If it gives an error (or returns nothing), then either perl is not installed, or it is installed but notin your PATH.
Type
standard

6.1. Details of external packages

81

Packages and Features, Release 10.4

Dependencies
Version Information
Equivalent System Packages$ apk add binutils make m4 perl python3 tar bc gcc g++ ca-certificates \coreutils$ sudo pacman -S binutils make m4 perl python tar bc gcc which$ conda install compilers make m4 perl python tar bc$ apt-cyg install binutils make m4 python39-urllib3 python39 perl \perl-ExtUtils-MakeMaker tar gcc-core gcc-g++ findutils which \libcrypt-devel libiconv-devel$ sudo apt-get install binutils make m4 perl python3 tar bc gcc g++ \ca-certificates$ sudo yum install binutils make m4 python3 perl \perl-ExtUtils-MakeMaker tar gcc gcc-c++ findutils which diffutils \perl-IPC-Cmd$ sudo pkg install gmake automake bash dash python$ sudo emerge sys-devel/binutils sys-libs/binutils-libs dev-build/make \dev-scheme/guile dev-libs/libffi app-arch/tar sys-devel/gcc \dev-libs/mpc sys-libs/glibc sys-kernel/linux-headers \dev-lang/perl sys-devel/m4 sys-devel/bc dev-lang/python \sys-devel/flex app-misc/ca-certificates dev-libs/libxml2 \sys-apps/findutils sys-apps/which sys-apps/diffutils

No package needed.
No package needed.
$ nix-env --install binutils gnumake gnum4 perl python3 gnutar bc gcc \bash$ sudo zypper install binutils make m4 gawk perl python3 tar bc which \glibc-locale-base gcc gcc-c++ ca-certificates gzip findutils \diffutils$ sudo slackpkg install binutils make guile gc libffi gcc-13 gcc-g++-13 \libmpc glibc kernel-headers perl m4 bc python3 flex \ca-certificates libxml2 cyrus-sasl$ sudo xbps-install bc binutils gcc libgomp-devel m4 make perl python3 \tar bash which diffutils gzip python3-devel bzip2-devel xz \liblzma-devel libffi-devel zlib-devel libxcrypt-devel

If the system package is installed, ./configure will check if it can be used.

82

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.5 _recommended: Represents system packages recommended for additional
functionality
Description
Script package representing a list of system packages recommended to be installed for additional functionality.
Type
optional
Dependencies• ffmpeg: ffmpeg video converter• free_fonts: a free family of scalable outline fonts• git: Version control system• imagemagick: A collection of tools and libraries for many image file formats• libjpeg: JPEG image support• pandoc: A document converter• texlive: A comprehensive TeX system• texlive_luatex: LuaTeX packages• xindy: a general-purpose index processor
Version Information
Equivalent System Packages$ sudo apt-get install default-jdk libavdevice-dev$ brew install texinfo$ sudo port install texinfo

If the system package is installed, ./configure will check if it can be used.

6.1.6 _sagemath: Downstream package of Sage in distributions
SageMath is available from various distributions and can be installed by package managers.
This dummy package records the names of the system packages that should be installed to provide a standard installationof SageMath, including documentation and Jupyter.

6.1. Details of external packages

83

Packages and Features, Release 10.4

Downstream Contact
See wiki page Distribution
Type
optional
Dependencies
Version Information
Equivalent System Packages$ sudo pacman -S sagemath sagemath-doc$ conda install sage
$ sudo apt-get install sagemath sagemath-doc sagemath-jupyter$ sudo yum install sagemath$ sudo pkg install math/sage$ brew install sage
$ nix-env --install sage
$ sudo xbps-install sagemath

See https://repology.org/project/sagemath/versions

6.1.7 admcycles: Computation in the tautological ring of the moduli space of
curvesDescription
The SageMath package admcycles offers the possibility to compute in the tautological ring of the Deligne-Mumford
compactification of the moduli space of curves. Construction for standard generators are provided (psi, kappa and lambda
classes) as well as more advanced algebraic construction (double ramification cycle, strata of differentials).

84

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseGPLv2+
Upstream Contact
https://pypi.org/project/admcycles/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
requirements.txt:
admcycles

Equivalent System Packages(none known)

6.1.8 alabaster: Default theme for the Sphinx documentation system
Description
Alabaster is a visually (c)lean, responsive, configurable theme for the Sphinx documentation system. It is Python 2+3
compatible.
It began as a third-party theme, and is still maintained separately, but as of Sphinx 1.3, Alabaster is an install-timedependency of Sphinx and is selected as the default theme.
Live examples of this theme can be seen on paramiko.org, fabfile.org and pyinvoke.org.

6.1. Details of external packages

85

Packages and Features, Release 10.4

Upstream Contact
https://alabaster.readthedocs.io/en/latest/Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.7.16

version_requirements.txt:
alabaster >=0.7.12

Equivalent System Packages$ conda install alabaster$ sudo emerge dev-python/alabaster$ sudo zypper install python3\$\{PYTHON_MINOR\}-alabaster$ sudo xbps-install python3-alabasterSee https://repology.org/project/alabaster/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.9 anyio: High level compatibility layer for multiple asynchronous event loop
implementations
Description
High level compatibility layer for multiple asynchronous event loop implementations

86

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/anyio/
Typestandard
Dependencies• $(PYTHON)• exceptiongroup: Backport of PEP 654 (exception groups)• idna: Internationalized Domain Names in Applications (IDNA)• pip: Tool for installing and managing Python packages• sniffio: Sniff out which async library your code is running under• typing_extensions: Backported and Experimental Type Hints for Python 3.8+
Version Information
package-version.txt:
4.4.0

version_requirements.txt:
anyio

Equivalent System Packages(none known)

6.1.10 appdirs: Small Python module for determining appropriate platform-specificdirs, e.g. a “user data dir”
Description
Small Python module for determining appropriate platform-specific dirs, e.g. a “user data dir”

6.1. Details of external packages

87

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/appdirs/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.4.4

version_requirements.txt:
appdirs

Equivalent System Packages$ conda install appdirs$ sudo xbps-install python3-appdirs

If the system package is installed, ./configure will check if it can be used.

6.1.11 appnope: Disable App Nap on macOS >= 10.9
Description
Disable App Nap on macOS >= 10.9

88

Chapter 6. All External Packages

Packages and Features, Release 10.4

License
BSD
Upstream Contact
https://pypi.org/project/appnope/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.1.4

version_requirements.txt:
appnope >=0.1.0

Equivalent System Packages$ conda install appnope$ sudo port install py-appnope

See https://repology.org/project/python:appnope/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.12 argon2_cffi: The secure Argon2 password hashing algorithm
Description
The secure Argon2 password hashing algorithm.

6.1. Details of external packages

89

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/argon2-cffi/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• argon2_cffi_bindings: Low-level CFFI bindings for Argon2• flit_core: Distribution-building parts of Flit. See flit package for more information
Version Information
package-version.txt:
21.3.0version_requirements.txt:
argon2-cffi

Equivalent System Packages$ conda install argon2-cffi$ sudo emerge dev-python/argon2-cffi$ sudo port install py-argon2-cffi$ sudo xbps-install python3-argon2

See https://repology.org/project/argon2-cffi/versions, https://repology.org/project/python:argon2-cffi/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

90

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.13 argon2_cffi_bindings: Low-level CFFI bindings for Argon2
Description
Low-level CFFI bindings for Argon2
LicenseMIT
Upstream Contact
https://pypi.org/project/argon2-cffi-bindings/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cffi: Foreign Function Interface for Python calling C code
• setuptools_scm: Python build system extension to obtain package version from version control
Version Information
package-version.txt:
21.2.0version_requirements.txt:
argon2-cffi-bindings

Equivalent System Packages$ apk add py3-argon2-cffi-bindings$ sudo pacman -S python-argon2-cffi-bindings$ sudo yum install python-argon2-cffi-bindings$ sudo pkg install security/py-argon2-cffi-bindings

6.1. Details of external packages

91

Packages and Features, Release 10.4

$ sudo emerge dev-python/argon2-cffi-bindings$ sudo port install py-argon2-cffi-bindings$ sudo zypper install python-argon2-cffi-bindings

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.14 arrow: Better dates & times for Python
Description
Better dates & times for Python
LicenseApache 2.0
Upstream Contact
https://pypi.org/project/arrow/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• dateutil: Extensions to the standard Python module datetime• types_python_dateutil: Typing stubs for python-dateutil
Version Information
package-version.txt:
1.3.0

version_requirements.txt:
arrow

92

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.15 asttokens: Annotate AST trees with source code positions
Description
Annotate AST trees with source code positions
LicenseApache 2.0
Upstream Contact
https://pypi.org/project/asttokens/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages• six: Python 2 and 3 compatibility utilities
Version Information
package-version.txt:
2.4.1

version_requirements.txt:
asttokens6.1. Details of external packages

93

Packages and Features, Release 10.4

Equivalent System Packages$ conda install asttokens$ sudo emerge dev-python/asttokens

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.16 async_lru: Simple LRU cache for asyncio
Description
Simple LRU cache for asyncio
LicenseMIT License
Upstream Contact
https://pypi.org/project/async-lru/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.0.4

version_requirements.txt:
async-lru

94

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.17 attrs: Decorator for Python classes with attributes
Description
attrs is the Python package that will bring back the joy of writing classes by relieving you from the drudgery of implementing object protocols (aka dunder methods).
LicenseMIT License
Upstream Contact
Home page: https://www.attrs.org
Typestandard
Dependencies• $(PYTHON)• importlib_metadata: Library to access the metadata for a Python package• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
23.2.0version_requirements.txt:
attrs >=19.3.0

6.1. Details of external packages

95

Packages and Features, Release 10.4

Equivalent System Packages$ conda install attrs$ sudo emerge dev-python/attrs$ sudo port install py-attrs$ sudo xbps-install python3-attrs

See https://repology.org/project/python:attrs/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.18 auditwheel_or_delocate: Repair wheels on Linux or macOS
Description
This package represents auditwheel on Linux and delocate on macOS.
(Actually, we install delocate also on Linux because our script make -j list-broken-packages uses a small
subroutine of delocate even on Linux.)
LicenseMIT
BSD 2-clause
Upstream Contact
https://pypi.org/project/auditwheel/
https://pypi.org/project/delocate/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)

96

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
requirements.txt:
delocate
auditwheel; sys_platform !=darwinEquivalent System Packages(none known)

6.1.19 awali: Computation of/with finite state machines
Description
Awali is a software platform dedicated to the computation of, and with, finite state machines. Here finite state machines
is to be understood in the broadest possible sense: finite automata with output — often called transducers then — oreven more generally finite automata with multiplicity, that is, automata that not only accept, or recognize, sequences ofsymbols but compute for every such sequence a ‘value’ that is associated with it and which can be taken in any semiring.
Hence the variety of situations that can thus be modellized.
License• GPL 3.0
Upstream Contact• Website: http://vaucanson-project.org/Awali/index.html• Releases: http://files.vaucanson-project.org/tarballs/
Dependencies• graphviz must be installed from your distro, and available in the path.
Typeexperimental

6.1. Details of external packages

97

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• cmake: A cross-platform build system generator• cython: C-Extensions for Python, an optimizing static compiler• nbconvert: Converting Jupyter Notebooks• ncurses: Classic terminal output library
Version Information
package-version.txt:
1.0.2-190218

Equivalent System Packages
See https://repology.org/project/awali/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.20 babel: Internationalization utilities
Description
Internationalization utilities
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/Babel/Typestandard

98

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pytz: Timezone definitions for Python
Version Information
package-version.txt:
2.14.0version_requirements.txt:
babel >=2.11.0

Equivalent System Packages$ sudo pacman -S python-babel$ conda install babel$ sudo apt-get install python3-babel$ sudo yum install babel$ sudo emerge dev-python/Babel$ sudo port install py-babel$ sudo zypper install python3\$\{PYTHON_MINOR\}-Babel$ sudo xbps-install python3-Babel

See https://repology.org/project/python:babel/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.21 barvinok: Projections of integer point sets of parametric polytopes
Description
barvinok is a library for counting the number of integer points in parametric and non-parametric polytopes as well as
projections of such sets.

6.1. Details of external packages

99

Packages and Features, Release 10.4

LicenseGPL v2
Upstream Contact• https://sourceforge.net/projects/barvinok/• https://groups.google.com/group/isl-development
Typeexperimental
Dependencies• isl: Sets and relations of integer points bounded by affine constraints• ntl: A library for doing number theory• polylib: Operations on unions of polyhedra
Version Information
package-version.txt:
0.41.7Equivalent System Packages$ sudo pkg install math/barvinok$ sudo zypper install barvinok pkgconfig\(barvinok\)

See https://repology.org/project/barvinok/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.22 beautifulsoup4: Screen-scraping library
Description
Screen-scraping library

100

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/beautifulsoup4/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• soupsieve: Modern CSS selector implementation for Beautiful Soup
Version Information
package-version.txt:
4.12.2version_requirements.txt:
beautifulsoup4

Equivalent System Packages$ apk add py3-beautifulsoup4$ sudo pacman -S python-beautifulsoup4$ conda install beautifulsoup4$ sudo apt-get install python3-bs4$ sudo yum install python-beautifulsoup4$ sudo emerge dev-python/beautifulsoup4$ sudo port install py-beautifulsoup4$ sudo zypper install python-beautifulsoup4

6.1. Details of external packages

101

Packages and Features, Release 10.4

$ sudo xbps-install python3-BeautifulSoup4

See https://repology.org/project/python:beautifulsoup4/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.23 beniget: Extract semantic information about static Python code
Description
Extract semantic information about static Python code
LicenseBSD 3-Clause
Upstream Contact
https://pypi.org/project/beniget/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• gast: Python AST that abstracts the underlying Python version
Version Information
package-version.txt:
0.4.1

version_requirements.txt:
beniget102

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install beniget$ sudo emerge dev-python/beniget$ sudo xbps-install python3-beniget

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.24 benzene: Generate fusenes and benzenoids with a given number of faces
Description
Benzene is a program for the efficient generation of all nonisomorphic fusenes and benzenoids with a given number offaces. Fusenes are planar polycyclic hydrocarbons with all bounded faces hexagons. Benzenoids are fusenes that are
subgraphs of the hexagonal lattice.
LicenseBenzene is licensed under the GNU General Public License v2 or later (June 2007)
Upstream Contact
Benzene was written by Gunnar Brinkmann and Gilles Caporossi. This version was adapted by Gunnar Brinkmann andNico Van Cleemput for Grinvin.
http://www.grinvin.org/
Typeoptional
Dependencies
Version Information
package-version.txt:
20130630

6.1. Details of external packages

103

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S benzene$ sudo zypper install benzene

See https://repology.org/project/benzene/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.25 biopython: Tools for computational molecular biology
Description
Freely available tools for computational molecular biology.
License
Upstream Contact
https://pypi.org/project/biopython/
http://biopython.org/
Typeoptional
Dependencies
Version Information
requirements.txt:
biopythonEquivalent System Packages$ conda install biopython$ sudo port install py-biopython

See https://repology.org/project/biopython/versions, https://repology.org/project/python:biopython/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

104

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.26 bleach: An HTML-sanitizing tool
Description
An easy safelist-based HTML-sanitizing tool.
LicenseApache License v2
Upstream Contact
Home Page: https://github.com/mozilla/bleachTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• six: Python 2 and 3 compatibility utilities• webencodings: Character encoding aliases for legacy web content
Version Information
package-version.txt:
6.1.0

version_requirements.txt:
bleach >= 5

Equivalent System Packages$ sudo pacman -S python-bleach$ conda install bleach$ sudo apt-get install python3-bleach$ sudo yum install python-bleach6.1. Details of external packages

105

Packages and Features, Release 10.4

$ sudo emerge dev-python/bleach$ sudo port install py-bleach$ sudo zypper install python3\$\{PYTHON_MINOR\}-bleach$ sudo xbps-install python3-bleachSee https://repology.org/project/python:bleach/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.27 bliss: Computing automorphism groups and canonical forms of graphs
Description
bliss is an open source tool for computing automorphism groups and canonical forms of graphs.
LicenseLGPL3
Upstream Contact
Bliss is currently being maintained by Tommi Junttila athttps://users.aalto.fi/ tjunttil/bliss/index.html
Bliss used to be maintained by Tommi Junttila and Petteri Kaski up to version 0.73 at
http://www.tcs.tkk.fi/Software/bliss/index.html
Typeoptional
Dependencies• cmake: A cross-platform build system generator

106

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.77

Equivalent System Packages$ apk add bliss$ sudo pacman -S bliss$ conda install bliss$ sudo yum install bliss bliss-devel$ sudo emerge sci-libs/bliss$ sudo zypper install bliss bliss-devel

See https://repology.org/project/bliss-graphs/versions
If the system package is installed, ./configure will check if it can be used.

6.1.28 boost_cropped: Portable C++ libraries (subset needed for Sage)
Description
Boost provides free peer-reviewed portable C++ source libraries.
We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful,and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercialuse.
We aim to establish “existing practice” and provide reference implementations so that Boost libraries are suitable for
eventual standardization. Ten Boost libraries are already included in the C++ Standards Committee’s Library Technical
Report (TR1) and will be in the new C++0x Standard now being finalized. C++0x will also include several more Boost
libraries in addition to those from TR1. More Boost libraries are proposed for TR2.
LicenseBoost Software License - see http://www.boost.org/users/license.html

6.1. Details of external packages

107

Packages and Features, Release 10.4

Upstream Contact
Website: http://www.boost.org/
See mailing list page at http://www.boost.org/community/groups.html
Typestandard
Dependencies
Version Information
package-version.txt:
1.66.0.p0

Equivalent System Packages$ sudo pacman -S boost$ conda install boost-cpp$ apt-cyg install libboost-devel$ sudo apt-get install libboost-dev$ sudo yum install boost-devel$ sudo pkg install devel/boost-libs$ brew install boost$ sudo port install boost$ nix-env --install boost$ sudo zypper install boost-devel

install the following packages: boost-cpp$ sudo slackpkg install boost$ sudo xbps-install boost-devel

See https://repology.org/project/boost/versions
If the system package is installed, ./configure will check if it can be used.

108

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.29 brial: Boolean Ring Algebra implementation using binary decision diagrams
Description
BRiAl (“Boolean Ring Algebra”) is the successor to PolyBoRi.
The core of PolyBoRi is a C++ library, which provides high-level data types for Boolean polynomials and monomials,
exponent vectors, as well as for the underlying polynomial rings and subsets of the powerset of the Boolean variables. Asa unique approach, binary decision diagrams are used as internal storage type for polynomial structures. On top of thisC++-library we provide a Python interface. This allows parsing of complex polynomial systems, as well as sophisticatedand extendable strategies for Gröbner base computation. PolyBoRi features a powerful reference implementation for
Gröbner basis computation.
LicenseGPL version 2 or later
Upstream Contact
https://github.com/BRiAl/BRiAl
Type
standard
Dependencies• boost_cropped: Portable C++ libraries (subset needed for Sage)• libpng: Bitmap image support• m4ri: fast arithmetic with dense matrices over GF(2)• pkgconf: An implementation of the pkg-config spec
Version Information
package-version.txt:
1.2.8

Equivalent System Packages$ sudo pacman -S brial$ conda install brial$ sudo apt-get install libbrial-dev libbrial-groebner-dev

6.1. Details of external packages

109

Packages and Features, Release 10.4

$ sudo yum install brial brial-devel$ sudo pkg install math/brial$ sudo emerge sci-libs/brial$ nix-env --install brial$ sudo zypper install brial-devel$ sudo xbps-install brial-devel

See https://repology.org/project/brial/versions
If the system package is installed, ./configure will check if it can be used.

6.1.30 buckygen: Efficient generation of nonisomorphic fullerenes
Description
Buckygen is a program for the efficient generation of all nonisomorphic fullerenes. These are triangulations where allvertices have degree 5 or 6. Or if the dual representation is used: cubic plane graphs where all faces are pentagons or
hexagons.
LicenseBuckygen is licensed under the GNU General Public License v3 (June 2007)
Upstream Contact
Buckygen was mainly written by Jan Goedgebeur, jan.goedgebeur[at]ugent.be.
http://caagt.ugent.be/buckygen/Typeoptional
Dependencies
Version Information
package-version.txt:
1.1

110

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S buckygen$ sudo zypper install buckygen

See https://repology.org/project/buckygen/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.31 bzip2: High-quality data compressor
Description
bzip2 is a freely available, patent free, high-quality data compressor.
It typically compresses files to within 10% to 15% of the best available techniques (the PPM family of statistical compressors), whilst being around twice as fast at compression and six times faster at decompression.
License
BSD-style
Upstream Contact• Website http://bzip.org/• Author: Julian Seward <julian@bzip.org>
Special Update/Build Instructions
This package must not be bzip2 compressed, so create it using
tar c bzip2-1.0.6 | gzip --best >bzip2-1.0.6.spkg

The build system has been autotoolized based on a patch by the Suse folk at http://ftp.uni-kl.de/pub/linux/suse/people/
sbrabec/bzip2/for_downstream/bzip2-1.0.6-autoconfiscated.patch
See patches/autotools and spkg-src for details.
Typestandard

6.1. Details of external packages

111

Packages and Features, Release 10.4

Dependencies• pkgconf: An implementation of the pkg-config spec
Version Information
package-version.txt:
1.0.6-20150304.p0

Equivalent System Packages$ apk add bzip2$ conda install bzip2$ apt-cyg install bzip2 libbz2-devel$ sudo apt-get install libbz2-dev bzip2$ sudo yum install bzip2 bzip2-devel$ brew install bzip2$ sudo zypper install bzip2 pkgconfig\(bzip2\)$ sudo slackpkg install bzip2$ sudo xbps-install bzip2-devel

See https://repology.org/project/bzip2/versions
If the system package is installed, ./configure will check if it can be used.

6.1.32 cachetools: Extensible memoizing collections and decorators
Description
Extensible memoizing collections and decorators

112

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/cachetools/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
5.3.3

version_requirements.txt:
cachetools

Equivalent System Packages(none known)

6.1.33 calver: Setuptools extension for CalVer package versions
Description
Setuptools extension for CalVer package versions
License
Upstream Contact
https://pypi.org/project/calver/

6.1. Details of external packages

113

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
2022.6.26

version_requirements.txt:
calverEquivalent System Packages$ apk add py3-calver$ sudo pacman -S python-calver$ sudo pkg install devel/py-calver$ sudo emerge calver$ sudo port install py-calver$ sudo zypper install python-calver$ sudo xbps-install python3-calverIf the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.34 cbc: COIN-OR branch and cut solver for mixed-integer programs
Description
The Computational Infrastructure for Operations Research (COIN-OR**, or simply COIN) project is an initiative to spurthe development of open-source software for the operations research community.
The COIN Branch and Cut solver (CBC) is an open-source mixed-integer program (MIP) solver written in C++. CBC
is intended to be used primarily as a callable library to create customized branch-and-cut solvers. A basic, stand-alone
executable version is also available.

114

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseEclipse Public License, Version 1.0 (EPL-1.0) (http://opensource.org/licenses/eclipse-1.0)
Upstream Contact• https://github.com/coin-or/Cbc
Type
optional
Dependencies• $(BLAS)• bzip2: High-quality data compressor• readline: Command line editing library• zlib: Data compression library
Version Information
package-version.txt:
2.9.4.p0

Equivalent System Packages$ sudo pacman -S coin-or-cbc$ conda install coincbc$ sudo apt-get install coinor-cbc coinor-libcbc-dev$ sudo yum install coin-or-Cbc coin-or-Cbc-devel$ sudo pkg install math/cbc$ sudo emerge sci-libs/coinor-cbc$ brew install cbc$ nix-env --install cbc$ sudo xbps-install CoinMP-devel

See https://repology.org/project/coin-or-cbc/versions, https://repology.org/project/cbc/versions
If the system package is installed, ./configure will check if it can be used.
6.1. Details of external packages

115

Packages and Features, Release 10.4

6.1.35 ccache: A compiler cache
Description
ccache is a compiler cache. It speeds up recompilation by caching previous compilations and detecting when the same
compilation is being done again. Supported languages are C, C++, Objective-C and Objective-C++.
LicenseGNU General Public License version 3 or later
Upstream Contact• Author: Andrew Tridgell• Website: http://ccache.samba.org/
Typeoptional
Dependencies• zlib: Data compression library
Version Information
package-version.txt:
3.3.4

Equivalent System Packages$ conda install ccache$ brew install ccache$ sudo port install ccache$ sudo zypper install ccache$ sudo xbps-install ccache

See https://repology.org/project/ccache/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

116

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.36 cddlib: Double description method for polyhedral representation conversion
Description
The C-library cddlib is a C implementation of the Double Description Method of Motzkin et al. for generating all vertices(i.e. extreme points) and extreme rays of a general convex polyhedron in R^d given by a system of linear inequalities:
P = { x=(x1, …, xd)^T : b - A x >= 0 }where A is a given m x d real matrix, b is a given m-vector and 0 is the m-vector of all zeros.
The program can be used for the reverse operation (i.e. convex hull computation). This means that one can move backand forth between an inequality representation and a generator (i.e. vertex and ray) representation of a polyhedron with
cdd. Also, cdd can solve a linear programming problem, i.e. a problem of maximizing and minimizing a linear function
over P.
LicenseGPL v2
Upstream Contact
https://github.com/cddlib/cddlib
Typestandard
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
0.94m

Equivalent System Packages$ sudo pacman -S cddlib$ conda install cddlib$ apt-cyg install cddlib-devel cddlib-tools$ sudo apt-get install libcdd-dev libcdd-tools

6.1. Details of external packages

117

Packages and Features, Release 10.4

$ sudo yum install cddlib$ sudo pkg install math/cddlib$ sudo emerge sci-libs/cddlib$ brew install cddlib$ sudo port install cddlib$ nix-env --install cddlib$ sudo zypper install cddlib-tools pkgconfig\(cddlib\)$ sudo xbps-install cddlib-devel

See https://repology.org/project/cddlib/versions
If the system package is installed, ./configure will check if it can be used.

6.1.37 certifi: Python package for providing Mozilla’s CA Bundle
Description
Python package for providing Mozilla’s CA Bundle.
LicenseMPL-2.0
Upstream Contact
https://pypi.org/project/certifi/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages

118

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
2024.2.2

version_requirements.txt:
certifi >=2020.6.20

Equivalent System Packages$ sudo pacman -S python-certifi$ conda install certifi$ sudo apt-get install python3-certifi$ sudo yum install python-certifi$ sudo emerge dev-python/certifi$ sudo port install py-certifi$ sudo zypper install python3\$\{PYTHON_MINOR\}-certifi$ sudo xbps-install python3-certifi

See https://repology.org/project/python:certifi/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.38 cffi: Foreign Function Interface for Python calling C code
Description
development website: https://foss.heptapod.net/pypy/cffi
documentation website: https://cffi.readthedocs.io/en/latest/
PyPI page: https://pypi.org/project/cffi/

6.1. Details of external packages

119Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://foss.heptapod.net/pypy/cffi
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pycparser: Parser of the C language in Python
Version Information
package-version.txt:
1.15.1

version_requirements.txt:
cffi >=1.14.0

Equivalent System Packages$ conda install cffi
$ sudo emerge virtual/python-cffi$ sudo port install py-cffi$ sudo zypper install python3\$\{PYTHON_MINOR\}-cffi$ sudo xbps-install python3-cffi

See https://repology.org/project/python:cffi/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

120

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.39 chardet: Universal encoding detector for Python 3
Description
Universal encoding detector for Python 3
LicenseLGPL
Upstream Contact
https://pypi.org/project/chardet/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
5.2.0

version_requirements.txt:
chardetEquivalent System Packages(none known)

6.1.40 charset_normalizer: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.
Description
The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.

6.1. Details of external packages

121

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/charset-normalizer/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
3.3.2

version_requirements.txt:
charset-normalizer

Equivalent System Packages$ conda install charset-normalizer$ sudo emerge dev-python/charset_normalizer$ sudo xbps-install python3-charset-normalizer

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.41 clarabel: Clarabel Conic Interior Point Solver for Rust / Python
Description
Clarabel Conic Interior Point Solver for Rust / Python

122

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseApache-2.0
Upstream Contact
https://pypi.org/project/clarabel/Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
requirements.txt:
clarabelEquivalent System Packages(none known)

6.1.42 cliquer: Routines for clique searching
Description
Cliquer is a set of C routines for finding cliques in an arbitrary weighted graph. It uses an exact branch-and-boundalgorithm developed by Patric Östergård.
LicenseGNU General Public License v2

6.1. Details of external packages

123

Packages and Features, Release 10.4

Upstream Contact
Cliquer was mainly written by Sampo Niskanen, sampo.niskanenQiki.fi (Q=@).
https://users.aalto.fi/ pat/cliquer.html
Patches• minor config updates (v1.22)• autotoolized - see https://github.com/dimpase/autocliquer (v1.21)
Typestandard
Dependencies
Version Information
package-version.txt:
1.22

Equivalent System Packages$ sudo pacman -S cliquer$ conda install cliquer$ sudo apt-get install cliquer libcliquer-dev$ sudo yum install cliquer cliquer-devel$ sudo pkg install math/cliquer$ sudo emerge sci-mathematics/cliquer$ nix-env --install cliquer$ sudo zypper install cliquer cliquer-devel$ sudo xbps-install cliquer-devel

See https://repology.org/project/cliquer/versions
If the system package is installed, ./configure will check if it can be used.

124

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.43 cmake: A cross-platform build system generator
Description
The “cmake” executable is the CMake command-line interface. It may be used to configure projects in scripts. Project
configuration settings may be specified on the command line with the -D option. The -i option will cause cmake tointeractively prompt for such settings.
CMake is a cross-platform build system generator. Projects specify their build process with platform-independent CMake
listfiles included in each directory of a source tree with the name CMakeLists.txt. Users build a project by using CMaketo generate a build system for a native tool on their platform.
LicenseCMake is distributed under the OSI-approved BSD 3-clause License.
Upstream Contact• https://cmake.org/• cmake-developers@cmake.org
Typestandard
Dependencies• bzip2: High-quality data compressor• curl: Multiprotocol data transfer library and utility• liblzma: General-purpose data compression software• zlib: Data compression library
Version Information
package-version.txt:
3.27.86.1. Details of external packages

125

Packages and Features, Release 10.4

Equivalent System Packages$ apk add cmake$ sudo pacman -S cmake$ conda install cmake$ apt-cyg install cmake$ sudo apt-get install cmake$ sudo yum install cmake$ sudo pkg install devel/cmake$ sudo emerge dev-build/cmake$ brew install cmake

No package needed.
$ nix-env --install cmake$ sudo zypper install cmake$ sudo slackpkg install cmake$ sudo xbps-install cmakeSee https://repology.org/project/cmake/versions
If the system package is installed, ./configure will check if it can be used.

6.1.44 cocoalib: Computations in commutative algebra
Description
CoCoA is a program to compute with numbers and polynomials.
License• GPL v3

126

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact• Authors: http://cocoa.dima.unige.it/research/• Email: cocoa@dima.unige.it• Website: http://cocoa.dima.unige.it/• Releases: http://cocoa.dima.unige.it/cocoalib/Typeexperimental
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
0.99564

Equivalent System Packages$ sudo pkg install math/cocoalib

See https://repology.org/project/cocoalib/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.45 colorama: Cross-platform colored terminal text
Description
Cross-platform colored terminal text
License
Upstream Contact
https://pypi.org/project/colorama/

6.1. Details of external packages

127

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.4.6

version_requirements.txt:
colorama

Equivalent System Packages(none known)

6.1.46 combinatorial_designs: Data from the Handbook of Combinatorial Designs
Description
Data for Combinatorial Designs. Current content:• The table of MOLS (10 000 integers) from the Handbook of Combinatorial Designs, 2ed.
LicensePublic domain.
Upstream Contact
None

128

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies
Version Information
package-version.txt:
20140630.p0

Equivalent System Packages$ sudo pacman -S sage-data-combinatorial_designs$ conda install sagemath-db-combinatorial-designs

See https://repology.org/project/sagemath-combinatorial-designs/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.47 comm: Jupyter Python Comm implementation, for usage in ipykernel,
xeus-python etc.
Description
Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc.
LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/comm/Typestandard

6.1. Details of external packages

129

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
0.1.4

version_requirements.txt:
commEquivalent System Packages(none known)

6.1.48 configure: Files of the Sage distribution that are autogenerated in the bootstrapping phase
Description
This package contains a tar archive of auto-generated files. They are shipped with Sage in case you do not have a sufficiently
recent autotools version installed.
LicenseGPLv3+
Upstream Contact
Automatically generated by Sage, use trac and/or sage-devel for questions.
Special Update/Build Instructions
This tarball is automatically generated by Sage whenever you run the $SAGE_ROOT/bootstrap -s or the$SAGE_ROOT/src/bin/sage-update-version script.

130

Chapter 6. All External Packages

Packages and Features, Release 10.4

Type
base
Dependencies
Version Information
package-version.txt:
3c279ec5712e0fa35c5733e03e010970727d7189

Equivalent System Packages(none known)

6.1.49 contourpy: Python library for calculating contours of 2D quadrilateral grids
Description
Python library for calculating contours of 2D quadrilateral grids
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/contourpy/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• meson_python: Meson Python build backend (PEP 517)
• numpy: Package for scientific computing with Python• pybind11: Create Python bindings to C++ code

6.1. Details of external packages

131

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.1.1

version_requirements.txt:
contourpy

Equivalent System Packages$ sudo emerge dev-python/contourpy

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.50 conway_polynomials: Python interface to Frank Lübeck’s Conway polynomial database
Description
This python module evolved from the old SageMath conway_polynomials package once hosted at,
http://files.sagemath.org/spkg/upstream/conway_polynomials/
It’s still maintained by Sage developers, but having a pip-installable interface to the data will make it easier to install
SageMath via pip or another package manager.
LicenseGPL version 3 or later
Upstream Contact
https://github.com/sagemath/conway-polynomialsTypestandard

132

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
0.10

version_requirements.txt:
conway-polynomials >=0.8

Equivalent System Packages$ sudo pacman -S sage-data-conway_polynomials$ conda install conway-polynomials$ sudo emerge dev-python/conway-polynomials

See https://repology.org/project/sagemath-conway-polynomials/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.51 coxeter3: Library for Coxeter groups, Bruhat ordering, Kazhdan-Lusztig
polynomials
Description
This package wraps Fokko Ducloux’s Coxeter 3 C++ library
Features:• General Coxeter groups, implemented through the combinatorics of reduced words;• Reduced expression and normal form computations;• Bruhat ordering;• Ordinary Kazhdan-Lusztig polynomials;• Kazhdan-Lusztig polynomials with unequal parameters;• Inverse Kazhdan-Lusztig polynomials;• Cells and W-graphs;
http://math.univ-lyon1.fr/ ducloux/coxeter/coxeter3/english/coxeter3_e.html
This is a patched version done by Mike Hansen 2009-2013 and some fixes by Nicolas M. Thiéry and Jean-Pierre Flori.

6.1. Details of external packages

133

Packages and Features, Release 10.4

LicenseGPL
Upstream Contact
github: https://github.com/tscrim/coxeter
Alas, Fokko Ducloux passed away in 2006.
http://math.univ-lyon1.fr/ ducloux/du_Cloux.html
Special Update/Build Instructions
The source package was created by runningcommit=8ac9c71723c8ca57a836d6381aed125261e44e9e
git clone https://github.com/tscrim/coxeter.git
cd coxeter
git archive $commit | bzip2 --best >coxeter-$commit.tar.bz2

Typeoptional
Dependencies
Version Information
package-version.txt:
8ac9c71723c8ca57a836d6381aed125261e44e9e.p0

Equivalent System Packages$ sudo pacman -S coxeter$ sudo yum install coxeter coxeter-devel coxeter-tools$ sudo zypper install coxeter

See https://repology.org/project/coxeter/versions
If the system package is installed, ./configure will check if it can be used.

134

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.52 cppy: C++ headers for C extension development
Description
From: https://pypi.org/project/cppy/
A small C++ header library which makes it easier to write Python extension modules. The primary feature is a PyObject
smart pointer which automatically handles reference counting and provides convenience methods for performing common
object operations.
LicenseModified BSD 3-Clause-License
Upstream Contact
https://github.com/nucleic/cppyTypestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.2.1

version_requirements.txt:
cppy >=1.2.0

Equivalent System Packages$ conda install cppy
$ sudo emerge dev-python/cppy

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

135

Packages and Features, Release 10.4

6.1.53 csdp: Solver for semidefinite programs
Description
This is a fast SDP solver written in C, with a callable library namely, an autotool’ed version of CSDP, by Brian Borchers,
see https://projects.coin-or.org/Csdp
LicenseCommon Public License Version 1.0
Upstream Contact
Dmitrii Pasechnik <dimpase+sage@gmail.com>
Special Update/Build Instructions
csdp is an autotool’ed version of CSDP, see https://projects.coin-or.org/Csdp, developed in its own repository at https://github.com/dimpase/csdp.
To update to a new version, you need to bump the version number in configure.ac and rerun autotools (autoreconf -fiv).
Any changes should be merged to the upstream repo.
The build is done with NOSHORTS variable defined; this makes it compatible with packages, where NOSHORTS must
be defined, e.g. https://github.com/dimpase/pycsdp; also the Sage Cython interface needs NOSHORTS defined.
Detailed steps to build the spkg are as follows. You need
• git
• autotools and libtool (the full autohell suite, version at least 2.67)
With these ready:• ./spkg-src• copy the resulting csdp-<version>.tar.gz to SAGE_ROOT/upstream, or somewhere else appropriate
Typeoptional
Dependencies• $(BLAS)

136

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
6.2.p1

Equivalent System Packages$ sudo pacman -S coin-or-csdp

See https://repology.org/project/coin-or-csdp/versions, https://repology.org/project/csdp/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.54 cunningham_tables: List of the prime numbers occuring in the Cunningham
table
The script read_cunningham_prime_factors.py was used to generate the data set from the file http://cage.ugent.be/jdemeyer/cunningham/main.gz We include a local copy, main.gz (see comments in the file for details)
Type
optional
Dependencies
Version Information
package-version.txt:
1.0

Equivalent System Packages
See https://repology.org/project/cunningham-tables/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

137

Packages and Features, Release 10.4

6.1.55 curl: Multiprotocol data transfer library and utility
Description
Multiprotocols data transfer library (and utility).
License“MIT style license” : see file “COPYING” at the root of the source tarball, explanations at https://curl.haxx.se/docs/
copyright.html.
Upstream Contact
According to the file README at the root of the tarball, contact is done by mailing https://curl.haxx.se/mail/Typestandard
Dependencies• openssl: Implementation of the SSL and TLS protocols
Version Information
package-version.txt:
7.84.0Equivalent System Packages$ apk add curl
$ conda install curl
$ apt-cyg install libcurl-devel curl
$ sudo apt-get install curl libcurl4-openssl-dev$ sudo yum install libcurl-devel curl
$ sudo pkg install ftp/curl$ brew install curl

No package needed.

138

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo zypper install curl pkgconfig\(libcurl\)$ sudo slackpkg install curl cyrus-sasl openldap-client libssh2$ sudo xbps-install curl libcurl-devel

See https://repology.org/project/curl/versions
If the system package is installed, ./configure will check if it can be used.

6.1.56 cvxopt: Python software for convex optimization
Description
CVXOPT is a free software package for convex optimization based on the Python programming language. It can be usedwith the interactive Python interpreter, on the command line by executing Python scripts, or integrated in other software
via Python extension modules. Its main purpose is to make the development of software for convex optimization applications straightforward by building on Python’s extensive standard library and on the strengths of Python as a high-level
programming language.
Upstream Contact•

J. Dahl <dahl.joachim@gmail.com>•

L. Vandenberghe <vandenbe@ee.ucla.edu>

https://cvxopt.org/
LicenseGPLv3 or later. Includes parts under GPLv2, GNU Lesser General Public License, v2.1. See src/LICENSE for moredetails. (Sage-compatible)Typestandard
Dependencies• $(BLAS)• $(PYTHON)• $(PYTHON_TOOLCHAIN)• glpk: GNU Linear Programming Kit• gsl: The GNU Scientific Library• numpy: Package for scientific computing with Python• pkgconfig: Python interface to pkg-config• suitesparse: A suite of sparse matrix software
6.1. Details of external packages

139

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.3.2

version_requirements.txt:
cvxopt >=1.2.5

Equivalent System Packages$ sudo pacman -S python-cvxopt$ conda install cvxopt$ sudo apt-get install python3-cvxopt$ sudo yum install python-cvxopt$ sudo pkg install math/py-cvxopt$ sudo emerge dev-python/cvxopt$ sudo port install py-cvxopt$ sudo zypper install python3\$\{PYTHON_MINOR\}-cvxopt

See https://repology.org/project/python:cvxopt/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.57 cvxpy: Domain-specific language for modeling convex optimization problems in Python
Description
Domain-specific language for modeling convex optimization problems in Python
LicenseApache License, Version 2.0

140

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/cvxpy/
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• clarabel: Clarabel Conic Interior Point Solver for Rust / Python• cvxopt: Python software for convex optimization• ecos_python: Embedded Cone Solver (Python wrapper)• glpk: GNU Linear Programming Kit• numpy: Package for scientific computing with Python• osqp_python: The Operator Splitting QP Solver (Python wrapper)• scipy: Scientific tools for Python• scs: Splitting conic solver
Version Information
package-version.txt:
1.4.1

version_requirements.txt:
cvxpy

Equivalent System Packages$ conda install cvxpy

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

141

Packages and Features, Release 10.4

6.1.58 cycler: Composable cycles
Description
Cycler is a small break-off of matplotlib to deal with “composable cycles”. It is a required dependency of matplotlib 1.5.0.
License
BSD
Upstream Contact
cycler is developed on github: https://github.com/matplotlib/cycler
A more informative webpage about cycler, its motivation and usage is at http://tacaswell.github.io/cycler/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.11.0version_requirements.txt:
cycler >=0.10.0

Equivalent System Packages$ sudo pacman -S python-cycler$ conda install cycler$ sudo apt-get install python3-cycler$ sudo yum install python-cycler$ sudo pkg install devel/py-cycler

142

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo emerge dev-python/cycler$ sudo port install py-cycler$ sudo zypper install python3\$\{PYTHON_MINOR\}-Cycler$ sudo xbps-install python3-cycler

See https://repology.org/project/cycler/versions, https://repology.org/project/python:cycler/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.59 cylp: Python interface for CLP, CBC, and CGL
Description
Python interface for CLP, CBC, and CGL
LicenseEclipse Public License (EPL) version 2 (without a Secondary Licenses Notice).
Note: This license is incompatible with the GPL according to https://www.gnu.org/licenses/license-list.html#EPL2; seealso the discussion in Issue #26511.
Upstream Contact
https://pypi.org/project/cylp/
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cbc: COIN-OR branch and cut solver for mixed-integer programs• cython: C-Extensions for Python, an optimizing static compiler• numpy: Package for scientific computing with Python• scipy: Scientific tools for Python

6.1. Details of external packages

143

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.92.2version_requirements.txt:
cylp

Equivalent System Packages(none known)

6.1.60 cypari2: Python interface to the number theory library libpari
Description
A Python interface to the number theory library libpari.
LicenseGPL version 2 or later
Upstream Contact
https://github.com/defeo/cypari2Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• pari: Computer algebra system for fast computations in number theory

144

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
2.1.5

src/pyproject.toml:
cypari2 >=2.1.1

version_requirements.txt:
cypari2 >=2.1.1

Equivalent System Packages$ conda install cypari2$ sudo emerge dev-python/cypari2

See https://repology.org/project/python:cypari2/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.61 cysignals: Interrupt and signal handling for Cython
Description
Interrupt and signal handling for Cython
LicenseLGPL version 3 or later
Upstream Contact
https://github.com/sagemath/cysignals
Typestandard

6.1. Details of external packages

145

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• pari: Computer algebra system for fast computations in number theory
Version Information
package-version.txt:
1.11.4

src/pyproject.toml:
cysignals >=1.10.2

version_requirements.txt:
cysignals >=1.10.2

Equivalent System Packages$ conda install cysignals$ sudo emerge dev-python/cysignals

See https://repology.org/project/cysignals/versions, https://repology.org/project/python:cysignals/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.62 cython: C-Extensions for Python, an optimizing static compiler
Description
Cython is a language that makes writing C extensions for the Python language as easy as Python itself. Cython is basedon the well-known Pyrex, but supports more cutting edge functionality and optimizations.
The Cython language is very close to the Python language, but Cython additio- nally supports calling C functions anddeclaring C types on variables and class attributes. This allows the compiler to generate very efficient C code from
Cython code.
This makes Cython the ideal language for wrapping for external C libraries, and for fast C modules that speed up the
execution of Python code.

146

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseApache License, Version 2.0
Upstream Contact• http://www.cython.org/• cython-devel@python.org
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pythran: Ahead of Time compiler for numeric kernels
Version Information
package-version.txt:
3.0.10src/pyproject.toml:
cython >=3.0, != 3.0.3, <4.0

version_requirements.txt:
cython >=3.0, != 3.0.3, <4.0

Equivalent System Packages$ sudo pacman -S cython$ conda install cython\>=3.0\,\!=3.0.3\,\<4.0$ sudo apt-get install cython3$ sudo yum install Cython$ sudo pkg install lang/cython$ sudo emerge dev-python/cython

6.1. Details of external packages

147

Packages and Features, Release 10.4

$ brew install cython$ sudo port install py-cython$ sudo zypper install python3\$\{PYTHON_MINOR\}-Cython$ sudo xbps-install python3-Cython

See https://repology.org/project/python:cython/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.63 d3js: JavaScript library for manipulating documents based on data
Description
D3.js is a JavaScript library for manipulating documents based on data. The file d3.min.js will be placed into the${SAGE_SHARE}/d3js/ directory.
LicenseBSD 3-Clause License
Upstream Contact• Author: Mike Bostock (http://bost.ocks.org/mike/)• Home page: http://d3js.org/
Special Update/Build Instructions
Two kind of archives can be downloaded from d3.js website: one with all source code and tests that weights 2,9M (bothin zip and tar.gz formats) and one with the final javascript scripts which weights 121K (zip format only). Since testing
requires node.js that is not shipped with Sage, we currenlty ship the final js only. Hence we have to transform it from zip
to tar.gz format. Running sage-src should do all the repackaging job.
Typeoptional

148

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies
Version Information
package-version.txt:
3.4.8

Equivalent System Packages
See https://repology.org/project/node:d3/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.64 database_cremona_ellcurve: Database of elliptic curves
Description
John Cremona’s database of elliptic curves
See https://github.com/JohnCremona/ecdata
This is an optional package, not included by default.
LicensePublic Domain
Upstream Contact• Author: John Cremona• Email: john.cremona@gmail.com• Website: http://homepages.warwick.ac.uk/staff/J.E.Cremona/
Update Instructions
Get an up-to-date copy of the git repository ecdata from https://github.com/JohnCremona/ecdata.
If the cremona database has already been installed, remove SAGE_DATA/cremona/cremona.db. Then run
The build script expects to find the files in subfolders allcurves, allgens, degphi and allbsd of the ecdata folder. It extracts
them and builds the new cremona.db file from the contents.
Finally, copy SAGE_DATA/cremona/cremona.db to the src directory of the spkg.

6.1. Details of external packages

149

Packages and Features, Release 10.4

Type
optional
Dependencies
Version Information
package-version.txt:
20190911

Equivalent System Packages
See
https://repology.org/project/sage-data-cremona-ellcurve/versions,sagemath-database-cremona-elliptic-curves/versions

https://repology.org/project/

However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.65 database_cubic_hecke: Ivan Marin’s representations of the cubic Hecke algebra
Description
Ivan Marin’s representations of the cubic Hecke algebra on 4 strands as Python dictionaries
LicenseGPL
Upstream Contact
https://pypi.org/project/database-cubic-hecke/Typeoptional

150

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2022.4.4

version_requirements.txt:
database-cubic-hecke

Equivalent System Packages(none known)

6.1.66 database_jones_numfield: Table of number fields
Description
This is a table of number fields with bounded ramification and degree at most 6.
LicenseGPLv2+
Upstream Contact
sage-devel@googlegroups.com
Special Update/Build Instructions
Created by taking the original old-style spkg and removing crud from it.
Typeoptional

6.1. Details of external packages

151

Packages and Features, Release 10.4

Dependencies
Version Information
package-version.txt:
4

Equivalent System Packages
See https://repology.org/project/sage-data-jones-numfield/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.67 database_knotinfo: Content of the KnotInfo and LinkInfo databases as lists
of dictionaries
Description
Content of the KnotInfo and LinkInfo databases as lists of dictionaries
LicenseGPL
Upstream Contact
https://pypi.org/project/database-knotinfo/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)

152

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
2024.5.1

version_requirements.txt:
database-knotinfo

Equivalent System Packages(none known)

6.1.68 database_kohel: Database of modular and Hilbert polynomials
Description
Database of modular and Hilbert polynomials.
Upstream Contact• David Kohel <David.Kohel@univ-amu.fr>
Typeoptional
Dependencies
Version Information
package-version.txt:
20160724

Equivalent System Packages
See https://repology.org/project/sage-data-kohel/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

153

Packages and Features, Release 10.4

6.1.69 database_mutation_class: Database of exceptional mutation classes ofquivers
Description
Contains a database of all exceptional mutation classes of quivers.
Every file in the database is of the form mutation_classes_n.dig6 for some n and• contains a cPickle.dump of a dictionary where• the keys are tuples representing irreducible exceptional quiver mutation types of rank n, and• the values are all quivers in the given mutation class stored in canonical form as (dig6,edges) where• dig6 is the dig6 data of the given DiGraph, and• edges are the non-simply-laced edges thereof.
• is obtained by running the function
sage.combinat.cluster_algebra_quiver.quiver_mutation_type.
_save_data_dig6(n, types= Exceptional , verbose=False)
SPKG Maintainers•

C. Stump <christian.stump@gmail.com>

Typeoptional
Dependencies
Version Information
package-version.txt:
1.0

Equivalent System Packages
See https://repology.org/project/database-mutation-class/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

154

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.70 database_odlyzko_zeta: Table of zeros of the Riemann zeta function
Description
Table of zeros of the Riemann zeta function by Andrew Odlyzko.
This package contains the file ‘zeros6’ with the first 2,001,052 zeros of the Riemann zeta function, accurate to within
4*10^(-9).
Type
optional
Dependencies• $(SAGERUNTIME)
Version Information
package-version.txt:
20061209

Equivalent System Packages
See https://repology.org/project/sage-data-odlyzko-zeta/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.71 database_stein_watkins: Database of elliptic curves (full version)
Description
The Stein-Watkins database of elliptic curves (full version)
See http://modular.math.washington.edu/papers/stein-watkins/
This is an optional (huge) package, not included by default.
LicensePublic Domain

6.1. Details of external packages

155

Packages and Features, Release 10.4

Type
optional
Dependencies
Version Information
package-version.txt:
20110713

Equivalent System Packages
See https://repology.org/project/database-stein-watkins/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.72 database_stein_watkins_mini: Database of elliptic curves (small version)
Description
The Stein-Watkins database of elliptic curves (small version)
See http://modular.math.washington.edu/papers/stein-watkins/
This is an optional package, not included by default.
LicensePublic Domain
Typeoptional
Dependencies
Version Information
package-version.txt:
20070827

156

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages
See https://repology.org/project/database-stein-watkins-mini/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.73 database_symbolic_data: Database from the SymbolicData project
Description
The SymbolicData project is set out• to develop concepts and tools for profiling, testing and benchmarking Computer Algebra Software (CAS) and• to collect and interlink relevant data and activities from different Computer Algebra Communities.
SymbolicData is an• inter-community project that has its roots in the activities of different Computer Algebra Communities and• aims at interlinking these activities using modern Semantic Web concepts.
Tools and data are designed to be used both• on a local site for special testing and profiling purposes• and to manage a central repository at www.symbolicdata.org.
LicenseGNU General Public License
Upstream Contact• Andreas Nareike <nareike@informatik.uni-leipzig.de>Typeoptional
Dependencies
Version Information
package-version.txt:
200702066.1. Details of external packages

157

Packages and Features, Release 10.4

Equivalent System Packages
See https://repology.org/project/database-symbolic-data/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.74 dateutil: Extensions to the standard Python module datetime
Description
The dateutil module provides powerful extensions to the standard datetime module.
License
Simplified BSD License
Upstream Contact
Author: Gustavo Niemeyer <gustavo@niemeyer.net>
Home page: http://labix.org/python-dateutil
https://pypi.org/project/python-dateutil/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages• six: Python 2 and 3 compatibility utilities
Version Information
package-version.txt:
2.9.0.post0

version_requirements.txt:
python-dateutil >=2.8.1

158

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-dateutil$ conda install python-dateutil$ sudo apt-get install python3-dateutil$ sudo yum install python-dateutil$ sudo pkg install devel/py-dateutil$ sudo emerge dev-python/python-dateutil$ sudo port install py-dateutil$ sudo zypper install python3\$\{PYTHON_MINOR\}-python-dateutil$ sudo xbps-install python3-dateutil

See https://repology.org/project/python:python-dateutil/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.75 debugpy: Implementation of the Debug Adapter Protocol for Python
Description
Implementation of the Debug Adapter Protocol for Python
LicenseMIT
Upstream Contact
https://pypi.org/project/debugpy/
Typestandard

6.1. Details of external packages

159

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.8.1

version_requirements.txt:
debugpy

Equivalent System Packages$ conda install debugpy

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.76 decorator: Python library providing decorators
Description
Better living through Python with decorators
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
5.1.1

version_requirements.txt:
decorator >=4.4.0

160

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-decorator$ conda install decorator$ sudo apt-get install python3-decorator$ sudo yum install python-decorator$ sudo emerge dev-python/decorator$ sudo port install py-decorator$ sudo zypper install python3\$\{PYTHON_MINOR\}-decorator$ sudo xbps-install python3-decorator

See https://repology.org/project/python:decorator/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.77 deformation: Count points on hypersurfaces using the deformation method
Description
Deformation is a C library for counting points on hypersurfaces using the deformation method, developed by SebastianPancratz.
LicenseGLPv3
Upstream Contact• Sebastian Pancratz: sebastian.pancratz@gmail.com, sage-devel@googlegroups.com• We use the fork at https://github.com/sagemath/deformation the fork uses GMP instead of MPIR, and Flint 2.7+.
Typeexperimental

6.1. Details of external packages

161

Packages and Features, Release 10.4

Dependencies• $(MP_LIBRARY)• flint: Fast Library for Number Theory• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:20210503

Equivalent System Packages
See https://repology.org/project/deformation/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.78 defusedxml: Addresses vulnerabilities of XML parsers and XML libraries
Description
defusedxml addresses vulnerabilities of XML parsers and XML libraries.
It became a dependency of nbconvert starting with nbconvert 5.4.
LicensePython Software Foundation License (PSFL)
Upstream Contact
https://pypi.org/project/defusedxml/
Special Update/Build Instructions
None.

162

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.7.1

version_requirements.txt:
defusedxml >=0.6.0

Equivalent System Packages$ conda install defusedxml$ sudo emerge dev-python/defusedxml$ sudo port install py-defusedxml$ sudo xbps-install python3-defusedxml

See https://repology.org/project/python:defusedxml/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.79 distlib: Distribution utilities
Description
Distribution utilities

6.1. Details of external packages

163

Packages and Features, Release 10.4

LicensePSF-2.0
Upstream Contact
https://pypi.org/project/distlib/
Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
0.3.8

version_requirements.txt:
distlib

Equivalent System Packages$ conda install distlib$ sudo xbps-install python3-distlib

If the system package is installed, ./configure will check if it can be used.

6.1.80 docutils: Processing plaintext documentation into useful formats, such as
HTML or LaTeX
Description
Docutils is a modular system for processing documentation into useful formats, such as HTML, XML, and LaTeX. For
input Docutils supports reStructuredText, an easy-to-read, what-you-see-is-what-you-get plaintext markup syntax.

164

Chapter 6. All External Packages

Packages and Features, Release 10.4

Licensepublic domain, Python, 2-Clause BSD, GPL 3 (see COPYING.txt)
Upstream Contact
https://pypi.org/project/docutils/
Home Page: http://docutils.sourceforge.net/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.20.1

version_requirements.txt:
docutils >=0.14

Equivalent System Packages$ conda install docutils$ sudo emerge dev-python/docutils$ brew install docutils$ sudo port install py-docutils$ sudo zypper install python3\$\{PYTHON_MINOR\}-docutils$ sudo xbps-install python3-docutils

See https://repology.org/project/docutils/versions, https://repology.org/project/python:docutils/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

165

Packages and Features, Release 10.4

6.1.81 dot2tex: Create PGF/TikZ commands from Graphviz output
Description
dot2tex is a Python module, whose purpose is to give graphs generated by Graphviz a more LaTeX friendly look and feel.
This is accomplished by converting xdot output from Graphviz to a series of PSTricks or PGF/TikZ commands.
See https://github.com/kjellmf/dot2tex/
License• MIT
Upstream Contact• Kjell Magne Fauske, km@fauskes.net
Dependencies
graphviz (www.graphviz.org) should be installed and in the path (for example via the graphviz spkg).
preview, a LaTeX package for extracting parts of a document.
Self-tests dependencies:• graphviz• texlive-latex-base• texlive-pictures• texlive-pstricks
Patches• remove_test_semicolon.patch:
Remove the failing semicolon test for the open dot2tex issue #5 - https://github.com/kjellmf/dot2tex/issues/5
Special Update/Build Instructions
Make sure corresponding optional doctests still pass:
sage -t –long –optional=dot2tex,graphviz,sage src/

166

Chapter 6. All External Packages

Packages and Features, Release 10.4

Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pyparsing: A Python parsing module
Version Information
package-version.txt:
2.11.3.p0

version_requirements.txt:
dot2tex >=2.11.3

Equivalent System Packages$ sudo pacman -S dot2tex$ conda install dot2tex$ sudo port install dot2tex

See https://repology.org/project/dot2tex/versions, https://repology.org/project/python:dot2tex/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.82 dsdp: Semidefinite programming solver
Description
Implementation of an interior-point method for semidefinite programming. It provides primal and dual solutions, exploits
low-rank structure and sparsity in the data, and has relatively low memory requirements for an interior-point method. It
allows feasible and infeasible starting points and provides approximate certificates of infeasibility when no feasible solution
exists. The dual-scaling algorithm implemented in this package has a convergence proof and worst-case polynomial
complexity under mild assumptions on the data.

6.1. Details of external packages

167

Packages and Features, Release 10.4

LicensePermissive open source license https://www.mcs.anl.gov/hs/software/DSDP/Copyright.txt
Upstream Contact
https://www.mcs.anl.gov/hs/software/DSDP/
Type
optional
Dependencies• $(BLAS)• cmake: A cross-platform build system generator
Version Information
package-version.txt:
5.8

Equivalent System Packages$ sudo pacman -S dsdp
$ conda install dsdp
$ sudo apt-get install libdsdp-dev$ sudo yum install DSDP-devel$ sudo pkg install math/dsdp$ sudo emerge sci-libs/dsdp$ sudo port install DSDP

See https://repology.org/project/dsdp/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

168

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.83 e_antic: Real embedded number fields
Description
e-antic is a C library for exact computations with real embedded number field maintained by Vincent Delecroix.
Website: https://github.com/videlec/e-antic
Licensee-antic is licensed GPL v3.
Upstream Contact• https://github.com/videlec/e-anticTypeoptional
Dependencies• $(MP_LIBRARY)• boost_cropped: Portable C++ libraries (subset needed for Sage)• flint: Fast Library for Number Theory
Version Information
package-version.txt:
2.0.2

Equivalent System Packages$ sudo pacman -S e-antic$ conda install libeantic$ sudo apt-get install libeantic-dev$ sudo yum install e-antic-devel$ sudo pkg install math/e-antic$ sudo zypper install e-antic-devel

6.1. Details of external packages

169

Packages and Features, Release 10.4

See https://repology.org/project/e-antic/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.84 ecl: An implementation of the Common Lisp language
Description
ECL is an implementation of the Common Lisp language as defined by the ANSI X3J13 specification. The most relevant
features:• A bytecodes compiler and interpreter.
• Compiles Lisp also with any C/C++ compiler.
• It can build standalone executables and libraries.
• ASDF, Sockets, Gray streams, MOP, and other useful components.
• Extremely portable.
• A reasonable license.
ECL supports the operating systems Linux, FreeBSD, NetBSD, OpenBSD, Solaris and Windows, running on top of theIntel, Sparc, Alpha and PowerPC processors. Porting to other architectures should be rather easy.
Website: https://common-lisp.net/project/ecl/
License• LGPL V2+ or compatible - for details see
https://common-lisp.net/project/ecl/static/manual/Copyrights.html#Copyright-of-ECL
Upstream Contact• the ECL mailing list - see https://mailman.common-lisp.net/listinfo/ecl-devel
Special Update/Build Instructions• Note: for the time being, ECL is built single threaded library as it seems to interact badly with the pexpect interface
and Sage’s signal handling when built multithreaded.
• Do NOT quote SAGE_LOCAL when setting CPPFLAGS and/or LDFLAGS, in spkg-install as this caused thebuild to break. See Issue #10187#comment:117• TODO: Add the ECL test suite, and an spkg-check file to run it.
• TODO: Make ECL use Sage’s Boehm GC on MacOS X as well (but perhaps put some changes from ECL’s into
Sage’s Boehm GC), then remove the src/src/gc directory, too.

170

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(MP_LIBRARY)• gc: The Boehm-Demers-Weiser conservative garbage collector• info: stand-alone Info documentation reader• libffi: A portable foreign-function interface library• readline: Command line editing library
Version Information
package-version.txt:
24.5.10Equivalent System Packages$ apk add ecl-dev$ sudo pacman -S ecl$ conda install ecl$ sudo apt-get install ecl$ sudo yum install ecl$ sudo pkg install lang/ecl$ sudo emerge dev-lisp/ecl$ brew install ecl$ sudo port install ecl$ nix-env --install ecl$ sudo xbps-install ecl

See https://repology.org/project/ecl/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

171

Packages and Features, Release 10.4

6.1.85 eclib: Enumerating and computing with elliptic curves defined over the rational numbers
Description
John Cremona’s programs for enumerating and computing with elliptic curves defined over the rational numbers.
mwrank is a program written in C++ for computing Mordell-Weil groups of elliptic curves over Q via 2-descent. It isavailable as source code in the eclib package, which may be distributed under the GNU General Public License, version
2, or any later version.
mwrank is now only distributed as part of eclib. eclib is also included in Sage, and for most potential users the easiest
way to run mwrank is to install Sage (which also of course gives you much much more). I no longer provide a sourcecode distribution of mwrank by itself: use eclib instead.
Licenseeclib is licensed GPL v2+.
Upstream Contact• Author: John Cremona• Email: john.cremona@gmail.com• Website: http://homepages.warwick.ac.uk/staff/J.E.Cremona/mwrank/index.html• Repository: https://github.com/JohnCremona/eclib
Typestandard
Dependencies• flint: Fast Library for Number Theory• ntl: A library for doing number theory• pari: Computer algebra system for fast computations in number theory
Version Information
package-version.txt:20231212

172

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S eclib$ conda install eclib$ sudo apt-get install libec-dev eclib-tools$ sudo yum install eclib eclib-devel$ sudo pkg install math/eclib$ sudo emerge sci-mathematics/eclib\[flint\]$ nix-env --install eclib$ sudo xbps-install eclib-devel

See https://repology.org/project/eclib/versions
If the system package is installed, ./configure will check if it can be used.

6.1.86 ecm: Elliptic curve method for integer factorization
Description
GMP-ECM - Elliptic Curve Method for Integer Factorization
Sources can be obtained from https://gitlab.inria.fr/zimmerma/ecm
LicenseLGPL V3+
Upstream Contact• ecm-discuss@inria.fr
Special Update/Build Instructions• GMP-ECM comes with a self-tuning feature; we could support that as an option ($SAGE_TUNE_*=yes) in the
future.
• ECM currently does not (by itself) use the CC and CFLAGS settings from ‘gmp.h’ since we pass (other) options in
CFLAGS, and CC is set by Sage and might got set by the user. We now at least partially fix that such that “optimized”
code generation options (‘-mcpu=…’, ‘-mtune=…’) are used by gcc. Of course a user can also manually enable themby setting the “global” CFLAGS to e.g. ‘-march=native’ on x86[_64] systems, or ‘-mcpu=…’ and ‘-mtune=…’ onother architectures where “native” isn’t supported. Note that this doesn’t affect the packages’ selection of processorspecific optimized [assembly] code. ‘spkg-install’ already reads the settings from Sage’s and also a system-wide
GMP now, but doesn’t (yet) use all of them. If SAGE_FAT_BINARY=”yes”, we should avoid too specific settingsof “-mcpu=…”, and perhaps pass a more generic “–host=…” to ‘configure’.
6.1. Details of external packages

173

Packages and Features, Release 10.4

• We currently work around a linker bug on MacOS X 10.5 PPC (with GCC 4.2.1) which breaks ‘configure’ if debug
symbols are enabled. This *might* get fixed in later upstream releases.
• We could save some space by removing the src/build.vc10/ directory which isn’t used in Sage. (It getsprobably more worth in case also directories / files for later versions of Microsoft Visual C get added.)Typestandard
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
7.0.5

Equivalent System Packages$ conda install ecm$ sudo apt-get install gmp-ecm libecm-dev$ sudo yum install gmp-ecm gmp-ecm-devel$ sudo pkg install math/gmp-ecm$ sudo port install gmp-ecm$ nix-env --install ecm$ sudo xbps-install ecm-devel

See https://repology.org/project/gmp-ecm/versions
If the system package is installed, ./configure will check if it can be used.

6.1.87 ecos_python: Embedded Cone Solver (Python wrapper)
Description
This is the Python package for ECOS: Embedded Cone Solver.
It vendors ECOS.

174

Chapter 6. All External Packages

Packages and Features, Release 10.4

License
GPLv3
Upstream Contact
https://pypi.org/project/ecos/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• numpy: Package for scientific computing with Python• scipy: Scientific tools for Python
Version Information
package-version.txt:
2.0.12version_requirements.txt:
ecos

Equivalent System Packages$ conda install ecos

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.88 editables: Editable installations
Description
Editable installations

6.1. Details of external packages

175Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/editables/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
0.5

version_requirements.txt:
editables

Equivalent System Packages$ conda install editables$ sudo emerge dev-python/editables

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.89 elliptic_curves: Databases of elliptic curves
Description
Includes two databases:• A small subset of John Cremona’s database of elliptic curves up to conductor 10000.
• William Stein’s database of interesting curves

176

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
cremona_mini• Author: John Cremona• Email: john.cremona@gmail.com• Website: http://johncremona.github.io/ecdata/
ellcurves• Author: William Stein• Email: wstein@gmail.com
Typestandard
Dependencies• $(PYTHON)
Version Information
package-version.txt:
0.8.1

Equivalent System Packages$ conda install sagemath-db-elliptic-curves

See https://repology.org/project/sagemath-elliptic-curves/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.90 entrypoints: Discover and load entry points from installed Python packages
Description
Discover and load entry points from installed packages.

6.1. Details of external packages

177

Packages and Features, Release 10.4

Upstream Contact
https://github.com/takluyver/entrypoints
Special Update/Build Instructions
Upstream does not provide a source tarball, so the tarball was taken from github and renamed.
The source tarball does not contain setup.py, so we put the setup commands in spkg-install.
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• flit_core: Distribution-building parts of Flit. See flit package for more information
Version Information
package-version.txt:
0.4

version_requirements.txt:
entrypoints >=0.3

Equivalent System Packages$ conda install entrypoints$ sudo emerge dev-python/entrypoints$ sudo port install py-entrypoints$ sudo xbps-install python3-entrypoints

See https://repology.org/project/entrypoints/versions, https://repology.org/project/python:entrypoints/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

178

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.91 exceptiongroup: Backport of PEP 654 (exception groups)
Description
Backport of PEP 654 (exception groups)
License
Upstream Contact
https://pypi.org/project/exceptiongroup/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.2.1

version_requirements.txt:
exceptiongroup; python_version< 3.11

Equivalent System Packages(none known)

6.1.92 executing: Get the currently executing AST node of a frame, and other information
Description
Get the currently executing AST node of a frame, and other information

6.1. Details of external packages

179

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/executing/Type
standard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
2.0.1

version_requirements.txt:
executing

Equivalent System Packages$ conda install executing$ sudo emerge dev-python/executing

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.93 fastjsonschema: Fastest Python implementation of JSON schema
Description
Fastest Python implementation of JSON schema

180

Chapter 6. All External Packages

Packages and Features, Release 10.4

License
BSD
Upstream Contact
https://pypi.org/project/fastjsonschema/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.18.0version_requirements.txt:
fastjsonschema

Equivalent System Packages$ apk add py3-fastjsonschema$ sudo pacman -S python-fastjsonschema$ conda install python-fastjsonschema$ sudo apt-get install python3-fastjsonschema$ sudo yum install python-fastjsonschema$ sudo pkg install devel/py-fastjsonschema$ sudo emerge dev-python/fastjsonschema$ sudo port install py-fastjsonschema$ sudo zypper install python-fastjsonschema

6.1. Details of external packages

181

Packages and Features, Release 10.4

$ sudo xbps-install python3-fastjsonschema

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.94 fflas_ffpack: Dense linear algebra over word-size finite fields
Description
FFLAS-FFPACK is a LGPL-2.1+ source code library for dense linear algebra over word-size finite fields.
http://linbox-team.github.io/fflas-ffpack/
LicenseLGPL V2.1 or later
Upstream Contact• <ffpack-devel@googlegroups.com>
Typestandard
Dependencies• $(BLAS)• $(MP_LIBRARY)• givaro: C++ library for arithmetic and algebraic computations• gsl: The GNU Scientific Library• pkgconf: An implementation of the pkg-config spec
Version Information
package-version.txt:
2.5.0+sage-2024-05-18b

182

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S fflas-ffpack$ conda install fflas-ffpack$ sudo apt-get install fflas-ffpack$ sudo yum install fflas-ffpack-devel$ sudo pkg install math/fflas-ffpack$ sudo emerge sci-libs/fflas-ffpack$ nix-env --install fflas-ffpack$ sudo zypper install pkgconfig\(fflas-ffpack\)$ sudo xbps-install fflas-ffpack

See https://repology.org/project/fflas-ffpack/versions
If the system package is installed, ./configure will check if it can be used.

6.1.95 ffmpeg: ffmpeg video converter
Description
ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert
between arbitrary sample rates and resize video on the fly with a high quality polyphase filter.
License“FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. However, FFmpeg
incorporates several optional parts and optimizations that are covered by the GNU General Public License (GPL) version
2 or later. If those parts get used the GPL applies to all of FFmpeg.”
http://ffmpeg.org/legal.html
Upstream Contact
http://ffmpeg.org/

6.1. Details of external packages

183

Packages and Features, Release 10.4

Type
optional
Dependencies
Version Information
Equivalent System Packages$ apk add ffmpeg$ sudo pacman -S ffmpeg$ conda install imageio-ffmpeg$ sudo apt-get install ffmpeg

No package needed.
$ sudo pkg install multimedia/ffmpeg$ brew install ffmpeg$ sudo port install ffmpeg$ nix-env --install ffmpeg$ sudo zypper install ffmpeg

install the following packages: ffmpeg$ sudo xbps-install ffmpeg

See https://repology.org/project/ffmpeg/versions
If the system package is installed, ./configure will check if it can be used.

6.1.96 filelock: Platform independent file lockDescription
Platform independent file lock184

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicensePublic Domain <http://unlicense.org>
Upstream Contact
https://pypi.org/project/filelock/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
3.14.0version_requirements.txt:
filelock

Equivalent System Packages$ conda install filelock$ sudo xbps-install python3-filelock

If the system package is installed, ./configure will check if it can be used.

6.1.97 flint: Fast Library for Number Theory
Description
FLINT is a C library for doing number theory, maintained by Fredrik Johansson.
Website: http://www.flintlib.org

6.1. Details of external packages

185

Packages and Features, Release 10.4

LicenseFLINT is licensed GPL v2+.
Upstream Contact• flint-devel Gougle Group (http://groups.google.co.uk/group/flint-devel)• Fredrik JohanssonTypestandard
Dependencies• $(MP_LIBRARY)• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
3.1.3

Equivalent System Packages$ apk add flint-dev$ conda install libflint$ apt-cyg install libflint-devel$ sudo apt-get install libflint-dev$ sudo yum install flint flint-devel$ sudo pkg install math/flint2$ sudo emerge sci-mathematics/flint\[ntl\]$ brew install flint$ sudo port install flint$ nix-env --install flint

186

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo zypper install flint-devel$ sudo xbps-install flintlib-devel

See https://repology.org/project/flint/versions
If the system package is installed, ./configure will check if it can be used.

6.1.98 flit_core: Distribution-building parts of Flit. See flit package for more information
Description
Distribution-building parts of Flit. See flit package for more information
License
Upstream Contact
https://pypi.org/project/flit-core/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
3.9.0

version_requirements.txt:
flit-core >= 3.7.1

6.1. Details of external packages

187

Packages and Features, Release 10.4

Equivalent System Packages$ conda install flit-core$ sudo emerge dev-python/flit_core$ sudo xbps-install python3-flit_core

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.99 fonttools: Tools to manipulate font files
Description
Tools to manipulate font files
LicenseMIT
Upstream Contact
https://pypi.org/project/fonttools/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler
Version Information
package-version.txt:
4.42.1

version_requirements.txt:
fonttools

188

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install fonttools$ sudo emerge dev-python/fonttools

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.100 fplll: Lattice algorithms, including LLL with floating-point orthogonalization
Description
fplll contains implementations of several lattice algorithms. The implementation relies on floating-point orthogonalization,and LLL is central to the code, hence the name.
Website: https://github.com/fplll/fplll
License• LGPL V2.1+
Upstream Contact• Martin Albrecht <martinralbrecht+fplll@googlemail.com>• Mailing List https://groups.google.com/forum/#!forum/fplll-develTypestandard
Dependencies• $(MP_LIBRARY)• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
5.4.5

6.1. Details of external packages

189

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S fplll$ conda install fplll$ sudo apt-get install libfplll-dev$ sudo yum install libfplll libfplll-devel$ sudo pkg install math/fplll$ sudo emerge sci-libs/fplll$ brew install fplll$ sudo zypper install pkgconfig\(fplll\) fplll-devel fplll$ sudo xbps-install fplll-devel

See https://repology.org/project/fplll/versions
If the system package is installed, ./configure will check if it can be used.

6.1.101 fpylll: Python interface for FPLLL
Description
A Python interface for https://github.com/fplll/fplll (Lattice algorithms using floating-point arithmetic)
LicenseGPL version 2 or later
Upstream Contact
https://github.com/fplll/fpylllTypestandard

190

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• fplll: Lattice algorithms, including LLL with floating-point orthogonalization• numpy: Package for scientific computing with Python
Version Information
package-version.txt:
0.6.0

version_requirements.txt:
fpylll >=0.5.9

Equivalent System Packages$ conda install fpylll\>=0.5.9$ sudo emerge dev-python/fpylll

See https://repology.org/project/fpylll/versions, https://repology.org/project/python:fpylll/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.102 fqdn: Validates fully-qualified domain names against RFC 1123, so thatthey are acceptable to modern bowsers
Description
Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers
LicenseMPL 2.0

6.1. Details of external packages

191

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/fqdn/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.5.1

version_requirements.txt:
fqdn

Equivalent System Packages(none known)

6.1.103 free_fonts: a free family of scalable outline fonts
Description
This dummy package represents the GNU free fonts: a free family of scalable outline fonts, suitable for general use on
computers and for desktop publishing. It is Unicode-encoded for compatibility with all modern operating systems.
We do not have an SPKG for it. The purpose of this dummy package is to associate system package lists with it.
LicenseGNU General Public License GPLv3+

192

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://www.gnu.org/software/freefont/Type
optional
Dependencies
Version Information
Equivalent System Packages$ apk add ttf-freefont$ sudo pacman -S gnu-free-fonts$ conda install open-fonts$ sudo apt-get install fonts-freefont-otf$ sudo yum install gnu-free-mono-fonts gnu-free-sans-fonts \gnu-free-serif-fonts$ sudo pkg install x11-fonts/freefont-ttf$ sudo emerge media-fonts/freefont$ sudo port install freefont-ttf$ nix-env --install freefont-ttf

install the following packages: fonts/freefont-ttf$ sudo zypper install gnu-free-fonts$ sudo xbps-install freefont-ttf

See https://repology.org/project/font-freefont/versions, https://repology.org/project/fonts:gnu-freefont/versions, https://repology.org/project/texlive:gnu-freefont/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

193

Packages and Features, Release 10.4

6.1.104 freetype: A free, high-quality, and portable font engine
Description
From the documentation:
FreeType is a software font engine that is designed to be small, efficient, highly customizable, and portable while capableof producing high-quality output (glyph images). It can be used in graphics libraries, display servers, font conversion
tools, text image generation tools, and many other products as well.
Note that FreeType is a font service and doesn’t provide APIs to perform higher-level features like text layout or graphics
processing (e.g., colored text rendering, ‘hollowing’, etc.). However, it greatly simplifies these tasks by providing a simple,
easy to use, and uniform interface to access the content of font files.
Please note that ‘FreeType’ is also called ‘FreeType 2’, to distinguish it from the old, deprecated ‘FreeType 1’ library, apredecessor no longer maintained and supported.
The package in Sage is called freetype (in lowercase).
License• FreeType (BSD-like)• GNU Public License v2
From the documentation:
FreeType is released under two open-source licenses: our own BSD-like FreeType License and the GNU Public License,
Version 2. It can thus be used by any kind of projects, be they proprietary or not.
Upstream Contact• home: https://www.freetype.org• repo:– official: http://git.savannah.gnu.org/cgit/freetype– mirror: https://github.com/aseprite/freetype2/Typestandard
Dependencies• bzip2: High-quality data compressor• libpng: Bitmap image support

194

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
2.10.4Equivalent System Packages$ apk add freetype-dev$ conda install freetype$ apt-cyg install libfreetype-devel$ sudo apt-get install libfreetype-dev$ sudo pkg install print/freetype2$ brew install freetypeNo package needed.
$ nix-env --install freetype$ sudo zypper install pkgconfig\(freetype2\)$ sudo slackpkg install freetype harfbuzz glib glib2$ sudo xbps-install freetype-devel

See https://repology.org/project/freetype/versions
If the system package is installed, ./configure will check if it can be used.

6.1.105 fricas: A general purpose computer algebra system
Description
FriCAS is a general purpose computer algebra system.
LicenseModified BSD license.

6.1. Details of external packages

195

Packages and Features, Release 10.4

Upstream Contact
http://fricas.sourceforge.net/
Typeoptional
Dependencies• ecl: An implementation of the Common Lisp language
Version Information
package-version.txt:
1.3.10Equivalent System Packages$ sudo apt-get install fricas$ sudo pkg install math/fricas$ sudo emerge sci-mathematics/fricas$ sudo port install fricas$ sudo zypper install fricas

See https://repology.org/project/fricas/versions
If the system package is installed, ./configure will check if it can be used.

6.1.106 frobby: Computations on monomial ideals
Description
The software package Frobby provides a number of computations on monomial ideals. The current main feature is the
socle of a monomial ideal, which is largely equivalent to computing the maximal standard monomials, the Alexander dualor the irreducible decomposition.
Operations on monomial ideals are much faster than algorithms designed for ideals in general, which is what makes a
specialized library for these operations on monomial ideals useful.

196

Chapter 6. All External Packages

Packages and Features, Release 10.4

License• GPL version 2.0 or later
Upstream Contact• http://www.broune.com/frobby/• https://github.com/Macaulay2/frobby
Special Update/Build instructions
Download Frobby at www.broune.com/ and then type “make spkg VER=blah” which wil create an spkg named
frobby-VER.spkg in bin/. The files related to doing this is in the sage/ sub-directory of the Frobby source distribution.
Typeoptional
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
0.9.0.p2

Equivalent System Packages
See https://repology.org/project/frobby/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.107 furo: A clean customizable Sphinx documentation theme
Description
A clean customizable Sphinx documentation theme.

6.1. Details of external packages

197

Packages and Features, Release 10.4

LicenseCopyright (c) 2020 Pradyun Gedam <mail@pradyunsg.me> Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without
restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following
conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portionsof the Software. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESSOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH
THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Upstream Contact
https://pypi.org/project/furo/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• beautifulsoup4: Screen-scraping library• pygments: Generic syntax highlighter• sphinx: Python documentation generator• sphinx_basic_ng: Modern skeleton for Sphinx themes
Version Information
package-version.txt:
2023.9.10

version_requirements.txt:
furo

198

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-sphinx-furo$ conda install furo$ sudo apt-get install furo$ sudo yum install python-furo$ sudo pkg install textproc/py-furo$ sudo emerge dev-python/furo

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.108 gap: Groups, Algorithms, Programming - a system for computational discrete algebra
Description
GAP is a system for computational discrete algebra, with particular emphasis on Computational Group Theory. GAP
provides a programming language, a library of thousands of functions implementing algebraic algorithms written in the
GAP language as well as large data libraries of algebraic objects. See also the overview and the description of themathematical capabilities. GAP is used in research and teaching for studying groups and their representations, rings,
vector spaces, algebras, combinatorial structures, and more. The system, including source, is distributed freely. You canstudy and easily modify or extend it for your special use.
This is a stripped-down version of GAP. The databases, which are architecture-independent, are in a separate package.
Upstream Contact
https://www.gap-system.org
Mailing list at https://mail.gap-system.org/mailman/listinfo/gap
Special Update/Build Instructions
This is a stripped-down version of GAP. The downloading of the sources and removal of unneeded parts is done by the
script spkg-src. When you update GAP, please also update and use the spkg-src script.
• Do we really want to copy everything from the build directory???
You need the full GAP tree to compile/install many GAP packages.
• There’s apparently a command missing (in spkg-install) building the (HTML?) documentation. Earlierchangelog entries as well as the description above state the documentation was removed from the upstream
sources… Since the (pre-)built HTML documentation is currently included, I’ve commented out some lines inthat part of spkg-install. -leif

6.1. Details of external packages

199

Packages and Features, Release 10.4

PatchesType
standard
Dependencies• $(MP_LIBRARY)• ncurses: Classic terminal output library• readline: Command line editing library• zlib: Data compression library
Version Information
package-version.txt:
4.12.2Equivalent System Packages$ sudo pacman -S gap$ conda install gap-defaults\>=4.12.2\,\<4.13.0$ sudo apt-get install gap libgap-dev$ sudo yum install gap gap-core gap-devel gap-libs libgap$ sudo pkg install math/gap$ nix-env --install gap

See https://repology.org/project/gap/versions
If the system package is installed, ./configure will check if it can be used.

6.1.109 gap3: A minimal distribution of GAP 3 containing packages that have noequivalent in GAP 4
Description
This package installs Jean Michel’s pre-packaged GAP3, which is a minimal GAP3 distribution containing packages thathave no equivalent in GAP4.
Below is the full description from Jean Michel’s webpage (accessed 23 July 2015).

200

Chapter 6. All External Packages

Packages and Features, Release 10.4

A pre-packaged GAP3 with everything you need
To help people who are just interested in GAP3 because they need a package which has not been ported to
GAP4, I have prepared an easy-to install minimal GAP3 distribution containing an up-to-date versions of
the packages:
anusq, arep, autag, chevie, cryst, dce, grim, matrix, meataxe, monoid, nq, pcqa, sisyphos, specht, ve, vkcurve.
These packages have been chosen since most have no equivalent in GAP4. They are autoloaded when starting
gap.
This distribution includes only partial lists of small groups, 2-groups, 3-groups, character tables from theAtlas and tables of marks. It does not include either the packages:
anupq, grape, kbmag, xgap, cohomolo, gliss, guava, xmod
which have some equivalent in GAP4. You can get these extra features at
http://www.math.rwth-aachen.de/ Frank.Luebeck/gap/GAP3
In this distribution:• The on-line help includes the documentation of the included packages.
• The html documentation (htm/index.html) also does.
• The manual (manual.pdf) also does.
LicenseMost parts of the GAP distribution, including the core part of the GAP system, are distributed under the terms of the
GNU General Public License (see http://www.gnu.org/licenses/gpl.html or the file GPL in the etc directory of the GAP
installation).
SPKG Maintainers• Christian Stump <christian.stump@gmail.com>
Upstream Contact
Jean Michel <jmichel@math.jussieu.fr> http://webusers.imj-prg.fr/ jean.michel/Special Update/Build Instructions
The difference between the distributed tarball and Jean Michel’s original tarball also contains the binaries

6.1. Details of external packages

201

Packages and Features, Release 10.4

PatchesNone
Typeexperimental
Dependencies
Version Information
package-version.txt:
04jul17

Equivalent System Packages(none known)

6.1.110 gap_jupyter: Jupyter kernel for GAP
Description
Jupyter kernel for GAPThis wrapper-kernel is a Jupyter kernel for the GAP Computer Algebra System based on the same ideas as the bash
wrapper kernel.
License3-Clause BSD License
Upstream Contact• https://github.com/gap-packages/jupyter-gap
Typeoptional

202

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• gap: Groups, Algorithms, Programming - a system for computational discrete algebra• ipython: Interactive computing environment with an enhanced interactive Python shell
Version Information
package-version.txt:
0.9

version_requirements.txt:
gap_jupyter >=0.9

Equivalent System Packages$ conda install gap

See https://repology.org/project/gap-jupyterkernel/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.111 gap_packages: A collection of GAP packages
Description
Several “official” and “undeposited” GAP packages available from https://www.gap-system.org/Packages/packages.html
Installing this SPKG will install the corresponding GAP packages, but before you can use them in Sage, they still have to
be loaded into either the GAP interface or libgap:
sage: gap.eval( LoadPackage("Grape") )true
sage: libgap.LoadPackage("Grape")true>>> from sage.all import *>>> gap.eval( LoadPackage("Grape") )true>>> libgap.LoadPackage("Grape")true# optional - gap_packages# optional - gap_packages# optional - gap_packages# optional - gap_packages

Those correspond to:gap> LoadPackage("Grape");within the GAP interface and libgap, respectively.

6.1. Details of external packages

203

Packages and Features, Release 10.4

Upstream Contact
Mailing list at https://mail.gap-system.org/mailman/listinfo/gap
Dependencies• GAP (a standard spkg)
TODO
The crystallographic group packages are untested/untestable. They rely on polymake and the dependency “cryst” is missing. This needs to be cleaned up.
Notes
A brief description of each package follows:cohomolo - The cohomolo package is a GAP interface to some C programs for computing Schur multipliers and coveringgroups of finite groups and first and second cohomology groups of finite groups acting on finite modules. (Author: Max
Horn, Markus Pfeiffer)
CoReLG - Contains functionality for working with real semisimple Lie algebras. (Author: Heiko Dietrich, Paolo Faccin,
Willem Adriaan de Graaf)
crime - package to compute the cohomology ring of finite p-groups, induced maps, and Massey products. (Author:
Marcus Bishop)
cryst - Computing with crystallographic groups (Authors: Bettina Eick, Franz Gähler, Werner Nickel)
CTblLib - The GAP Character Table Library (Author: Thomas Breuer)
DESIGN is a package for classifying, partitioning and studying block designs. (Author: Leonard H. Soicher)
FactInt is a package providing routines for factoring integers, in particular:• Pollard’s p-1• Williams’ p+1• Elliptic Curves Method (ECM)• Continued Fraction Algorithm (CFRAC)• Multiple Polynomial Quadratic Sieve (MPQS)(Author: Stefan Kohl)
GAPDoc is a package containing a definition of a structure for GAP documentation, based on XML. It also contains
conversion programs for producing text-, DVI-, PDF- or HTML-versions of such documents, with hyperlinks if possible.
(Authors: Frank Luebeck, Max Neunhoeffer)
GBNP - The GBNP package provides algorithms for computing Grobner bases of noncommutative polynomials withcoefficients from a field implemented in GAP and with respect to the “total degree first then lexicographical” ordering.
Further provided are some variations, such as a weighted and truncated version and a tracing facility. The word “algorithm”
is to be interpreted loosely here: in general one cannot expect such an algorithm to terminate, as it would imply solvabilityof the word problem for finitely presented (semi)groups. (Authors: A.M. Cohen, J.W. Knopper)
GRAPE is a package for computing with graphs and groups, and is primarily designed for constructing and analysing
graphs related to groups, finite geometries, and designs. (Author: Leonard H. Soicher)

204

Chapter 6. All External Packages

Packages and Features, Release 10.4

GUAVA is included here, and with Sage standard.
HAP (Homological Algebra Programming) is a GAP package providing some functions for group cohomology computation. (Author: Graham Ellis)
HAPcryst - an extension package for HAP, which allows for group cohomology computation for a wider class of groups.
(Author: Marc Roeder)
hecke - Provides functions for calculating decomposition matrices of Hecke algebras of the symmetric groups and q-Schuralgebras. Hecke is a port of the GAP 3 package Specht 2.4 to GAP 4. (Author: Dmitriy Traytel)
LAGUNA - this package provides functionality for calculation of the normalized unit group of the modular group algebraof the finite p-group and for investigation of Lie algebra associated with group algebras and other associative algebras.
(Authors :Victor Bovdi, Alexander Konovalov, Richard Rossmanith, Csaba Schneider)liealgdb - A database of Lie algebras (Author: Serena Cicalo’, Willem Adriaan de Graaf, Csaba Schneider)
LiePRing - Database and algorithms for Lie p-rings (Author: Michael Vaughan-Lee, Bettina Eick)
LieRing - contains functionality for working with finitely presented Lie rings and the Lazard correspondence. (Author:
Serena Cicalo’, Willem Adriaan de Graaf)
loops - Provides researchers in nonassociative algebra with a computational tool that integrates standard notions of loop
theory with libraries of loops and group-theoretical algorithms of GAP. The package also expands GAP toward nonassociative structures. (Authors: Gabor Nagy, Petr Vojtechovsky)
mapclass - The package calculates the mapping class group orbits for a given finite group. (Authors: Adam James, Kay
Magaard, Sergey Shpectorov, Helmut Volklein)
polymake - an interface with the (standalone) polymake program used by HAPcryst. (Author: Marc Roeder)
qpa - Quivers and Path Algebras provides data structures and algorithms for doing computations with finite dimensional
quotients of path algebras, and finitely generated modules over such algebras. The current version of the QPA package
has data structures for quivers, quotients of path algebras, and modules, homomorphisms and complexes of modules overquotients of path algebras. (Authors: Edward Green, Oeyvind Solberg)
quagroup - Contains functionality for working with quantized enveloping algebras of finite-dimensional semisimple Liealgebras. (Author: Willem Adriaan de Graaf)
repsn - The package provides GAP functions for computing characteristic zero matrix representations of finite groups.
(Author: Vahid Dabbaghian)sla - a package for doing computations with simple Lie algebras (Author: Willem Adriaan de Graaf)
SONATA (“System Of Nearrings And Their Applications”) is a package which constructs finite nearrings and related
objects. (Authors: Erhard Aichinger, Franz Binder, Jürgen Ecker, Peter Mayr, Christof Noebauer)
TORIC is a GAP package for computing with toric varieties. (Author: David Joyner)Type
optional

6.1. Details of external packages

205

Packages and Features, Release 10.4

Dependencies• $(SAGERUNTIME)• gap: Groups, Algorithms, Programming - a system for computational discrete algebra• libsemigroups: Library for semigroups and monoids• planarity: Planarity-related graph algorithms
Version Information
package-version.txt:
4.12.2Equivalent System Packages$ conda install gap

See https://repology.org/project/gap/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.112 gast: Python AST that abstracts the underlying Python version
Description
Python AST that abstracts the underlying Python version
LicenseBSD 3-Clause
Upstream Contact
https://pypi.org/project/gast/Typestandard

206

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.5.4

version_requirements.txt:
gast

Equivalent System Packages$ conda install gast
$ sudo emerge dev-python/gast$ sudo xbps-install python3-gast

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.113 gc: The Boehm-Demers-Weiser conservative garbage collector
Description
The Boehm-Demers-Weiser conservative garbage collector.
License• MIT-style (https://github.com/ivmai/bdwgc/blob/master/LICENSE)
Upstream Contact• Ivan Maidanski
Webpage: - https://github.com/ivmai/bdwgc/ - https://www.hboehm.info/gc/

6.1. Details of external packages

207

Packages and Features, Release 10.4

Special Update/Build Instructions
None.
Type
standard
Dependencies• libatomic_ops: Access hardware-provided atomic memory update operations
Version Information
package-version.txt:
8.2.6

Equivalent System Packages$ apk add gc-dev$ sudo pacman -S gc$ conda install bdw-gc$ apt-cyg install libgc-devel$ sudo apt-get install libgc-dev$ sudo yum install gc gc-devel$ sudo pkg install devel/boehm-gc devel/boehm-gc-threaded$ sudo emerge dev-libs/boehm-gc$ brew install bdw-gc$ sudo port install boehmgc$ sudo zypper install pkgconfig\(bdw-gc\)$ sudo slackpkg install gc$ sudo xbps-install gc-devel

See https://repology.org/project/boehm-gc/versions
If the system package is installed, ./configure will check if it can be used.
208

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.114 gcc: The GNU Compiler Collection or other suitable C and C++ compilers
Description
This package represents the required C and C++ compilers.
• GCC (GNU Compiler Collection) versions 8.x (>= 8.4.0) to 13.x are supported.
• Clang (LLVM) is also supported.
The required Fortran compiler is represented by the package gfortran.
You can pass the names of compilers to use to ./configure using the environment variables CC, CXX, and FC, for
C, C++, and Fortran compilers, respectively.
For example, if your C compiler is clang, your C++ compiler is clang++, and your Fortran compiler is flang, then
you would need to run:$ ./configure CC=clang CXX=clang++ FC=flang

Vendor and versions of the C and C++ compilers should match.
Users of older Linux distributions (in particular, ubuntu-xenial or older, debian-buster or older, linuxmint-18 or older) should upgrade their systems before attempting to install Sage from source. Users ofubuntu-bionic, linuxmint-19.x, and opensuse-15.x can install a versioned gcc system package andthen use:$ ./configure CC=gcc-8 CXX=g++-8 FC=gfortran-8

or similar. Users on ubuntu can also install a modern compiler toolchain using the ubuntu-toolchain-r ppa. On
ubuntu-trusty, also the package binutils-2.26 is required; after installing it, make it available using export
PATH="/usr/lib/binutils-2.26/bin:$PATH". Instead of upgrading their distribution, users of centos-7
can install a modern compiler toolchain using Redhat’s devtoolset.
This package uses the non-standard default configure --with-system-gcc=force, giving an error at configure time when no suitable system compilers are configured.
You can override this using ./configure --without-system-gcc. In this case, Sage builds and installs the
GNU Compiler Collection, including the C, C++ and Fortran compiler. This is not recommended. You will need suitable
C and C++ compilers from which GCC can bootstrap itself. There are some known problems with old assemblers, inparticular when building the ecm and fflas_ffpack packages. You should ensure that your assembler understands
all instructions for your processor. On Linux, this means you need a recent version of binutils (not provided by an
SPKG); on macOS you need a recent version of Xcode.
(Installing the gfortran SPKG becomes a no-op in this case.)
Building Sage from source on Apple Silicon (M1/M2) requires the use of Apple’s Command Line Tools, and those tools
include a suitable compiler. Sage’s gcc SPKG is not suitable for M1/M2; building it will likely fail.

6.1. Details of external packages

209

Packages and Features, Release 10.4

LicenseGPL version 2 or version 3
Upstream Contact
https://gcc.gnu.org/
Typestandard
Dependencies• $(MP_LIBRARY)• mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding• mpfr: Multiple-precision floating-point computations with correct rounding• xz: General-purpose data compression software• zlib: Data compression library
Version Information
package-version.txt:
13.2.0Equivalent System Packages$ sudo pacman -S gcc$ apt-cyg install gcc-core gcc-g++ gcc-fortran$ sudo apt-get install gcc g++$ sudo yum install gcc gcc-c++ gcc-gfortran$ sudo pkg install lang/gcc9$ brew install gcc$ sudo zypper install gcc-c++$ sudo xbps-install gcc

See https://repology.org/project/gcc/versions
If the system package is installed, ./configure will check if it can be used.
210

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.115 gdb: The GNU Project debugger
Description
GDB, the GNU Project debugger, allows you to see what is going on “inside” another program while it executes – or what
another program was doing at the moment it crashed.
LicenseGPL v3+
Upstream Contact
http://www.gnu.org/software/gdb/
Special Update/Build Instructions
Current version needs makeinfo installed to build successfully.
Typeexperimental
Dependencies• $(PYTHON)• mpfr: Multiple-precision floating-point computations with correct rounding• ncurses: Classic terminal output library• xz: General-purpose data compression software• zlib: Data compression library
Version Information
package-version.txt:
8.2

6.1. Details of external packages

211

Packages and Features, Release 10.4

Equivalent System Packages$ apk add gdb

No package needed.
$ brew install gdb$ sudo port install gdb$ sudo zypper install gdb$ sudo xbps-install gdb

See https://repology.org/project/gdb/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.116 gengetopt: getopt_long parser generator
Description
GNU Gengetopt converts a textual description of your program’s arguments and options into a getopt_long() parser in C
(or C++).
Website: https://www.gnu.org/software/gengetopt/
LicenseGPL-3+ (https://www.gnu.org/software/gengetopt/LICENSE)
Type
standard
Dependencies• xz: General-purpose data compression software
Version Information
package-version.txt:
2.23

212

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ apk add gengetopt$ conda install gengetopt$ apt-cyg install gengetopt$ sudo apt-get install gengetopt$ sudo yum install gengetopt$ sudo emerge dev-util/gengetopt$ brew install gengetopt$ nix-env --install gengetopt$ sudo xbps-install gengetopt

See https://repology.org/project/gengetopt/versions
If the system package is installed, ./configure will check if it can be used.

6.1.117 gf2x: Fast arithmetic in GF(2)[x] and searching for irreducible/primitive trinomials
Description
gf2x is a C/C++ software package containing routines for fast arithmetic in GF(2)[x] (multiplication, squaring, GCD)
and searching for irreducible/primitive trinomials.
Website: https://gitlab.inria.fr/gf2x/gf2x
License• GNU GPLv2+.
Upstream Contact• Richard Brent• Pierrick Gaudry• Emmanuel Thomé• Paul Zimmermann

6.1. Details of external packages

213

Packages and Features, Release 10.4

Typestandard
Dependencies
Version Information
package-version.txt:
1.3.0

Equivalent System Packages$ apk add gf2x-dev$ sudo pacman -S gf2x
$ conda install gf2x
$ sudo apt-get install libgf2x-dev$ sudo yum install gf2x gf2x-devel$ sudo pkg install math/gf2x$ sudo zypper install pkgconfig\(gf2x\)$ sudo xbps-install gf2x-devel

See https://repology.org/project/gf2x/versions
If the system package is installed, ./configure will check if it can be used.

6.1.118 gfan: Groebner fans and tropical varieties
Description
Gfan is a software package for computing Groebner fans and tropical varieties.
These are polyhedral fans associated to polynomial ideals. The maximal cones of a Groebner fan are in bijection withthe marked reduced Groebner bases of its defining ideal. The software computes all marked reduced Groebner bases ofan ideal. Their union is a universal Groebner basis. The tropical variety of a polynomial ideal is a certain subcomplex of
the Groebner fan. Gfan contains algorithms for computing this complex for general ideals and specialized algorithms fortropical curves, tropical hypersurfaces and tropical varieties of prime ideals. In addition to the above core functions the
package contains many tools which are useful in the study of Groebner bases, initial ideals and tropical geometry. The
full list of commands can be found in Appendix B of the manual. For ordinary Groebner basis computations Gfan is notcompetitive in speed compared to programs such as CoCoA, Singular and Macaulay2.

214

Chapter 6. All External Packages

Packages and Features, Release 10.4

License• GPL version 2 or version 3 (according to the gfan website)
Upstream Contact
Anders Nedergaard Jensen
https://users-math.au.dk/jensen/software/gfan/gfan.html
Special Update/Build Instructions
Remove the doc, homepage, and examples subdirectories, which take up most of the space.
Typestandard
Dependencies• $(MP_LIBRARY)• cddlib: Double description method for polyhedral representation conversion
Version Information
package-version.txt:
0.6.2.p1

Equivalent System Packages$ sudo pacman -S gfan
$ conda install gfan$ sudo apt-get install gfan$ sudo yum install gfan$ sudo pkg install math/gfan$ sudo emerge sci-mathematics/gfan$ nix-env --install gfan$ sudo zypper install gfan

6.1. Details of external packages

215

Packages and Features, Release 10.4

$ sudo xbps-install gfan

See https://repology.org/project/gfan/versions
If the system package is installed, ./configure will check if it can be used.

6.1.119 gfortran: Fortran compiler from the GNU Compiler Collection
Description
This package represents the required Fortran compiler.
Officially we support gfortran from GNU Compiler Collection (GCC). It has also been reported that using flang(from LLVM) might work.
You can pass the names of compilers to use to ./configure using the environment variables CC, CXX, and FC, for
C, C++, and Fortran compilers, respectively.
For example, if your C compiler is clang, your C++ compiler is clang++, and your Fortran compiler is flang, then
you would need to run:$ ./configure CC=clang CXX=clang++ FC=flang

LicenseGPL version 2 or version 3
Upstream Contact
http://gcc.gnu.org/
Special Update/Build Instructions
None.
Type
standard
Dependencies• $(MP_LIBRARY)• mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding• mpfr: Multiple-precision floating-point computations with correct rounding• xz: General-purpose data compression software• zlib: Data compression library

216

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
13.2.0Equivalent System Packages$ apk add gfortran$ sudo pacman -S gcc-fortran$ conda install fortran-compiler$ apt-cyg install gcc-fortran$ sudo apt-get install gfortran$ sudo yum install gcc-gfortran$ sudo pkg install lang/gcc9$ brew install gfortran$ sudo port install gcc10 +gfortran$ sudo zypper install gcc-fortran$ sudo slackpkg install gcc-gfortran$ sudo xbps-install gcc-fortranSee https://repology.org/project/gfortran/versions
If the system package is installed, ./configure will check if it can be used.

6.1.120 giac: A general purpose computer algebra system
Description• Giac is a general purpose Computer algebra system by Bernard Parisse. It consists of:• a C++ library (libgiac).
• a command line interpreter (icas or giac).
• the built of the FLTK-based GUI (xcas) has been disabled in the spkg-install file.
• The english documentation will be installed in:$SAGE_LOCAL/share/giac/doc/en/cascmd_en/index.html

6.1. Details of external packages

217

Packages and Features, Release 10.4

• Author’s website with debian, ubuntu, macosx, windows package:
http://www-fourier.ujf-grenoble.fr/ parisse/giac.html• The Freebsd port is math/giacxcas
Licence
GPLv3+
Note: except the french html documentation which is freely redistributable for non commercial only purposes. This doc
has been removed in the Sage package, see spkg-src
Upstream Contact• Bernard Parisse: http://www-fourier.ujf-grenoble.fr/ parisse/giac.html• Source file (giac-x.y.z-t.tar.gz) in:
http://www-fourier.ujf-grenoble.fr/ parisse/debian/dists/stable/main/source/
Dependencies• gettext, readline• giac will benefit of ntl, pari, mpfr, gsl, lapack but they should be already installed by sage.
• giac can also benefit of mpfi for arithmetic on intervals.
• The Documentation is pre-built, hevea or latex or … are not needed to install the package.
Special Update/Build Instructions• Use spkg-src to update this packageTypestandard
Dependencies• $(MP_LIBRARY)• cliquer: Routines for clique searching• curl: Multiprotocol data transfer library and utility• ecm: Elliptic curve method for integer factorization• glpk: GNU Linear Programming Kit• gsl: The GNU Scientific Library• libpng: Bitmap image support• mpfi: Multiple precision interval arithmetic library based on MPFR

218

Chapter 6. All External Packages

Packages and Features, Release 10.4

• mpfr: Multiple-precision floating-point computations with correct rounding• ntl: A library for doing number theory• pari: Computer algebra system for fast computations in number theory• readline: Command line editing library
Version Information
package-version.txt:
1.9.0.15p0

Equivalent System Packages$ sudo pacman -S giac
$ conda install giac
$ sudo apt-get install libgiac-dev xcas
$ sudo yum install giac giac-devel$ sudo pkg install math/giacxcas$ nix-env --install giac
$ sudo zypper install giac-devel$ sudo xbps-install giac-devel

See https://repology.org/project/giac/versions
If the system package is installed, ./configure will check if it can be used.

6.1.121 git: Version control system
Description
Git is a fast, scalable, distributed revision control system with an unusually rich command set that provides
both high-operations and full access to internals.
• man git

6.1. Details of external packages

219

Packages and Features, Release 10.4

Upstream Contact• Website: https://git-scm.com/
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ sudo pacman -S git$ conda install git$ apt-cyg install git$ sudo apt-get install git$ sudo yum install git$ sudo pkg install devel/git$ brew install git$ sudo port install git$ sudo zypper install git$ sudo slackpkg install git$ sudo xbps-install git

See https://repology.org/project/git/versions
If the system package is installed, ./configure will check if it can be used.

6.1.122 github_cli: Command-line interface for GitHub
Description
gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next towhere you are already working with git and your code.

220

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://github.com/cli/cli
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add github-cli$ sudo pacman -S github-cli$ conda install gh$ sudo apt-get install gh$ sudo yum install gh$ sudo pkg install devel/gh$ sudo emerge dev-util/github-cli$ brew install gh$ sudo port install gh$ nix-env --install gh$ sudo zypper install gh$ sudo xbps-install github-cli

See https://repology.org/project/github-cli/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

221

Packages and Features, Release 10.4

6.1.123 gitpython: GitPython is a python library used to interact with Git repositories
Description
GitPython is a python library used to interact with Git repositories
License
BSD
Upstream Contact
https://pypi.org/project/GitPython/Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
requirements.txt:
GitPythonEquivalent System Packages(none known)

6.1.124 givaro: C++ library for arithmetic and algebraic computations
Description
Givaro is a C++ library for arithmetic and algebraic computations. Its main features are implementations of the basicarithmetic of many mathematical entities: Primes fields, Extensions Fields, Finite Fields, Finite Rings, Polynomials,
Algebraic numbers, Arbitrary precision integers and rationals (C++ wrappers over gmp) It also provides data-structures
and templated classes for the manipulation of basic algebraic objects, such as vectors, matrices (dense, sparse, structured),
univariate polynomials (and therefore recursive multivariate).
Website: https://casys.gricad-pages.univ-grenoble-alpes.fr/givaro/
SPKG Repository: https://bitbucket.org/malb/givaro-spkg

222

Chapter 6. All External Packages

Packages and Features, Release 10.4

License• GNU GPL
Upstream Contact• Clement PernetTypestandard
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
4.2.0

Equivalent System Packages$ conda install givaro$ sudo apt-get install libgivaro-dev$ sudo yum install givaro givaro-devel$ sudo pkg install math/givaro$ sudo emerge sci-libs/givaro$ nix-env --install givaro$ sudo zypper install pkgconfig\(givaro\)$ sudo xbps-install givaro-devel

See https://repology.org/project/givaro/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

223

Packages and Features, Release 10.4

6.1.125 glpk: GNU Linear Programming Kit
Description
The GLPK (GNU Linear Programming Kit) package is intended for solving large-scale linear programming (LP), mixed
integer programming (MIP), and other related problems. It is a set of routines written in ANSI C and organized in theform of a callable library.
GLPK supports the GNU MathProg modelling language, which is a subset of the AMPL language.
The GLPK package includes the following main components:• primal and dual simplex methods• primal-dual interior-point method• branch-and-cut method• translator for GNU MathProg• application program interface (API)• stand-alone LP/MIP solver
LicenseThe GLPK package is GPL version 3.
Upstream Contact
GLPK is currently being maintained by:• Andrew Makhorin (mao@gnu.org, mao@mai2.rcnet.ru)
http://www.gnu.org/software/glpk/#maintainer
Special Update/Build Instructions• configure doesn’t support specifying the location of the GMP library to use; only --with-gmp[=yes] or--with-gmp=no are valid options. (So we *have to* add Sage’s include and library directories to CPPFLAGS
and LDFLAGS, respectively.)• Do we need the --disable-static? The stand-alone solver presumably runs faster when built with a static
library; also other (stand-alone) programs using it would. (Instead, we should perhaps use --enable-static--enable-shared to go safe.)Typestandard

224

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(MP_LIBRARY)• zlib: Data compression library
Version Information
package-version.txt:
5.0.p1

Equivalent System Packages$ apk add glpk-dev$ sudo pacman -S glpk
$ conda install glpk
$ apt-cyg install glpk libglpk-devel$ sudo apt-get install glpk-utils libglpk-dev$ sudo yum install glpk glpk-devel glpk-utils$ sudo pkg install math/glpk$ sudo emerge sci-mathematics/glpk$ brew install glpk
$ sudo port install glpk
$ nix-env --install glpk
$ sudo zypper install glpk glpk-devel

install the following packages: glpk
$ sudo xbps-install glpk-devel

See https://repology.org/project/glpk/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

225

Packages and Features, Release 10.4

6.1.126 glucose: A SAT solver
Description
Glucose is a SAT solver.
Citing its website:
The name of the solver is a contraction of the concept of “glue clauses”, a particular kind of clauses that
glucose detects and preserves during search. Glucose is heavily based on Minisat, so please do cite Minisat
also if you want to cite Glucose.
License• nonparallel glucose: MIT• parallel glucose-syrup: MIT modified with:
The parallel version of Glucose (all files modified since Glucose 3.0 releases, 2013) cannot be used in any competitive event (sat competitions/evaluations) without the express permission of the authors (Gilles Audemard / Laurent
Simon). This is also the case for any competitive event using Glucose Parallel as an embedded SAT engine (single
core or not).
Upstream Contact
Website: http://www.labri.fr/perso/lsimon/glucose/
Special Update/Build Instructions
None.
Type
optional
Dependencies• zlib: Data compression library
Version Information
package-version.txt:
4.1

226

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages
See https://repology.org/project/glucose/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.127 gmp: Library for arbitrary precision arithmetic
Description
GMP is a free library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point
numbers. There is no practical limit to the precision except the ones implied by the available memory in the machine
GMP runs on. GMP has a rich set of functions, and the functions have a regular interface.
License• LGPL V3
Upstream Contact• http://gmplib.org
Typestandard
Dependencies• xz: General-purpose data compression software
Version Information
package-version.txt:
6.3.0

src/pyproject.toml:
gmpy2 ~=2.1.b999

6.1. Details of external packages

227

Packages and Features, Release 10.4

Equivalent System Packages$ apk add gmp-dev$ conda install gmp$ apt-cyg install libgmp-devel$ sudo apt-get install libgmp-dev$ sudo yum install gmp gmp-devel$ sudo pkg install math/gmp$ sudo emerge dev-libs/gmp$ brew install gmp$ sudo port install gmp$ sudo zypper install gmp-devel

install the following packages: libgmp$ sudo slackpkg install gmp$ sudo xbps-install gmp-devel gmpxx-devel

See https://repology.org/project/gmp/versions
If the system package is installed, ./configure will check if it can be used.

6.1.128 gmpy2: Python interface to GMP/MPIR, MPFR, and MPC
Description
GMP/MPIR, MPFR, and MPC interface to Python
gmpy2 is a C-coded Python extension module that supports multiple-precision arithmetic. In addition to supporting GMPor MPIR for multiple-precision integer and rational arithmetic, gmpy2 adds support for the MPFR (correctly rounded
real floating-point arithmetic) and MPC (correctly rounded complex floating-point arithmetic) libraries.

228

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseLGPL-3.0+
Upstream Contact
https://pypi.org/project/gmpy2/
Typestandard
Dependencies• $(MP_LIBRARY)• $(PYTHON)• $(PYTHON_TOOLCHAIN)• mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
2.2.0a1

src/pyproject.toml:
gmpy2 ~=2.1.b999

version_requirements.txt:
gmpy2 ~=2.1.b999

Equivalent System Packages$ sudo pacman -S python-gmpy2$ conda install gmpy2$ sudo apt-get install python3-gmpy2$ sudo yum install python-gmpy2$ sudo pkg install math/py-gmpy2

6.1. Details of external packages

229

Packages and Features, Release 10.4

$ sudo emerge dev-python/gmpy$ sudo port install py-gmpy2$ sudo zypper install python3\$\{PYTHON_MINOR\}-gmpy2$ sudo xbps-install python3-gmpy2

See https://repology.org/project/python:gmpy2/versions, https://repology.org/project/python:gmpy2-devel/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.129 gnulib: Modules imported from Gnulib
This script package represents the modules imported into the Sage source tree from Gnulib.
Upstream Contact
https://www.gnu.org/software/gnulib/Typestandard
Dependencies
Version Information
package-version.txt:
f9b39c4e337f1dc0dd07c4f3985c476fb875d799

Equivalent System Packages(none known)

6.1.130 gnumake_tokenpool: Jobclient and jobserver for the GNU make tokenpool
protocolDescription
The project has implementations in multiple languages.
We only install the implementation in Python.

230

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact• https://github.com/milahu/gnumake-tokenpool (upstream)Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.0.7

version_requirements.txt:
gnumake-tokenpool >= 0.0.4

Equivalent System Packages(none known)

6.1.131 gp2c: A compiler for translating GP routines to C
Description
The gp2c compiler is a package for translating GP routines into the C programming language, so that they can be compiled
and used with the PARI system or the GP calculator.
LicenseGPL version 2+

6.1. Details of external packages

231

Packages and Features, Release 10.4

Upstream Contact• http://pari.math.u-bordeaux.fr/
Dependencies• PARI• PerlType
optional
Dependencies• pari: Computer algebra system for fast computations in number theory
Version Information
package-version.txt:
0.0.10.p0

Equivalent System Packages$ sudo apt-get install pari-gp2c$ sudo pkg install math/gp2c$ sudo emerge sci-mathematics/gp2c$ sudo zypper install gp2c
$ sudo xbps-install gp2c

See https://repology.org/project/gp2c/versions
If the system package is installed, ./configure will check if it can be used.

232

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.132 graphs: A database of combinatorial graphs
Description
A database of graphs. Created by Emily Kirkman based on the work of Jason Grout. Since April 2012 it also contains
the ISGCI graph database.
Upstream Contact• https://jasongrout.org/graph_database• For ISGCI:
H.N. de Ridder (hnridder@graphclasses.org)• For Andries Brouwer’s database:The data is taken from from Andries E. Brouwer’s website (https://www.win.tue.nl/ aeb/). Anything related to thedata should be reported to him directly (aeb@cwi.nl)
The code used to parse the data and create the .json file is available at https://github.com/nathanncohen/strongly_
regular_graphs_database.
Typestandard
Dependencies
Version Information
package-version.txt:20210214.p0

Equivalent System Packages$ sudo pacman -S sage-data-graphs$ conda install sagemath-db-graphs

See https://repology.org/project/sagemath-graphs/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

233

Packages and Features, Release 10.4

6.1.133 graphviz: Graph visualization software
Description
Graphviz is open source graph visualization software. It has several main graph layout programs. They take descriptionsof graphs in a simple text language, and make diagrams in several useful formats.
LicenseEclipse Public License 1.0
Upstream Contact
https://graphviz.org/about/Type
optional
Dependencies
Version Information
Equivalent System Packages$ apk add graphviz$ sudo pacman -S graphviz$ conda install graphviz$ apt-cyg install graphviz$ sudo apt-get install graphviz$ sudo yum install graphviz$ sudo pkg install graphics/graphviz$ brew install graphviz$ sudo port install graphviz$ nix-env --install graphviz$ sudo zypper install graphviz

234

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo xbps-install graphviz graphviz-devel

See https://repology.org/project/graphviz/versions
If the system package is installed, ./configure will check if it can be used.

6.1.134 gsl: The GNU Scientific Library
Description
The GNU Scientific Library
Website: http://www.gnu.org/software/gsl/
From the website above: The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It isfree software under the GNU General Public License.
The library provides a wide range of mathematical routines such as random number generators, special functions andleast-squares fitting. There are over 1000 functions in total with an extensive test suite. If the variable SAGE_CHECK is
exported to the value “yes” when building Sage, GSL’s test suite is run.
License• GPL V3
Upstream Contact• http://www.gnu.org/software/gsl/
GSL mailing lists:• Bug-gsl <bug-gsl@gnu.org> mailing list – bug reports for the GNU Scientific Library should be sent tobug-gsl@gnu.org• Help-gsl <help-gsl@gnu.org> users mailing list – for questions about installation, how GSL works and how it isused, or general questions concerning GSL.
• Info-gsl <info-gsl@gnu.org> mailing list – announcements of new releases are made there.
Special Update/Build Instructions
Typestandard

6.1. Details of external packages

235

Packages and Features, Release 10.4

Dependencies• $(BLAS)• pkgconf: An implementation of the pkg-config spec
Version Information
package-version.txt:
2.7.1

Equivalent System Packages$ apk add gsl-dev$ sudo pacman -S gsl$ conda install gsl$ apt-cyg install libgsl-devel$ sudo apt-get install libgsl-dev$ sudo yum install gsl gsl-devel$ sudo pkg install math/gsl$ sudo emerge sci-libs/gsl$ brew install gsl$ sudo port install gsl$ nix-env --install gsl$ sudo zypper install pkgconfig\(gsl\)

install the following packages: libgsl$ sudo slackpkg install gsl$ sudo xbps-install gsl-devel

See https://repology.org/project/gsl/versions
If the system package is installed, ./configure will check if it can be used.

236

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.135 h11: A pure-Python, bring-your-own-I/O implementation of HTTP/1.1
Description
A pure-Python, bring-your-own-I/O implementation of HTTP/1.1
LicenseMIT
Upstream Contact
https://pypi.org/project/h11/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.14.0version_requirements.txt:
h11

Equivalent System Packages(none known)

6.1.136 hatchling: Modern, extensible Python build backend
Description
Modern, extensible Python build backend

6.1. Details of external packages

237

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/hatchling/Type
standard
Dependencies• $(PYTHON)• editables: Editable installations• packaging: Core utilities for Python packages• pathspec: Utility library for gitignore style pattern matching of file paths• pip: Tool for installing and managing Python packages• pluggy: Plugin and hook calling mechanisms for python• tomli: A lil’ TOML parser• trove_classifiers: Canonical source for classifiers on PyPI (pypi.org)
Version Information
package-version.txt:
1.22.5version_requirements.txt:
hatchling

Equivalent System Packages$ conda install hatchling$ sudo emerge dev-python/hatchling

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

238

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.137 httpcore: Minimal low-level HTTP client
Description
Minimal low-level HTTP client
License
Upstream Contact
https://pypi.org/project/httpcore/Typestandard
Dependencies• $(PYTHON)• certifi: Python package for providing Mozilla’s CA Bundle• h11: A pure-Python, bring-your-own-I/O implementation of HTTP/1.1• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.0.5

version_requirements.txt:
httpcore

Equivalent System Packages(none known)

6.1.138 httpx: The next generation HTTP client.
Description
The next generation HTTP client.

6.1. Details of external packages

239

Packages and Features, Release 10.4

License
Upstream Contact
https://pypi.org/project/httpx/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• anyio: High level compatibility layer for multiple asynchronous event loop implementations• httpcore: Minimal low-level HTTP client• sniffio: Sniff out which async library your code is running under
Version Information
package-version.txt:
0.27.0version_requirements.txt:
httpxEquivalent System Packages(none known)

6.1.139 hypothesis: A library for property-based testing
Description
A library for property-based testing

240

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMPL-2.0
Upstream Contact
https://pypi.org/project/hypothesis/
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• attrs: Decorator for Python classes with attributes
Version Information
requirements.txt:
hypothesis

Equivalent System Packages(none known)

6.1.140 iconv: Library for language/country-dependent character encodings
Description
GNU libiconv is a library that is used to enable different languages, with different characters to be handled properly.
License• GPL 3 and LGPL 3. So we can safely link against the library in Sage.

6.1. Details of external packages

241

Packages and Features, Release 10.4

Upstream Contact• http://www.gnu.org/software/libiconv/• Bug reports to bug-gnu-libiconv@gnu.org
Typestandard
Dependencies
Version Information
Equivalent System Packages$ apt-cyg install libiconv-devel$ brew install libiconv$ sudo port install libiconv

install the following packages: libiconv
See https://repology.org/project/libiconv/versions
If the system package is installed, ./configure will check if it can be used.

6.1.141 idna: Internationalized Domain Names in Applications (IDNA)
Description
Internationalized Domain Names in Applications (IDNA)
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/idna/242

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
3.7

version_requirements.txt:
idna

Equivalent System Packages$ sudo pacman -S python-idna$ conda install idna
$ sudo apt-get install python3-idna$ sudo yum install python-idna$ sudo emerge dev-python/idna$ sudo zypper install python3\$\{PYTHON_MINOR\}-idna$ sudo xbps-install python3-idna

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.142 igraph: A library for creating and manipulating graphs
Description
igraph is a library for creating and manipulating graphs. It is intended to be as powerful (ie. fast) as possible to enable
the analysis of large graphs.

6.1. Details of external packages

243

Packages and Features, Release 10.4

LicenseGPL version 2
Upstream Contact
http://igraph.org/c/
Dependencies
igraph can optionally use libxml2 for providing a GraphML importer.
Special Update/Build Instructions
Typeoptional
Dependencies• $(BLAS)• $(MP_LIBRARY)• cmake: A cross-platform build system generator• glpk: GNU Linear Programming Kit
Version Information
package-version.txt:
0.10.12Equivalent System Packages$ sudo pacman -S igraph$ conda install igraph$ sudo apt-get install libigraph-dev$ sudo yum install igraph igraph-devel$ sudo pkg install math/igraph$ sudo emerge dev-libs/igraph

244

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ brew install igraph$ sudo port install igraph$ sudo xbps-install igraph-devel

See https://repology.org/project/igraph/versions
If the system package is installed, ./configure will check if it can be used.

6.1.143 imagemagick: A collection of tools and libraries for many image file formats
Description
A collection of tools and libraries for many image file formats
LicenseCopyright [yyyy] [name of copyright owner]
Licensed under the ImageMagick License (the “License”); you may not use this file except in compliance with the License.
You may obtain a copy of the License athttps://imagemagick.org/script/license.php
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “ASIS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
for the specific language governing permissions and limitations under the License.
Upstream Contact
http://www.imagemagick.org/
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add imagemagick$ sudo pacman -S imagemagick$ conda install imagemagick

6.1. Details of external packages

245

Packages and Features, Release 10.4

$ apt-cyg install ImageMagick$ sudo apt-get install imagemagick$ sudo yum install ImageMagick$ sudo pkg install graphics/ImageMagick7$ brew install imagemagick$ sudo port install ImageMagick$ nix-env --install imagemagick$ sudo zypper install ImageMagick$ sudo xbps-install ImageMagick

See https://repology.org/project/imagemagick/versions
If the system package is installed, ./configure will check if it can be used.

6.1.144 imagesize: Getting image size from png/jpeg/jpeg2000/gif file
Description
Getting image size from png/jpeg/jpeg2000/gif file
LicenseMIT
Upstream Contact
https://pypi.org/project/imagesize/Typestandard

246

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.4.1

version_requirements.txt:
imagesize

Equivalent System Packages$ conda install imagesize$ sudo emerge dev-python/imagesize$ sudo port install py-imagesize$ sudo xbps-install python3-imagesize

See https://repology.org/project/python:imagesize/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.145 iml: Integer Matrix Library
Description
IML is a free library of C source code which implements algorithms for computing exact solutions to dense systems oflinear equations over the integers. IML is designed to be used with the ATLAS/BLAS library and GMP bignum library.
Written in portable C, IML can be used on both 32-bit and 64-bit machines. It can be called from C++.
Website: https://www.cs.uwaterloo.ca/ astorjoh/iml.html
License• GPLv2+

6.1. Details of external packages

247

Packages and Features, Release 10.4

Upstream Contact• Zhuliang Chen z4chen@uwaterloo.ca• Arne Storjohann astorjoh@uwaterloo.ca
Special Update/Build Instructions• As of version 1.0.4, you need to repackage the upstream tarball using the spkg-src script because there was a bugfix
version of 1.0.4 reposted upstream without version number bump.
Patches• examples.patch: Modified some of the examples.
Typestandard
Dependencies• $(BLAS)• $(MP_LIBRARY)• pkgconf: An implementation of the pkg-config spec
Version Information
package-version.txt:
1.0.4p2.p2

Equivalent System Packages$ sudo pacman -S iml$ conda install iml$ sudo apt-get install libiml-dev$ sudo yum install iml iml-devel$ sudo pkg install math/iml$ sudo emerge sci-libs/iml

248

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ nix-env --install iml$ sudo zypper install iml-devel$ sudo xbps-install iml-devel

See https://repology.org/project/iml/versions
If the system package is installed, ./configure will check if it can be used.

6.1.146 importlib_metadata: Library to access the metadata for a Python package
Description
This is a backport package, supplying access to the functionality of importlib.metadata including improvements
added to subsequent Python versions.
LicenseApache Software License
Upstream Contact• https://pypi.org/project/importlib-metadata/• http://importlib-metadata.readthedocs.io/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages• tomli: A lil’ TOML parser• typing_extensions: Backported and Experimental Type Hints for Python 3.8+
• zipp: A pathlib-compatible zipfile object wrapper

6.1. Details of external packages

249

Packages and Features, Release 10.4

Version Information
package-version.txt:
7.0.1

version_requirements.txt:
importlib_metadata >=4.13; python_version< 3.11

Equivalent System Packages$ sudo pacman -S python-importlib-metadata$ conda install importlib_metadata$ sudo apt-get install python3-importlib-metadata$ sudo yum install python-importlib-metadata$ sudo pkg install devel/py-importlib-metadata$ sudo emerge dev-python/importlib_metadata$ sudo zypper install python3\$\{PYTHON_MINOR\}-importlib-metadata$ sudo xbps-install python3-importlib_metadata

See https://repology.org/project/python:importlib-metadata/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.147 importlib_resources: Read resources from Python packages
Description
Read resources from Python packages
LicenseApache2250

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/importlib-resources/Type
standard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages• zipp: A pathlib-compatible zipfile object wrapper
Version Information
package-version.txt:
6.1.1

version_requirements.txt:
importlib_resources >= 5.7; python_version< 3.11

Equivalent System Packages$ conda install importlib-resources$ sudo apt-get install python3-importlib-resources$ sudo emerge dev-python/importlib_resources

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.148 info: stand-alone Info documentation reader
Description
GNU Info is the stand-alone “info” reader that is part of the GNU Texinfo suite of tools. Several packages (Maxima,
Singular, …) install documentation in “info” format, which can be read either with Emacs, the stand-alone “info” reader,and some other software. In particular, the interactive help system of singular_console() uses the info programin environments in which a web browser is not available; if info is not installed, it falls back to a basic pager with limited
capabilities.
Website: https://www.gnu.org/software/texinfo/manual/info-stnd/info-stnd.html

6.1. Details of external packages

251

Packages and Features, Release 10.4

LicenseGPL-3+ (info/*.c comments in the source repository)Typestandard
Dependencies• ncurses: Classic terminal output library• xz: General-purpose data compression software
Version Information
package-version.txt:
7.0.3

Equivalent System Packages$ conda install texinfo$ apt-cyg install info
$ sudo apt-get install texinfo$ sudo yum install texinfo info
$ sudo emerge sys-apps/texinfo$ brew install texinfo$ sudo port install texinfo$ nix-env --install texinfo$ sudo zypper install texinfo$ sudo xbps-install texinfo

See https://repology.org/project/texinfo/versions
If the system package is installed, ./configure will check if it can be used.

252

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.149 ipykernel: IPython Kernel for Jupyter
Description
This package provides the IPython kernel for Jupyter.
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• appnope: Disable App Nap on macOS >= 10.9
• comm: Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc.
• debugpy: Implementation of the Debug Adapter Protocol for Python• hatchling: Modern, extensible Python build backend• ipython: Interactive computing environment with an enhanced interactive Python shell• jupyter_client: Jupyter protocol implementation and client libraries• jupyter_core: Jupyter core package• matplotlib_inline: Inline Matplotlib backend for Jupyter• nest_asyncio: Patch asyncio to allow nested event loops• packaging: Core utilities for Python packages• psutil: Cross-platform lib for process and system monitoring in Python.
• pyzmq: Python bindings for the zeromq networking library• tornado: Python web framework and asynchronous networking library• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
6.27.1

version_requirements.txt:
ipykernel >=5.2.1

6.1. Details of external packages

253

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-ipykernel$ conda install ipykernel$ sudo apt-get install python3-ipykernel$ sudo yum install python-ipykernel$ sudo pkg install devel/py-ipykernel$ sudo emerge dev-python/ipykernel$ sudo port install py-ipykernel$ sudo zypper install python3\$\{PYTHON_MINOR\}-ipykernel$ sudo xbps-install python3-ipython_ipykernel

See https://repology.org/project/python:ipykernel/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.150 ipympl: Matplotlib Jupyter Extension
Description
Matplotlib Jupyter Extension
LicenseBSD License
Upstream Contact
https://pypi.org/project/ipympl/
Typestandard

254

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ipython: Interactive computing environment with an enhanced interactive Python shell• ipython_genutils: Vestigial utilities from IPython• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• matplotlib: Python 2D plotting library• numpy: Package for scientific computing with Python• pillow: Python Imaging Library• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
0.9.3

version_requirements.txt:
ipymplEquivalent System Packages$ sudo pacman -S python-ipympl$ conda install ipympl$ sudo pkg install devel/py-ipympl$ sudo port install py-ipympl

See https://repology.org/project/python:ipympl/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.151 ipython: Interactive computing environment with an enhanced interactive
Python shell
Description
Interactive computing environment with an enhanced interactive Python shell
From the IPython website:
IPython is a multiplatform, Free Software project (BSD licensed) that offers:

6.1. Details of external packages

255

Packages and Features, Release 10.4

• An enhanced Python shell designed for efficient interactive work. It includes many enhancements over the default
Python shell, including the ability for controlling interactively all major GUI toolkits in a non-blocking manner.
• A library to build customized interactive environments using Python as the basic language (but with the possibilityof having extended or alternate syntaxes).
• A system for interactive distributed and parallel computing (this is part of IPython’s new development).
License
BSD
Upstream Contact
http://ipython.org
ipython-dev@scipy.org
ipython-user@scipy.org
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• decorator: Python library providing decorators• exceptiongroup: Backport of PEP 654 (exception groups)• jedi: Static analysis tool providing IDE support for Python• matplotlib_inline: Inline Matplotlib backend for Jupyter• pexpect: Python module for controlling and automating other programs• pickleshare: A ‘shelve’ like datastore with concurrency support• prompt_toolkit: Interactive command lines for Python• pygments: Generic syntax highlighter• pyzmq: Python bindings for the zeromq networking library• stack_data: Extract data from python stack frames and tracebacks for informative displays• tornado: Python web framework and asynchronous networking library• traitlets: Traitlets Python configuration system• wcwidth: Measures the displayed width of unicode strings in a terminal

256

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
8.18.1

version_requirements.txt:
ipython >=7.13.0

Equivalent System Packages$ sudo pacman -S ipython$ conda install ipython$ sudo apt-get install python3-ipython$ sudo yum install ipython$ sudo pkg install devel/ipython$ sudo emerge dev-python/ipython$ brew install ipython$ sudo port install py-ipython$ sudo zypper install python3\$\{PYTHON_MINOR\}-ipython$ sudo xbps-install python3-ipython

See https://repology.org/project/ipython/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.152 ipython_genutils: Vestigial utilities from IPython
Description
Vestigial utilities from IPython

6.1. Details of external packages

257

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.2.0

version_requirements.txt:
ipython_genutils >=0.2.0

Equivalent System Packages$ conda install ipython_genutils$ sudo emerge dev-python/ipython_genutils$ sudo port install py-ipython_genutils$ sudo xbps-install python3-ipython_genutils

See https://repology.org/project/python:ipython-genutils/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.153 ipywidgets: Interactive HTML widgets for Jupyter notebooks and the
IPython kernel
Description
Interactive HTML widgets for Jupyter notebooks and the IPython kernel.

258

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• comm: Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc.
• ipykernel: IPython Kernel for Jupyter• ipython: Interactive computing environment with an enhanced interactive Python shell• jupyterlab_widgets: Jupyter interactive widgets for JupyterLab• traitlets: Traitlets Python configuration system• widgetsnbextension: Jupyter interactive widgets for Jupyter Notebook
Version Information
package-version.txt:
8.1.1

version_requirements.txt:
ipywidgets >=7.5.1

Equivalent System Packages$ conda install ipywidgets\>=7.5.1$ sudo emerge dev-python/ipywidgets$ sudo port install py-ipywidgets$ sudo xbps-install python3-jupyter_ipywidgets

See https://repology.org/project/python:ipywidgets/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

259

Packages and Features, Release 10.4

6.1.154 isl: Sets and relations of integer points bounded by affine constraints
Description
isl is a thread-safe C library for manipulating sets and relations of integer points bounded by affine constraints. The
descriptions of the sets and relations may involve both parameters and existentially quantified variables. All computations
are performed in exact integer arithmetic using GMP.
Licenseisl is released under the MIT license, but depends on the LGPL GMP library.
Upstream Contact• http://groups.google.com/group/isl-development
Citation@incollection{Verdoolaege2010isl,
author = {Verdoolaege, Sven},title = {isl: An Integer Set Library for the Polyhedral Model},booktitle = {Mathematical Software - ICMS 2010},
series = {Lecture Notes in Computer Science},
editor = {Fukuda, Komei and Hoeven, Joris and Joswig, Michael and
Takayama, Nobuki},
publisher = {Springer},isbn = {978-3-642-15581-9},
pages = {299-302},
volume = {6327},
year = {2010}}Type
optional
Dependencies• $(MP_LIBRARY)

260

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.20

Equivalent System Packages$ conda install isl$ apt-cyg install libisl-devel$ sudo apt-get install libisl-dev$ sudo yum install isl-devel$ sudo pkg install devel/isl$ sudo emerge dev-libs/isl$ brew install isl$ sudo port install isl$ sudo zypper install pkgconfig\(isl\)$ sudo xbps-install isl-devel

See https://repology.org/project/isl/versions
If the system package is installed, ./configure will check if it can be used.

6.1.155 isoduration: Operations with ISO 8601 durations
Description
Operations with ISO 8601 durations
License
Upstream Contact
https://pypi.org/project/isoduration/

6.1. Details of external packages

261

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• arrow: Better dates & times for Python
Version Information
package-version.txt:
20.11.0

version_requirements.txt:
isoduration

Equivalent System Packages(none known)

6.1.156 jedi: Static analysis tool providing IDE support for Python
Description
Jedi is a static analysis tool for Python that is typically used in IDEs/editors plugins. Jedi has a focus on autocompletionand goto functionality. Other features include refactoring, code search and finding references.
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• parso: Python Parser

262

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.19.1

version_requirements.txt:
jedi >=0.17.0

Equivalent System Packages$ conda install jedi
$ sudo emerge dev-python/jedi$ sudo port install py-jedi$ sudo xbps-install python3-jedi

See https://repology.org/project/jedi/versions, https://repology.org/project/python:jedi/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.157 jinja2: General purpose template engine for Python
Description
Jinja2 is a library for Python 2.4 and onwards that is designed to be flexible, fast and secure.
If you have any exposure to other text-based template languages, such as Smarty or Django, you should feel right at homewith Jinja2. It’s both designer and developer friendly by sticking to Python’s principles and adding functionality useful for
templating environments.
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/Jinja2/

6.1. Details of external packages

263

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• markupsafe: Safely add untrusted strings to HTML/XML markup• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
3.1.4

version_requirements.txt:
jinja2 >=3.0

Equivalent System Packages$ conda install jinja2$ sudo apt-get install python3-jinja2$ sudo yum install python-jinja2$ sudo emerge dev-python/jinja$ sudo port install py-jinja2$ sudo zypper install python3\$\{PYTHON_MINOR\}-jinja2$ sudo xbps-install python3-Jinja2

See https://repology.org/project/python:jinja2/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

264

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.158 jmol: Java viewer for chemical structures in 3D
Description
Java viewer for chemical structures in 3D.
This provides files necessary for Jmol (java).
This package does not install JSmol (javascript), which upstream bundles with Jmol.
LicenseGPLv2+
Upstream Contact• http://jmol.sourceforge.net• Bob Hanson• e-mail: hansonr@stolaf.edu• Homepage: https://www.stolaf.edu/people/hansonr/• Development page: https://github.com/BobHanson/Jmol-SwingJS• Download page: https://sourceforge.net/projects/jmol/files/Jmol/
Dependencies
No build-time dependencies.
The commandline jmol requires java at runtime.
Special Build Instructions
To avoid depending on unzip at build time, we have to repack the tarball, see spkg-src. We take the opportunity toremove some unnecessary subdirectories, see http://wiki.jmol.org/index.php/Jmol_JavaScript_Object#In_detailTypestandard
Dependencies
Version Information
package-version.txt:
14.29.52

6.1. Details of external packages

265

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S jmol
$ conda install jmol
$ sudo port install jmol
$ nix-env --install jmol
$ sudo zypper install jmol
$ sudo xbps-install jmol

See https://repology.org/project/jmol/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.159 json5: Python implementation of the JSON5 data format
Description
Python implementation of the JSON5 data format
LicenseApache
Upstream Contact
https://pypi.org/project/json5/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)

266

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.9.14version_requirements.txt:
json5

Equivalent System Packages(none known)

6.1.160 jsonpointer: Identify specific nodes in a JSON document (RFC 6901)
Description
Identify specific nodes in a JSON document (RFC 6901)
LicenseModified BSD License
Upstream Contact
https://pypi.org/project/jsonpointer/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.4

version_requirements.txt:
jsonpointer6.1. Details of external packages

267

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.161 jsonschema: Python implementation of JSON Schema
Description
jsonschema is an implementation of JSON Schema for Python
LicenseMIT License
Upstream Contact
Home page: http://github.com/Julian/jsonschemaTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• attrs: Decorator for Python classes with attributes• fqdn: Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers• isoduration: Operations with ISO 8601 durations• jsonpointer: Identify specific nodes in a JSON document (RFC 6901)• jsonschema_specifications: The JSON Schema meta-schemas and vocabularies, exposed as a Registry• pyrsistent: Persistent data structures in Python• uri_template: RFC 6570 URI Template Processor• webcolors: Library for working with the color formats defined by HTML and CSS

268

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
4.17.3version_requirements.txt:
jsonschema >=3.2.0

Equivalent System Packages$ sudo pacman -S python-jsonschema$ conda install jsonschema$ sudo apt-get install python3-jsonschema$ sudo yum install python-jsonschema$ sudo emerge dev-python/jsonschema$ sudo port install py-jsonschema$ sudo zypper install python3\$\{PYTHON_MINOR\}-jsonschema$ sudo xbps-install python3-jsonschema

See https://repology.org/project/python:jsonschema/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.162 jsonschema_specifications: The JSON Schema meta-schemas and vocabularies, exposed as a Registry
Description
The JSON Schema meta-schemas and vocabularies, exposed as a Registry
LicenseMIT

6.1. Details of external packages

269

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/jsonschema-specifications/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• referencing: JSON Referencing + Python
Version Information
package-version.txt:
2023.3.3

version_requirements.txt:
jsonschema-specifications

Equivalent System Packages(none known)

6.1.163 jupymake: A Python wrapper for the polymake shell
Description
The Python module JuPyMake provides an interface to polymake.
License• GPL v2

270

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://github.com/polymake/JuPyMake
Special Update/Build Instructions
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• polymake: Computations with polyhedra, fans, simplicial complexes, matroids, graphs, tropical hypersurfaces
Version Information
package-version.txt:
0.9

version_requirements.txt:
jupymake >=0.9

Equivalent System Packages
See https://repology.org/project/jupymake/versions, https://repology.org/project/python:jupymake/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.164 jupyter_client: Jupyter protocol implementation and client libraries
Description
Jupyter protocol implementation and client libraries

6.1. Details of external packages

271

Packages and Features, Release 10.4

LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/jupyter-client/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• dateutil: Extensions to the standard Python module datetime• importlib_metadata: Library to access the metadata for a Python package• jupyter_core: Jupyter core package• pyzmq: Python bindings for the zeromq networking library• tornado: Python web framework and asynchronous networking library• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
8.3.1

version_requirements.txt:
jupyter-client

Equivalent System Packages$ conda install jupyter_client$ sudo emerge dev-python/jupyter_client$ sudo port install py-jupyter_client$ sudo zypper install python3\$\{PYTHON_MINOR\}-jupyter-client$ sudo xbps-install python3-jupyter_client

272

Chapter 6. All External Packages

Packages and Features, Release 10.4

See https://repology.org/project/jupyter-client/versions, https://repology.org/project/python:jupyter-client/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.165 jupyter_core: Jupyter core package
Description
Jupyter core package. A base package on which Jupyter projects rely.
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• hatchling: Modern, extensible Python build backend• platformdirs: Small Python package for determining appropriate platform-specific dirs, e.g. a “user data dir”
• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
5.3.2

Equivalent System Packages$ conda install jupyter_core$ sudo emerge dev-python/jupyter_core$ sudo port install py-jupyter_core$ sudo zypper install python3\$\{PYTHON_MINOR\}-jupyter-core$ sudo xbps-install python3-jupyter_core

See https://repology.org/project/jupyter-core/versions, https://repology.org/project/python:jupyter-core/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

273

Packages and Features, Release 10.4

6.1.166 jupyter_events: Jupyter Event System library
Description
Jupyter Event System library
LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/jupyter-events/Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• jsonschema: Python implementation of JSON Schema• python_json_logger: Python library adding a json log formatter• pyyaml: YAML parser and emitter for Python• referencing: JSON Referencing + Python• rfc3339_validator: A pure python RFC3339 validator• rfc3986_validator: Pure python rfc3986 validator
Version Information
package-version.txt:
0.6.3

version_requirements.txt:
jupyter-events

274

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.167 jupyter_jsmol: JSmol viewer widget for Jupyter
Description
JSmol viewer widget for Jupyter
LicenseMIT
Upstream Contact
https://pypi.org/project/jupyter-jsmol/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel
Version Information
package-version.txt:
2022.1.0

version_requirements.txt:
jupyter-jsmol

6.1. Details of external packages

275

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S jupyter-jsmol$ conda install jupyter-jsmol$ sudo pkg install science/py-jupyter_jsmol

See https://repology.org/project/jupyter-jsmol/versions, https://repology.org/project/python:jupyter-jsmol/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.168 jupyter_lsp: Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server
Description
Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/jupyter-lsp/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• jupyter_server: The backend (core services, APIs, REST endpoints) to Jupyter web applications
Version Information
package-version.txt:
2.2.0

version_requirements.txt:
jupyter-lsp

276

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.169 jupyter_server: The backend (core services, APIs, REST endpoints) to
Jupyter web applications
Description
The backend, i.e., core services, APIs, and REST endpoints, to Jupyter web applications.
LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/jupyter-server/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• anyio: High level compatibility layer for multiple asynchronous event loop implementations• argon2_cffi: The secure Argon2 password hashing algorithm• jinja2: General purpose template engine for Python• jupyter_client: Jupyter protocol implementation and client libraries• jupyter_core: Jupyter core package• jupyter_events: Jupyter Event System library• jupyter_server_terminals: A Jupyter Server Extension Providing Terminals• nbconvert: Converting Jupyter Notebooks• nbformat: The Jupyter Notebook format• overrides: Decorator to automatically detect mismatch when overriding a method• platformdirs: Small Python package for determining appropriate platform-specific dirs, e.g. a “user data dir”
• prometheus_client: Python client for the systems monitoring and alerting toolkit Prometheus• pyzmq: Python bindings for the zeromq networking library• send2trash: Send file to trash natively under Mac OS X, Windows and Linux6.1. Details of external packages

277

Packages and Features, Release 10.4

• terminado: Tornado websocket backend for the term.js Javascript terminal emulator library• tornado: Python web framework and asynchronous networking library• traitlets: Traitlets Python configuration system• websocket_client: WebSocket client for Python with low level API options
Version Information
package-version.txt:
2.7.3

version_requirements.txt:
jupyter-server

Equivalent System Packages(none known)

6.1.170 jupyter_server_terminals: A Jupyter Server Extension Providing Terminals
Description
A Jupyter Server Extension Providing Terminals.
LicenseModified BSD License (also known as New or Revised or 3-Clause BSD)
Upstream Contact
https://pypi.org/project/jupyter-server-terminals/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• terminado: Tornado websocket backend for the term.js Javascript terminal emulator library

278

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.4.4

version_requirements.txt:
jupyter-server-terminals

Equivalent System Packages(none known)

6.1.171 jupyter_sphinx: Jupyter Sphinx Extension
Description
Jupyter Sphinx Extension
License
BSD
Upstream Contact
https://pypi.org/project/jupyter-sphinx/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ipython: Interactive computing environment with an enhanced interactive Python shell• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• nbconvert: Converting Jupyter Notebooks• nbformat: The Jupyter Notebook format• sphinx: Python documentation generator

6.1. Details of external packages

279

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.5.3.p0

version_requirements.txt:
jupyter-sphinx

Equivalent System Packages$ sudo pacman -S python-jupyter-sphinx$ conda install jupyter_sphinx$ sudo yum install python-jupyter-sphinx$ sudo pkg install textproc/py-jupyter_sphinx$ sudo port install py-jupyter_sphinx$ sudo zypper install python-jupyter-sphinx

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.172 jupyterlab: JupyterLab computational environment
Description
JupyterLab computational environment
LicenseCopyright (c) 2015-2022 Project Jupyter Contributors All rights reserved. Redistribution and use in source and binary
forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions ofsource code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions
in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the namesof its contributors may be used to endorse or promote products derived from this software without specific prior written
permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANYWAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
280

Chapter 6. All External Packages

Packages and Features, Release 10.4

Semver File License: The semver.py file is from https://github.com/podhmo/python-semver which is licensed under the“MIT” license. See the semver.py file for details.
Upstream Contact
https://pypi.org/project/jupyterlab/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• async_lru: Simple LRU cache for asyncio• httpx: The next generation HTTP client.
• importlib_metadata: Library to access the metadata for a Python package• ipykernel: IPython Kernel for Jupyter• jinja2: General purpose template engine for Python• jupyter_core: Jupyter core package• jupyter_lsp: Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server• jupyter_server: The backend (core services, APIs, REST endpoints) to Jupyter web applications• jupyterlab_server: Set of server components for JupyterLab and JupyterLab like applications• notebook_shim: A shim layer for notebook traits and config• packaging: Core utilities for Python packages• tomli: A lil’ TOML parser• tornado: Python web framework and asynchronous networking library• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
4.1.3

version_requirements.txt:
jupyterlab

6.1. Details of external packages

281

Packages and Features, Release 10.4

Equivalent System Packages$ conda install jupyterlab$ brew install jupyterlab$ sudo port install py-jupyterlab$ sudo xbps-install jupyterlab

See https://repology.org/project/jupyterlab/versions, https://repology.org/project/python:jupyterlab/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.173 jupyterlab_mathjax2: A MathJax Typesetting provider for JupyterLab 4 andabove
Description
A MathJax Typesetting provider for JupyterLab 4 and above
LicenseBSD 3-Clause License Copyright (c) 2023, Project Jupyter All rights reserved. Redistribution and use in source andbinary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyrightholder nor the names of its contributors may be used to endorse or promote products derived from this software without
specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITEDTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORYOF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
Upstream Contact
https://pypi.org/project/jupyterlab-mathjax2/

282

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
4.0.0

version_requirements.txt:
jupyterlab-mathjax2

Equivalent System Packages(none known)

6.1.174 jupyterlab_pygments: Pygments theme using JupyterLab CSS variables
Description
Pygments theme using JupyterLab CSS variables
License
BSD
Upstream Contact
https://pypi.org/project/jupyterlab-pygments/Type
standard

6.1. Details of external packages

283

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pygments: Generic syntax highlighter
Version Information
package-version.txt:
0.2.2

version_requirements.txt:
jupyterlab-pygments

Equivalent System Packages$ conda install jupyterlab_pygments$ sudo emerge dev-python/jupyterlab_pygments$ sudo xbps-install python3-jupyterlab_pygments

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.175 jupyterlab_server: Set of server components for JupyterLab and JupyterLab like applications
Description
Set of server components for JupyterLab and JupyterLab like applications
LicenseCopyright (c) 2015-2017, Project Jupyter Contributors All rights reserved. Redistribution and use in source and binary
forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions ofsource code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions
in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the namesof its contributors may be used to endorse or promote products derived from this software without specific prior written
permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS”
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
284

Chapter 6. All External Packages

Packages and Features, Release 10.4

CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANYWAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Upstream Contact
https://pypi.org/project/jupyterlab-server/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• babel: Internationalization utilities• json5: Python implementation of the JSON5 data format• jsonschema: Python implementation of JSON Schema• jupyter_events: Jupyter Event System library• jupyter_server: The backend (core services, APIs, REST endpoints) to Jupyter web applications• requests: An HTTP library for Python
Version Information
package-version.txt:
2.24.0version_requirements.txt:
jupyterlab-server

Equivalent System Packages(none known)

6.1.176 jupyterlab_widgets: Jupyter interactive widgets for JupyterLab
Description
Jupyter interactive widgets for JupyterLab

6.1. Details of external packages

285

Packages and Features, Release 10.4

LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/jupyterlab-widgets/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
3.0.9

version_requirements.txt:
jupyterlab-widgets

Equivalent System Packages$ sudo pacman -S jupyterlab-widgets$ sudo pkg install devel/py-jupyterlab-widgets$ sudo port install py-jupyterlab_widgets$ sudo zypper install python3\$\{PYTHON_MINOR\}-jupyterlab-widgets

See https://repology.org/project/jupyterlab-widgets/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

286

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.177 kenzo: Construct topological spaces and compute homology groups
Description
Kenzo is a package to compute properties (mainly homology groups) of topological spaces. It allows defining spaces
created from others by constuctions like loop spaces, classifying spaces and so on.
LicenseGPL
Upstream Contact• https://github.com/gheber/kenzo• https://github.com/miguelmarco/kenzo/
Typeoptional
Dependencies• ecl: An implementation of the Common Lisp language
Version Information
package-version.txt:
1.1.10Equivalent System Packages
See https://repology.org/project/kenzo/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.178 kissat: SAT solver
Description
From the package README:KISSAT is a "keep it simple and clean bare metal SAT solver" written in C.
It is a port of CaDiCaL back to C with improved data structures, betterscheduling of inprocessing and optimized algorithms and implementation.
Coincidentallykissatalso means

6.1. Details of external packagescats

in Finnish.

287

Packages and Features, Release 10.4

From the website:
The Kissat SAT solver is a condensed and improved reimplementation of
CaDiCaL in C.
Kissat won first place in the main track of the SAT Competition 2020 and
first place on unsatisfiable instances.

LicenseMIT license.
Upstream Contact
Website: http://fmv.jku.at/kissat/
Typeoptional
Dependencies
Version Information
package-version.txt:
3.1.0

Equivalent System Packages$ sudo yum install kissat$ sudo emerge sci-mathematics/kissat$ nix-env --install kissat

See https://repology.org/project/kissat/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

288

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.179 kiwisolver: Fast implementation of the Cassowary constraint solver
Description
From https://pypi.org/project/kiwisolver/
A fast implementation of the Cassowary constraint solver
Kiwi is an efficient C++ implementation of the Cassowary constraint solving algorithm. Kiwi is an implementation of
the algorithm based on the seminal Cassowary paper. It is not a refactoring of the original C++ solver. Kiwi has been
designed from the ground up to be lightweight and fast. Kiwi ranges from 10x to 500x faster than the original Cassowary
solver with typical use cases gaining a 40x improvement. Memory savings are consistently > 5x.
In addition to the C++ solver, Kiwi ships with hand-rolled Python bindings.
LicenseModified BSD License
Upstream Contact
https://github.com/nucleic/kiwiTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cppy: C++ headers for C extension development
Version Information
package-version.txt:
1.4.5

version_requirements.txt:
kiwisolver >=1.0.1

6.1. Details of external packages

289

Packages and Features, Release 10.4

Equivalent System Packages$ conda install kiwisolver$ sudo emerge dev-python/kiwisolver$ sudo port install py-kiwisolver$ sudo xbps-install python3-kiwisolver

See https://repology.org/project/python:kiwisolver/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.180 latte_int: Count lattice points, compute volumes, and integrate over convex
polytopes
Description
LattE (Lattice point Enumeration) Integrale solves the problems of counting lattice points in and integration over convex
polytopes.
LicenseGPLv2
Upstream Contact
Matthias Köppe, UC Davis, CA, USAType
optional
Dependencies• $(MP_LIBRARY)• 4ti2: Algebraic, geometric and combinatorial problems on linear spaces• cddlib: Double description method for polyhedral representation conversion• lidia: A library for computational number theory• ntl: A library for doing number theory

290

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.7.6

Equivalent System Packages$ sudo pacman -S latte-integrale$ conda install latte-integrale$ sudo zypper install latteSee https://repology.org/project/latte-integrale/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.181 lcalc: L-function calculator
Description
Michael Rubinstein’s L-function calculator.
License• LGPL V2+
Upstream contact
Michael Rubinstein <mrubinst@uwaterloo.ca>
Sources: http://oto.math.uwaterloo.ca/ mrubinst/L_function_public/L.html
Newer beta version 1.3 (not yet in Sage): http://code.google.com/p/l-calc/
Dependencies• GMP/MPIR• MPFR• PARI• GNU patch

6.1. Details of external packages

291

Packages and Features, Release 10.4

Special Update/Build Instructions• There is some garbage in the upstream sources which should be removed:
src/include/.Lexplicit_formula.h.swp
src/include/.Lvalue.h.swp
src/include/._.DS_Store
src/include/.DS_Store
src/include/Lexplicit_formula.h.swap.crap
src/include/Lvalue.h.bak
src/src/Makefile.old
src/src/.Makefile.old.swp
src/src/._.DS_Storesrc/src/.DS_Storesrc/src/.Lcommandline.ggo.swp
src/src/libLfunction.a• We (and apparently also upstream) currently don’t build Lcalc’s tests (see Makefile), hence there’s no spkg-check.
This might change in newer upstream versions.
• The original Makefile uses $(CC) to compile C++ (also using $(CCFLAGS)), which it defines to ‘g++’, and hardcodes ‘g++’ when linking the shared library. (It should use $(CXX) instead, which might *default* to ‘g++’.) We
now (lcalc-1.23.p10) patch the Makefile also to use $(CXX) for compiling and linking C++; $(CXX) now *defaults* to ‘g++’, and $(CC) to ‘gcc’, but both can be overridden by simply setting their respective environment
variables. (Same for $(INSTALL_DIR) btw.)
Patches• Makefile.patch:
We change a lot there, since Lcalc doesn’t have a ‘configure’ script, and hence the Makefile is supposed to be edited
to customize Lcalc (build options, locations of headers and libraries etc.). Besides that, we– put CXXFLAGS into Lcalc’s “CCFLAGS” used for compiling C++,– remove some stuff involving LDFLAGS1 and LDFLAGS2, setting just LDFLAGS,– use $(MAKE) instead of ‘make’ in the crude build receipts,– use CXXFLAG64 when linking the shared library,– now use $(CXX) for compiling and linking C++, which *defaults* to ‘g++’, but can be overridden by setting
the environment variable of the same name. ($(CC) now *defaults* to ‘gcc’, although currently not reallyused as far as I can see.)– $(INSTALL_DIR) can now be overridden by simply setting the environment variable of the same name.
• Lcommon.h.patch:Uncomment the definition of lcalc_to_double(const long double& x). (Necessary for GCC >= 4.6.0, cf. #10892.)
Comment from there: The reason is the following code horror from src/src/include/Lcommon.h: […] But somebody who is familiar with the codebase should really rewrite lcalc to not redefine the double() cast, thats just fragile
and will sooner or later again fail inside some system headers.
• pari-2.7.patch:
Various changes to port to newer versions of PARI.
• time.h.patch:

292

Chapter 6. All External Packages

Packages and Features, Release 10.4

(Patches src/include/Lcommandline_numbertheory.h) Include also <time.h> in Lcommandline_numbertheory.h(at least required on Cygwin, cf. #9845). This should get reported upstream.
• lcalc-1.23_default_parameters_1.patch: Make Lcalc (1.23) build with GCC 4.9
Type
standard
Dependencies• gengetopt: getopt_long parser generator• pari: Computer algebra system for fast computations in number theory
Version Information
package-version.txt:
2.0.5

Equivalent System Packages$ sudo pacman -S lcalc$ conda install lcalc$ sudo apt-get install lcalc liblfunction-dev$ sudo yum install L-function-devel L-function$ sudo pkg install math/lcalc$ sudo emerge sci-mathematics/lcalc$ nix-env --install lcalc$ sudo xbps-install lcalc-devel

See https://repology.org/project/lcalc/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

293

Packages and Features, Release 10.4

6.1.182 libatomic_ops: Access hardware-provided atomic memory update operations
Description
This package provides semi-portable access to hardware-provided atomic memory update operations on a number ofarchitectures.
License• MIT (core library) + GPL 2.0+ (gpl extension library)
Upstream Contact
https://github.com/ivmai/libatomic_ops/
Special Update/Build Instructions
None.
Type
standard
Dependencies
Version Information
package-version.txt:
7.8.2

Equivalent System Packages$ apk add libatomic_ops-dev$ sudo pacman -S libatomic_ops$ conda install libatomic_ops$ apt-cyg install libatomic_ops-devel$ sudo apt-get install libatomic-ops-dev$ sudo yum install libatomic_ops libatomic_ops-devel

294

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo pkg install devel/libatomic_ops$ sudo emerge dev-libs/libatomic_ops$ brew install libatomic_ops$ sudo port install libatomic_ops$ sudo zypper install pkgconfig\(atomic_ops\)$ sudo slackpkg install libatomic_ops$ sudo xbps-install libatomic_ops-devel

See https://repology.org/project/libatomic-ops/versions
If the system package is installed, ./configure will check if it can be used.

6.1.183 libbraiding: Computing with braids
Description
libbraiding is a library to compute several properties of braids, including centralizer and conjugacy check.
LicenseGPLv3+SPKG Maintainers• Miguel Marco
Upstream Contact
Miguel Marco (mmarco@unizar.es)Typestandard

6.1. Details of external packages

295

Packages and Features, Release 10.4

Dependencies
Version Information
package-version.txt:
1.2

Equivalent System Packages$ sudo pacman -S libbraiding$ conda install libbraiding$ sudo apt-get install libbraiding-dev$ sudo yum install libbraiding-devel$ sudo pkg install math/libbraiding$ sudo emerge sci-libs/libbraiding$ nix-env --install libbraiding$ sudo zypper install libbraiding-devel$ sudo xbps-install libbraiding-devel

See https://repology.org/project/libbraiding/versions
If the system package is installed, ./configure will check if it can be used.

6.1.184 libffi: A portable foreign-function interface library
Description
Compilers for high level languages generate code that follow certain conventions. These conventions are necessary, in part,for separate compilation to work. One such convention is the “calling convention”. The “calling convention” is essentiallya set of assumptions made by the compiler about where function arguments will be found on entry to a function. A “calling
convention” also specifies where the return value for a function is found.
Some programs may not know at the time of compilation what arguments are to be passed to a function. For instance, aninterpreter may be told at run-time about the number and types of arguments used to call a given function. Libffi can beused in such programs to provide a bridge from the interpreter program to compiled code.
The libffi library provides a portable, high level programming interface to various calling conventions. This allows a
programmer to call any function specified by a call interface description at run time.
FFI stands for Foreign Function Interface. A foreign function interface is the popular name for the interface that allows
code written in one language to call code written in another language. The libffi library really only provides the lowest,
machine dependent layer of a fully featured foreign function interface. A layer must exist above libffi that handles typeconversions for values passed between the two languages.
296

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicensePermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom theSoftware is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHTHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Upstream Contact• https://sourceware.org/libffi/• https://github.com/libffi/libffi
Typestandard
Dependencies
Version Information
package-version.txt:
3.2.1

Equivalent System Packages$ apk add libffi-dev$ conda install libffi$ apt-cyg install libffi-devel$ sudo apt-get install libffi-dev$ sudo yum install libffi libffi-devel$ sudo pkg install devel/libffi$ brew install libffi

6.1. Details of external packages

297

Packages and Features, Release 10.4

$ sudo port install libffi$ sudo zypper install pkgconfig\(libffi\)$ sudo slackpkg install libffi$ sudo xbps-install libffi-devel

See https://repology.org/project/libffi/versions
If the system package is installed, ./configure will check if it can be used.

6.1.185 libgd: Dynamic graphics generation tool
Description
GD is an open source code library for the dynamic creation of images by programmers. GD is written in C, and “wrappers”
are available for Perl, PHP and other languages. GD creates PNG, JPEG, GIF, WebP, XPM, BMP images, among otherformats. GD is commonly used to generate charts, graphics, thumbnails, and most anything else, on the fly. While not
restricted to use on the web, the most common applications of GD involve website development.
License• Custom (BSD-ish)
Upstream Contact• https://libgd.github.io• Pierre Joye (http://blog.thepimp.net)• https://github.com/libgd/libgd
Typestandard
Dependencies• libpng: Bitmap image support• xz: General-purpose data compression software

298

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
2.3.3

Equivalent System Packages$ apk add gd-dev$ sudo pacman -S gd$ conda install libgd$ apt-cyg install libgd-devel$ sudo apt-get install libgd-dev$ sudo yum install gd gd-devel$ sudo pkg install graphics/gd$ sudo emerge media-libs/gd$ brew install gd

No package needed.
$ nix-env --install gd$ sudo zypper install gd pkgconfig\(gdlib\)$ sudo slackpkg install gd fontconfig libXpm libX11 libxcb libXau \libXdmcp$ sudo xbps-install gd-devel

See https://repology.org/project/gd/versions
If the system package is installed, ./configure will check if it can be used.

6.1.186 libgraphviz: Graph visualization software (callable library)
Description
Graphviz is open source graph visualization software. It has several main graph layout programs. They take descriptionsof graphs in a simple text language, and make diagrams in several useful formats.
This script package represents the callable library.

6.1. Details of external packages

299

Packages and Features, Release 10.4

LicenseEclipse Public License 1.0
Upstream Contact
https://graphviz.org/about/Type
optional
Dependencies
Version Information
Equivalent System Packages$ apk add graphviz-dev$ sudo pacman -S graphviz$ conda install graphviz$ apt-cyg install graphviz$ sudo apt-get install libgraphviz-dev$ sudo yum install graphviz$ sudo pkg install graphics/graphviz$ brew install graphviz$ sudo port install graphviz$ nix-env --install graphviz$ sudo zypper install graphviz$ sudo xbps-install graphviz

See https://repology.org/project/graphviz/versions
If the system package is installed, ./configure will check if it can be used.

300

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.187 libhomfly: Compute the homfly polynomial of knots and links
Description
libhomfly is a library to compute the homfly polynomial of knots and links.
LicensePublic domain
SPKG Maintainers• Miguel Marco
Upstream Contact
Miguel Marco (mmarco@unizar.es)Typestandard
Dependencies• gc: The Boehm-Demers-Weiser conservative garbage collector
Version Information
package-version.txt:
1.02r6Equivalent System Packages$ sudo pacman -S libhomfly$ conda install libhomfly$ sudo apt-get install libhomfly-dev$ sudo yum install libhomfly-devel$ sudo pkg install math/libhomfly$ sudo emerge sci-libs/libhomfly

6.1. Details of external packages

301

Packages and Features, Release 10.4

$ nix-env --install libhomfly$ sudo zypper install libhomfly-devel$ sudo xbps-install libhomfly-devel

See https://repology.org/project/libhomfly/versions, https://repology.org/project/llibhomfly/versions
If the system package is installed, ./configure will check if it can be used.

6.1.188 libjpeg: JPEG image support
Description
This dummy package represents the image library libjpeg.
We do not have an SPKG for it. The purpose of this dummy package is to associate system package lists with it.
If the system package is installed, the package pillow will include support for JPEG images.
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add libjpeg-turbo-dev$ sudo pacman -S libjpeg-turbo$ sudo apt-get install libjpeg-dev$ sudo yum install libjpeg-turbo-devel$ sudo emerge media-libs/libjpeg-turbo$ brew install jpeg-turbo$ nix-env --install libjpeg-turbo$ sudo zypper install libjpeg-devel$ sudo slackpkg install libjpeg-turbo

302

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo xbps-install libjpeg-turbo-devel

If the system package is installed, ./configure will check if it can be used.

6.1.189 liblzma: General-purpose data compression software
Description
This packages represents liblzma, a part of XZ Utils, the free general-purpose data compression software with a highcompression ratio.
LicenseSome parts public domain, other parts GNU LGPLv2.1, GNU GPLv2, or GNU GPLv3.
Upstream Contact
http://tukaani.org/xz/
Typestandard
Dependencies
Version Information
package-version.txt:
5.2.5

Equivalent System Packages$ apk add xz-dev$ conda install xz$ apt-cyg install xz liblzma-devel$ sudo apt-get install xz-utils liblzma-dev$ sudo yum install xz xz-devel$ brew install xz

6.1. Details of external packages

303

Packages and Features, Release 10.4

$ sudo port install xz$ sudo zypper install xz pkgconfig\(liblzma\)

install the following packages: liblzma$ sudo slackpkg install xz$ sudo xbps-install xz liblzma-devel

See https://repology.org/project/xz/versions
If the system package is installed, ./configure will check if it can be used.

6.1.190 libnauty: Find automorphism groups of graphs, generate non-isomorphic
graphs (callable library)
Description
Nauty has various tools for finding the automorphism group of a graph, generating non-isomorphic graphs with certain
properties, etc.
This script package represents the callable library of nauty.
LicenseSince version 2.6, nauty license is GPL-compatible, see
http://users.cecs.anu.edu.au/ bdm/nauty/COPYRIGHT.txt(a copy of this file, called COPYRIGHT, is also present in the tarball)Special Packaging Instruction
Upstream distribute tarball named nauty${version}.tar.gz. We cannot deal with that so rename it nauty-${version}.tar.gz(notice the “-”) without any changes.
Upstream Contact
Brendan D. McKay Computer Science Department Australian National University bdm@cs.anu.edu.au
Adolfo Piperno Dipartimento di Informatica Sapienza - Università di Roma piperno@di.uniroma1.it
See http://cs.anu.edu.au/ bdm/nauty/ or http://pallini.di.uniroma1.it/

304

Chapter 6. All External Packages

Packages and Features, Release 10.4

Type
optional
Dependencies
Version Information
Equivalent System Packages$ sudo apt-get install libnauty-dev$ sudo yum install libnauty-devel$ brew install nauty$ sudo port install nauty$ sudo xbps-install nauty-devel

See https://repology.org/project/nauty/versions
If the system package is installed, ./configure will check if it can be used.

6.1.191 libogg: Library for the Ogg multimedia container format
Description
libogg is the official reference library for the Ogg multimedia container format, and the native file and stream format for
the Xiph.org multimedia codecs. As with all Xiph.org technology is it an open format free for anyone to use.
Website: http://www.xiph.org/ogg
LicenseCopyright (c) 2002, Xiph.org Foundation
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
• Neither the name of the Xiph.org Foundation nor the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY

6.1. Details of external packages

305

Packages and Features, Release 10.4

DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Upstream Contact
The Xiph.org mailing lists - see http://lists.xiph.org/mailman/listinfo
Special Update/Build Instructions• No changes went into src.
Typeoptional
Dependencies
Version Information
package-version.txt:
1.3.1.p0

Equivalent System Packages$ conda install libogg$ brew install libogg$ sudo port install libogg$ sudo zypper install pkgconfig\(ogg\)$ sudo xbps-install libogg-devel

See https://repology.org/project/libogg/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

306

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.192 libpng: Bitmap image support
Description
libpng is the official PNG reference library. It supports almost all PNG features, is extensible, and has been extensively tested for over 13 years. The home site for development versions (i.e., may be buggy or subject to change or
include experimental features) is http://libpng.sourceforge.net/, and the place to go for questions about the library is the
png-mng-implement mailing list.
Website: http://www.libpng.org/pub/png/libpng.html
LicenseThe libpng license - see http://www.libpng.org/pub/png/src/libpng-LICENSE.txt
Upstream Contact
https://libpng.sourceforge.io
The png mailing lists - see http://www.libpng.org/pub/png/pngmisc.html#lists
Special Update/Build Instructions• On old versions of Darwin, the symbolic links libpng.* created by libpng16 may interfere with a system-wide
libPng.dylib.
– the following is very likely to be obsolete in 2014 —This system-wide library is likely to be a different version and on top of that, the symbols exported there are
prefixed with “_cg” (for “Core Graphics”). So even if by chance the functionalities of the two libraries wereinterchangeable, libraries or applications looking for one and being presented the other won’t find the symbols they
expect. Note the uppercase “P” which could prevent this conflict; unfortunately, the default filesystem used byApple is case-insensitive.
Note there would be no problem if the system-wide library was not looked for when Sage is being built or run, but
that’s not the case either; it is at least looked for by the “ImageIO” framework:– when Python is built with Mac OS extensions, fixed in #4008;– when Mercurial is built because it uses $EDITOR, cf. #4678;– when R is built and it finds -lpng, cf. #4409 and #11696.
– this is no longer done, as of #27186 —As not all of these problems are easily dealt with and new ones may arise, we chose to delete the $SAGE_LOCAL/lib/libpng.* symlinks. Therefore, some packages like Tachyon, which by default look for -lpng are patched
to look for -lpng16 instead.

6.1. Details of external packages

307

Packages and Features, Release 10.4

Typestandard
Dependencies• zlib: Data compression library
Version Information
package-version.txt:
1.6.29.p1

Equivalent System Packages$ apk add libpng-dev$ conda install libpng$ sudo pkg install graphics/png$ brew install libpng$ sudo port install libpng$ sudo zypper install pkgconfig\(libpng16\)$ sudo slackpkg install libpng$ sudo xbps-install libpng-devel

See https://repology.org/project/libpng/versions
If the system package is installed, ./configure will check if it can be used.

6.1.193 libsemigroups: Library for semigroups and monoids
Description
C++ library for semigroups and monoids; used in GAP’s package Semigroups.

308

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseGPL-3.0
Upstream Contact
http://james-d-mitchell.github.io/libsemigroups https://github.com/james-d-mitchell/libsemigroupsType
optional
Dependencies
Version Information
package-version.txt:
2.3.2

Equivalent System Packages$ conda install libsemigroups$ sudo pkg install math/libsemigroups$ sudo zypper install pkgconfig\(libsemigroups\)

See https://repology.org/project/libsemigroups/versions
If the system package is installed, ./configure will check if it can be used.

6.1.194 libtheora: Library for the Theora video codec
Description
libtheora is the official reference library for the Theora video codec. Theora is a free and open video compression format
from the Xiph.org Foundation.
Website: http://www.xiph.org/theora

6.1. Details of external packages

309

Packages and Features, Release 10.4

LicenseCopyright (c) 2002, Xiph.org Foundation
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
• Neither the name of the Xiph.org Foundation nor the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Upstream Contact
The Xiph.org mailing lists - see http://lists.xiph.org/mailman/listinfo
Special Update/Build Instructions• No changes went into src.
Typeexperimental
Dependencies• libogg: Library for the Ogg multimedia container format• libpng: Bitmap image support

310

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.1.1

Equivalent System Packages$ conda install libtheora$ brew install theora$ sudo port install libtheora$ sudo zypper install pkgconfig\(theora\)$ sudo xbps-install libtheora-devel

See https://repology.org/project/libtheora/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.195 libxml2: XML parser and toolkit
Description
XML C parser and toolkit
LicenseMIT
Upstream Contact
http://www.xmlsoft.org/index.html
Typeoptional

6.1. Details of external packages

311

Packages and Features, Release 10.4

Dependencies• iconv: Library for language/country-dependent character encodings• zlib: Data compression library
Version Information
Equivalent System Packages$ apk add libxml2-dev$ sudo pacman -S libxml2$ apt-cyg install libxml2-devel$ sudo apt-get install libxml2-dev$ sudo yum install libxml2-devel$ sudo pkg install libxml2$ sudo emerge dev-libs/libxml2$ brew install libxml2$ sudo port install py-libxml2$ nix-env --install libxml2$ sudo zypper install libxml2

install the following packages: libxml$ sudo slackpkg install libxml2$ sudo xbps-install libxml2-devel

See https://repology.org/project/libxml2/versions
If the system package is installed, ./configure will check if it can be used.

312

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.196 lidia: A library for computational number theory
Description
A library for computational number theory.
Abandoned upstream and has disappeared from the web at TU Darmstadt.
We use as our new upstream a version minimally maintained for the LattE project.
https://www.math.ucdavis.edu/ latte/software/packages/lidia/current/lidia-2.3.0+latte-patches-2014-10-04.tar.gz
Licenselidia is released under the GPL, or so it is claimed. See https://groups.google.com/forum/#!msg/sage-devel/
kTxgPSqrbUM/5Txj3_IKhlQJ and https://lists.debian.org/debian-legal/2007/07/msg00120.html
Upstream Contact
Matthias Köppe, UC Davis, CA, USAType
optional
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
2.3.0+latte-patches-2019-05-02

Equivalent System Packages
See https://repology.org/project/lidia/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

313

Packages and Features, Release 10.4

6.1.197 lie: Library for the representation theory of complex semisimple Lie groups
and algebras
Description
LiE is the name of a software package that enables mathematicians and physicists to perform computations of a Lie grouptheoretic nature. It focuses on the representation theory of complex semisimple (reductive) Lie groups and algebras, andon the structure of their Weyl groups and root systems.
LiE does not compute directly with elements of the Lie groups and algebras themselves; it rather computes with weights,
roots, characters and similar objects. Some specialities of LiE are: tensor product decompositions, branching to subgroups, Weyl group orbits, reduced elements in Weyl groups, distinguished coset representatives and much more. These
operations have been compiled into the program which results in fast execution: typically one or two orders of magnitude
faster than similar programs written in a general purpose program.
The LiE programming language makes it possible to customise and extend the package with more mathematical functions.
A user manual is provided containing many examples.
LiE establishes an interactive environment from which commands can be given that involve basic programming primitives
and powerful built-in functions. These commands are read by an interpreter built into the package and passed to the core of
the system. This core consists of programs representing some 100 mathematical functions. The interpreter offers on-line
facilities which explain operations and functions, and which give background information about Lie group theoreticalconcepts and about currently valid definitions and values.
(from http://www-math.univ-poitiers.fr/ maavl/LiE/description.html )LicenseGNU Lesser General Public License (LGPL), version unspecified
Upstream Contact• Marc van Leeuwen, http://www-math.univ-poitiers.fr/ maavl/
Dependencies• readline• ncurses• bison (not included in this package or in Sage!)Typeexperimental

314

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• ncurses: Classic terminal output library• readline: Command line editing library
Version Information
package-version.txt:
2.2.2

Equivalent System Packages$ sudo apt-get install lie$ sudo emerge sci-mathematics/lie$ sudo port install LiE$ nix-env --install lie$ sudo zypper install LiE

See https://repology.org/project/lie/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.198 linbox: Linear algebra with dense, sparse, structured matrices over the
integers and finite fields
Description
LinBox is a C++ template library for exact, high-performance linear algebra computation with dense, sparse, and structured matrices over the integers and over finite fields.
LicenseLGPL V2 or later

6.1. Details of external packages

315

Packages and Features, Release 10.4

Upstream Contact• https://linalg.org/• <linbox-devel@googlegroups.com>• <linbox-use@googlegroups.com>
SPKG Repository
https://bitbucket.org/malb/linbox-spkg
Dependencies• GNU patch• GMP/MPIR• MPFR• NTL• fpLLL• IML• M4RI• M4RIE• Givaro• FFLAS/FFPACK• a BLAS implementation such as openblas
Special Update/Build Instructions
TODO:• spkg-check is disabled for now, should work in the next release after 1.3.2.
• Check whether make fullcheck works/builds, is worth running, and doesn’t take ages. (Version 1.1.6 doesn’t
seem to have such a target.)Typestandard

316

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(MP_LIBRARY)• fflas_ffpack: Dense linear algebra over word-size finite fields• flint: Fast Library for Number Theory• givaro: C++ library for arithmetic and algebraic computations• iml: Integer Matrix Library• mpfr: Multiple-precision floating-point computations with correct rounding• ntl: A library for doing number theory
Version Information
package-version.txt:
1.7.0+sage-2024-05-18

Equivalent System Packages$ sudo pacman -S linbox$ conda install linbox$ sudo apt-get install liblinbox-dev$ sudo yum install linbox-devel$ sudo pkg install math/linbox$ sudo emerge sci-libs/linbox$ nix-env --install linbox$ sudo zypper install pkgconfig\(linbox\)$ sudo xbps-install linbox-devel

See https://repology.org/project/linbox/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

317

Packages and Features, Release 10.4

6.1.199 llvm:
The LLVM Compiler
C/C++/Objective-C compiler

Infrastructure,including

the

Clang

Description
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
Clang is an “LLVM native” C/C++/Objective-C compiler.
The libc++ and libc++ ABI projects provide a standard conformant and high-performance implementation of the C++
Standard Library, including full support for C++11 and C++14.
LicenseApache 2.0 License with LLVM exceptions
Upstream Contact
https://llvm.org/
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add clang$ sudo pacman -S clang$ apt-cyg install clang$ sudo apt-get install clang$ sudo yum install clang$ sudo pkg install devel/llvm$ sudo emerge sys-devel/clang$ brew install llvm
$ sudo port install clang

318

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ nix-env --install clang

install the following packages: devel/llvm$ sudo zypper install llvm
$ sudo slackpkg install llvm
$ sudo xbps-install clang

If the system package is installed, ./configure will check if it can be used.

6.1.200 lrcalc: Littlewood-Richardson calculator
Description
Littlewood-Richardson Calculator
http://sites.math.rutgers.edu/ asbuch/lrcalc/
LicenseGNU General Public License V2+
Upstream Contact
Anders S. Buch (asbuch@math.rutgers.edu)
https://bitbucket.org/asbuch/lrcalc
Typestandard
Dependencies
Version Information
package-version.txt:
2.1

6.1. Details of external packages

319

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S lrcalc$ conda install lrcalc$ sudo apt-get install liblrcalc-dev$ sudo yum install lrcalc-devel$ sudo pkg install math/lrcalc$ sudo emerge sci-mathematics/lrcalc$ nix-env --install lrcalc$ sudo xbps-install lrcalc-devel

See https://repology.org/project/lrcalc/versions
If the system package is installed, ./configure will check if it can be used.

6.1.201 lrcalc_python: Littlewood-Richardson calculator
Description
Python bindings for the Littlewood-Richardson Calculator
http://sites.math.rutgers.edu/ asbuch/lrcalc/
LicenseGNU General Public License V3
Upstream Contact
Anders S. Buch (asbuch@math.rutgers.edu)
https://bitbucket.org/asbuch/lrcalc
Typestandard

320

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• lrcalc: Littlewood-Richardson calculator
Version Information
package-version.txt:
2.1

version_requirements.txt:
lrcalc ~=2.1

Equivalent System Packages$ conda install python-lrcalc~=2.1

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.202 lrslib: Reverse search algorithm for vertex enumeration and convex hullproblems
Description
lrslib implements the linear reverse search algorithm of Avis and Fukuda.
See the homepage (http://cgm.cs.mcgill.ca/ avis/C/lrs.html) for details.
We use an autotoolized version from https://github.com/mkoeppe/lrslib/tree/autoconfiscation
Licenselrslib is released under a GPL v2+ license.
Upstream Contact
David Avis, avis at cs dot mcgill dot edu.

6.1. Details of external packages

321

Packages and Features, Release 10.4

Dependencies
To build and install the “plrs” binary, a multi-thread version of lrs, need to first install the full Boost package (“sage -iboost”).
If the package finds an MPI C++ compiler script (mpic++), it also builds and installs the “mplrs” binary, a distributed
version of lrs using MPI.
(Sage currently does not make use of plrs and mplrs.)
Special Update/Build Instructions
Typeoptional
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
071b+autotools-2021-07-13

Equivalent System Packages$ sudo pacman -S lrs$ conda install lrslib$ sudo apt-get install lrslib$ sudo yum install lrslib$ sudo pkg install math/lrslib$ sudo emerge sci-libs/lrslib$ nix-env --install lrs$ sudo zypper install lrslib lrslib-devel

See https://repology.org/project/lrslib/versions
If the system package is installed, ./configure will check if it can be used.

322

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.203 m4ri: fast arithmetic with dense matrices over GF(2)Description
M4RI: Library for matrix multiplication, reduction and inversion over GF(2). (See also m4ri/README for a brief
overview.)
License• GNU General Public License Version 2 or later (see src/COPYING)
Upstream Contact• Authors: Martin Albrecht et al.
• Email: <m4ri-devel@googlegroups.com>• Website: https://bitbucket.org/malb/m4ri
Special Update/Build Instructions• Delete the upstream Mercurial repositories (file m4ri/.hgtags, directory m4ri/.hg).
• Delete the directory m4ri/autom4te.cache (if present).
• Delete m4ri.vcproj (and perhaps other unnecessary baggage).
• Touch m4ri/configure to make sure it is newer than its sources.
Type
standard
Dependencies• libpng: Bitmap image support
Version Information
package-version.txt:
202001256.1. Details of external packages

323

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S m4ri
$ conda install m4ri
$ sudo apt-get install libm4ri-dev$ sudo yum install m4ri-devel$ sudo pkg install math/m4ri$ sudo emerge sci-libs/m4ri\[png\]$ nix-env --install m4ri
$ sudo zypper install pkgconfig\(m4ri\)$ sudo xbps-install m4ri-devel

See https://repology.org/project/libm4ri/versions
If the system package is installed, ./configure will check if it can be used.

6.1.204 m4rie: Arithmetic with dense matrices over GF(2^e)
Description
M4RIE: Library for matrix multiplication, reduction and inversion over GF(2^k) for 2 <= k <= 10.
License• GNU General Public License Version 2 or later (see src/COPYING)
Upstream Contact• Authors: Martin Albrecht• Email: <m4ri-devel@googlegroups.com>• Website: http://m4ri.sagemath.org

324

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• M4RI• Givaro
Type
standard
Dependencies• m4ri: fast arithmetic with dense matrices over GF(2)Version Information
package-version.txt:
20200125

Equivalent System Packages$ sudo pacman -S m4rie$ conda install m4rie$ sudo apt-get install libm4rie-dev$ sudo yum install m4rie-devel$ sudo pkg install math/m4rie$ sudo emerge sci-libs/m4rie$ nix-env --install m4rie$ sudo zypper install pkgconfig\(m4rie\)$ sudo xbps-install m4rie-devel

See https://repology.org/project/libm4rie/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

325

Packages and Features, Release 10.4

6.1.205 markupsafe: Safely add untrusted strings to HTML/XML markup
Description
Implements a XML/HTML/XHTML Markup safe string for Python
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/MarkupSafe/
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.1.5

version_requirements.txt:
markupsafe >=2.0

Equivalent System Packages$ conda install markupsafe$ sudo emerge dev-python/markupsafe$ sudo port install py-markupsafe$ sudo zypper install python3\$\{PYTHON_MINOR\}-MarkupSafe$ sudo xbps-install python3-MarkupSafe

See https://repology.org/project/python:markupsafe/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.
326

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.206 mathics: General-purpose computer algebra system
Description
General-purpose computer algebra system
LicenseGPL
Upstream Contact
https://pypi.org/project/Mathics3/
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• mathics_scanner: Character Tables and Tokenizer for Mathics and the Wolfram Language• palettable: Color palettes for Python• pint: Physical quantities module
Version Information
package-version.txt:
4.0.0

version_requirements.txt:
Mathics3

Equivalent System Packages$ conda install mathics3

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

327

Packages and Features, Release 10.4

6.1.207 mathics_scanner: Character Tables and Tokenizer for Mathics and theWolfram Language
Description
Character Tables and Tokenizer for Mathics and the Wolfram Language
LicenseGPL-3.0-only
Upstream Contact
https://pypi.org/project/Mathics-Scanner/Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.2.4

version_requirements.txt:
Mathics-Scanner

Equivalent System Packages(none known)

6.1.208 mathjax: A JavaScript library for displaying mathematical formulas
Description
MathJax is a JavaScript library for displaying mathematical formulas.
MathJax is used in the Sage documentation built by Sphinx.

328

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseApache License, version 2.0
Upstream Contact
Home page: https://www.mathjax.org/
Typestandard
Dependencies
Version Information
package-version.txt:
3.2.0

Equivalent System Packages$ conda install mathjax$ sudo emerge \>=dev-libs/mathjax-3$ sudo zypper install mathjax$ sudo xbps-install mathjax

See https://repology.org/project/mathjax/versions
If the system package is installed, ./configure will check if it can be used.

6.1.209 matplotlib: Python 2D plotting library
Description
From the Matplotlib website: matplotlib is a python 2D plotting library which produces publication quality figures in avariety of hardcopy formats and interactive environments across platforms. matplotlib can be used in python scripts, thepython and ipython shell (ala matlab or mathematica), web application servers, and six graphical user interface toolkits.

6.1. Details of external packages

329

Packages and Features, Release 10.4

LicenseThe Matplotlib license - see http://matplotlib.sourceforge.net/users/license.html: Matplotlib only uses BSD compatible
code, and its license is based on the PSF license. See the Open Source Initiative licenses page for details on individual licenses. Non-BSD compatible licenses (eg LGPL) are acceptable in matplotlib Toolkits. For a discussion of the
motivations behind the licencing choice, see Licenses.
Upstream Contact
https://matplotlib.org
The matplotlib mailing lists: see http://sourceforge.net/projects/matplotlib
Dependencies• python• numpy• setuptools (>= 0.7)
• freetype• patch (used in spkg-install)• dateutil• pyparsing• tornado• kiwisolver
Build Instructions/Changes• NOTE: To drastically cut down on spkg size, we delete the internal testing images. To do this, we repackage thetarball by removing the contents of lib/matplotlib/tests/baseline_images/*, this is done by the
spkg-src script.
• setup.py.patch: disable loading of Tests. Otherwise, setup.py raises an error because it can’t find thedeleted files from src/lib/matplotlib/tests/baseline_images/*• NOTE: as of matplotlib-1.0.0 and Sage 4.6, Sage does not use $HOME/.matplotlib by default. Instead, it sets
MPLCONFIGDIR to a subdirectory in $DOT_SAGE, see src/bin/sage-env
Typestandard

330

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• certifi: Python package for providing Mozilla’s CA Bundle• contourpy: Python library for calculating contours of 2D quadrilateral grids• cycler: Composable cycles• dateutil: Extensions to the standard Python module datetime• fonttools: Tools to manipulate font files• freetype: A free, high-quality, and portable font engine• kiwisolver: Fast implementation of the Cassowary constraint solver• numpy: Package for scientific computing with Python• pillow: Python Imaging Library• pyparsing: A Python parsing module• qhull: Compute convex hulls, Delaunay triangulations, Voronoi diagrams• setuptools_scm: Python build system extension to obtain package version from version control• tornado: Python web framework and asynchronous networking library
Version Information
package-version.txt:
3.8.0

version_requirements.txt:
matplotlib >=3.5.1

Equivalent System Packages$ sudo pacman -S python-matplotlib$ conda install matplotlib\>=3.5.1$ sudo apt-get install python3-matplotlib$ sudo yum install python-matplotlib$ sudo emerge dev-python/matplotlib$ sudo port install py-matplotlib$ sudo zypper install python3\$\{PYTHON_MINOR\}-matplotlib

6.1. Details of external packages

331

Packages and Features, Release 10.4

$ sudo xbps-install python3-matplotlib

See https://repology.org/project/python:matplotlib/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.210 matplotlib_inline: Inline Matplotlib backend for Jupyter
Description
Inline Matplotlib backend for Jupyter
LicenseBSD 3-Clause
Upstream Contact
https://pypi.org/project/matplotlib-inline/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
0.1.6

version_requirements.txt:
matplotlib-inline

332

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install matplotlib-inline$ sudo emerge dev-python/matplotlib-inline$ sudo xbps-install python3-matplotlib-inline

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.211 matroid_database: Python interface to matroid database
Description
Python interface to matroid database.
This database was retrieved from <https://www-imai.is.s.u-tokyo.ac.jp/ ymatsu/matroid/index.html> (Yoshitake Matsumoto, Database of Matroids, 2012; accessed: 2023.12.02).
LicenseGPL version 3 or later
Upstream Contact
https://pypi.org/project/matroid-database
https://github.com/gmou3/matroid-databaseType
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.3

version_requirements.txt:
matroid-database

6.1. Details of external packages

333

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.212 maxima: System for manipulating symbolic and numerical expressions
Description
Maxima is a system for the manipulation of symbolic and numerical expressions, including differentiation, integration,
Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, and sets, lists,
vectors, matrices, and tensors. Maxima yields high precision numeric results by using exact fractions, arbitrary precision
integers, and variable precision floating point numbers. Maxima can plot functions and data in two and three dimensions.
For more information, see the Maxima web site
http://maxima.sourceforge.net
LicenseMaxima is distributed under the GNU General Public License, with some export restrictions from the U.S. Departmentof Energy. See the file COPYING.
Upstream Contact• The Maxima mailing list - see http://maxima.sourceforge.net/maximalist.html
Special Update/Build Instructions
1. Go to http://sourceforge.net/projects/maxima/files/Maxima-source/ and download the source tarballmaxima-x.y.z.tar.gz; place it in the upstream/ directory.
2. Update package-version.txt and run ‘sage –package fix-checksum’.
3. Make sure the patches still apply cleanly, and update them if necessary.
4. Test the resulting package.
All patch files in the patches/ directory are applied. Descriptions of these patches are either in the patch files themselves
or below.
• 0001-taylor2-Avoid-blowing-the-stack-when-diff-expand-isn.patch: Fix for Maxima bug #2520 (abs_integrate
fails on abs(sin(x)) and abs(cos(x))). Introduced in Issue #13364 (Upgrade Maxima to 5.29.1).
• build-fasl.patch: Build a fasl library for ecl in addition to an executable program. Introduced in Issue #16178 (Build
maxima fasl without asdf).
• infodir.patch: Correct the path to the Info directory. Introduced in Issue #11348 (maxima test fails when installtree is moved).
• matrixexp.patch: Fix matrixexp(matrix([%i*%pi])), which broke after Maxima 5.29.1. Introduced in Issue#13973.
• maxima.system.patch: Set c::*compile-in-constants* to t. Introduced in Issue #11966 (OS X 10.7
Lion: Maxima fails to build).

334

Chapter 6. All External Packages

Packages and Features, Release 10.4

• undoing_true_false_printing_patch.patch: Revert an upstream change causing ‘?’ to be printed around some words.
Introduced in Trac #13364 (Upgrade Maxima to 5.29.1).
Type
standard
Dependencies• ecl: An implementation of the Common Lisp language• info: stand-alone Info documentation reader
Version Information
package-version.txt:
5.46.0Equivalent System Packages$ sudo pacman -S maxima-fas$ conda install maxima$ apt-cyg install maxima$ sudo apt-get install maxima-sage maxima$ sudo yum install maxima-runtime-ecl maxima$ sudo pkg install math/maxima$ sudo emerge sci-mathematics/maxima\[ecl\]$ brew install maxima$ sudo port install maxima$ nix-env --install maxima-ecl$ sudo zypper install maxima-exec-clisp$ sudo xbps-install maxima-ecl

See https://repology.org/project/maxima/versions, https://repology.org/project/maxima-ecl/versions, https://repology.
org/project/maxima-sage/versions
If the system package is installed, ./configure will check if it can be used.
6.1. Details of external packages

335

Packages and Features, Release 10.4

6.1.213 mcqd: An exact algorithm for finding a maximum clique in an undirectedgraph
Description
MaxCliqueDyn is a fast exact algorithm for finding a maximum clique in an undirected graph.
LicenseGPL 3
Upstream Contact
MCQD is currently being maintained by Janez Konc. https://gitlab.com/janezkonc/mcqd
Typeoptional
Dependencies
Version Information
package-version.txt:
1.0.p0Equivalent System Packages$ sudo pacman -S mcqd
$ sudo zypper install mcqd

See https://repology.org/project/mcqd/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.214 meataxe: Library for computing with modular representations
Description
SharedMeatAxe 1.0 is an autotoolized shared library version of C MeatAxe 2.4.24, a set of programs for computing withmodular representations. The package comprises a shared library “libmtx”, as well as several executables.
See http://users.minet.uni-jena.de/ king/SharedMeatAxe/ for the package documentation.

336

Chapter 6. All External Packages

Packages and Features, Release 10.4

Licence
The Shared Meat-Axe is free software: you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later
version. See the file COPYING.
Upstream contact• Simon King <simon.king@uni-jena.de>Typeoptional
Dependencies
Version Information
package-version.txt:
1.0.1

Equivalent System Packages$ sudo pacman -S shared_meataxe$ sudo yum install sharedmeataxe

See https://repology.org/project/shared-meataxe/versions, https://repology.org/project/sharedmeataxe/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.215 memory_allocator: An extension class to allocate memory easily with
CythonThis extension class started as part of the Sage software.
Description
development website: https://github.com/sagemath/memory_allocator
PyPI page: https://pypi.org/project/memory_allocator

6.1. Details of external packages

337

Packages and Features, Release 10.4

LicenseGPL-3.0
Upstream Contact
https://github.com/sagemath/memory_allocatorTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler
Version Information
package-version.txt:
0.1.4

src/pyproject.toml:
memory_allocatorversion_requirements.txt:
memory_allocator

Equivalent System Packages$ conda install memory-allocator$ sudo emerge dev-python/memory-allocator

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

338

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.216 meson: A high performance build system
Description
A high performance build system
LicenseApache License, Version 2.0
Upstream Contact
https://pypi.org/project/meson/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.3.1

version_requirements.txt:
meson

Equivalent System Packages$ apk add meson$ sudo pacman -S meson$ sudo apt-get install meson$ sudo yum install meson$ sudo pkg install devel/meson$ sudo emerge dev-build/meson

6.1. Details of external packages

339

Packages and Features, Release 10.4

$ brew install meson$ nix-env --install meson$ sudo zypper install meson$ sudo slackpkg install meson

See https://repology.org/project/meson/versions
If the system package is installed, ./configure will check if it can be used.

6.1.217 meson_python: Meson Python build backend (PEP 517)
Description
Meson Python build backend (PEP 517)
License
Upstream Contact
https://pypi.org/project/meson-python/Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• meson: A high performance build system• ninja_build: A build system with a focus on speed• patchelf: A small utility to modify the dynamic linker and RPATH of ELF executables• pyproject_metadata: PEP 621 metadata parsing• tomli: A lil’ TOML parser

340

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.15.0version_requirements.txt:
meson-python

Equivalent System Packages$ apk add py3-meson-python$ sudo pacman -S meson-python$ sudo apt-get install meson-python$ sudo yum install python-meson-python$ sudo pkg install devel/meson-python$ sudo emerge dev-python/meson-python$ sudo zypper install python-meson-python$ sudo xbps-install python3-meson-python

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.218 mistune: Sane and fast Markdown parser with useful plugins and renderers
Description
Sane and fast Markdown parser with useful plugins and renderers
LicenseBSD-3-Clause

6.1. Details of external packages

341

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/mistune/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler
Version Information
package-version.txt:
2.0.4

version_requirements.txt:
mistune >=0.8.4

Equivalent System Packages$ conda install mistune$ sudo emerge dev-python/mistune$ sudo xbps-install python3-mistune

See https://repology.org/project/mistune/versions, https://repology.org/project/python:mistune/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.219 modular_decomposition: A modular decomposition algorithm
Description
This is an implementation of a modular decomposition algorithm.
http://www.liafa.jussieu.fr/ fm/ (in french)

342

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseGPL
Upstream Contact
Fabien de Montgolfier
http://www.liafa.jussieu.fr/ fm/Typeexperimental
Dependencies
Version Information
package-version.txt:
20100607

Equivalent System Packages
See https://repology.org/project/modular-decomposition/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.220 modular_resolution: Modular cohomology rings of finite groups
Description
Modular Cohomology Rings of Finite Groups
The package is located at http://users.fmi.uni-jena.de/cohomology/,
that’s to say the tarballp_group_cohomology-x.y.tar.xz can be found there and the documentation of the package is provided at
http://users.fmi.uni-jena.de/cohomology/documentation/
LicenseCopyright (C) 2018 Simon A. King <simon.king@uni-jena.de> Copyright (C) 2011 Simon A. King <simon.king@uni-jena.de> Copyright (C) 2009 Simon A. King <simon.king@nuigalway.ie> andDavid J. Green <david.green@uni-jena.de>Distributed under the terms of the GNU General Public License (GPL), version 2 or later (at your choice).
This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

6.1. Details of external packages

343

Packages and Features, Release 10.4

The full text of the GPL is available at:
http://www.gnu.org/licenses/
The package includes a data base of cohomology rings of the groups of order 64 and provides access to a data base ofcohomology rings of the groups of order 128 and 243, located at
http://cohomology.uni-jena.de/db/
These data bases are distributed under the Creative Commons Attribution-Share Alike 3.0 License. The full text of thislicence is available at
http://creativecommons.org/licenses/by-sa/3.0/
SPKG Maintainers
Simon A. King <simon.king@uni-jena.de>
Upstream Contact
Simon A. King <simon.king@uni-jena.de> David J. Green <david.green@uni-jena.de>
Acknowledgements
The development of the initial version of this SPKG was funded by the German Science Foundation, DFG project GR
1585/4.1, and was accomplished at the Friedrich Schiller University Jena.
Since version 1.0.1, the further work on this SPKG was funded by Marie Curie grant MTKD-CT-2006-042685 and was
pursued at the National University of Ireland, Galway. Since Novermber 2010, it is moved back to Jena.
We thank William Stein for giving us access to various computers on which we could build test the SPKG and on whichsome huge computations could be completed, and acknowledge the support by National Science Foundation Grant No.
DMS-0821725.
We thank Mathieu Dutour Sikirić for hints on how to use GAP more efficiently.
We owe Peter Symonds the idea of using the Poincaré series in a rather efficient completeness criterion.
We are greatful to John Palmieri for his help on making p_group_cohomology work with python-3.
Dependencies• The SharedMeatAxe needs to be installed, as a build time dependency.
This can be met by installing the meataxe spkg

344

Chapter 6. All External Packages

Packages and Features, Release 10.4

Testing
Our package provides a very short test suite for David Green’s routines for the computation of minimal projective resolutions. The majority of this package’s tests is formed by doc tests in the Cython code. In fact, any class, method andfunction is covered by tests.
Note that internet access is required for these tests, as it is attempted to download cohomology rings from a public database in the web.
The script spkg-check calls sage -t --force_lib on the files in pGroupCohomology.
Documentation
The documentation of this package is automatically built, if the environment variable SAGE_SPKG_INSTALL_DOCS
is yes (do “export SAGE_SPKG_INSTALL_DOCS=yes” on the command line before installation). The documents are
put into SAGE_ROOT/local/share/doc/p_group_cohomology/.
Typeoptional
Dependencies• meataxe: Library for computing with modular representations• singular: Computer algebra system for polynomial computations, algebraic geometry, singularity theory
Version Information
package-version.txt:
1.1

Equivalent System Packages(none known)

6.1.221 mpc: Arithmetic of complex numbers with arbitrarily high precision andcorrect rounding
Description
From https://www.multiprecision.org/mpc: GNU MPC is a C library for the arithmetic of complex numbers with arbitrarily high precision and correct rounding of the result. It extends the principles of the IEEE-754 standard for fixed
precision real floating point numbers to complex numbers, providing well-defined semantics for every operation. At thesame time, speed of operation at high precision is a major design goal.

6.1. Details of external packages

345

Packages and Features, Release 10.4

LicenseLGPLv3+ for the code and GFDLv1.3+ (with no invariant sections) for the documentation.
Upstream Contact
The MPC website is located at https://www.multiprecision.org/mpc .
The MPC team can be contacted via the MPC mailing list: mpc-discuss@inria.fr
Special Update/Build Instructions• mpc_mul_faster.patch: Patch from Paul Zimmermann to speed up MPC multiplication (for small precisions) byreducing overhead in MPFR operations.
Typestandard
Dependencies• $(MP_LIBRARY)• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
1.3.1

Equivalent System Packages$ apk add mpc1 mpc1-dev$ conda install mpc$ apt-cyg install libmpc-devel$ sudo apt-get install libmpc-dev$ sudo yum install libmpc libmpc-devel$ sudo pkg install math/mpc$ sudo emerge dev-libs/mpc

346

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ brew install libmpc$ nix-env --install libmpc$ sudo zypper install mpc-devel

install the following packages: libmpc$ sudo xbps-install libmpc-devel

See https://repology.org/project/gnumpc/versions, https://repology.org/project/libmpc/versions
If the system package is installed, ./configure will check if it can be used.

6.1.222 mpfi: Multiple precision interval arithmetic library based on MPFR
Description
MPFI is a library for interval arithmetic, which is built upon the MPFR multiple precision floating-point arithmetic.
MPFI is intended to be a portable library written in C for arbitrary precision interval arithmetic with intervals represented
using MPFR reliable floating-point numbers. It is based on the GNU MP library and on the MPFR library. The purposeof an arbitrary precision interval arithmetic is on the one hand to get “guaranteed” results, thanks to interval computation,and on the other hand to obtain accurate results, thanks to multiple precision arithmetic. The MPFI library is built
upon MPFR in order to benefit from the correct rounding provided, for each operation or function, by MPFR. Further
advantages of using MPFR are its portability and compliance with the IEEE 754 standard for floating-point arithmetic.
LicenseThis version of MPFI is released under the GNU Lesser General Public License. It is permitted to link MPFI to non-freeprograms, as long as when distributing them the MPFI source code and a means to re-link with a modified MPFI isprovided.
Upstream Contact
http://perso.ens-lyon.fr/nathalie.revol/software.html
The MPFI website is located at https://gitlab.inria.fr/mpfi/mpfi
The MPFI team can be contacted via the MPFI mailing list: mpfi-users@inria.fr
Typestandard

6.1. Details of external packages

347

Packages and Features, Release 10.4

Dependencies• $(MP_LIBRARY)• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
1.5.2

Equivalent System Packages$ conda install mpfi
$ sudo apt-get install libmpfi-dev$ sudo pkg install math/mpfi$ sudo emerge sci-libs/mpfi$ brew install mpfi
$ nix-env --install mpfi
$ sudo zypper install mpfi-devel$ sudo xbps-install mpfi-devel

See https://repology.org/project/mpfi/versions
If the system package is installed, ./configure will check if it can be used.

6.1.223 mpfr: Multiple-precision floating-point computations with correct rounding
Description
The MPFR library is a C library for multiple-precision floating-point computations with correct rounding. MPFR has
continuously been supported by the INRIA and the current main authors come from the Caramba and AriC project-teams
at Loria (Nancy, France) and LIP (Lyon, France) respectively; see more on the credit page. MPFR is based on the GMP
multiple-precision library.
The main goal of MPFR is to provide a library for multiple-precision floating-point computation which is both efficientand has a well-defined semantics. It copies the good ideas from the ANSI/IEEE-754 standard for double-precision
floating-point arithmetic (53-bit significand).

348

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMPFR is free. It is distributed under the GNU Lesser General Public License (GNU Lesser GPL), version 3 or later(2.1 or later for MPFR versions until 2.4.x). The library has been registered in France by the Agence de Protection
des Programmes under the number IDDN FR 001 120020 00 R P 2000 000 10800, on 15 March 2000. This license
guarantees your freedom to share and change MPFR, to make sure MPFR is free for all its users. Unlike the ordinary
General Public License, the Lesser GPL enables developers of non-free programs to use MPFR in their programs. If you
have written a new function for MPFR or improved an existing one, please share your work!
Upstream Contact
The MPFR website is located at http://mpfr.org/
The MPFR team can be contacted via the MPFR mailing list: mpfr@loria.fr
Special Update/Build Instructions• Make sure MPFR’s settings of CC and CFLAGS still get properly extracted, currently from its config.log inthe src/ directory.
• We should remove the configure option --disable-thread-safe in case the issues without that havemeanwhile been fixed. (Then we should actually pass --enable-thread-safe.)
TODO• --disable-thread-safe should be switched to --enable-thread-safe, need to check that thisworks on the buildbot machinesTypestandard
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
4.2.1

6.1. Details of external packages

349

Packages and Features, Release 10.4

Equivalent System Packages$ apk add mpfr-dev$ conda install mpfr
$ apt-cyg install libmpfr-devel$ sudo apt-get install libmpfr-dev$ sudo yum install mpfr-devel$ sudo pkg install math/mpfr$ sudo emerge dev-libs/mpfr$ brew install mpfr
$ sudo zypper install pkgconfig\(mpfr\)

install the following packages: libmpfr$ sudo slackpkg install mpfr
$ sudo xbps-install mpfr-devel

See https://repology.org/project/mpfr/versions
If the system package is installed, ./configure will check if it can be used.

6.1.224 mpfrcx: Arithmetic of univariate polynomials over arbitrary precision realor complex numbers
Description
Mpfrcx is a library for the arithmetic of univariate polynomials over arbitrary precision real (Mpfr) or complex (Mpc)
numbers, without control on the rounding. For the time being, only the few functions needed to implement the floating point approach to complex multiplication are implemented. On the other hand, these comprise asymptotically fastmultiplication routines such as Toom–Cook and the FFT.
LicenseMPFRCX is distributed under the Gnu Lesser General Public License, either version 2.1 of the licence, or (at your option)
any later version (LGPLv2.1+).

350

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
The MPFRCX website is located at http://www.multiprecision.org/mpfrcx .
Typeoptional
Dependencies• $(MP_LIBRARY)• mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
0.6.3

Equivalent System Packages$ sudo zypper install mpfrcx-devel

See https://repology.org/project/mpfrcx/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.225 mpmath: Pure Python library for multiprecision floating-point arithmetic
Description
Mpmath is a pure-Python library for multiprecision floating-point arithmetic. It provides an extensive set of transcendental functions, unlimited exponent sizes, complex numbers, interval arithmetic, numerical integration and differentiation, root-finding, linear algebra, and much more. Almost any calculation can be performed just as well at 10-digit or
1000-digit precision, and in many cases mpmath implements asymptotically fast algorithms that scale well for extremely
high precision work. If available, mpmath will (optionally) use gmpy to speed up high precision operations.

6.1. Details of external packages

351

Packages and Features, Release 10.4

Upstream Contact• Author: Fredrik Johansson• Email: fredrik.johansson@gmail.com• https://mpmath.org• Website: https://github.com/mpmath/mpmathTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.3.0

version_requirements.txt:
mpmath >=1.1.0

Equivalent System Packages$ sudo pacman -S python-mpmath$ conda install mpmath$ sudo apt-get install python3-mpmath$ sudo yum install python-mpmath$ sudo emerge dev-python/mpmath$ sudo zypper install python3\$\{PYTHON_MINOR\}-mpmath$ sudo xbps-install python3-mpmath

See https://repology.org/project/mpmath/versions, https://repology.org/project/python:mpmath/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

352

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.226 msolve: Multivariate polynomial system solver
Description
Open source C library implementing computer algebra algorithms for solving polynomial systems (with rational coefficients or coefficients in a prime field).
LicenseGPL v2+
Upstream Contact
https://github.com/algebraic-solving/msolveType
optional
Dependencies• $(MP_LIBRARY)• flint: Fast Library for Number Theory• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
0.6.5

Equivalent System Packages(none known)

6.1.227 nauty: Find automorphism groups of graphs, generate non-isomorphic
graphsDescription
Nauty has various tools for finding the automorphism group of a graph, generating non-isomorphic graphs with certain
properties, etc.

6.1. Details of external packages

353

Packages and Features, Release 10.4

LicenseSince version 2.6, nauty license is GPL-compatible, see
http://users.cecs.anu.edu.au/ bdm/nauty/COPYRIGHT.txt(a copy of this file, called COPYRIGHT, is also present in the tarball)Special Packaging Instruction
Upstream distribute tarball named nauty${version}.tar.gz. We cannot deal with that so rename it nauty-${version}.tar.gz(notice the “-”) without any changes.
Upstream Contact
Brendan D. McKay, Computer Science Department Australian National University bdm@cs.anu.edu.au
Adolfo Piperno, Dipartimento di Informatica Sapienza - Università di Roma piperno@di.uniroma1.it
See http://cs.anu.edu.au/ bdm/nauty/ Or http://pallini.di.uniroma1.it/Typestandard
Dependencies
Version Information
package-version.txt:
2.8.8.p0

Equivalent System Packages$ sudo pacman -S nauty$ conda install nauty$ sudo apt-get install nauty$ sudo yum install nauty$ sudo pkg install math/nauty$ brew install nauty$ nix-env --install nauty

354

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo zypper install nauty nauty-devel$ sudo xbps-install nauty

See https://repology.org/project/nauty/versions
If the system package is installed, ./configure will check if it can be used.

6.1.228 nbclient: Client library for executing notebooks. Formerly nbconvert’s ExecutePreprocessor
Description
Client library for executing notebooks. Formerly nbconvert’s ExecutePreprocessor
License
BSD
Upstream Contact
https://pypi.org/project/nbclient/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• jupyter_client: Jupyter protocol implementation and client libraries• nbformat: The Jupyter Notebook format
Version Information
package-version.txt:
0.8.0

version_requirements.txt:
nbclient

6.1. Details of external packages

355

Packages and Features, Release 10.4

Equivalent System Packages$ conda install nbclient$ sudo emerge dev-python/nbclient$ sudo xbps-install python3-nbclient

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.229 nbconvert: Converting Jupyter Notebooks
Description
jupyter nbconvert converts notebooks to various other formats via Jinja templates.
License
BSD
Upstream Contact
https://pypi.org/project/nbconvert/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• beautifulsoup4: Screen-scraping library• bleach: An HTML-sanitizing tool
• defusedxml: Addresses vulnerabilities of XML parsers and XML libraries• entrypoints: Discover and load entry points from installed Python packages• jinja2: General purpose template engine for Python• jupyter_client: Jupyter protocol implementation and client libraries• jupyter_core: Jupyter core package• jupyterlab_pygments: Pygments theme using JupyterLab CSS variables• markupsafe: Safely add untrusted strings to HTML/XML markup• mistune: Sane and fast Markdown parser with useful plugins and renderers

356

Chapter 6. All External Packages

Packages and Features, Release 10.4

• nbclient: Client library for executing notebooks. Formerly nbconvert’s ExecutePreprocessor• nbformat: The Jupyter Notebook format• pandocfilters: A Python module for writing pandoc filters• pygments: Generic syntax highlighter• tinycss2: A tiny CSS parser• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
7.9.2

version_requirements.txt:
nbconvert >=5.6.1

Equivalent System Packages$ conda install nbconvert$ sudo emerge dev-python/nbconvert$ sudo zypper install jupyter-nbconvert$ sudo xbps-install python3-jupyter_nbconvert

See https://repology.org/project/nbconvert/versions, https://repology.org/project/python:nbconvert/versions, https://
repology.org/project/jupyter-nbconvert/versions, https://repology.org/project/python:jupyter-nbconvert/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.230 nbformat: The Jupyter Notebook format
Description
The Jupyter Notebook format

6.1. Details of external packages

357

Packages and Features, Release 10.4

LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/nbformat/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• fastjsonschema: Fastest Python implementation of JSON schema• jsonschema: Python implementation of JSON Schema• jupyter_core: Jupyter core package• traitlets: Traitlets Python configuration system
Version Information
package-version.txt:
5.9.2

version_requirements.txt:
nbformat >=5.0.7

Equivalent System Packages$ conda install nbformat$ sudo emerge dev-python/nbformat$ sudo zypper install jupyter-nbformat$ sudo xbps-install python3-jupyter_nbformat

See https://repology.org/project/nbformat/versions, https://repology.org/project/python:nbformat/versions, https://
repology.org/project/jupyter-nbformat/versions, https://repology.org/project/python:jupyter-nbformat/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

358

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.231 ncurses: Classic terminal output library
Description
Ncurses (new curses, pronounced “enn-curses”) started as a freely distributable “clone” of System V Release 4.0 (SVr4)
curses. It has outgrown the “clone” description, and now contains many features which are not in SVr4 curses. Curses isa pun on the term “cursor optimization”. It is a library of functions that manage an application’s display on character-cell
terminals (e.g., VT100).
The name “ncurses” was first used as the name of the curses library in Pavel Curtis’s pcurses, dated 1982. It was apparently
developed on a BSD 4.4 system, at Cornell. Parts of pcurses are readily identifiable in ncurses, including the basics forthe terminfo compiler (named compile in that package):• the Caps, used to define the terminfo capabilities• awk scripts MKcaptab.awk, MKnames.awk• the library modules used for the terminfo compiler.
Besides ncurses, parts of pcurses still survive in 2010, in recognizable form in Solaris.
Website: http://invisible-island.net/ncurses
License• MIT-style
Upstream Contact• bug-ncurses@gnu.org
Special Update/Build Instructions
None
Type
standard
Dependencies
Version Information
package-version.txt:
6.3

6.1. Details of external packages

359

Packages and Features, Release 10.4

Equivalent System Packages$ apk add ncurses-dev$ conda install ncurses$ apt-cyg install libncurses-devel$ sudo apt-get install libncurses5-dev$ sudo yum install ncurses-devel$ sudo pkg install devel/ncurses$ brew install ncurses$ sudo port install ncurses$ sudo zypper install pkgconfig\(ncurses\) pkgconfig\(ncursesw\)$ sudo slackpkg install ncurses$ sudo xbps-install ncurses-devel

See https://repology.org/project/ncurses/versions
If the system package is installed, ./configure will check if it can be used.

6.1.232 nest_asyncio: Patch asyncio to allow nested event loops
Description
Patch asyncio to allow nested event loops
License
BSD
Upstream Contact
https://pypi.org/project/nest-asyncio/

360

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.6.0

version_requirements.txt:
nest-asyncio

Equivalent System Packages$ conda install nest-asyncio$ sudo emerge dev-python/nest_asyncio$ sudo xbps-install python3-nest_asyncio

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.233 networkx: Python package for complex networks
Description
NetworkX (NX) is a Python package for the creation, manipulation, and study of the structure, dynamics, and functionsof complex networks.
LicenseBSD

6.1. Details of external packages

361

Packages and Features, Release 10.4

Upstream Contact
https://networkx.github.io/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• scipy: Scientific tools for Python
Version Information
package-version.txt:
3.2.1

version_requirements.txt:
networkx >=2.4

Equivalent System Packages$ sudo pacman -S python-networkx$ conda install networkx\<3.3\,\>=2.4$ sudo apt-get install python3-networkx$ sudo yum install python-networkx$ sudo emerge dev-python/networkx$ sudo port install py-networkx$ sudo zypper install python3\$\{PYTHON_MINOR\}-networkx$ sudo xbps-install python3-networkx

See https://repology.org/project/python:networkx/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

362

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.234 nibabel: Access a multitude of neuroimaging data formats
Description
Access a multitude of neuroimaging data formats
LicenseMIT License
Upstream Contact
https://pypi.org/project/nibabel/Type
optional
Dependencies
Version Information
requirements.txt:
nibabelEquivalent System Packages$ conda install nibabel$ sudo port install py-nibabel$ sudo zypper install python3\$\{PYTHON_MINOR\}-nibabel

See https://repology.org/project/nibabel/versions, https://repology.org/project/python:nibabel/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.235 ninja_build: A build system with a focus on speed
Description
Ninja is a small build system with a focus on speed.

6.1. Details of external packages

363

Packages and Features, Release 10.4

LicenseApache License 2.0
Upstream Contact
https://ninja-build.org/
Typestandard
Dependencies• $(PYTHON)
Version Information
package-version.txt:
1.11.1

Equivalent System Packages$ sudo pacman -S ninja$ conda install ninja$ apt-cyg install ninja$ sudo apt-get install ninja-build$ sudo yum install ninja-build$ sudo pkg install devel/ninja$ sudo emerge dev-build/ninja$ brew install ninja$ sudo port install ninja$ sudo zypper install ninja$ sudo xbps-install ninja

See https://repology.org/project/ninja/versions
If the system package is installed, ./configure will check if it can be used.
364

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.236 normaliz: Computations in affine monoids, vector configurations, lattice
polytopes, and rational cones
Description
Normaliz is a tool for computations in affine monoids, vector configurations, lattice polytopes, and rational cones.
For more details see http://www.mathematik.uni-osnabrueck.de/normaliz/
License• GPL v3
Upstream Contact• normaliz@uos.de• Winfried Bruns <wbruns@uos.de>• Christof Söger <csoeger@uos.de>• see also https://www.normaliz.uni-osnabrueck.de/home/contact/and https://github.com/NormalizSpecial Update/Build Instructions• The spkg currently disables features that require packages SCIP and CoCoA, for which we don’t have packages(yet).
Type
optional
Dependencies• $(MP_LIBRARY)• e_antic: Real embedded number fields• flint: Fast Library for Number Theory• libnauty: Find automorphism groups of graphs, generate non-isomorphic graphs (callable library)

6.1. Details of external packages

365

Packages and Features, Release 10.4

Version Information
package-version.txt:
3.10.3Equivalent System Packages$ sudo pacman -S normaliz$ conda install normaliz$ sudo apt-get install libnormaliz-dev$ sudo yum install libnormaliz-devel$ sudo emerge sci-mathematics/normaliz$ sudo zypper install normaliz-devel

See https://repology.org/project/normaliz/versions, https://repology.org/project/libnormaliz/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.237 notebook: Jupyter notebook, a web-based notebook environment for interactive computing
Description
The Jupyter HTML notebook is a web-based notebook environment for interactive computing.
LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/notebook/366

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• jupyter_server: The backend (core services, APIs, REST endpoints) to Jupyter web applications• jupyterlab: JupyterLab computational environment• jupyterlab_server: Set of server components for JupyterLab and JupyterLab like applications• notebook_shim: A shim layer for notebook traits and config
Version Information
package-version.txt:
7.1.1

version_requirements.txt:
notebook >=6.1.1

Equivalent System Packages$ sudo pacman -S jupyter-notebook$ conda install notebook$ sudo emerge dev-python/notebook$ sudo port install py-notebook$ sudo xbps-install python3-jupyter_notebook

See https://repology.org/project/python:notebook/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

367

Packages and Features, Release 10.4

6.1.238 notebook_shim: A shim layer for notebook traits and config
Description
A shim layer for notebook traits and config
LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/notebook-shim/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• jupyter_server: The backend (core services, APIs, REST endpoints) to Jupyter web applications
Version Information
package-version.txt:
0.2.3

version_requirements.txt:
notebook-shim

Equivalent System Packages(none known)

368

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.239 notedown: Create IPython notebooks from markdown
Description
Notedown is a simple tool to create IPython notebooks from markdown.
LicenseBSD 2-Clause License
Upstream Contact
Author: Aaron O’Leary Home page: https://github.com/aaren/notedownTypeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• nbconvert: Converting Jupyter Notebooks• nbformat: The Jupyter Notebook format• pandoc_attributes: A parser and generator for pandoc block attributes• six: Python 2 and 3 compatibility utilities
Version Information
package-version.txt:
1.5.1

version_requirements.txt:
notedown >=1.5.1

Equivalent System Packages$ conda install notedownSee https://repology.org/project/python:notedown/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

369

Packages and Features, Release 10.4

6.1.240 ntl: A library for doing number theory
Description
NTL is a high-performance, portable C++ library providing data structures and algorithms for manipulating signed, arbitrary length integers, and for vectors, matrices, and polynomials over the integers and over finite fields.
Website: http://www.shoup.net/ntl/
License• GNU LGPLv2.1+
Upstream Contact• Victor Shoup - for contact info see http://www.shoup.net/
Special Update/Build Instructions• NoneTypestandard
Dependencies• $(MP_LIBRARY)• gf2x: Fast arithmetic in GF(2)[x] and searching for irreducible/primitive trinomials
Version Information
package-version.txt:
11.5.1

Equivalent System Packages$ conda install ntl$ apt-cyg install libntl-devel$ sudo apt-get install libntl-dev$ sudo yum install ntl-devel370

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo pkg install math/ntl$ sudo emerge dev-libs/ntl$ brew install ntl$ sudo port install ntl$ nix-env --install ntl$ sudo zypper install ntl-devel$ sudo xbps-install ntl-devel

See https://repology.org/project/ntl/versions
If the system package is installed, ./configure will check if it can be used.

6.1.241 numpy: Package for scientific computing with Python
Description
This package adds numerical linear algebra and other numerical computing capabilities to python.
Upstream Contact• https://numpy.org/• Travis Oliphant• Fernando Perez• Brian Granger
Special Update/Build Instructions• Scipy uses numpy’s distutils to control its compilation of fortran code.
Whenever numpy is updated it is necessary to make sure that scipy still builds ok.
Typestandard

6.1. Details of external packages

371

Packages and Features, Release 10.4

Dependencies• $(BLAS)• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• gfortran: Fortran compiler from the GNU Compiler Collection• meson_python: Meson Python build backend (PEP 517)
• pkgconfig: Python interface to pkg-config
Version Information
package-version.txt:
1.26.3

src/pyproject.toml:
numpy >=1.19

version_requirements.txt:
numpy >=1.19

Equivalent System Packages$ sudo pacman -S python-numpy$ conda install numpy$ sudo apt-get install python3-numpy$ sudo yum install python-numpy$ sudo emerge dev-python/numpy$ brew install numpy$ sudo port install py-numpy$ sudo zypper install python3\$\{PYTHON_MINOR\}-numpy$ sudo xbps-install python3-numpy

See https://repology.org/project/python:numpy/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.
372

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.242 onetbb: oneAPI Threading Building Blocks
Description
C++ parallelization library
LicenseApache License, Version 2.0
Upstream Contact
https://github.com/oneapi-src/oneTBB
Type
optional
Dependencies• cmake: A cross-platform build system generator
Version Information
package-version.txt:
2021.12.0

Equivalent System Packages$ apk add libtbb-dev$ sudo pacman -S intel-oneapi-tbb$ conda install tbb$ sudo apt-get install libtbb-dev$ sudo yum install tbb-devel$ sudo pkg install devel/onetbb$ sudo emerge dev-cpp/tbb$ brew install tbb

6.1. Details of external packages

373

Packages and Features, Release 10.4

$ sudo port install onetbb$ nix-env --install tbb$ sudo zypper install tbb$ sudo xbps-install tbb-devel

If the system package is installed, ./configure will check if it can be used.

6.1.243 openblas: An optimized implementation of BLAS (Basic Linear Algebra
Subprograms)
Description
OpenBLAS is an optimized open library implementing the Basic Linear Algebra Subprograms (BLAS) specification.
It is based on GotoBLAS2 1.13 BSD version.
License3-clause BSD license
SPKG Repository
https://www.openblas.net
GitHub page: https://github.com/xianyi/OpenBLAS
Releases: https://github.com/xianyi/OpenBLAS/releases
Upstream Contact• OpenBLAS users mailing list:
https://groups.google.com/forum/#!forum/openblas-users• OpenBLAS developers mailing list:
https://groups.google.com/forum/#!forum/openblas-dev
Typestandard

374

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• gfortran: Fortran compiler from the GNU Compiler Collection
Version Information
package-version.txt:
0.3.26Equivalent System Packages$ apk add openblas-dev$ sudo pacman -S openblas lapack cblas$ conda install openblas blas=2.\*=openblas$ apt-cyg install liblapack-devel libopenblas$ sudo apt-get install libopenblas-dev$ sudo yum install openblas-devel$ sudo pkg install math/openblas$ sudo emerge sci-libs/openblas$ brew install openblas$ sudo port install OpenBLAS-devel$ nix-env --install blas lapack$ sudo zypper install openblas-devel

install the following packages: openblas$ sudo xbps-install openblas-devel

See https://repology.org/project/openblas/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

375

Packages and Features, Release 10.4

6.1.244 openssl: Implementation of the SSL and TLS protocols
Description
From wikipedia: OpenSSL is an open source implementation of the SSL and TLS protocols. The core library (written
in the C programming language) implements the basic cryptographic functions and provides various utility functions.
Wrappers allowing the use of the OpenSSL library in a variety of computer languages are available.
License• Apache License v2 (considered compatible with GPL v3)
Upstream Contact• http://openssl.org/
Typestandard
Dependencies
Version Information
package-version.txt:
3.2.2

Equivalent System Packages$ apk add openssl-dev$ sudo pacman -S openssl$ conda install openssl$ apt-cyg install libssl-devel$ sudo apt-get install openssl libssl-dev$ sudo yum install openssl openssl-devel$ sudo pkg install security/openssl$ brew install openssl

376

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo port install openssl$ nix-env --install openssl$ sudo zypper install libopenssl-3-devel

install the following packages: openssl$ sudo slackpkg install openssl openssl-solibs$ sudo xbps-install openssl-devel

See https://repology.org/project/openssl/versions
If the system package is installed, ./configure will check if it can be used.

6.1.245 ore_algebra: Ore algebra
Description
A Sage implementation of Ore algebras, Ore polynomials, and differentially finite functions.
Main features for the most common algebras include basic arithmetic and actions; gcrd and lclm; D-finite closure properties; creative telescoping; natural transformations between related algebras; guessing; desingularization; solvers for polynomials, rational functions and (generalized) power series. Univariate differential operators also support the numericalcomputation of analytic solutions with rigorous error bounds and related features.
License• GPL-2.0+
Upstream Contact• Website: https://github.com/mkauers/ore_algebra/• Sage accounts: mkauers, mmezzarobba
Type
optional

6.1. Details of external packages

377

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)
Version Information
requirements.txt:
git+https://github.com/mkauers/ore_algebra@01c357f590685ff362c008229681ee08269457da

Equivalent System Packages
See https://repology.org/project/ore-algebra/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.246 osqp_python: The Operator Splitting QP Solver (Python wrapper)
Description
This is the Python wrapper for OSQP: The Operator Splitting QP Solver.
It vendors OSQP.
LicenseApache 2.0
Upstream Contact
https://pypi.org/project/osqp/
Typeoptional

378

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cmake: A cross-platform build system generator• numpy: Package for scientific computing with Python• qdldl_python: QDLDL, a free LDL factorization routine (Python wrapper)• scipy: Scientific tools for Python
Version Information
package-version.txt:
0.6.3

version_requirements.txt:
osqp

Equivalent System Packages$ conda install osqp

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.247 overrides: Decorator to automatically detect mismatch when overriding amethodDescription
Decorator to automatically detect mismatch when overriding a method
LicenseApache License, Version 2.0
Upstream Contact
https://pypi.org/project/overrides/

6.1. Details of external packages

379

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
7.4.0

version_requirements.txt:
overrides

Equivalent System Packages(none known)

6.1.248 p_group_cohomology: Modular cohomology rings of finite groups
Description
Modular Cohomology Rings of Finite Groups
The package is located at http://users.fmi.uni-jena.de/cohomology/,
that’s to say the tarballp_group_cohomology-x.y.tar.xz can be found there and the documentation of the package is provided at
http://users.fmi.uni-jena.de/cohomology/documentation/
LicenseCopyright (C) 2018 Simon A. King <simon.king@uni-jena.de> Copyright (C) 2011 Simon A. King <simon.king@uni-jena.de> Copyright (C) 2009 Simon A. King <simon.king@nuigalway.ie> andDavid J. Green <david.green@uni-jena.de>Distributed under the terms of the GNU General Public License (GPL), version 2 or later (at your choice).
This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The full text of the GPL is available at:
http://www.gnu.org/licenses/
The package includes a data base of cohomology rings of the groups of order 64 and provides access to a data base ofcohomology rings of the groups of order 128 and 243, located at

380

Chapter 6. All External Packages

Packages and Features, Release 10.4

http://cohomology.uni-jena.de/db/
These data bases are distributed under the Creative Commons Attribution-Share Alike 3.0 License. The full text of thislicence is available at
http://creativecommons.org/licenses/by-sa/3.0/
SPKG Maintainers
Simon A. King <simon.king@uni-jena.de>
Upstream Contact
Simon A. King <simon.king@uni-jena.de> David J. Green <david.green@uni-jena.de>
Acknowledgements
The development of the initial version of this SPKG was funded by the German Science Foundation, DFG project GR
1585/4.1, and was accomplished at the Friedrich Schiller University Jena.
Since version 1.0.1, the further work on this SPKG was funded by Marie Curie grant MTKD-CT-2006-042685 and was
pursued at the National University of Ireland, Galway. Since Novermber 2010, it is moved back to Jena.
We thank William Stein for giving us access to various computers on which we could build test the SPKG and on whichsome huge computations could be completed, and acknowledge the support by National Science Foundation Grant No.
DMS-0821725.
We thank Mathieu Dutour Sikirić for hints on how to use GAP more efficiently.
We owe Peter Symonds the idea of using the Poincaré series in a rather efficient completeness criterion.
We are greatful to John Palmieri for his help on making p_group_cohomology work with python-3.
Dependencies• The SharedMeatAxe needs to be installed, as a build time dependency.
This can be met by installing the meataxe spkg
Testing
Our package provides a very short test suite for David Green’s routines for the computation of minimal projective resolutions. The majority of this package’s tests is formed by doc tests in the Cython code. In fact, any class, method andfunction is covered by tests.
Note that internet access is required for these tests, as it is attempted to download cohomology rings from a public database in the web.
The script spkg-check calls sage -t --force_lib on the files in pGroupCohomology.

6.1. Details of external packages

381

Packages and Features, Release 10.4

Documentation
The documentation of this package is automatically built, if the environment variable SAGE_SPKG_INSTALL_DOCS
is yes (do “export SAGE_SPKG_INSTALL_DOCS=yes” on the command line before installation). The documents are
put into SAGE_ROOT/local/share/doc/p_group_cohomology/.
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• gap: Groups, Algorithms, Programming - a system for computational discrete algebra• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• matplotlib: Python 2D plotting library• meataxe: Library for computing with modular representations• modular_resolution: Modular cohomology rings of finite groups• singular: Computer algebra system for polynomial computations, algebraic geometry, singularity theory• xz: General-purpose data compression software
Version Information
package-version.txt:
3.3.3.p1

version_requirements.txt:
p_group_cohomology >=3.3

Equivalent System Packages
See https://repology.org/project/sagemath-p-group-cohomology/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

382

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.249 packaging: Core utilities for Python packages
Description
Core utilities for Python packages
License
Upstream Contact
https://pypi.org/project/packaging/Type
standard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
24.0

version_requirements.txt:
packaging >=21.0

Equivalent System Packages$ sudo pacman -S python-packaging$ conda install packaging$ sudo apt-get install python3-packaging$ sudo yum install python-packaging$ sudo emerge dev-python/packaging$ sudo port install py-packaging$ sudo zypper install python3\$\{PYTHON_MINOR\}-packaging

6.1. Details of external packages

383

Packages and Features, Release 10.4

$ sudo xbps-install python3-packaging

See https://repology.org/project/packaging/versions, https://repology.org/project/python:packaging/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.250 palettable: Color palettes for Python
Description
Color palettes for Python
License
Upstream Contact
https://pypi.org/project/palettable/Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
3.3.0

version_requirements.txt:
palettable

Equivalent System Packages$ conda install palettable

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

384

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.251 palp: A package for Analyzing Lattice Polytopes
Description
A Package for Analyzing Lattice Polytopes (PALP) is a set of C programs for calculations with lattice polytopes andapplications to toric geometry.
It contains routines for vertex and facet enumeration, computation of incidences and symmetries, as well as completionof the set of lattice points in the convex hull of a given set of points. In addition, there are procedures specialised
to reflexive polytopes such as the enumeration of reflexive subpolytopes, and applications to toric geometry and string
theory, like the computation of Hodge data and fibration structures for toric Calabi-Yau varieties. The package is welltested and optimised in speed as it was used for time consuming tasks such as the classification of reflexive polyhedra in
4 dimensions and the creation and manipulation of very large lists of 5-dimensional polyhedra.
While originally intended for low-dimensional applications, the algorithms work in any dimension and our key routine forvertex and facet enumeration compares well with existing packages.
License• When released, GPL 2 was in force.
• There is a link to a web page, which now points to GPL 3, but would have pointed to GPL 2 at the time the package
was released.
• Therefore one can deduce the authors were happy for this to be released under GPL 2 or a later version.
Upstream Contact• Author: Harald Skarke (skarke@maths.ox.ac.uk)• Home page: http://hep.itp.tuwien.ac.at/ kreuzer/CY/CYpalp.html
Typestandard
Dependencies
Version Information
package-version.txt:
2.11

6.1. Details of external packages

385

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S palp
$ conda install palp
$ sudo apt-get install palp
$ sudo yum install palp
$ nix-env --install palp
$ sudo xbps-install palp

See https://repology.org/project/palp/versions
If the system package is installed, ./configure will check if it can be used.

6.1.252 pandoc: A document converter
Description
This dummy package represents the document converter pandoc.
We do not have an SPKG for it. The purpose of this dummy package is to associate system package lists with it.
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add pandoc$ sudo pacman -S pandoc$ conda install pandoc$ sudo apt-get install pandoc$ sudo yum install pandoc$ sudo pkg install textproc/hs-pandoc

386

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo emerge app-text/pandoc$ brew install pandoc$ sudo port install pandoc$ sudo zypper install pandoc$ sudo xbps-install pandoc

See https://repology.org/project/pandoc/versions
If the system package is installed, ./configure will check if it can be used.

6.1.253 pandoc_attributes: A parser and generator for pandoc block attributes
Description
This is a simple parser / emitter for pandoc block attributes, intended for use with pandocfilters.
LicenseBSD 2-Clause License
Upstream Contact• Author: Aaron O’Leary• Home page: https://github.com/aaren/pandoc-attributes
Special Update/Build Instructions
There are no release numbers, hence find the latest commit, download https://github.com/aaren/pandoc-attributes/
archive/${COMMIT}.zip and rename it pandoc_attributes-${COMMIT:0:8}.zip
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pandocfilters: A Python module for writing pandoc filters

6.1. Details of external packages

387

Packages and Features, Release 10.4

Version Information
package-version.txt:
8bc82f6d

version_requirements.txt:
pandoc_attributes >=8bc82f6d

Equivalent System Packages$ conda install pandoc-attributes

See https://repology.org/project/pandoc-attributes/versions,versions

https://repology.org/project/python:pandoc-attributes/

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.254 pandocfilters: A Python module for writing pandoc filters
Description
A python module for writing pandoc filters.
LicenseBSD 3-Clause License
Upstream Contact
Author: John MacFarlane Home page: https://github.com/jgm/pandocfilters
Special Update/Build Instructions
Download the last release from https://pypi.python.org/pypi/pandocfiltersTypestandard

388

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.5.0

version_requirements.txt:
pandocfilters >=1.4.2

Equivalent System Packages$ sudo pacman -S python-pandocfilters$ conda install pandocfilters$ sudo apt-get install python3-pandocfilters$ sudo yum install python-pandocfilters$ sudo emerge dev-python/pandocfilters$ sudo port install py-pandocfilters$ sudo zypper install python3\$\{PYTHON_MINOR\}-pandocfilters$ sudo xbps-install python3-pandocfilters

See https://repology.org/project/python:pandocfilters/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.255 papilo: Parallel presolve for integer and linear optimization
Description
parallel presolve routines for (mixed integer) linear programming problems. The routines are implemented using templates
which allows switching to higher precision or rational arithmetic using the boost multiprecision package.

6.1. Details of external packages

389

Packages and Features, Release 10.4

LicenseLGPL 3.0
Upstream Contact
https://github.com/scipopt/papilo/Typeoptional
Dependencies• $(BLAS)• $(MP_LIBRARY)• boost_cropped: Portable C++ libraries (subset needed for Sage)• cmake: A cross-platform build system generator• gfortran: Fortran compiler from the GNU Compiler Collection• onetbb: oneAPI Threading Building Blocks
Version Information
package-version.txt:
2.2.1

Equivalent System Packages(none known)

6.1.256 pari: Computer algebra system for fast computations in number theory
Description
PARI/GP is a widely used computer algebra system designed for fast computations in number theory (factorizations,algebraic number theory, elliptic curves…), but also contains a large number of other useful functions to compute withmathematical entities such as matrices, polynomials, power series, algebraic numbers etc., and a lot of transcendental
functions. PARI is also available as a C library to allow for faster computations.
Originally developed by Henri Cohen and his co-workers (Université Bordeaux I, France), PARI is now under the GPL
and maintained by Karim Belabas with the help of many volunteer contributors.

390

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseGPL version 2+
Upstream Contact• http://pari.math.u-bordeaux.fr/
Dependencies• Perl• MPIR or GMP• Readline• GNU patch (shipped with Sage)
Special Update/Build Instructions
See patches/README.txt for a list of patches.
The current upstream tarball was created from the PARI git repository by running “make snapshot”.
Typestandard
Dependencies• $(MP_LIBRARY)• pari_galdata: PARI data package needed to compute Galois groups in degrees 8 through 11• pari_seadata_small: PARI data package needed by ellap for large primes (small version)• readline: Command line editing library
Version Information
package-version.txt:
2.15.46.1. Details of external packages

391

Packages and Features, Release 10.4

Equivalent System Packages$ apk add pari-dev$ sudo pacman -S pari pari-galdata pari-seadata pari-elldata \pari-galpol$ conda install pari=\*=\*_pthread pari-elldata pari-galdata \pari-galpol pari-seadata$ sudo apt-get install pari-gp2c libpari-dev pari-doc pari-elldata \pari-galdata pari-galpol pari-seadata$ sudo yum install pari-devel pari-gp --setopt=tsflags= pari-galdata \pari-galpol pari-seadata pari-elldata$ sudo pkg install math/pari$ sudo emerge sci-mathematics/pari sci-mathematics/pari-data$ brew install pari pari-elldata pari-galdata pari-galpol pari-seadata

No package needed.
$ nix-env --install pari
$ sudo zypper install pari-devel pari-gp$ sudo xbps-install pari pari-devel pari-elldata-small pari-galdata \pari-galpol-small pari-seadata

See https://repology.org/project/pari/versions, https://repology.org/project/pari-gp/versions, https://repology.org/
project/pari-data/versions, https://repology.org/project/pari-elldata/versions, https://repology.org/project/pari-galdata/
versions,
https://repology.org/project/pari-galpol/versions,
https://repology.org/project/pari-nftables/versions,
https://repology.org/project/pari-seadata/versions, https://repology.org/project/pari-seadata-big/versions
If the system package is installed, ./configure will check if it can be used.

6.1.257 pari_elldata: PARI data package for elliptic curves
Description
PARI/GP version of J. E. Cremona Elliptic Curve Data, needed by ellsearch and ellidentify.

392

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseGNU General Public License (GPL version 2 or any later version).
Upstream Contact
http://pari.math.u-bordeaux.fr/
Dependencies• Installation: None
• Runtime: PARI/GP
Type
optional
Dependencies
Version Information
package-version.txt:
20161017

Equivalent System Packages$ sudo pacman -S pari-elldata$ conda install pari-elldata$ sudo pkg install math/pari_elldata$ sudo zypper install pari-elldata$ sudo xbps-install pari-elldata-small

See https://repology.org/project/pari-elldata/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

393

Packages and Features, Release 10.4

6.1.258 pari_galdata: PARI data package needed to compute Galois groups in degrees 8 through 11
Description
PARI package “galdata”: Needed by polgalois to compute Galois group in degrees 8 through 11.
LicenseGPL version 2+
Upstream Contact
http://pari.math.u-bordeaux.fr/
Typestandard
Dependencies
Version Information
package-version.txt:
20080411.p0

Equivalent System Packages$ sudo pacman -S pari-galdata$ conda install pari-galdata$ sudo yum install pari-galdata$ sudo pkg install pari_galdata$ sudo zypper install pari-galdata$ sudo xbps-install pari-galdata

See https://repology.org/project/pari-galdata/versions
If the system package is installed, ./configure will check if it can be used.

394

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.259 pari_galpol: PARI data package for polynomials defining Galois extensionsof the rationals
Description
PARI package of the GALPOL database of polynomials defining Galois extensions of the rationals, accessed by galoisgetpol, galoisgetgroup, galoisgetname.
LicenseGNU General Public License (GPL version 2 or any later version).
Upstream Contact
http://pari.math.u-bordeaux.fr/
Dependencies• Installation: None
• Runtime: PARI/GP
Type
optional
Dependencies
Version Information
package-version.txt:
20180625

Equivalent System Packages$ sudo pacman -S pari-galpol$ conda install pari-galpol$ sudo yum install pari-galpol$ sudo pkg install math/pari_galpol$ sudo zypper install pari-galpol$ sudo xbps-install pari-galpol-small

6.1. Details of external packages

395

Packages and Features, Release 10.4

See https://repology.org/project/pari-galpol/versions
If the system package is installed, ./configure will check if it can be used.

6.1.260 pari_jupyter: Jupyter kernel for PARI/GP
Description
Jupyter kernel for PARI/GP
LicenseGPL version 3 or later
Upstream Contact• https://github.com/sagemath/pari-jupyter
Dependencies• Python >= 3.6.1• Jupyter 4• PARI version 2.13 or later• Readline (any version which works with PARI)• Optional: Cython version 0.25 or laterTypeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• jupyter_core: Jupyter core package• notebook: Jupyter notebook, a web-based notebook environment for interactive computing• pari: Computer algebra system for fast computations in number theory

396

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.4.3

version_requirements.txt:
pari_jupyter >=1.3.2

Equivalent System Packages$ conda install pari_jupyter

See https://repology.org/project/pari-jupyter/versions, https://repology.org/project/python:pari-jupyter/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.261 pari_nftables: PARI data package for number fields
Description
Repackaging of the historical megrez number field tables (errors fixed, 1/10th the size, easier to use).
LicenseGNU General Public License (GPL version 2 or any later version).
Upstream Contact
http://pari.math.u-bordeaux.fr/
Dependencies• Installation: None
• Runtime: PARI/GP
Type
optional

6.1. Details of external packages

397

Packages and Features, Release 10.4

Dependencies
Version Information
package-version.txt:
20080929

Equivalent System Packages$ conda install pari-nftables$ sudo pkg install math/pari_nftables$ sudo zypper install pari-nftables$ sudo xbps-install pari-nftables

See https://repology.org/project/pari-nftables/versions
If the system package is installed, ./configure will check if it can be used.

6.1.262 pari_seadata: PARI data package needed by ellap for large primes (fullversion)Description
Needed by ellap for large primes. These polynomials were extracted from the ECHIDNA databases and computed byDavid R. Kohel. This covers finite fields of cardinality q up to 750 bits. PARI/GP 2.9 contains fallback code to go on when
all modular polynomials in the database have been exhausted and can handle larger fields (with an important slowdown).
LicenseGNU General Public License (GPL version 2 or any later version).
Upstream Contact
http://pari.math.u-bordeaux.fr/
Dependencies• Installation: None
• Runtime: PARI/GP

398

Chapter 6. All External Packages

Packages and Features, Release 10.4

Type
optional
Dependencies
Version Information
package-version.txt:
20090618

Equivalent System Packages$ sudo pacman -S pari-seadata$ conda install pari-seadata$ sudo yum install pari-seadata$ sudo pkg install math/pari_seadata$ sudo zypper install pari-seadata$ sudo xbps-install pari-seadata

See https://repology.org/project/pari-seadata/versions, https://repology.org/project/pari-seadata-big/versions
If the system package is installed, ./configure will check if it can be used.

6.1.263 pari_seadata_small: PARI data package needed by ellap for large primes(small version)
Description
PARI package “seadata_small”: Needed by ellap for large primes. This “small” one is a much smaller version that should
be suitable for primes up to 350 bits. These polynomials were extracted from the ECHIDNA databases and computed byDavid R. Kohel.
LicenseGPL version 2+

6.1. Details of external packages

399

Packages and Features, Release 10.4

Upstream Contact
http://pari.math.u-bordeaux.fr/
Typestandard
Dependencies
Version Information
package-version.txt:
20090618.p0

Equivalent System Packages$ sudo pacman -S pari-seadata$ conda install pari-seadata-small$ sudo pkg install math/pari_seadata$ sudo xbps-install pari-seadata

See https://repology.org/project/pari-seadata-small/versions
If the system package is installed, ./configure will check if it can be used.

6.1.264 parso: Python Parser
Description
Parso is a Python parser that supports error recovery and round-trip parsing for different Python versions (in multiple
Python versions). Parso is also able to list multiple syntax errors in your python file.
LicenseMIT

400

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/parso/
Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
0.8.4

version_requirements.txt:
parso >=0.7.0

Equivalent System Packages$ conda install parso$ sudo emerge dev-python/parso$ sudo port install py-parso$ sudo xbps-install python3-parso

See https://repology.org/project/python:parso/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.265 patch: Applies diffs and patches to files
Description‘patch’ takes a patch file containing a difference listing produced by the ‘diff’ program and applies those differences to one
or more original files, producing patched versions.
The version of ‘patch’ included is the GNU one. Some of the ‘diff’ files produced by GNU ‘diff’ are not acceptable tosome versions of the ‘patch’ command, such as the ‘patch’ command that comes with Solaris.

6.1. Details of external packages

401

Packages and Features, Release 10.4

LicenseThis program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2, or (at your option) any later version.
Upstream Contact
Main web site: http://savannah.gnu.org/projects/patch/
Bug database: http://savannah.gnu.org/bugs/?group=patch
Submit bugs: http://savannah.gnu.org/bugs/?func=additem&group=patch
Mailing lists: bug-patch@gnu.org
Special Update/Build Instructions
In the event patches ever need to be made to this package, the method of applying the patches should not rely on the‘patch’ existing on the system.
Type
standard
Dependencies
Version Information
package-version.txt:
2.7.6

Equivalent System Packages$ apk add patch$ sudo pacman -S patch$ conda install patch$ apt-cyg install patch$ sudo apt-get install patch$ sudo yum install patch$ sudo pkg install devel/patch

402

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ brew install gpatch$ sudo port install gpatch$ sudo zypper install patch$ sudo slackpkg install patch$ sudo xbps-install patch

See https://repology.org/project/patch/versions
If the system package is installed, ./configure will check if it can be used.

6.1.266 patchelf: A small utility to modify the dynamic linker and RPATH of ELF
executables
Description
A small utility to modify the dynamic linker and RPATH of ELF executables.
LicenseGPL-3.0-or-later
Upstream Contact
https://github.com/NixOS/patchelfTypestandard
Dependencies• bzip2: High-quality data compressor
Version Information
package-version.txt:
0.13.16.1. Details of external packages

403

Packages and Features, Release 10.4

Equivalent System Packages$ sudo apt-get install patchelf$ sudo yum install patchelf$ sudo pkg install sysutils/patchelf$ sudo emerge dev-util/patchelf$ brew install patchelf$ sudo port install patchelf$ nix-env --install patchelf$ sudo zypper install patchelf$ sudo xbps-install patchelfSee https://repology.org/project/patchelf/versions
If the system package is installed, ./configure will check if it can be used.

6.1.267 pathspec: Utility library for gitignore style pattern matching of file paths
Description
Utility library for gitignore style pattern matching of file paths
LicenseMPL 2.0
Upstream Contact
https://pypi.org/project/pathspec/Typestandard

404

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
0.12.1

version_requirements.txt:
pathspec

Equivalent System Packages$ conda install pathspec$ sudo emerge dev-python/pathspec

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.268 pdf2svg: PDF to SVG convertor
Description
pdf2svg is a tiny command-line utility using Cairo and Poppler to convert PDF documents into SVG files. Multi-page
PDF can be split up to one SVG per page by passing a file naming specification.
LicenseGPL
Upstream Contact
http://cityinthesky.co.uk/opensource/pdf2svg/

6.1. Details of external packages

405

Packages and Features, Release 10.4

Type
optional
Dependencies
Version Information
Equivalent System Packages$ apk add pdf2svg$ sudo pacman -S pdf2svg$ conda install pdf2svg$ sudo apt-get install pdf2svg$ sudo yum install pdf2svg$ sudo pkg install graphics/pdf2svg$ brew install pdf2svg$ sudo port install pdf2svg$ nix-env --install pdf2svg$ sudo zypper install pdf2svg

See https://repology.org/project/pdf2svg/versions
If the system package is installed, ./configure will check if it can be used.

6.1.269 perl_cpan_polymake_prereq: Represents all Perl packages that are prerequisites for polymake
Description
This script package represents all Perl packages that are prerequisites for polymake.

406

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseVarious free software licenses
Type
optional
Dependencies
Version Information
Equivalent System Packages$ apk add perl-term-readkey perl-dev perl-file-slurp perl-json \perl-xml-writer perl-xml-libxslt$ cpan -i XML::Writer XML::LibXML XML::LibXSLT File::Slurp JSON SVG \Term::ReadKey$ sudo apt-get install libxml-libxslt-perl libxml-writer-perl \libxml2-dev libperl-dev libfile-slurp-perl libjson-perl \libsvg-perl libterm-readkey-perl libterm-readline-gnu-perl$ sudo yum install perl-ExtUtils-Embed perl-File-Slurp perl-JSON \perl-Term-ReadLine-Gnu perl-TermReadKey perl-XML-Writer \perl-XML-LibXML perl-XML-LibXSLT$ sudo pkg install textproc/p5-XML-Writer textproc/p5-XML-LibXML \textproc/p5-XML-LibXSLT devel/p5-File-Slurp converters/p5-JSON \textproc/p5-SVG devel/p5-Term-ReadKey$ sudo emerge XML-Writer XML-LibXML XML-LibXSLT File-Slurp \dev-perl/Term-ReadLine-Gnu dev-perl/TermReadKey JSON SVG$ sudo xbps-install perl-File-Slurp perl-JSON perl-SVG \perl-Term-ReadKey perl-XML-LibXML perl-XML-LibXSLT \perl-XML-Writer

If the system package is installed, ./configure will check if it can be used.

6.1.270 perl_mongodb: A prerequisite for polymake’s PolyDB feature
Description
This script package represents the Perl package MongoDB, which is needed for the PolyDB feature of polymake.

6.1. Details of external packages

407

Packages and Features, Release 10.4

LicenseVarious free software licenses
Type
optional
Dependencies
Version Information
Equivalent System Packages$ cpan -i MongoDB$ sudo apt-get install libmongodb-perl$ sudo yum install perl-MongoDB$ sudo pkg install databases/p5-MongoDB$ sudo emerge dev-perl/MongoDB

If the system package is installed, ./configure will check if it can be used.

6.1.271 perl_term_readline_gnu: Perl extension for the GNU Readline/History libraries
Description
Perl extension for the GNU Readline/History Library
Available on CPAN
LicenseThe Perl 5 License (Artistic 1 & GPL 1)
Upstream Contact
Hiroo HAYASHI

408

Chapter 6. All External Packages

Packages and Features, Release 10.4

Type
optional
Dependencies• readline: Command line editing library
Version Information
package-version.txt:
1.35

Equivalent System Packages$ apk add perl-term-readline-gnu$ sudo pacman -S perl-term-readline-gnu$ cpan -i Term::ReadLine::Gnu$ apt-cyg install perl-Term-ReadLine-Gnu$ sudo apt-get install libterm-readline-gnu-perl$ sudo yum install perl-Term-ReadLine-Gnu$ sudo pkg install devel/p5-Term-ReadLine-Gnu$ sudo emerge dev-perl/Term-ReadLine-Gnu$ sudo port install p5-term-readline-gnu$ sudo zypper install perl\(Term::ReadLine::Gnu\)$ sudo xbps-install perl-Term-ReadLine-Gnu

See https://repology.org/project/perl:term-readline-gnu/versions, https://repology.org/project/perl:termreadline-gnu/
versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

409

Packages and Features, Release 10.4

6.1.272 pexpect: Python module for controlling and automating other programs
Description
Pexpect is a pure Python module for spawning child applications; controlling them; and responding to expected patterns
in their output.
License
ISC license: http://opensource.org/licenses/isc-license.txt This license is approved by the OSI and FSF as
GPL-compatible.
Upstream Contact• http://pexpect.readthedocs.org/en/stable/• https://github.com/pexpect/pexpectTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ptyprocess: Python interaction with subprocesses in a pseudoterminal
Version Information
package-version.txt:
4.9.0

version_requirements.txt:
pexpect >=4.8.0

Equivalent System Packages$ sudo pacman -S python-pexpect$ conda install pexpect$ sudo yum install python-pexpect$ sudo pkg install misc/py-pexpect

410

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo emerge dev-python/pexpect$ sudo port install py-pexpect$ sudo zypper install python3\$\{PYTHON_MINOR\}-pexpect$ sudo xbps-install python3-pexpect

See https://repology.org/project/pexpect/versions, https://repology.org/project/python:pexpect/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.273 phitigra: Graph editor for SageMath/Jupyter
Description
Graph editor for SageMath/Jupyter
License
Upstream Contact
https://pypi.org/project/phitigra/
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• numpy: Package for scientific computing with Python• pillow: Python Imaging Library
Version Information
requirements.txt:
phitigra>=0.2.6

6.1. Details of external packages

411

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.274 pickleshare: A ‘shelve’ like datastore with concurrency support
Description
PickleShare - a small ‘shelve’ like datastore with concurrency support
Like shelve, a PickleShareDB object acts like a normal dictionary. Unlike shelve, many processes can access the databasesimultaneously. Changing a value in database is immediately visible to other processes accessing the same database.
Concurrency is possible because the values are stored in separate files. Hence the “database” is a directory where all files
are governed by PickleShare.
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.7.5

version_requirements.txt:
pickleshare >=0.7.5

Equivalent System Packages$ sudo pacman -S python-pickleshare$ conda install pickleshare$ sudo apt-get install python3-pickleshare$ sudo yum install python-pickleshare$ sudo emerge dev-python/pickleshare$ sudo port install py-pickleshare

412

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo zypper install python3\$\{PYTHON_MINOR\}-pickleshare$ sudo xbps-install python3-pickleshare

See https://repology.org/project/pickleshare/versions, https://repology.org/project/python:pickleshare/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.275 pillow: Python Imaging Library
Description
Pillow is the “friendly” PIL fork by Alex Clark and Contributors.
The Python Imaging Library (PIL) adds powerful image processing and graphics capabilities to Python. The librarysupports many file formats.
LicenseStandard PIL License
Upstream Contact• Author: Alex Clark <aclark@aclark.net>• https://python-pillow.org/• Homepage: http://python-imaging.github.io/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• freetype: A free, high-quality, and portable font engine• pkgconf: An implementation of the pkg-config spec
• zlib: Data compression library

6.1. Details of external packages

413

Packages and Features, Release 10.4

Version Information
package-version.txt:
10.1.0version_requirements.txt:
pillow >=7.2.0

Equivalent System Packages$ sudo pacman -S python-pillow$ conda install pillow$ sudo apt-get install python3-pillow$ sudo yum install python-pillow$ sudo emerge dev-python/pillow$ sudo port install py-Pillow$ sudo zypper install python3\$\{PYTHON_MINOR\}-Pillow$ sudo xbps-install python3-Pillow

See https://repology.org/project/python:pillow/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.276 pint: Physical quantities module
Description
Physical quantities module
LicenseBSD

414

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/Pint/
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.20.1

version_requirements.txt:
Pint

Equivalent System Packages$ conda install pint

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.277 pip: Tool for installing and managing Python packages
Description
This package installs pip, the tool for installing and managing Python packages, such as those found in the Python Package
Index. It’s a replacement for easy_install.
LicenseMIT

6.1. Details of external packages

415

Packages and Features, Release 10.4

Upstream Contact• Project Page: https://github.com/pypa/pip• Install howto: https://pip.pypa.io/en/latest/installing.html• Changelog: https://pip.pypa.io/en/latest/news.html• Bug Tracking: https://github.com/pypa/pip/issues• Mailing list: http://groups.google.com/group/python-virtualenv• Docs: https://pip.pypa.io/
Typestandard
Dependencies• $(PYTHON)
Version Information
package-version.txt:
24.0

version_requirements.txt:
pip >=23.1.0

Equivalent System Packages$ sudo pacman -S python-pip$ conda install pip$ sudo apt-get install python3-pip$ sudo yum install python-pip$ sudo pkg install devel/py-pip$ sudo emerge dev-python/pip$ sudo port install py-pip$ sudo zypper install python3\$\{PYTHON_MINOR\}-pip

416

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo xbps-install python3-pip

See https://repology.org/project/pip3/versions, https://repology.org/project/python:pip/versions, https://repology.org/
project/python3x-pip/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.278 pkgconf: An implementation of the pkg-config spec
Description
Pkgconf is an implementation of the pkg-config spec with minimal dependencies.
LicenseISC License (equivalent to Simplified BSD)
Upstream Contact
https://github.com/pkgconf/pkgconf
Special Update/Build Instructions• install.patch: Use install script from AC_PROG_INSTALL
Pkgconf is used in bzip2, so we must not use the bzip2-compressed tarball.
Typestandard
Dependencies• patch: Applies diffs and patches to files• xz: General-purpose data compression software
Version Information
package-version.txt:
1.8.0

src/pyproject.toml:
pkgconfig

6.1. Details of external packages

417

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S pkgconf$ conda install pkg-config$ sudo apt-get install pkg-config$ sudo yum install pkg-config$ sudo pkg install devel/pkgconf$ brew install pkg-config$ sudo port install pkgconfig$ sudo zypper install pkgconf$ sudo xbps-install pkgconf

See https://repology.org/project/pkgconf/versions, https://repology.org/project/pkg-config/versions
If the system package is installed, ./configure will check if it can be used.

6.1.279 pkgconfig: Python interface to pkg-config
Description
Pkgconfig is a Python module to interface with the pkg-config command line tool.
LicenseMIT License
Upstream Contact
https://github.com/matze/pkgconfigTypestandard

418

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pkgconf: An implementation of the pkg-config spec
Version Information
package-version.txt:
1.5.5

src/pyproject.toml:
pkgconfig

version_requirements.txt:
pkgconfig

Equivalent System Packages$ sudo pacman -S python-pkgconfig$ conda install pkgconfig$ sudo apt-get install python3-pkgconfig$ sudo yum install python-pkgconfig$ sudo pkg install devel/py-pkgconfig$ sudo emerge dev-python/pkgconfig$ sudo port install py-pkgconfig$ sudo zypper install pkg-config$ sudo xbps-install python3-pkgconfig

See https://repology.org/project/python:pkgconfig/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

419

Packages and Features, Release 10.4

6.1.280 planarity: Planarity-related graph algorithms
Description
This code project provides a library for implementing graph algorithms as well as implementations of several
planarity-related graph algorithms. The origin of this project is the reference implementation for the Edge Addition Planarity Algorithm [1], which is now the fastest and simplest linear-time method for planar graph embedding and planarity
obstruction isolation (i.e. Kuratowski subgraph isolation).
[1] http://dx.doi.org/10.7155/jgaa.00091
LicenseNew BSD License
Upstream Contact• https://github.com/graph-algorithms/edge-addition-planarity-suite/• John Boyer <John.Boyer.PhD@gmail.com>
Special Update/Build Instructions
The tarballs can be found at, https://github.com/graph-algorithms/edge-addition-planarity-suite/releases sage tarball is
repackaged after running autogen.shTypestandard
Dependencies
Version Information
package-version.txt:
3.0.1.0

Equivalent System Packages$ sudo pacman -S planarity$ conda install planarity$ sudo apt-get install libplanarity-dev planarity$ sudo yum install planarity planarity-devel

420

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo pkg install math/planarity$ sudo emerge sci-mathematics/planarity$ nix-env --install planarity$ sudo zypper install edge-addition-planarity-suite edge-addition-planarity-suite˓→devel$ sudo xbps-install planarity-devel

See https://repology.org/project/planarity/versions
If the system package is installed, ./configure will check if it can be used.

6.1.281 plantri: Generate non-isomorphic sphere-embdedded graphs
Description
Plantri is a program that generates certain types of graphs that are imbedded on the sphere.
Exactly one member of each isomorphism class is output, using an amount of memory almost independent of the numberof graphs produced. This, together with the exceptionally fast operation and careful validation, makes the program suitablefor processing very large numbers of graphs.
Isomorphisms are defined with respect to the embeddings, so in some cases outputs may be isomorphic as abstract graphs.
LicensePlantri is distributed without a license.
Upstream Contact
Gunnar Brinkmann• University of Ghent• Gunnar.Brinkmann@ugent.beBrendan McKay• Australian National University• bdm@cs.anu.edu.au
See http://cs.anu.edu.au/ bdm/plantri

6.1. Details of external packages

421

Packages and Features, Release 10.4

Type
optional
Dependencies
Version Information
package-version.txt:
5.3

Equivalent System Packages$ sudo pacman -S plantri

See https://repology.org/project/plantri/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.282 platformdirs:
Small Python package for determining appropriate
platform-specific dirs, e.g. a “user data dir”
Description
Small Python package for determining appropriate platform-specific dirs, e.g. a “user data dir”
License
Upstream Contact
https://pypi.org/project/platformdirs/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages

422

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
4.2.2

version_requirements.txt:
platformdirs

Equivalent System Packages$ conda install platformdirs$ sudo emerge dev-python/platformdirs

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.283 pluggy: Plugin and hook calling mechanisms for python
Description
Plugin and hook calling mechanisms for python
LicenseMIT license
Upstream Contact
https://pypi.org/project/pluggy/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages

6.1. Details of external packages

423

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.3.0

version_requirements.txt:
pluggyEquivalent System Packages$ sudo pacman -S python-pluggy$ conda install pluggy$ sudo apt-get install python3-pluggy$ sudo yum install python-pluggy$ sudo emerge dev-python/pluggy$ sudo zypper install python3\$\{PYTHON_MINOR\}-pluggy$ sudo xbps-install python3-pluggy

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.284 ply: Python Lex & Yacc
Description
Python Lex & Yacc
License
BSD
Upstream Contact
https://pypi.org/project/ply/424

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
3.11

version_requirements.txt:
ply

Equivalent System Packages$ conda install ply$ sudo emerge dev-python/ply$ sudo xbps-install python3-ply

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.285 polylib: Operations on unions of polyhedra
Description
The Polyhedral Library (PolyLib for short) operates on objects made up of unions of polyhedra of any dimension. polylib
is a C library.
LicenseGPL v36.1. Details of external packages

425

Packages and Features, Release 10.4

Upstream Contact• https://groups.google.com/forum/#!forum/isl-development
Typeexperimental
Dependencies• $(MP_LIBRARY)• mpfr: Multiple-precision floating-point computations with correct rounding• ntl: A library for doing number theory
Version Information
package-version.txt:
5.22.5Equivalent System Packages$ sudo port install polylib$ sudo zypper install polylib pkgconfig\(polylibgmp\)

See https://repology.org/project/polylib/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.286 polymake: Computations with polyhedra, fans, simplicial complexes, matroids, graphs, tropical hypersurfaces
Description
polymake is open source software for research in polyhedral geometry. It deals with polytopes, polyhedra and fans as wellas simplicial complexes, matroids, graphs, tropical hypersurfaces, and other objects. Supported platforms include various
flavors of Linux, Free BSD and Mac OS.

426

Chapter 6. All External Packages

Packages and Features, Release 10.4

License• GPL v3
Upstream Contact• https://polymake.org/
Dependencies
Polymake needs a working installation of Perl, including its shared library and some modules (XML::Writer
XML::LibXML XML::LibXSLT Term::ReadLine::Gnu JSON SVG). The Polymake interface in Sage additionally needs File::Slurp. For full functionality including polymake’s polyDB, also the Perl module MongoDB isneeded.
These are not provided by a Sage package. The dummy package perl_cpan_polymake_prereq will signal anerror at build time if the required prerequisites are not met.
The configure script will inform you about the equivalent system packages that you should install. Otherwise, you
can use CPAN (see below).
Sage might install the Term::ReadLine::Gnu module, however, when you install polymake, if it is not provided by
the system, or if Sage installs its own readline library.
A distribution-independent way to install Perl modules (into a user’s home directory or /usr/local) is using CPAN.
This is also the way to install the modules on macOS. For this, if you don’t have root access, you will need the local::lib Perl module installed:
cpan -i XML::Writer XML::LibXML XML::LibXSLT File::Slurp Term::ReadLine::Gnu JSON SVG␣˓→MongoDB

Several Sage packages should be installed before installing the polymake package to give a more featureful Polymake
installation:
sage -i 4ti2 latte_int topcom qhull

Software that would need to be installed manually (no Sage package available) for a more featureful Polymake installation:
azove, porta, vinci, SplitsTree4.
Information on missing Polymake prerequisites after installing polymake:$ sage -sh(sage-sh) $ polymake
polytope> show_unconfigured;

In order to use Polymake from Sage, you will also need the jupymake package:
sage -i jupymake

6.1. Details of external packages

427

Packages and Features, Release 10.4

Debugging polymake install problems# apt-get install libdevel-trace-perl$ cd src$ perl -d:Trace support/configure.plTypeoptional
Dependencies• $(MP_LIBRARY)• bliss: Computing automorphism groups and canonical forms of graphs• cddlib: Double description method for polyhedral representation conversion• libxml2: XML parser and toolkit• lrslib: Reverse search algorithm for vertex enumeration and convex hull problems• ninja_build: A build system with a focus on speed• normaliz: Computations in affine monoids, vector configurations, lattice polytopes, and rational cones• perl_cpan_polymake_prereq: Represents all Perl packages that are prerequisites for polymake• perl_term_readline_gnu: Perl extension for the GNU Readline/History libraries• ppl: Parma Polyhedra Library
Version Information
package-version.txt:
4.12

Equivalent System Packages$ sudo pacman -S polymake$ sudo apt-get install polymake libpolymake-dev$ sudo yum install polymake$ brew install apaffenholz/polymake/polymake$ nix-env --install polymake$ sudo zypper install polymake

428

Chapter 6. All External Packages

Packages and Features, Release 10.4

See https://repology.org/project/polymake/versions
If the system package is installed, ./configure will check if it can be used.

6.1.287 polytopes_db: Databases of 2- and 3-dimensional reflexive polytopes
Description
This package includes lists of 2- and 3-dimensional reflexive polytopes.
The list of polygons is quite easy to get and it has been known for a while. The list of 3-polytopes was originally obtainedby Maximilian Kreuzer and Harald Skarke using their software PALP, which is included into the standard distribution ofSage. To work with lattice and reflexive polytopes from Sage you can use sage.geometry.lattice_polytope module, which
relies on PALP for some of its functionality. To get access to the databases of this package, use ReflexivePolytope andReflexivePolytopes commands.
LicenseGPL
Upstream Contact
http://hep.itp.tuwien.ac.at/ kreuzer/CY/CYpalp.html
Typestandard
Dependencies
Version Information
package-version.txt:
20170220.p0

Equivalent System Packages$ sudo pacman -S sage-data-polytopes_db$ conda install sagemath-db-polytopes

See https://repology.org/project/sagemath-polytopes-db/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

429

Packages and Features, Release 10.4

6.1.288 polytopes_db_4d: Database of 4-dimensional reflexive polytopes
Description
This package contains the database of 4-d reflexive polytopes with Hodge numbers as index.
Based on the original list by Maximilian Kreuzer and Harald Skarke using their software PALP.
LicenseGPL v2+SPKG Maintainers
Volker Braun <vbraun.name@gmail.com>
Typeoptional
Dependencies
Version Information
package-version.txt:
1.0

Equivalent System Packages
See https://repology.org/project/polytopes-db-4d/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.289 ppl: Parma Polyhedra Library
Description
The Parma Polyhedra Library (PPL) provides numerical abstractions especially targeted at applications in the field ofanalysis and verification of complex systems. These abstractions include convex polyhedra, defined as the intersectionof a finite number of (open or closed) halfspaces, each described by a linear inequality (strict or non-strict) with rational coefficients; some special classes of polyhedra shapes that offer interesting complexity/precision tradeoffs; and grids
which represent regularly spaced points that satisfy a set of linear congruence relations. The library also supports finite
powersets and products of (any kind of) polyhedra and grids, a mixed integer linear programming problem solver using
an exact-arithmetic version of the simplex algorithm, a parametric integer programming solver, and primitives for thetermination analysis via the automatic synthesis of linear ranking functions.
It is written in C++, but comes with interfaces to C, Java, OCaml, and Prolog. PPL is one of the fastest implementationsof polyhedral computations.
430

Chapter 6. All External Packages

Packages and Features, Release 10.4

Benchmarks are included in this paper: arXiv cs/0612085
LicenseGPL v3+
Upstream Contact• https://www.bugseng.com/ppl
Core Development Team• Roberto Bagnara (University of Parma)• Patricia M. Hill (University of Parma)• Enea Zaffanella (University of Parma)Typestandard
Dependencies• $(MP_LIBRARY)• glpk: GNU Linear Programming Kit
Version Information
package-version.txt:
1.2.p1

Equivalent System Packages$ sudo pacman -S ppl$ conda install ppl$ sudo apt-get install libppl-dev ppl-dev$ sudo yum install ppl ppl-devel$ sudo pkg install devel/ppl$ sudo emerge dev-libs/ppl$ brew install ppl

6.1. Details of external packages

431

Packages and Features, Release 10.4

$ sudo port install ppl$ nix-env --install ppl$ sudo zypper install ppl-devel$ sudo xbps-install ppl-devel

See https://repology.org/project/ppl/versions
If the system package is installed, ./configure will check if it can be used.

6.1.290 pplpy: Python interface to the Parma Polyhedra Library
Description
PPL Python wrapper
This Python package provides a wrapper to the C++ Parma Polyhedra Library (PPL).
The whole package started as a fork of a tiny part of the Sage software.
LicenseGPL version 3
Upstream Contact• https://github.com/sagemath/pplpy
Typestandard
Dependencies• $(MP_LIBRARY)• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cysignals: Interrupt and signal handling for Cython• gmpy2: Python interface to GMP/MPIR, MPFR, and MPC• mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding• mpfr: Multiple-precision floating-point computations with correct rounding• ppl: Parma Polyhedra Library• sphinx: Python documentation generator

432

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.8.9

Equivalent System Packages$ sudo pacman -S python-pplpy$ conda install pplpy$ sudo yum install python-pplpy$ sudo pkg install math/py-pplpy$ sudo emerge dev-python/pplpy$ sudo xbps-install python3-pplpy

See https://repology.org/project/pplpy/versions, https://repology.org/project/python:pplpy/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.291 pplpy_doc: Python interface to the Parma Polyhedra Library (documentation)
Description
PPL Python wrapper (documentation)
LicenseGPL version 3
Upstream Contact• https://github.com/sagemath/pplpy

6.1. Details of external packages

433

Packages and Features, Release 10.4

Typestandard
Dependencies• pplpy: Python interface to the Parma Polyhedra Library• sphinx: Python documentation generator
Version Information
package-version.txt:
0.8.9

Equivalent System Packages(none known)

6.1.292 primecount: Algorithms for counting primes
Description
primecount is a C++ implementation of several algorithms for counting primes maintained by Kim Walisch.
Website: https://github.com/kimwalisch/primecount/
Licenseprimecount is licensed BSD 2
Upstream Contact• https://github.com/kimwalisch/primecount/Typestandard

434

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• cmake: A cross-platform build system generator• primesieve: CLI program and C/C++ library for generating primes
Version Information
package-version.txt:
7.6

Equivalent System Packages$ sudo pacman -S primecount$ conda install primecount$ sudo apt-get install libprimecount-dev$ sudo yum install primecount primecount-devel$ sudo emerge sci-mathematics/primecount$ brew install primecount$ sudo zypper install primecount libprimecount-devel$ sudo xbps-install primecount-devel

See https://repology.org/project/primecount/versions
If the system package is installed, ./configure will check if it can be used.

6.1.293 primecountpy: Cython interface for C++ primecount library
Description
Cython interface for C++ primecount library
LicenseGPLv3

6.1. Details of external packages

435

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/primecountpy/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• primecount: Algorithms for counting primes
Version Information
package-version.txt:
0.1.0

version_requirements.txt:
primecountpy

Equivalent System Packages$ conda install primecountpy$ sudo emerge dev-python/primecountpy

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.294 primesieve: CLI program and C/C++ library for generating primes
Description
A CLI program and C/C++ library for quickly generating prime numbers. https://github.com/kimwalisch/primesieve
A dependency of the standard spkg primecount.

436

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseBSD-2-clause
Upstream Contact• https://github.com/kimwalisch/primesieveTypestandard
Dependencies• cmake: A cross-platform build system generator
Version Information
package-version.txt:
11.0

Equivalent System Packages$ apk add primesieve-dev primesieve$ sudo pacman -S primesieve$ conda install primesieve$ sudo apt-get install libprimesieve-dev$ sudo yum install primesieve-devel primesieve$ sudo emerge sci-mathematics/primesieve$ brew install primesieve$ sudo zypper install primesieve$ sudo xbps-install primesieve-devel

See https://repology.org/project/primesieve/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

437

Packages and Features, Release 10.4

6.1.295 prometheus_client: Python client for the systems monitoring and alerting
toolkit Prometheus
Description
The official Python 2 and 3 client for Prometheus (see https://prometheus.io), an open-source systems monitoring andalerting toolkit.
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.14.1

version_requirements.txt:
prometheus_client >=0.8.0

Equivalent System Packages$ conda install prometheus_client$ sudo emerge dev-python/prometheus_client$ sudo port install py-prometheus_client$ sudo zypper install python3\$\{PYTHON_MINOR\}-prometheus_client$ sudo xbps-install python3-prometheus_client

See https://repology.org/project/python:prometheus-client/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

438

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.296 prompt_toolkit: Interactive command lines for Python
Description
Library for building powerful interactive command lines in Python
https://pypi.python.org/pypi/prompt_toolkit
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• six: Python 2 and 3 compatibility utilities• wcwidth: Measures the displayed width of unicode strings in a terminal
Version Information
package-version.txt:
3.0.43version_requirements.txt:
prompt_toolkit >=3.0.43

Equivalent System Packages$ sudo pacman -S python-importlib_resources$ conda install prompt_toolkit\>=3.0.38$ sudo apt-get install importlib-resources$ sudo yum install python-prompt-toolkit$ sudo pkg install devel/py-importlib-resources$ sudo emerge dev-python/prompt_toolkit$ sudo port install py-prompt_toolkit$ sudo zypper install python3\$\{PYTHON_MINOR\}-importlib_resources

6.1. Details of external packages

439

Packages and Features, Release 10.4

$ sudo xbps-install python3-prompt_toolkit

See https://repology.org/project/python:prompt-toolkit/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.297 psutil: Cross-platform lib for process and system monitoring in Python.
Description
Cross-platform lib for process and system monitoring in Python.
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/psutil/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
5.9.6

version_requirements.txt:
psutil

440

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.298 ptyprocess: Python interaction with subprocesses in a pseudoterminal
Description
Launch a subprocess in a pseudo terminal (pty), and interact with both the process and its pty.
Sometimes, piping stdin and stdout is not enough. There might be a password prompt that doesn’t read from stdin, output
that changes when it’s going to a pipe rather than a terminal, or curses-style interfaces that rely on a terminal. If you need
to automate these things, running the process in a pseudo terminal (pty) is the answer.
LicensePtyprocess is under the ISC license, as code derived from Pexpect.
http://opensource.org/licenses/ISC
Upstream Contact
https://github.com/pexpect/ptyprocessTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.7.0

version_requirements.txt:
ptyprocess > 0.5

6.1. Details of external packages

441

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-ptyprocess

No package needed.
$ sudo yum install python-ptyprocess$ sudo pkg install sysutils/py-ptyprocess$ sudo emerge dev-python/ptyprocess$ sudo port install py-ptyprocess$ sudo zypper install python3\$\{PYTHON_MINOR\}-ptyprocess$ sudo xbps-install python3-ptyprocess

See https://repology.org/project/ptyprocess/versions, https://repology.org/project/python:ptyprocess/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.299 pure_eval: Safely evaluate AST nodes without side effects
Description
Safely evaluate AST nodes without side effects
LicenseMIT
Upstream Contact
https://pypi.org/project/pure-eval/Typestandard

442

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
0.2.2

version_requirements.txt:
pure-eval

Equivalent System Packages$ conda install pure_eval$ sudo emerge dev-python/pure_eval

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.300 py: Library with cross-python path, ini-parsing, io, code, log facilities
Description
Library with cross-python path, ini-parsing, io, code, log facilities
LicenseMIT license
Upstream Contact
https://pypi.org/project/py/Typestandard

6.1. Details of external packages

443

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.11.0version_requirements.txt:
py

Equivalent System Packages$ sudo pacman -S python-py$ conda install py$ sudo apt-get install python3-py$ sudo yum install python-py$ sudo emerge dev-python/py$ sudo zypper install python3\$\{PYTHON_MINOR\}-py$ sudo xbps-install python3-py

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.301 pybind11: Create Python bindings to C++ code
Description
pybind11 is a lightweight header-only library that exposes C++ types in Python and vice versa, mainly to create Python
bindings of existing C++ code. Its goals and syntax are similar to the excellent [Boost.Python](http://www.boost.org/doc/
libs/1_58_0/libs/python/doc/) library by David Abrahams: to minimize boilerplate code in traditional extension modules
by inferring type information using compile-time introspection.

444

Chapter 6. All External Packages

Packages and Features, Release 10.4

Licensepybind11 is provided under a BSD-style license that can be found in the LICENSE file. By using, distributing, or contributing to this project, you agree to the terms and conditions of this license.
Upstream Contact
https://github.com/pybind/pybind11Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.11.1

version_requirements.txt:
pybind11 >=2.6

Equivalent System Packages$ conda install pybind11$ sudo emerge dev-python/pybind11$ brew install pybind11$ sudo port install py-pybind11$ sudo xbps-install python3-pybind11

See https://repology.org/project/python:pybind11/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

445

Packages and Features, Release 10.4

6.1.302 pybtex: A BibTeX-compatible bibliography processor in Python
Description
A BibTeX-compatible bibliography processor in Python
LicenseMIT
Upstream Contact
https://pypi.org/project/pybtex/
Typeoptional
Dependencies
Version Information
requirements.txt:
pybtexEquivalent System Packages$ conda install pybtex$ sudo port install py-pybtex$ sudo zypper install python3\$\{PYTHON_MINOR\}-pybtex

See https://repology.org/project/python:pybtex/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.303 pycosat: SAT solver picosat with Python bindings
Description
PicoSAT is a popular SAT solver written by Armin Biere in pure C. This package provides efficient Python bindings topicosat on the C level, i.e. when importing pycosat, the picosat solver becomes part of the Python process itself. Forease of deployment, the picosat source (namely picosat.c and picosat.h) is included in this project. These files have been
extracted from the picosat source.

446

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact• PicoSAT: http://fmv.jku.at/picosat/• pycosat: https://github.com/ContinuumIO/pycosat
Special Update/Build Instructions
None.
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.6.3

version_requirements.txt:
pycosat >=0.6.3

Equivalent System Packages$ apk add py3-pycosat$ sudo pacman -S python-pycosat$ conda install pycosat$ sudo yum install python-pycosat$ sudo pkg install math/py-pycosat

See https://repology.org/project/pycosat/versions, https://repology.org/project/python:pycosat/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.
6.1. Details of external packages

447

Packages and Features, Release 10.4

6.1.304 pycparser: Parser of the C language in Python
Description
development website: https://github.com/eliben/pycparser
PyPI page: https://pypi.org/project/pycparser/
License
BSD
Upstream Contact
https://github.com/eliben/pycparser
Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
2.22

version_requirements.txt:
pycparser >=2.20

Equivalent System Packages$ conda install pycparser$ sudo emerge dev-python/pycparser$ sudo port install py-pycparser$ sudo zypper install python3\$\{PYTHON_MINOR\}-pycparser$ sudo xbps-install python3-pycparser

448

Chapter 6. All External Packages

Packages and Features, Release 10.4

See https://repology.org/project/pycparser/versions, https://repology.org/project/python:pycparser/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.305 pycryptosat: Python module of cryptominisat
Description
Build and install pycryptosat (Python frontend to CryptoMiniSat, which will be built if needed too).
CryptoMiniSat is a SAT solver that aims to become a premiere SAT solver with all the features and speed of successful
SAT solvers, such as MiniSat and PrecoSat. The long-term goals of CryptoMiniSat are to be an efficient sequential,
parallel and distributed solver. There are solvers that are good at one or the other, e.g. ManySat (parallel) or PSolver(distributed), but we wish to excel at all.
CryptoMiniSat 2.5 won the SAT Race 2010 among 20 solvers submitted by researchers and industry.
LicenseMIT License
Upstream Contact• Authors: Mate Soos
• Email: soos.mate@gmail.com• Website: http://www.msoos.org/• Releases: https://github.com/msoos/cryptominisat/releases
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• boost_cropped: Portable C++ libraries (subset needed for Sage)• cmake: A cross-platform build system generator• libpng: Bitmap image support• m4ri: fast arithmetic with dense matrices over GF(2)• zlib: Data compression library

6.1. Details of external packages

449

Packages and Features, Release 10.4

Version Information
requirements.txt:
pycryptosat

Equivalent System Packages$ conda install cryptominisat$ brew install cryptominisat

See https://repology.org/project/cryptominisat/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.306 pygments: Generic syntax highlighter
Description
Pygments is a syntax highlighting package written in Python.
It is a generic syntax highlighter suitable for use in code hosting, forums, wikis or other applications that need to prettify
source code. Highlights are:• a wide range of over 300 languages and other text formats is supported• special attention is paid to details, increasing quality by a fair amount• support for new languages and formats are added easily• a number of output formats, presently HTML, LaTeX, RTF, SVG, all image formats that PIL supports and ANSI
sequences• it is usable as a command-line tool and as a library
LicenseBSD-2-Clause
Upstream Contact
https://pypi.org/project/Pygments/

450

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
2.18.0version_requirements.txt:
pygments >=2.12

Equivalent System Packages$ sudo pacman -S python-pygments$ conda install pygments$ sudo apt-get install python3-pygments$ sudo yum install python-pygments$ sudo emerge dev-python/pygments$ brew install pygments$ sudo port install py-pygments$ sudo zypper install python3\$\{PYTHON_MINOR\}-pygments$ sudo xbps-install python3-Pygments

See https://repology.org/project/pygments/versions, https://repology.org/project/python:pygments/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

451

Packages and Features, Release 10.4

6.1.307 pygraphviz: Python interface to Graphviz
Description
Python interface to Graphviz
License
BSD
Upstream Contact
https://pypi.org/project/pygraphviz/
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• libgraphviz: Graph visualization software (callable library)
Version Information
requirements.txt:
pygraphviz

version_requirements.txt:
pygraphviz

Equivalent System Packages$ conda install pygraphviz$ sudo port install py-pygraphviz

See https://repology.org/project/python:pygraphviz/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

452

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.308 pynormaliz: Python bindings for the normaliz library
Description
The Python module PyNormaliz provides wrappers for normaliz.
License• GPL v2 or later
Upstream Contact
https://pypi.org/project/PyNormaliz/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• normaliz: Computations in affine monoids, vector configurations, lattice polytopes, and rational cones
Version Information
package-version.txt:
2.20

version_requirements.txt:
pynormaliz ==2.18

Equivalent System Packages$ sudo pacman -S python-pynormaliz$ conda install pynormaliz

See https://repology.org/project/pynormaliz/versions, https://repology.org/project/python:pynormaliz/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

453

Packages and Features, Release 10.4

6.1.309 pyparsing: A Python parsing module
Description
A Python Parsing Module
LicenseMIT License
Upstream Contact
https://pypi.org/project/pyparsing/Type
standard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
3.1.2

version_requirements.txt:
pyparsing >=2.3.0

Equivalent System Packages$ sudo pacman -S python-pyparsing$ conda install pyparsing$ sudo pkg install devel/py-pyparsing$ sudo emerge dev-python/pyparsing$ sudo zypper install python3\$\{PYTHON_MINOR\}-pyparsing$ sudo xbps-install python3-parsing

454

Chapter 6. All External Packages

Packages and Features, Release 10.4

See https://repology.org/project/pyparsing/versions, https://repology.org/project/python:pyparsing/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.310 pyppeteer: Headless chrome/chromium automation library
Description
Headless chrome/chromium automation library (unofficial port of puppeteer)
LicenseMIT
Upstream Contact
https://pypi.org/project/pyppeteer/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• appdirs: Small Python module for determining appropriate platform-specific dirs, e.g. a “user data dir”
• certifi: Python package for providing Mozilla’s CA Bundle• importlib_metadata: Library to access the metadata for a Python package• urllib3: HTTP library with thread-safe connection pooling, file post, and more
Version Information
requirements.txt:
pyppeteer

6.1. Details of external packages

455

Packages and Features, Release 10.4

Equivalent System Packages$ conda install pyppeteer

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.311 pyproject_api:
projects

API to interact with the python pyproject.toml based

Description
API to interact with the python pyproject.toml based projects
License
Upstream Contact
https://pypi.org/project/pyproject-api/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.6.1

version_requirements.txt:
pyproject-api

456

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.312 pyproject_hooks: Wrappers to call pyproject.toml-based build backend
hooks.
Description
Wrappers to call pyproject.toml-based build backend hooks.
License
Upstream Contact
https://pypi.org/project/pyproject_hooks/
Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.0.0

version_requirements.txt:
pyproject_hooks

Equivalent System Packages(none known)

6.1. Details of external packages

457

Packages and Features, Release 10.4

6.1.313 pyproject_metadata: PEP 621 metadata parsing
Description
PEP 621 metadata parsing
LicenseMIT
Upstream Contact
https://pypi.org/project/pyproject-metadata/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• packaging: Core utilities for Python packages• pyparsing: A Python parsing module
Version Information
package-version.txt:
0.7.1

version_requirements.txt:
pyproject-metadata

Equivalent System Packages$ sudo emerge dev-python/pyproject-metadata

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

458

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.314 pyrsistent: Persistent data structures in Python
Description
Pyrsistent is a number of persistent collections (by some referred to as functional data structures). Persistent in the sensethat they are immutable.
LicenseMIT License
Upstream Contact
Home page: http://github.com/tobgu/pyrsistent/
Dependencies• Python• Setuptools• hypothesis• memory-profiler• pyperform• pytest• Sphinx• sphinx-rtd-theme
• tox
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)

6.1. Details of external packages

459

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.19.3version_requirements.txt:
pyrsistent >=0.16.0

Equivalent System Packages$ conda install pyrsistent$ sudo emerge dev-python/pyrsistent$ sudo port install py-pyrsistent$ sudo xbps-install python3-pyrsistent

See https://repology.org/project/pyrsistent/versions, https://repology.org/project/python:pyrsistent/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.315 pyscipopt: Python interface and modeling environment for SCIP
Description
Python interface and modeling environment for SCIP
LicenseMIT
Upstream Contact
https://pypi.org/project/PySCIPOpt/Type
optional

460

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• scip: Mixed integer programming solver
Version Information
package-version.txt:
5.0.0

version_requirements.txt:
PySCIPOpt

Equivalent System Packages$ conda install pyscipopt$ sudo pkg install math/py-PySCIPOpt

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.316 pysingular: A basic Python interface to Singular
Description
A basic interface to call Singular from python
This python module is meant to be used in Singulars Jupyter interface.
LicenseGPL version 2 or later
Upstream Contact• https://github.com/sebasguts/SingularPython

6.1. Details of external packages

461

Packages and Features, Release 10.4

Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• singular: Computer algebra system for polynomial computations, algebraic geometry, singularity theory
Version Information
package-version.txt:
0.9.7

version_requirements.txt:
pysingular >=0.9.5

Equivalent System Packages$ conda install pysingular

See https://repology.org/project/pysingular/versions, https://repology.org/project/python:pysingular/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.317 pytest: Simple powerful testing with Python
Description
pytest: simple powerful testing with Python
LicenseMIT

462

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/pytest/Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• attrs: Decorator for Python classes with attributes• importlib_metadata: Library to access the metadata for a Python package• packaging: Core utilities for Python packages• pluggy: Plugin and hook calling mechanisms for python• py: Library with cross-python path, ini-parsing, io, code, log facilities• pyparsing: A Python parsing module• tomli: A lil’ TOML parser
Version Information
requirements.txt:
pytestEquivalent System Packages$ conda install pytest$ sudo port install py-pytest$ sudo xbps-install python3-pytest

See https://repology.org/project/python:pytest/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

463

Packages and Features, Release 10.4

6.1.318 pytest_mock: Thin-wrapper around the mock package for easier use withpytestDescription
Thin-wrapper around the mock package for easier use with pytest
LicenseMIT
Upstream Contact
https://pypi.org/project/pytest-mock/Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• attrs: Decorator for Python classes with attributes• packaging: Core utilities for Python packages• pluggy: Plugin and hook calling mechanisms for python• py: Library with cross-python path, ini-parsing, io, code, log facilities• pyparsing: A Python parsing module• pytest: Simple powerful testing with Python• tomli: A lil’ TOML parser
Version Information
requirements.txt:
pytest-mock464

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.319 pytest_xdist: pytest xdist plugin for distributed testing and loop-on-failingmodes
Description
pytest xdist plugin for distributed testing and loop-on-failing modes
LicenseMIT
Upstream Contact
https://pypi.org/project/pytest-xdist/Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pytest: Simple powerful testing with Python
Version Information
requirements.txt:
pytest-xdist

Equivalent System Packages$ conda install pytest-xdist

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

465

Packages and Features, Release 10.4

6.1.320 python3: The Python programming language
Description
By default, Sage will try to use system’s python3 to set up a virtual environment, a.k.a. venv rather than building a
Python 3 installation from scratch.
Sage will accept versions 3.9.x to 3.12.x.
You can also use --with-python=/path/to/python3_binary to tell Sage to use /path/to/
python3_binary to set up the venv. Note that setting up the venv requires a number of Python modules to beavailable within the Python in question. Currently, as of Sage 10.3, these modules are as follows: sqlite3, ctypes,
math, hashlib, socket, zlib, ssl, ensurepip. For Python >= 3.12, also setuptools is required; for older
Python versions, distutils.core is required. These modules will be checked for by the configure script.
Use the configure option --without-system-python3 if you want Python 3 built from scratch.
Upstream Contact
https://www.python.org
Typestandard
Dependencies• bzip2: High-quality data compressor• libffi: A portable foreign-function interface library• liblzma: General-purpose data compression software• libpng: Bitmap image support• openssl: Implementation of the SSL and TLS protocols• readline: Command line editing library• sqlite: An SQL database engine• xz: General-purpose data compression software• zlib: Data compression library
Version Information
package-version.txt:
3.12.4466

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ apk add python3-dev py3-setuptools$ apt-cyg install python39-devel python-pip-wheel python-setuptools-wheel$ sudo apt-get install python3 libpython3-dev python3-setuptools \python3-venv$ sudo yum install python3-devel python3-setuptools$ sudo pkg install lang/python devel/py-setuptools$ brew install python3 python-setuptools$ sudo port install python310 py-setuptools$ sudo zypper install python3\$\{PYTHON_MINOR\}-devel python3\$\{PYTHON_MINOR\}˓→setuptools$ sudo xbps-install python3-devel python3-setuptools

See https://repology.org/project/python/versions
If the system package is installed, ./configure will check if it can be used.

6.1.321 python_build: A simple, correct PEP517 package builder
Descriptionbuild is a simple, correct PEP517 package builder
LicenseMIT
Upstream Contact
https://pypi.org/project/build/6.1. Details of external packages

467

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• importlib_metadata: Library to access the metadata for a Python package• packaging: Core utilities for Python packages• pip: Tool for installing and managing Python packages• pyproject_hooks: Wrappers to call pyproject.toml-based build backend hooks.
• tomli: A lil’ TOML parser
Version Information
package-version.txt:
1.2.1

version_requirements.txt:
build

Equivalent System Packages$ conda install build

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.322 python_flint: Bindings for FLINT and Arb
Description
Bindings for FLINT and Arb
LicenseMIT

468

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/python-flint/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• flint: Fast Library for Number Theory
Version Information
package-version.txt:
0.6.0

version_requirements.txt:
python-flint

Equivalent System Packages(none known)

6.1.323 python_igraph: Python bindings for igraphDescription
igraph is a library for creating and manipulating graphs. It is intended to be as powerful (ie. fast) as possible to enable
the analysis of large graphs.
LicenseGPL version 2

6.1. Details of external packages

469

Packages and Features, Release 10.4

Upstream Contact
http://igraph.org/python/Special Update/Build Instructions
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• igraph: A library for creating and manipulating graphs• texttable: Python module for creating simple ASCII tables
Version Information
package-version.txt:
0.11.5version_requirements.txt:
igraphEquivalent System Packages$ sudo pacman -S python-igraph$ conda install python-igraph$ sudo apt-get install python3-igraph$ sudo yum install python-igraph$ sudo pkg install math/py-igraph$ sudo port install py-igraphSee https://repology.org/project/python:igraph/versions, https://repology.org/project/python:python-igraph/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

470

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.324 python_json_logger: Python library adding a json log formatter
Description
Python library adding a json log formatter
License
BSD
Upstream Contact
https://pypi.org/project/python-json-logger/Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.0.7

version_requirements.txt:
python-json-logger

Equivalent System Packages(none known)

6.1.325 pythran: Ahead of Time compiler for numeric kernels
Description
Ahead of Time compiler for numeric kernels

6.1. Details of external packages

471

Packages and Features, Release 10.4

LicenseBSD 3-Clause
Upstream Contact
https://pypi.org/project/pythran/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• beniget: Extract semantic information about static Python code
• gast: Python AST that abstracts the underlying Python version• ply: Python Lex & Yacc
Version Information
package-version.txt:
0.15.0version_requirements.txt:
pythran >=0.12.1

Equivalent System Packages$ conda install pythran$ sudo emerge dev-python/pythran$ sudo xbps-install pythranIf the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

472

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.326 pytz: Timezone definitions for Python
Description
World Timezone Definitions for Python See https://pypi.org/project/pytz/
Special Update/Build Instructions
The upstream tarball was repackaged after sanitizing the file permissions with$ chmod go-w
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2023.3.post1

version_requirements.txt:
pytz >=2020.1

Equivalent System Packages$ sudo pacman -S python-pytz$ conda install pytz
$ sudo apt-get install python3-tz$ sudo yum install python-pytz$ sudo emerge dev-python/pytz$ sudo port install py-tz$ sudo zypper install python3\$\{PYTHON_MINOR\}-pytz

6.1. Details of external packages

473

Packages and Features, Release 10.4

$ sudo xbps-install python3-pytz

See https://repology.org/project/python:pytz/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.327 pytz_deprecation_shim: Shims to make deprecation of pytz easierDescription
Shims to make deprecation of pytz easier
LicenseApache-2.0
Upstream Contact
https://pypi.org/project/pytz-deprecation-shim/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• tzdata: Provider of IANA time zone data
Version Information
package-version.txt:
0.1.0.post0

version_requirements.txt:
pytz-deprecation-shim

474

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install pytz-deprecation-shim

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.328 pyx: Generate PostScript, PDF, and SVG files in Python
Description
Python package for the generation of PostScript, PDF, and SVG files
https://pypi.python.org/pypi/PyX
Type
optional
Dependencies
Version Information
requirements.txt:
pyx

Equivalent System Packages$ sudo port install py-pyx$ sudo zypper install python3\$\{PYTHON_MINOR\}-PyX$ sudo xbps-install python3-pyx

See https://repology.org/project/python:pyx/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.329 pyyaml: YAML parser and emitter for Python
Description
YAML parser and emitter for Python

6.1. Details of external packages

475

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/PyYAML/
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler
Version Information
package-version.txt:
6.0.1

version_requirements.txt:
PyYAML

Equivalent System Packages(none known)

6.1.330 pyzmq: Python bindings for the zeromq networking library
Description
Python bindings for the zeromq networking library.

476

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseLGPLv3+
Upstream Contact
http://www.zeromq.org
Special Update/Build Instructions
None.
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• zeromq: A modern networking library
Version Information
package-version.txt:
25.1.1

version_requirements.txt:
pyzmq >=19.0.2

Equivalent System Packages$ sudo pacman -S python-pyzmq$ conda install pyzmq$ sudo yum install python-pyzmq$ sudo emerge dev-python/pyzmq$ sudo zypper install python3\$\{PYTHON_MINOR\}-pyzmq

6.1. Details of external packages

477

Packages and Features, Release 10.4

$ sudo xbps-install python3-pyzmq

See https://repology.org/project/pyzmq/versions, https://repology.org/project/python:pyzmq/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.331 qdldl_python: QDLDL, a free LDL factorization routine (Python wrapper)
Description
QDLDL, a free LDL factorization routine.
LicenseApache 2.0
Upstream Contact
https://pypi.org/project/qdldl/
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cmake: A cross-platform build system generator• numpy: Package for scientific computing with Python• pybind11: Create Python bindings to C++ code
• scipy: Scientific tools for Python
Version Information
package-version.txt:
0.1.5.post3

version_requirements.txt:
qdldl

478

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install qdldl-python

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.332 qepcad: Quantifier elimination by partial cylindrical algebraic decomposition
Description
Qepcad is an implementation of quantifier elimination by partial cylindrical algebraic decomposition
LicenseICS Wikipedia article ISC_license
Upstream Contact• Repository: https://github.com/chriswestbrown/qepcad• Tarballs: https://www.usna.edu/Users/cs/wcbrown/qepcad/INSTALL/IQ.html• Website: (outdated) https://www.usna.edu/Users/cs/wcbrown/qepcad/B/QEPCAD.html
Typeoptional
Dependencies• readline: Command line editing library• saclib: Computations with real algebraic numbers
Version Information
package-version.txt:
1.74

6.1. Details of external packages

479

Packages and Features, Release 10.4

Equivalent System Packages$ sudo apt-get install qepcad$ sudo yum install qepcad-B$ sudo port install qepcad

See https://repology.org/project/qepcad-b/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.333 qhull: Compute convex hulls, Delaunay triangulations, Voronoi diagrams
Description
From the README.txt of Qhull:
Qhull computes convex hulls, Delaunay triangulations, Voronoi diagrams, furthest-site Voronoi diagrams, and halfspaceintersections about a point. It runs in 2-d, 3-d, 4-d, or higher. It implements the Quickhull algorithm for computing
convex hulls. Qhull handles round-off errors from floating point arithmetic. It can approximate a convex hull.
The program includes options for hull volume, facet area, partial hulls, input transformations, randomization, tracing,
multiple output formats, and execution statistics.
Further notes:
The qhull library is already shipped with the Python library scipy (from version 1.4), see• http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html• http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Delaunay.html• http://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.Voronoi.html
There is also the Python interface Pyhull available on PyPI https://pypi.python.org/pypi/pyhull (see also documentation
at http://pythonhosted.org/pyhull/).
Upstream Contact
http://www.qhull.org/html
C. Bradford Barber bradb@shore.net or qhull@qhull.org
Dependencies
Can be compiled with Qt support, but the Sage version currently doesn’t try to do this.

480

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseNot a standard license, but Sage compatible. See the COPYING.txt file in the source directory for details.
Typestandard
Dependencies• cmake: A cross-platform build system generator
Version Information
package-version.txt:
2020-src-8.0.2

Equivalent System Packages$ apk add qhull-dev qhull$ sudo pacman -S qhull$ conda install qhull$ apt-cyg install qhull$ sudo apt-get install qhull-bin libqhull-dev$ sudo yum install qhull qhull-devel$ sudo pkg install math/qhull$ sudo emerge media-libs/qhull$ brew install qhull

No package needed.
$ nix-env --install qhull$ sudo zypper install qhull-devel$ sudo xbps-install qhull libqhull-devel

See https://repology.org/project/qhull/versions
If the system package is installed, ./configure will check if it can be used.
6.1. Details of external packages

481

Packages and Features, Release 10.4

6.1.334 r: A free software environment for statistical computing and graphics
Description
R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S
language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) byJohn Chambers and colleagues. R can be considered as a different implementation of S. There are some importantdifferences, but much code written for S runs unaltered under R.
(taken from http://www.r-project.org/)
License• GPL v2 or GPL v3
Upstream Contact• https://www.r-project.org• R mailing list, #R in IRC
Special Installation Instructions
In the Sage distribution, r is a “dummy” package: It is here to provide information about equivalent system packages.
R cannot be installed using the Sage distribution. Please install it manually, either using one of the system packagecommands shown here or following the upstream instructions at https://www.r-project.org
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add R-dev R$ sudo pacman -S r
$ conda install r r-essentials r-lattice$ apt-cyg install R libtirpc-devel$ sudo apt-get install r-base-dev r-cran-lattice$ sudo yum install R R-devel

482

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo pkg install math/R$ sudo emerge dev-lang/R$ brew install r

No package needed.
$ nix-env --install R$ sudo zypper install R-base$ sudo xbps-install R

See https://repology.org/project/r/versions
If the system package is installed, ./configure will check if it can be used.

6.1.335 r_jupyter: Jupyter kernel for R
Description
This package installs IRkernel, the R Jupyter kernel.
It gets installed via R’s package installer on top of Jupyter.
LicenseMIT
Upstream Contact• https://github.com/IRkernel/IRkernel• https://irkernel.github.io/
Dependencies• R• notebook

6.1. Details of external packages

483

Packages and Features, Release 10.4

Typeexperimental
Dependencies• notebook: Jupyter notebook, a web-based notebook environment for interactive computing• r: A free software environment for statistical computing and graphics
Version Information
Equivalent System Packages
See https://repology.org/project/r:irkernel/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.336 readline: Command line editing library
Description
The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as
they are typed in. Both Emacs and vi editing modes are available. The Readline library includes additional functions tomaintain a list of previously-entered command lines, to recall and perhaps reedit those lines, and perform csh-like history
expansion on previous commands.
Website: http://tiswww.case.edu/php/chet/readline/rltop.html
License• GPL V3+
Upstream Contact• Chet Ramey at http://cnswww.cns.cwru.edu/ chetSpecial Update/Build Instructions
We build readline using ncurses. Readline needs to be told to link with libtinfo (part of ncurses), this is what the patch
0002-ltinfo.patch does.

484

Chapter 6. All External Packages

Packages and Features, Release 10.4

Patches• 0001-macports.patch: Changes to shobj.conf for OS/X, from macports:
https://trac.macports.org/browser/trunk/dports/devel/readline/files/patch-shobj-conf.diff• 0002-ltinfo.patch: We build readline using ncurses, and for that it needs to be told to link with libtinfo (part ofncurses).
Type
standard
Dependencies• ncurses: Classic terminal output library
Version Information
package-version.txt:
8.1.2

Equivalent System Packages$ sudo pacman -S readline$ conda install readline$ apt-cyg install libreadline-devel$ sudo apt-get install libreadline-dev$ sudo yum install readline-devel$ sudo pkg install devel/readline$ brew install readline$ sudo port install readline$ nix-env --install readline$ sudo zypper install readline-devel pkgconfig\(readline\)$ sudo slackpkg install readline$ sudo xbps-install readline-devel

6.1. Details of external packages

485

Packages and Features, Release 10.4

See https://repology.org/project/readline/versions
If the system package is installed, ./configure will check if it can be used.

6.1.337 referencing: JSON Referencing + Python
Description
JSON Referencing + Python
LicenseMIT
Upstream Contact
https://pypi.org/project/referencing/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• attrs: Decorator for Python classes with attributes• pyrsistent: Persistent data structures in Python
Version Information
package-version.txt:
0.23.0version_requirements.txt:
referencing

486

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.338 requests: An HTTP library for Python
Description
Python HTTP for Humans.
LicenseApache 2.0
Upstream Contact
https://pypi.org/project/requests/
Typestandard
Dependencies• $(PYTHON)• certifi: Python package for providing Mozilla’s CA Bundle• charset_normalizer: The Real First Universal Charset Detector. Open, modern and actively maintained alternative
to Chardet.
• idna: Internationalized Domain Names in Applications (IDNA)• pip: Tool for installing and managing Python packages• urllib3: HTTP library with thread-safe connection pooling, file post, and more
Version Information
package-version.txt:
2.32.2version_requirements.txt:
requests >=2.13.0

6.1. Details of external packages

487

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-requests$ conda install requests$ sudo apt-get install python3-requests$ sudo yum install python-requests$ sudo emerge dev-python/requests$ sudo port install py-requests$ sudo zypper install python3\$\{PYTHON_MINOR\}-requests$ sudo xbps-install python3-requests

See https://repology.org/project/requests/versions, https://repology.org/project/python:requests/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.339 rfc3339_validator: A pure python RFC3339 validator
Description
A pure python RFC3339 validator
LicenseMIT license
Upstream Contact
https://pypi.org/project/rfc3339-validator/Type
standard

488

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.1.4

version_requirements.txt:
rfc3339-validator

Equivalent System Packages(none known)

6.1.340 rfc3986_validator: Pure python rfc3986 validator
Description
Pure python rfc3986 validator
LicenseMIT license
Upstream Contact
https://pypi.org/project/rfc3986-validator/Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)

6.1. Details of external packages

489

Packages and Features, Release 10.4

Version Information
package-version.txt:
0.1.1

version_requirements.txt:
rfc3986-validator

Equivalent System Packages(none known)

6.1.341 rpy2: Python interface to R
Description
rpy2 is a redesign and rewrite of rpy. It is providing a low-level interface to R, a proposed high-level interface, including
wrappers to graphical libraries, as well as R-like structures and functions.
License• GPL 2+
Upstream Contact• https://github.com/rpy2/rpy2
Special Installation Instructions
In the Sage distribution, rpy2 is a “semi-standard” package: It will be automatically installed by the Sage distribution if
a suitable system installation of R is detected by configure. (Note that Sage no longer ships and installs its own copyof R.)
Type
standard

490

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cffi: Foreign Function Interface for Python calling C code
• jinja2: General purpose template engine for Python• pycparser: Parser of the C language in Python• pytz: Timezone definitions for Python• r: A free software environment for statistical computing and graphics• tzlocal: Python timezone information for the local timezone
Version Information
package-version.txt:
3.4.5

version_requirements.txt:
rpy2 >=3.3

Equivalent System Packages$ sudo pacman -S python-rpy2$ conda install rpy2 r-lattice$ sudo apt-get install python3-rpy2$ sudo pkg install math/py-rpy2$ sudo port install py-rpy2$ sudo zypper install python3\$\{PYTHON_MINOR\}-rpy2

See https://repology.org/project/rpy2/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

491

Packages and Features, Release 10.4

6.1.342 rst2ipynb: Convert reStructuredText files to Jupyter notebooks
Description
The rst2pynb program converts a standalone reStructuredText file to a Jupyter notebook file.
This is currently achieved by converting to markdown with pandoc and then to Jupyter notebook using notedown, plus
some configuration and tweaks.
LicenseBSD 3-Clause License
Upstream Contact
Authors: Scott Sievert and Nicolas M. Thiéry Home page: https://github.com/nthiery/rst-to-ipynb
Special Update/Build Instructions
Fetch tarball from https://pypi.python.org/pypi/rst2ipynb/
As it is written in Haskell, pandoc must be installed from the distro.
The main rationale for having a notedown package in Sage (rather than just let pip fetch it) is that the version on pipy
(1.5.0, 2015-10-07) is outdated and lacks important features / fixes for us.
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• notedown: Create IPython notebooks from markdown• pandoc: A document converter
Version Information
package-version.txt:
0.2.3

version_requirements.txt:
rst2ipynb >=0.2.2

492

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages
See https://repology.org/project/python:rst2ipynb/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.343 rubiks: Programs for Rubik’s cube
Description
There are several programs for working with Rubik’s cubes, by three different people. Look inside the directories under/src to see specific info and licensing. In summary the three contributers are:Michael Reid (GPL) http://www.cflmath.com/ reid/Rubik/optimal_solver.html• optimal - uses many pre-computed tables to find an optimal solution to the 3x3x3 Rubik’s cube
Dik T. Winter (MIT License)• cube - uses Kociemba’s algorithm to iteratively find a short solution to the 3x3x3 Rubik’s cube
• size222 - solves a 2x2x2 Rubik’s cube
Eric Dietz (GPL) https://web.archive.org/web/20121212175710/http://www.wrongway.org/?rubiksource• cu2 - A fast, non-optimal 2x2x2 solver• cubex - A fast, non-optimal 3x3x3 solver• mcube - A fast, non-optimal 4x4x4 solverTypeoptional
Dependencies
Version Information
package-version.txt:
20070912.p21

Equivalent System Packages$ sudo pacman -S rubiks$ conda install rubiks$ sudo apt-get install rubiks$ sudo yum install rubiks

6.1. Details of external packages

493

Packages and Features, Release 10.4

$ sudo pkg install math/rubiks$ nix-env --install rubiks

See https://repology.org/project/rubiks/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.344 rw: Compute rank-width and rank-decompositions
Description
rw is a program that calculates rank-width and rank-decompositions.
https://sourceforge.net/projects/rankwidth/
LicenseGPL version 2 or later
Upstream Contact
Philipp Klaus Krause (philipp@informatik.uni-frankfurt.de)Typestandard
Dependencies
Version Information
package-version.txt:
0.9

Equivalent System Packages$ sudo pacman -S rankwidth$ conda install rw$ sudo apt-get install librw-dev$ sudo yum install rw-devel

494

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo pkg install math/rankwidth$ nix-env --install rankwidth$ sudo xbps-install rankwidth-devel

See https://repology.org/project/rankwidth/versions
If the system package is installed, ./configure will check if it can be used.

6.1.345 saclib: Computations with real algebraic numbers
Description
Saclib is a library of C programs for computer algebra derived from the SAC2 system. It is mainly used as a dependencyof qepcad.
LicenseICS Wikipedia article ISC_license
Upstream Contact• Repository: https://github.com/chriswestbrown/saclib• Tarballs: https://www.usna.edu/Users/cs/wcbrown/qepcad/INSTALL/IQ.html• Website: (outdated) https://www.usna.edu/Users/cs/wcbrown/qepcad/B/QEPCAD.html
Typeoptional
Dependencies
Version Information
package-version.txt:
2.2.8

6.1. Details of external packages

495

Packages and Features, Release 10.4

Equivalent System Packages$ sudo apt-get install libsaclib-dev$ sudo yum install saclib saclib-devel

See https://repology.org/project/saclib/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.346 sage_conf: Configuration module for the SageMath library (distributableversion)Description
This distribution package provides:• a single Python module, sage_conf, providing configuration information to the SageMath library at the time ofits installation and at its runtime• a console script sage-config, for querying the variables of sage_conf from the shell• a sourcable shell script sage-env-config, providing additional configuration information in the form of environment variables
The sage_conf distribution package is polymorphic: It has several implementations.
sage_conf sdist on PyPI
This implementation of the sage_conf distribution package comes from Issue #29039, which added the directory
pkgs/sage-conf_pypi.
To install, use pip install -v sage_conf. Using -v ensures that diagnostic messages are displayed.
On installation (or building a wheel), it invokes sage_bootstrap to establish a build tree (SAGE_ROOT) and installation tree (SAGE_LOCAL) for the SageMath distribution. By default, it uses a subdirectory of $HOME/.sage that is
specific to the version of the distribution and the version of Python in use. If several virtual environments over the sameversion of Python install sage_conf, they will share these trees.
After installation of sage_conf, a wheelhouse containing wheels of various libraries is available; typels $(sage-config SAGE_SPKG_WHEELS) to list them and pip install $(sage-config
SAGE_SPKG_WHEELS)/*.whl to install them. After this, you can install the Sage library, for example, using pip
install sagemath-standard.

496

Chapter 6. All External Packages

Packages and Features, Release 10.4

sage_conf wheels
Prebuilt binary wheels of the sage_conf distribution package are available at https://github.com/sagemath/sage-wheels/releases/
This implementation of sage_conf comes from Issue #31396,
sage-conf_relocatable/.

which adds the directory pkgs/

On building a wheel, it invokes sage_bootstrap to establish a build and installation tree (SAGE_ROOT, SAGE_LOCAL) in a subdirectory of the directory /var/tmp/, whose name is specific to the version of the distribution and theversion of Python in use.
The wheel distributes a copy of the prebuilt SAGE_ROOT and SAGE_LOCAL. Importing sage_conf (or using the
installed sage-config script), makes sure that a symlink from the /var/tmp location to the actual persistent installation location is created. As the relocated libraries and programs contain the hardcoded path SAGE_LOCAL in various
ways (including as rpaths), this symlink is necessary for the prebuilt libraries and programs to work.
/var/tmp is a sticky directory on all Linux distributions following the Filesystem Hierarchy Standard, as well as on
macOS. On multi-user systems, only one user can use a given version of the distribution; other installation schemes arerecommended for systems with multiple Sage users.
sage_conf in the SageMath distribution
The original version of the distribution package sage_conf is used internally in the SageMath distribution. It is provided
in the directory pkgs/sage-conf. This version of the package is generated by the Sage distribution’s ./configure script.
sage_conf for conda
The version of the distribution package in the directory pkgs/sage-conf_conda may be used in an installation method of
SageMath, where all packages are provided by conda. This method is described in https://doc.sagemath.org/html/en/
installation/conda.html#using-conda-to-provide-all-dependencies-for-the-sage-library-experimental
sage_conf in downstream distributions
Downstream packagers and advanced developers and users may want to provide their own implementation of the distribution package to support the intended deployment of the SageMath library.
LicenseGNU General Public License (GPL) v3 or later
Upstream Contact
https://www.sagemath.org
This package is included in the source code of the Sage distribution, in pkgs/sage-conf*.

6.1. Details of external packages

497

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
10.4

version_requirements.txt:
sage-conf ~= 10.4

Equivalent System Packages(none known)

6.1.347 sage_docbuild: Build system of the Sage documentation
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2020 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (using Windows Subsystem for Linux).
The traditional and recommended way to install SageMath is from source via Sage-the-distribution (https://www.
sagemath.org/download-source.html). Sage-the-distribution first builds a large number of open source packages fromsource (unless it finds suitable versions installed in the system) and then installs the Sage Library (sagelib, implemented
in Python and Cython).

498

Chapter 6. All External Packages

Packages and Features, Release 10.4

About this pip-installable source distribution
This is the build system of the Sage documentation, based on Sphinx.
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• sagelib• sphinx: Python documentation generator
Version Information
package-version.txt:
10.4

version_requirements.txt:
sage-docbuild ~= 10.4

Equivalent System Packages
See https://repology.org/project/sage-docbuild/versions, https://repology.org/project/python:sage-docbuild/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.348 sage_flatsurf: Flat surfaces in SageMath
Description
SageMath package for studying the geometry of flat surfaces and the dynamics of their foliations.
LicenseGNU General Public License, version 2

6.1. Details of external packages

499

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/sage-flatsurf/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)• surface_dynamics: dynamics on surfaces (measured foliations, interval exchange transformation, Teichmüller flow,etc)
Version Information
requirements.txt:
sage-flatsurf

Equivalent System Packages(none known)

6.1.349 sage_numerical_backends_coin: COIN-OR backend for Sage MixedIntegerLinearProgram
Description
COIN-OR backend for Sage MixedIntegerLinearProgram
LicenseGPLv2+

500

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/sage-numerical-backends-coin/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)• cbc: COIN-OR branch and cut solver for mixed-integer programs• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel
Version Information
package-version.txt:
10.4

version_requirements.txt:
sage_numerical_backends_coin >=9.0b12

Equivalent System Packages
See
https://repology.org/project/sage-numerical-backends-coin/versions,sage-numerical-backends-coin/versions

https://repology.org/project/python:

However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.350 sage_numerical_backends_cplex: Cplex backend for Sage MixedIntegerLinearProgram
Description
Cplex backend for Sage MixedIntegerLinearProgram

6.1. Details of external packages

501

Packages and Features, Release 10.4

LicenseGPLv2+
Upstream Contact
https://pypi.org/project/sage-numerical-backends-cplex/Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel
Version Information
package-version.txt:
10.4

version_requirements.txt:
sage_numerical_backends_cplex >=9.0b12

Equivalent System Packages
See https://repology.org/project/python:sage-numerical-backends-cplex/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

502

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.351 sage_numerical_backends_gurobi: Gurobi backend for Sage MixedIntegerLinearProgram
Description
Gurobi backend for Sage MixedIntegerLinearProgram
LicenseGPLv2+
Upstream Contact
https://pypi.org/project/sage-numerical-backends-gurobi/
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel
Version Information
package-version.txt:
10.4

version_requirements.txt:
sage_numerical_backends_gurobi >=9.0.0

6.1. Details of external packages

503

Packages and Features, Release 10.4

Equivalent System Packages
See https://repology.org/project/sage-numerical-backends-gurobi/versions,sage-numerical-backends-gurobi/versions

https://repology.org/project/python:

However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.352 sage-setup: Build system of the SageMath libraryThis is the build system of the Sage library, based on setuptools.
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• jinja2: General purpose template engine for Python• pkgconfig: Python interface to pkg-config
Version Information
package-version.txt:
10.4

version_requirements.txt:
sage-setup ~= 10.4

Equivalent System Packages(none known)

6.1.353 sage_sws2rst: Translate legacy Sage worksheet files (.sws) to reStructuredText (.rst) files
Description
Provides a script 𝑠𝑎𝑔𝑒 − 𝑠𝑤𝑠2𝑟𝑠𝑡, which translates a Sage worksheet file (.sws) into a reStructuredText (.rst) file.
Sage worksheet files (.sws) are a file format that was used by the now-obsolete Sage notebook (https://github.com/
sagemath/sagenb), superseded by the Jupyter notebook. SageNB was dropped in the course of the transition of SageMath
to Python 3.
504

Chapter 6. All External Packages

Packages and Features, Release 10.4

This package was extracted from the SageNB sources in Issue #28838 to provide a way to convert pedagogical material
written available in Sage worksheet format.
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• beautifulsoup4: Screen-scraping library
Version Information
package-version.txt:
10.4

version_requirements.txt:
sage-sws2rst ~= 10.4

Equivalent System Packages(none known)

6.1.354 sagemath_bliss: Graph (iso/auto)morphisms with bliss
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.

6.1. Details of external packages

505

Packages and Features, Release 10.4

About this pip-installable source distribution
This pip-installable source distribution sagemath-bliss is a small optional distribution for use with sagemath-standard.
It provides a Cython interface to the bliss library for the purpose of computing graph (iso/auto)morphisms.
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• bliss: Computing automorphism groups and canonical forms of graphs• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• pkgconfig: Python interface to pkg-config• sage_conf: Configuration module for the SageMath library (distributable version)• sage-setup: Build system of the SageMath library• sagemath_environment: System and software environment
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-bliss ~= 10.4

Equivalent System Packages$ conda install sagemath-bliss

However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

506

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.355 sagemath_categories: Sage categories and basic rings
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.
About this pip-installable distribution package
The pip-installable distribution package 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑐𝑎𝑡𝑒𝑔𝑜𝑟𝑖𝑒𝑠 is a distribution of a small part of the Sage Library.
It provides a small subset of the modules of the Sage library (“sagelib”, 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑) that is a supersetof 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑜𝑏𝑗𝑒𝑐𝑡𝑠 (providing Sage objects, the element/parent framework, categories, the coercion system andthe related metaclasses), making various additional categories available without introducing dependencies on additional
mathematical libraries.
Dependencies
When building from source, development packages of 𝑔𝑚𝑝, 𝑚𝑝𝑓 𝑟, and 𝑚𝑝𝑐 are needed.
Documentation• Categories• Structure• Coercion• Classes, Metaclasses
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• pkgconfig: Python interface to pkg-config• python_build: A simple, correct PEP517 package builder• sage-setup: Build system of the SageMath library

6.1. Details of external packages

507

Packages and Features, Release 10.4

• sagemath_environment: System and software environment• sagemath_objects: Sage objects, elements, parents, categories, coercion, metaclasses
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-categories ~= 10.4

Equivalent System Packages(none known)

6.1.356 sagemath_coxeter3: Coxeter groups, Bruhat ordering, Kazhdan-Lusztig
polynomials with coxeter3
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.
About this pip-installable source distribution
This pip-installable source distribution sagemath-coxeter3 is a small optional distribution for use with sagemath-standard.
It provides a Cython interface to the coxeter3 library.
Type
optional

508

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• coxeter3: Library for Coxeter groups, Bruhat ordering, Kazhdan-Lusztig polynomials• cython: C-Extensions for Python, an optimizing static compiler• pkgconfig: Python interface to pkg-config• sage-setup: Build system of the SageMath library• sagemath_environment: System and software environment
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-coxeter3 ~= 10.4

Equivalent System Packages(none known)

6.1.357 sagemath_doc_html: SageMath documentation in HTML format
Upon installation, this package builds the SageMath documentation in HTML format.
It is a standard package. It is built on every invocation of make or make all, but not on make build. The
documentation build can also be run separately using make doc-html.
Typestandard
Dependencies• $(SAGERUNTIME)• conway_polynomials: Python interface to Frank Lübeck’s Conway polynomial database• elliptic_curves: Databases of elliptic curves• fpylll: Python interface for FPLLL• furo: A clean customizable Sphinx documentation theme• graphs: A database of combinatorial graphs• ipykernel: IPython Kernel for Jupyter

6.1. Details of external packages

509

Packages and Features, Release 10.4

• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• jmol: Java viewer for chemical structures in 3D• jupyter_client: Jupyter protocol implementation and client libraries• jupyter_sphinx: Jupyter Sphinx Extension• mathjax: A JavaScript library for displaying mathematical formulas• matplotlib: Python 2D plotting library• maxima: System for manipulating symbolic and numerical expressions• mpmath: Pure Python library for multiprecision floating-point arithmetic• networkx: Python package for complex networks• pillow: Python Imaging Library• pplpy_doc: Python interface to the Parma Polyhedra Library (documentation)• sage_docbuild: Build system of the Sage documentation• sagelib• scipy: Scientific tools for Python• sphinx: Python documentation generator• sphinx_copybutton: Add a copy button to each of your code cells• sphinx_inline_tabs: Add inline tabbed content to your Sphinx documentation• sympy: Python library for symbolic mathematics• tachyon: A ray tracing system
Version Information
Equivalent System Packages(none known)

6.1.358 sagemath_doc_pdf: SageMath documentation in PDF format
Upon installation, this package builds the SageMath documentation in PDF format.
It is an optional package. It can be enabled at configuration time using ./configure
math_doc_pdf. Alternatively, it can be installed by using make doc-pdf.

--enable-sage-

Typeoptional

510

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• free_fonts: a free family of scalable outline fonts• sagemath_doc_html: SageMath documentation in HTML format• texlive: A comprehensive TeX system• texlive_luatex: LuaTeX packages• xindy: a general-purpose index processor
Version Information
Equivalent System Packages(none known)

6.1.359 sagemath_environment: System and software environment
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.
About this pip-installable distribution package
The pip-installable distribution package 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑒𝑛𝑣𝑖𝑟𝑜𝑛𝑚𝑒𝑛𝑡 is a distribution of a small part of the Sage Library.
It provides a small, fundamental subset of the modules of the Sage library (“sagelib”, 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑), providing
the connection to the system and software environment. It also includes the 𝑠𝑎𝑔𝑒 script for launching the Sage REPL andaccessing various developer tools (see 𝑠𝑎𝑔𝑒 − −ℎ𝑒𝑙𝑝).
Typeoptional

6.1. Details of external packages

511

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• python_build: A simple, correct PEP517 package builder
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-environment ~= 10.4

Equivalent System Packages(none known)

6.1.360 sagemath_mcqd: Finding maximum cliques with mcqd
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.
About this pip-installable source distribution
This pip-installable source distribution sagemath-mcqd is a small optional distribution for use with sagemath-standard.
It provides a Cython interface to the mcqd library, providing a fast exact algorithm for finding a maximum clique in an
undirected graph.

512

Chapter 6. All External Packages

Packages and Features, Release 10.4

Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• mcqd: An exact algorithm for finding a maximum clique in an undirected graph• memory_allocator: An extension class to allocate memory easily with Cython• pkgconfig: Python interface to pkg-config• sage-setup: Build system of the SageMath library
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-mcqd ~= 10.4

Equivalent System Packages(none known)

6.1.361 sagemath_meataxe: Matrices over small finite fields with meataxe
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.

6.1. Details of external packages

513

Packages and Features, Release 10.4

About this pip-installable source distribution
This pip-installable source distribution sagemath-meataxe is a small optional distribution for use with sagemath-standard.
This distribution provides
matrix_gfpn_dense.

the

SageMath

modulessage.libs.meataxe

andsage.matrix.

It provides a specialized implementation of matrices over the finite field F_q, where q <= 255, using the𝑆ℎ𝑎𝑟𝑒𝑑𝑀 𝑒𝑎𝑡𝐴𝑥𝑒 < ℎ𝑡𝑡𝑝 : //𝑢𝑠𝑒𝑟𝑠.𝑚𝑖𝑛𝑒𝑡.𝑢𝑛𝑖 − 𝑗𝑒𝑛𝑎.𝑑𝑒/ 𝑘𝑖𝑛𝑔/𝑆ℎ𝑎𝑟𝑒𝑑𝑀 𝑒𝑎𝑡𝐴𝑥𝑒/ > library.
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• meataxe: Library for computing with modular representations• pkgconfig: Python interface to pkg-config• sage-setup: Build system of the SageMath library• sagemath_environment: System and software environment
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-meataxe ~= 10.4

Equivalent System Packages(none known)

514

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.362 sagemath_objects: Sage objects, elements, parents, categories, coercion,
metaclasses
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.
About this pip-installable distribution package
The pip-installable distribution package 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑜𝑏𝑗𝑒𝑐𝑡𝑠 is a distribution of a small part of the Sage Library.
It provides a small, fundamental subset of the modules of the Sage library (“sagelib”, 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑), making
Sage objects, the element/parent framework, categories, the coercion system and the related metaclasses available.
Dependencies
When building from source, development packages of 𝑔𝑚𝑝, 𝑚𝑝𝑓 𝑟, and 𝑚𝑝𝑐 are needed.
Documentation• Categories• Structure• Coercion• Classes, Metaclasses
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• gmpy2: Python interface to GMP/MPIR, MPFR, and MPC• pkgconfig: Python interface to pkg-config• python_build: A simple, correct PEP517 package builder
6.1. Details of external packages

515

Packages and Features, Release 10.4

• sage-setup: Build system of the SageMath library• sagemath_environment: System and software environment
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-objects ~= 10.4

Equivalent System Packages(none known)

6.1.363 sagemath_repl: IPython kernel, Sage preparser, doctester
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.
About this pip-installable distribution package
The pip-installable source distribution 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑟𝑒𝑝𝑙 is a distribution of a small part of the Sage Library.
It provides a small, fundamental subset of the modules of the Sage library (“sagelib”, 𝑠𝑎𝑔𝑒𝑚𝑎𝑡ℎ − 𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑), providing
the IPython kernel, Sage preparser, and doctester.
Type
optional

516

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ipython: Interactive computing environment with an enhanced interactive Python shell• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• python_build: A simple, correct PEP517 package builder• sagemath_environment: System and software environment• sagemath_objects: Sage objects, elements, parents, categories, coercion, metaclasses
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-repl ~= 10.4

Equivalent System Packages(none known)

6.1.364 sagemath_sirocco: Certified root continuation with sirocco
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.

6.1. Details of external packages

517

Packages and Features, Release 10.4

About this pip-installable source distribution
This pip-installable source distribution sagemath-sirocco is a small optional distribution for use with sagemath-standard.
It provides a Cython interface to the sirocco library for the purpose of compute topologically certified root continuationof bivariate polynomials.
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cypari2: Python interface to the number theory library libpari• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• mpfr: Multiple-precision floating-point computations with correct rounding• pkgconfig: Python interface to pkg-config• sage-setup: Build system of the SageMath library• sagemath_environment: System and software environment• sirocco: Compute topologically certified root continuation of bivariate polynomials
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-sirocco ~= 10.4

Equivalent System Packages$ conda install sagemath-sirocco

However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

518

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.365 sagemath_tdlib: Tree decompositions with tdlib
About SageMath“Creating a Viable Open Source Alternative toMagma, Maple, Mathematica, and MATLAB”
Copyright (C) 2005-2024 The Sage Development Teamhttps://www.sagemath.org
SageMath fully supports all major Linux distributions, recent versions of macOS, and Windows (Windows Subsystem forLinux).
See https://doc.sagemath.org/html/en/installation/index.html for general installation instructions.
About this pip-installable source distribution
This pip-installable source distribution sagemath-tdlib is a small optional distribution for use with sagemath-standard.
It provides a Cython interface to the tdlib library, providing algorithms concerning tree decompositions.
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• boost_cropped: Portable C++ libraries (subset needed for Sage)• cysignals: Interrupt and signal handling for Cython• cython: C-Extensions for Python, an optimizing static compiler• pkgconfig: Python interface to pkg-config• sage-setup: Build system of the SageMath library• sagemath_environment: System and software environment• tdlib: Algorithms for computing tree decompositions of graphs
Version Information
package-version.txt:
10.4

version_requirements.txt:
sagemath-tdlib ~= 10.4

6.1. Details of external packages

519

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.366 sagenb_export: Convert legacy SageNB notebooks to Jupyter notebooks
and other formats
Description
This is a tool to convert SageNB notebooks to other formats, in particular IPython/Jupyter notebooks.
It includes a Jupyter notebook extension to provide a UI for the import of SageNB notebooks.
Upstream Contact
https://github.com/vbraun/ExportSageNB
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ipython: Interactive computing environment with an enhanced interactive Python shell• nbconvert: Converting Jupyter Notebooks• notebook: Jupyter notebook, a web-based notebook environment for interactive computing• six: Python 2 and 3 compatibility utilities
Version Information
package-version.txt:
3.3

version_requirements.txt:
git+https://github.com/vbraun/ExportSageNB.git

520

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages
See https://repology.org/project/sagenb-export/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.367 sagetex: Embed code, results of computations, and plots from Sage into
LaTeX documents
Description
The SageTeX package allows you to embed code, results of computations, and plots from Sage into LaTeX documents.
LicenseThe source code of the SageTeX package may be redistributed and/or modified under the terms of the GNU General
Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later
version. To view a copy of this license, see http://www.gnu.org/licenses/ or send a letter to the Free Software Foundation,Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
The documentation of the SageTeX package is licensed under the Creative Commons Attribution-Share Alike 3.0 License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons,
171 Second Street, Suite 300, San Francisco, California, 94105, USA.
SPKG Maintainers
Dan Drake (dr.dan.drake at gmail) and SageMath developers (sage-devel@googlegroups.com)
Upstream Contact
Author: Dan Drake.
Web: https://github.com/sagemath/sagetex
Dependencies
To install, nothing more than a standard Sage install. The spkg-check script will exit without actually testing anything
if it cannot find “latex” in your path.
Notes
To use SageTeX, both Sage and LaTeX need to know about it. SageTeX comes standard with Sage, so you only need tomake sure LaTeX can find what it needs. Full details are in the Sage installation guide at http://doc.sagemath.org/html/
en/installation/ and http://doc.sagemath.org/html/en/tutorial/sagetex.html .
The directory $SAGE_ROOT/venv/share/doc/sagetex contains documentation and an example file. See$SAGE_ROOT/venv/share/texmf/tex/latex/sagetex for the source code and some possibly usefulscripts. If you have problems or suggestions see the sage-support group.
If you want to help develop SageTeX, please clone the github repository (see the “Upstream Contact” above) and sendme patches based on that.
6.1. Details of external packages

521

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• matplotlib: Python 2D plotting library• maxima: System for manipulating symbolic and numerical expressions• pillow: Python Imaging Library• pyparsing: A Python parsing module• scipy: Scientific tools for Python• tachyon: A ray tracing system
Version Information
package-version.txt:
3.6.1

version_requirements.txt:
sagetex >=3.5

Equivalent System Packages$ conda install sagetex

See https://repology.org/project/sagetex/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.368 sbcl: a lisp compiler and runtime system
Description
Steel Bank Common Lisp (SBCL) is a high performance Common Lisp compiler. It is open source / free software, witha permissive license (see https://www.sbcl.org/history.html). In addition to the compiler and runtime system for ANSI
Common Lisp, it provides an interactive environment including a debugger, a statistical profiler, a code coverage tool,and many other extensions.
(taken from https://www.sbcl.org)

522

Chapter 6. All External Packages

Packages and Features, Release 10.4

License• a mix of BSD-style and public domain
Upstream Contact• https://www.sbcl.org
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add sbcl
$ sudo pacman -S sbcl
$ conda install sbcl
$ apt-cyg install sbcl
$ sudo apt-get install sbcl
$ sudo yum install sbcl
$ sudo pkg install lang/sbcl$ sudo emerge dev-lisp/sbcl$ brew install sbcl
$ sudo port install sbcl
$ nix-env --install sbcl

install the following packages: lang/sbcl$ sudo zypper install sbcl
$ sudo xbps-install sbcl

See https://repology.org/project/sbcl/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

523

Packages and Features, Release 10.4

6.1.369 scip: Mixed integer programming solver
Description
SCIP is currently one of the fastest open source mixed integer programming (MIP) solvers. It is also a framework forconstraint integer programming and branch-cut-and-price. It allows total control of the solution process and the accessof detailed information down to the guts of the solver.
LicenseApache 2.0
Upstream Contact
https://scipopt.org/#scipoptsuite
Dependencies
scip brings its own patched version of the bliss library. This will conflict with the optional package bliss.
Typeoptional
Dependencies• $(MP_LIBRARY)• bliss: Computing automorphism groups and canonical forms of graphs• cmake: A cross-platform build system generator• papilo: Parallel presolve for integer and linear optimization• readline: Command line editing library• soplex: Linear optimization solver using the revised simplex method• zlib: Data compression library
Version Information
package-version.txt:
9.0.1

524

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install scip

See https://repology.org/project/scipoptsuite/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.370 scip_sdp: Mixed integer semidefinite programming plugin for SCIP
Description
SCIP-SDP allows to solve MISDPs using a nonlinear branch-and-bound approach or a linear programming cutting-plane
approach.
• In the first case (the default), the semidefinite programming (SDP) relaxations are solve using interior-point
SDP-solvers.
• In the second case, cutting planes based on eigenvector are generated.
SCIP-SDP is based on the branch-and-cut framework SCIP. In addition to providing a constraint handler for
SDP-constraints and a relaxator to solve continuous SDP-relaxations using interior-point solvers, SCIP-SDP adds several heuristics and propagators to SCIP.
LicenseApache 2.0
Upstream Contact
http://www.opt.tu-darmstadt.de/scipsdp/
https://github.com/scipopt/SCIP-SDP
Type
optional
Dependencies• cmake: A cross-platform build system generator• dsdp: Semidefinite programming solver• scip: Mixed integer programming solver

6.1. Details of external packages

525

Packages and Features, Release 10.4

Version Information
package-version.txt:
4.3.0

Equivalent System Packages(none known)

6.1.371 scipy: Scientific tools for Python
Description
SciPy (pronounced “Sigh Pie”) is open-source software for mathematics, science, and engineering. The SciPy librarydepends on NumPy, which provides convenient and fast N-dimensional array manipulation. The SciPy library is built towork with NumPy arrays, and provides many user-friendly and efficient numerical routines such as routines for numericalintegration and optimization. Together, they run on all popular operating systems, are quick to install, and are free ofcharge. NumPy and SciPy are easy to use, but powerful enough to be depended upon by some of the world’s leading
scientists and engineers.
License
SciPy’s license is free for both commercial and non-commercial use, under the BSD terms. See http://www.scipy.org/
License_Compatibility
Upstream Contact
https://www.scipy.org/
Dependencies• Python, which in Sage has numerous dependencies• Numpy• Fortran• GNU patch
Special Update/Build Instructions• None.

526

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(BLAS)• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cython: C-Extensions for Python, an optimizing static compiler• gfortran: Fortran compiler from the GNU Compiler Collection• meson_python: Meson Python build backend (PEP 517)
• numpy: Package for scientific computing with Python• pybind11: Create Python bindings to C++ code
• pythran: Ahead of Time compiler for numeric kernels
Version Information
package-version.txt:
1.12.0version_requirements.txt:
scipy >=1.5

Equivalent System Packages$ sudo pacman -S python-scipy$ conda install scipy\<1.12\,\>=1.5$ sudo apt-get install python3-scipy$ sudo yum install python-scipy$ sudo emerge dev-python/scipy$ brew install scipy$ sudo port install py-scipy$ sudo zypper install python3\$\{PYTHON_MINOR\}-scipy

6.1. Details of external packages

527

Packages and Features, Release 10.4

$ sudo xbps-install python3-scipy

See https://repology.org/project/python:scipy/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.372 scs: Splitting conic solver
Description
scs: splitting conic solver
LicenseMIT
Upstream Contact
https://pypi.org/project/scs/
Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cmake: A cross-platform build system generator• numpy: Package for scientific computing with Python
Version Information
package-version.txt:
3.2.3

version_requirements.txt:
scs

528

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install scs

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.373 send2trash: Send file to trash natively under Mac OS X, Windows and Linux
Description
Send file to trash natively under Mac OS X, Windows and Linux.
LicenseBSD License
Upstream Contact
https://pypi.org/project/Send2Trash/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.8.3

version_requirements.txt:
send2trash >=1.5.0

6.1. Details of external packages

529

Packages and Features, Release 10.4

Equivalent System Packages$ conda install send2trash$ sudo emerge dev-python/send2trash$ sudo port install py-send2trash$ sudo zypper install python3\$\{PYTHON_MINOR\}-Send2Trash$ sudo xbps-install python3-send2trash

See https://repology.org/project/send2trash/versions, https://repology.org/project/python:send2trash/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.374 setuptools: Build system for Python packages
Description
setuptools is the classical build system for Python packages, a collection of enhancements to the Python distutils.
LicenseMIT License
Upstream Contact
http://pypi.python.org/pypi/setuptools/
https://github.com/pypa/setuptoolsTypestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages

530

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
69.5.1

src/pyproject.toml:
setuptools >= 68.1.1

version_requirements.txt:
setuptools >= 68.1.1

Equivalent System Packages$ sudo pacman -S python-setuptools$ conda install setuptools$ sudo apt-get install python3-setuptools$ sudo yum install python3-setuptools$ sudo emerge dev-python/setuptools$ sudo port install py-setuptools$ sudo zypper install python3\$\{PYTHON_MINOR\}-setuptools$ sudo xbps-install python3-setuptools

See https://repology.org/project/python:setuptools/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.375 setuptools_scm: Python build system extension to obtain package version
from version control
Description
the blessed package to manage your versions by scm tags

6.1. Details of external packages

531

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/setuptools-scm/
Typestandard
Dependencies• $(PYTHON)• packaging: Core utilities for Python packages• pip: Tool for installing and managing Python packages• setuptools: Build system for Python packages• tomli: A lil’ TOML parser• typing_extensions: Backported and Experimental Type Hints for Python 3.8+
Version Information
package-version.txt:
8.1.0

version_requirements.txt:
setuptools_scm >=7

Equivalent System Packages$ sudo pacman -S python-setuptools-scm$ conda install setuptools_scm$ sudo apt-get install python3-setuptools-scm$ sudo yum install python-setuptools_scm$ sudo pkg install devel/py-setuptools_scm$ sudo emerge dev-python/setuptools-scm

532

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo port install py-setuptools_scm$ sudo zypper install python3\$\{PYTHON_MINOR\}-setuptools_scm$ sudo xbps-install python3-setuptools_scm

See https://repology.org/project/python:setuptools-scm/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.376 singular: Computer algebra system for polynomial computations, algebraic geometry, singularity theory
Description
Singular is a computer algebra system for polynomial computations, with special emphasis on commutative andnon-commutative algebra, algebraic geometry, and singularity theory.
LicenseGPLv2 or GPLv3
Upstream Contact
libsingular-devel@mathematik.uni-kl.dehttps://www.singular.uni-kl.de/Special Update/Build Instructions
Other notes:• If the environment variable SAGE_DEBUG is set to “yes”, then omalloc will be replaced by xalloc. The resulting
Singular executable and libsingular library will be slower than with omalloc, but allow for easier debugging of
memory corruptions.
Typestandard

6.1. Details of external packages

533

Packages and Features, Release 10.4

Dependencies• $(MP_LIBRARY)• cddlib: Double description method for polyhedral representation conversion• flint: Fast Library for Number Theory• mpfr: Multiple-precision floating-point computations with correct rounding• ntl: A library for doing number theory• readline: Command line editing library
Version Information
package-version.txt:
4.4.0

Equivalent System Packages$ sudo pacman -S singular$ conda install singular$ apt-cyg install singular-devel singular$ sudo apt-get install singular singular-doc libsingular4-dev$ sudo yum install Singular Singular-devel$ sudo pkg install math/singular$ sudo emerge sci-mathematics/singular\[readline\]$ brew install singular$ sudo port install singular$ nix-env --install singular$ sudo xbps-install singular

See https://repology.org/project/singular/versions
If the system package is installed, ./configure will check if it can be used.

534

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.377 singular_jupyter: Jupyter kernel for Singular
Description
This is a beta version of a jupyter kernel for Singular.
LicenseGPL version 2 or later
Upstream Contact• https://github.com/sebasguts/jupyter_kernel_singularType
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• ipython: Interactive computing environment with an enhanced interactive Python shell• ipywidgets: Interactive HTML widgets for Jupyter notebooks and the IPython kernel• jupyter_client: Jupyter protocol implementation and client libraries• pysingular: A basic Python interface to Singular
Version Information
package-version.txt:
0.9.7

version_requirements.txt:
singular_jupyter >=0.9.7

Equivalent System Packages$ conda install jupyter-kernel-singularSee
https://repology.org/project/jupyter-singular/versions,jupyter-kernel-singular/versions

https://repology.org/project/python:

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

535

Packages and Features, Release 10.4

6.1.378 sirocco: Compute topologically certified root continuation of bivariate
polynomials
Description
sirocco is a library to compute topologically certified root continuation of bivariate polynomials.
LicenseGPLv3+SPKG Maintainers• Miguel Marco
Upstream Contact
Miguel Marco (mmarco@unizar.es)
Dependencies
• gcc
Type
optional
Dependencies• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
2.1.0

Equivalent System Packages$ sudo pacman -S sirocco$ conda install sirocco$ sudo yum install sirocco

536

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo zypper install sirocco-devel

See https://repology.org/project/sirocco/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.379 six: Python 2 and 3 compatibility utilities
Description
Python 2 and 3 compatibility utilities
LicenseMIT License
Upstream Contact• Author: Benjamin Peterson• Home page: http://pypi.python.org/pypi/six/
Dependencies
PythonTypestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.16.0version_requirements.txt:
six >=1.15.0

6.1. Details of external packages

537

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-six$ conda install six$ sudo apt-get install python3-six$ sudo yum install python-six$ sudo emerge dev-python/six$ sudo port install py-six$ sudo zypper install python3\$\{PYTHON_MINOR\}-six$ sudo xbps-install python3-six

See https://repology.org/project/python:six/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.380 slabbe: Sébastien Labbé’s Research code
Description
This SageMath package contains various modules for experimentation with• discrete dynamical systems• combinatorics• digital geometry• visualization• miscellaneous development tools
LicenseGPLv2+
Upstream Contact
https://pypi.org/project/slabbe/

538

Chapter 6. All External Packages

Packages and Features, Release 10.4

Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)
Version Information
requirements.txt:
slabbeEquivalent System Packages
See https://repology.org/project/python:slabbe/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.381 snappy: Topology and geometry of 3-manifolds, with a focus on hyperbolic
structures
Description
Studying the topology and geometry of 3-manifolds, with a focus on hyperbolic structures.
LicenseGPLv2+
Upstream Contact
https://pypi.org/project/snappy/

6.1. Details of external packages

539

Packages and Features, Release 10.4

Type
optional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cypari2: Python interface to the number theory library libpari• decorator: Python library providing decorators• ipython: Interactive computing environment with an enhanced interactive Python shell• sagelib
Version Information
requirements.txt:
snappycypari !=2.4.0
snappy_15_knots

Equivalent System Packages(none known)

6.1.382 sniffio: Sniff out which async library your code is running under
Description
Sniff out which async library your code is running underLicenseMIT OR Apache-2.0
Upstream Contact
https://pypi.org/project/sniffio/

540

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.3.1

version_requirements.txt:
sniffioEquivalent System Packages(none known)

6.1.383 snowballstemmer: Stemmer algorithms for natural language processing in
PythonDescription
This package provides 29 stemmers for 28 languages generated from Snowball algorithms.
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/snowballstemmer/
This is a pure Python stemming library. If PyStemmer is available, this module uses it to accelerate.

6.1. Details of external packages

541

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.2.0

version_requirements.txt:
snowballstemmer >=1.2.1

Equivalent System Packages$ conda install snowballstemmer$ sudo emerge dev-python/snowballstemmer$ sudo port install py-snowballstemmer$ sudo zypper install python3\$\{PYTHON_MINOR\}-snowballstemmer$ sudo xbps-install python3-snowballstemmer

See https://repology.org/project/python:snowballstemmer/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.384 soplex: Linear optimization solver using the revised simplex method
Description
SoPlex is an optimization package for solving linear programming problems (LPs) based on an advanced implementationof the primal and dual revised simplex algorithm. It provides special support for the exact solution of LPs with rational
input data.

542

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseApache License, Version 2.0
Upstream Contact
https://github.com/scipopt/soplex
Type
optional
Dependencies• $(MP_LIBRARY)• boost_cropped: Portable C++ libraries (subset needed for Sage)• cmake: A cross-platform build system generator• mpfr: Multiple-precision floating-point computations with correct rounding• papilo: Parallel presolve for integer and linear optimization• zlib: Data compression library
Version Information
package-version.txt:
7.0.1

Equivalent System Packages$ conda install soplex$ sudo pkg install math/SoPlex

See https://repology.org/project/soplex/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

543

Packages and Features, Release 10.4

6.1.385 soupsieve: Modern CSS selector implementation for Beautiful Soup
Description
Modern CSS selector implementation for Beautiful Soup
License
Upstream Contact
https://pypi.org/project/soupsieve/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.5

version_requirements.txt:
soupsieve

Equivalent System Packages$ conda install soupsieve

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.386 sphinx: Python documentation generator
Description
Sphinx is a tool that makes it easy to create intelligent and beautiful documentation for Python projects (or other documents
consisting of multiple reStructuredText sources), written by Georg Brandl. It was originally created to translate the new
Python documentation, but has now been cleaned up in the hope that it will be useful to many other projects.

544

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseModified BSD; see e.g. its egg-info file for other options
Upstream Contact
https://pypi.org/project/Sphinx/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• alabaster: Default theme for the Sphinx documentation system• babel: Internationalization utilities• docutils: Processing plaintext documentation into useful formats, such as HTML or LaTeX• imagesize: Getting image size from png/jpeg/jpeg2000/gif file• importlib_metadata: Library to access the metadata for a Python package• jinja2: General purpose template engine for Python• packaging: Core utilities for Python packages• pygments: Generic syntax highlighter• requests: An HTTP library for Python• snowballstemmer: Stemmer algorithms for natural language processing in Python• sphinxcontrib_applehelp: Sphinx extension which outputs Apple help book• sphinxcontrib_devhelp: Sphinx extension which outputs Devhelp documents• sphinxcontrib_htmlhelp: Sphinx extension which outputs HTML help book• sphinxcontrib_jsmath: Sphinx extension which renders display math in HTML via JavaScript• sphinxcontrib_qthelp: Sphinx extension which outputs QtHelp documents• sphinxcontrib_serializinghtml: Sphinx extension which outputs serialized HTML files• sphinxcontrib_websupport: Sphinx API for Web apps

6.1. Details of external packages

545

Packages and Features, Release 10.4

Version Information
package-version.txt:
7.2.6

version_requirements.txt:
sphinx >=5.2, <8

Equivalent System Packages$ sudo pacman -S python-sphinx$ conda install sphinx\>=5.2$ sudo apt-get install sphinx$ sudo yum install python-sphinx$ sudo pkg install textproc/py-sphinx$ sudo emerge dev-python/sphinx$ brew install sphinx-doc$ sudo port install py-sphinx$ sudo zypper install python3\$\{PYTHON_MINOR\}-Sphinx$ sudo xbps-install python3-Sphinx

See https://repology.org/project/python:sphinx/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.387 sphinx_basic_ng: Modern skeleton for Sphinx themes
Description
Modern skeleton for Sphinx themes

546

Chapter 6. All External Packages

Packages and Features, Release 10.4

License
Upstream Contact
https://pypi.org/project/sphinx-basic-ng/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• sphinx: Python documentation generator
Version Information
package-version.txt:
1.0.0b2

version_requirements.txt:
sphinx-basic-ng

Equivalent System Packages$ sudo pacman -S python-sphinx-basic-ng$ conda install sphinx-basic-ng$ sudo apt-get install sphinx-basic-ng$ sudo yum install python-sphinx-basic-ng$ sudo pkg install textproc/py-sphinx-basic-ng$ sudo emerge dev-python/sphinx-basic-ng

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

547

Packages and Features, Release 10.4

6.1.388 sphinx_copybutton: Add a copy button to each of your code cells
Description
Add a copy button to each of your code cells
LicenseMIT License
Upstream Contact
https://pypi.org/project/sphinx-copybutton/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• sphinx: Python documentation generator
Version Information
package-version.txt:
0.5.2

version_requirements.txt:
sphinx-copybutton

Equivalent System Packages$ apk add py3-sphinx-copybutton$ sudo pacman -S python-sphinx-copybutton$ conda install sphinx-copybutton$ sudo yum install python-sphinx-copybutton$ sudo pkg install textproc/py-sphinx-copybutton

548

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo emerge dev-python/sphinx-copybutton$ sudo xbps-install python3-sphinx-copybutton

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.389 sphinx_inline_tabs: Add inline tabbed content to your Sphinx documentation
Description
Add inline tabbed content to your Sphinx documentation
License
Upstream Contact
https://pypi.org/project/sphinx-inline-tabs/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• sphinx: Python documentation generator
Version Information
package-version.txt:
2023.4.21

version_requirements.txt:
sphinx-inline-tabs

6.1. Details of external packages

549

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.390 sphinxcontrib_applehelp: Sphinx extension which outputs Apple help
book
Description
Sphinx extension which outputs Apple help book
LicenseBSD
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.0.8

version_requirements.txt:
sphinxcontrib_applehelp >=1.0.2

Equivalent System Packages$ sudo pacman -S python-sphinxcontrib-applehelp$ conda install sphinxcontrib-applehelp$ sudo yum install python-sphinxcontrib-applehelp$ sudo pkg install textproc/py-sphinxcontrib-applehelp$ sudo emerge dev-python/sphinxcontrib-applehelp

550

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo port install py-sphinxcontrib-applehelp$ sudo zypper install python3\$\{PYTHON_MINOR\}-sphinxcontrib-applehelp$ sudo xbps-install python3-sphinxcontrib-applehelp

See https://repology.org/project/python:sphinxcontrib-applehelp/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.391 sphinxcontrib_devhelp: Sphinx extension which outputs Devhelp documents
Description
Sphinx extension which outputs Devhelp documents
LicenseBSD
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.0.6

version_requirements.txt:
sphinxcontrib_devhelp >=1.0.2

6.1. Details of external packages

551

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-sphinxcontrib-devhelp$ conda install sphinxcontrib-devhelp$ sudo yum install python-sphinxcontrib-devhelp$ sudo pkg install textproc/py-sphinxcontrib-devhelp$ sudo emerge dev-python/sphinxcontrib-devhelp$ sudo port install py-sphinxcontrib-devhelp$ sudo zypper install python3\$\{PYTHON_MINOR\}-sphinxcontrib-devhelp$ sudo xbps-install python3-sphinxcontrib-devhelp

See https://repology.org/project/python:sphinxcontrib-devhelp/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.392 sphinxcontrib_htmlhelp: Sphinx extension which outputs HTML help book
Description
Sphinx extension which outputs HTML help book
LicenseBSD
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)

552

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
2.0.5

version_requirements.txt:
sphinxcontrib_htmlhelp >=1.0.3

Equivalent System Packages$ sudo pacman -S python-sphinxcontrib-htmlhelp$ conda install sphinxcontrib-htmlhelp$ sudo yum install python-sphinxcontrib-htmlhelp$ sudo pkg install textproc/py-sphinxcontrib-htmlhelp$ sudo emerge dev-python/sphinxcontrib-htmlhelp$ sudo port install py-sphinxcontrib-htmlhelp$ sudo zypper install python3\$\{PYTHON_MINOR\}-sphinxcontrib-htmlhelp$ sudo xbps-install python3-sphinxcontrib-htmlhelp

See https://repology.org/project/python:sphinxcontrib-htmlhelp/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.393 sphinxcontrib_jsmath: Sphinx extension which renders display math inHTML via JavaScript
Description
Sphinx extension which renders display math in HTML via JavaScript
LicenseBSD

6.1. Details of external packages

553

Packages and Features, Release 10.4

Upstream Contact
https://pypi.org/project/sphinxcontrib-jsmath/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.0.1

version_requirements.txt:
sphinxcontrib_jsmath >=1.0.1

Equivalent System Packages$ sudo pacman -S python-sphinxcontrib-jsmath$ conda install sphinxcontrib-jsmath$ sudo yum install python-sphinxcontrib-jsmath$ sudo pkg install textproc/py-sphinxcontrib-jsmath$ sudo emerge dev-python/sphinxcontrib-jsmath$ sudo port install py37-sphinxcontrib-jsmath$ sudo zypper install python3\$\{PYTHON_MINOR\}-sphinxcontrib-jsmath$ sudo xbps-install python3-sphinxcontrib-jsmath

See https://repology.org/project/python:sphinxcontrib-jsmath/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

554

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.394 sphinxcontrib_qthelp: Sphinx extension which outputs QtHelp documents
Description
Sphinx extension which outputs QtHelp documents
LicenseBSD
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.0.7

version_requirements.txt:
sphinxcontrib_qthelp >=1.0.3

Equivalent System Packages$ sudo pacman -S python-sphinxcontrib-qthelp$ conda install sphinxcontrib-qthelp$ sudo yum install python-sphinxcontrib-qthelp$ sudo pkg install textproc/py-sphinxcontrib-qthelp$ sudo emerge dev-python/sphinxcontrib-qthelp$ sudo port install py-sphinxcontrib-qthelp$ sudo zypper install python3\$\{PYTHON_MINOR\}-sphinxcontrib-qthelp$ sudo xbps-install python3-sphinxcontrib-qthelp

6.1. Details of external packages

555

Packages and Features, Release 10.4

See https://repology.org/project/python:sphinxcontrib-qthelp/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.395 sphinxcontrib_serializinghtml: Sphinx extension which outputs serialized
HTML files
Description
Sphinx extension which outputs serialized HTML files
LicenseBSD
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.1.10version_requirements.txt:
sphinxcontrib_serializinghtml >=1.1.5

Equivalent System Packages$ sudo pacman -S python-sphinxcontrib-serializinghtml$ conda install sphinxcontrib-serializinghtml$ sudo yum install python-sphinxcontrib-serializinghtml$ sudo pkg install textproc/py-sphinxcontrib-serializinghtml$ sudo emerge dev-python/sphinxcontrib-serializinghtml

556

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo port install py-sphinxcontrib-serializinghtml$ sudo zypper install python3\$\{PYTHON_MINOR\}-sphinxcontrib-serializinghtml$ sudo xbps-install python3-sphinxcontrib-serializinghtml

See https://repology.org/project/python:sphinxcontrib-serializinghtml/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.396 sphinxcontrib_websupport: Sphinx API for Web apps
Description
sphinxcontrib-websupport provides a Python API to easily integrate Sphinx documentation into your Web application.
LicenseBSD
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• sphinxcontrib_serializinghtml: Sphinx extension which outputs serialized HTML files
Version Information
package-version.txt:
1.2.7

version_requirements.txt:
sphinxcontrib_websupport >=1.2.1

6.1. Details of external packages

557

Packages and Features, Release 10.4

Equivalent System Packages$ apk add py3-sphinxcontrib-websupport$ sudo pacman -S python-sphinxcontrib-websupport$ conda install sphinxcontrib-websupport$ sudo apt-get install python3-sphinxcontrib.websupport$ sudo yum install python-sphinxcontrib-websupport$ sudo pkg install textproc/py-sphinxcontrib-websupport$ sudo emerge dev-python/sphinxcontrib-websupport$ sudo port install py-sphinxcontrib-websupport$ sudo zypper install python3\$\{PYTHON_MINOR\}-sphinxcontrib-websupport

See https://repology.org/project/python:sphinxcontrib-websupport/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.397 sqlalchemy: A database abstraction library
Description
Database Abstraction Library
LicenseMIT
Upstream Contact
https://pypi.org/project/SQLAlchemy/Typeoptional

558

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies
Version Information
requirements.txt:
sqlalchemy

Equivalent System Packages$ conda install sqlalchemy$ sudo port install py-sqlalchemy$ sudo zypper install python3\$\{PYTHON_MINOR\}-SQLAlchemy$ sudo xbps-install python3-SQLAlchemy

See https://repology.org/project/python:sqlalchemy/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.398 sqlite: An SQL database engine
Description
SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL databaseengine.
LicensePublic Domain
Upstream contact• https://www.sqlite.org
Dependencies• readline

6.1. Details of external packages

559

Packages and Features, Release 10.4

Special Update/Build Instructions• Use the autoconf version of sqlite.
Typestandard
Dependencies• readline: Command line editing library
Version Information
package-version.txt:
3.36.0Equivalent System Packages$ apk add sqlite-dev$ sudo pacman -S sqlite3$ conda install sqlite$ apt-cyg install libsqlite3-devel sqlite3$ sudo apt-get install libsqlite3-dev sqlite3$ sudo yum install sqlite-devel sqlite$ sudo pkg install databases/sqlite3$ sudo emerge dev-db/sqlite$ brew install sqlite$ sudo port install sqlite3$ nix-env --install sqlite$ sudo zypper install pkgconfig\(sqlite3\)$ sudo slackpkg install sqlite icu4c

560

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo xbps-install sqlite-devel

See https://repology.org/project/sqlite/versions
If the system package is installed, ./configure will check if it can be used.

6.1.399 stack_data: Extract data from python stack frames and tracebacks for informative displays
Description
Extract data from python stack frames and tracebacks for informative displays
LicenseMIT
Upstream Contact
https://pypi.org/project/stack-data/Typestandard
Dependencies• $(PYTHON)• asttokens: Annotate AST trees with source code positions• executing: Get the currently executing AST node of a frame, and other information• pip: Tool for installing and managing Python packages• pure_eval: Safely evaluate AST nodes without side effects
Version Information
package-version.txt:
0.6.3

version_requirements.txt:
stack-data

6.1. Details of external packages

561

Packages and Features, Release 10.4

Equivalent System Packages$ conda install stack_data$ sudo emerge dev-python/stack-data

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.400 suitesparse: A suite of sparse matrix software
SuiteSparse is a collection of software to deal with sparse matrix. It is hosted at http://faculty.cse.tamu.edu/davis/
suitesparse.html
This spkg does a minimal install of suitesparse disabling the following• metis• GraphBLAS (need cmake)• Mongoose (need cmake)An external metis package can be used but we just disable its use.
Patches:• The first patch disable the building of package using cmake.
• The second patch make sure we use sage’s blas/lapack on OS X. By default suitesparse discard any configurations
to use the accelerate framework.
The building of metis is diabled by passing MY_METIS_LIB=none to make (any value would have done) We also configure cholmod so it doesn’t require metis by passing CHOLMOD_CONFIG=-DNPARTITION to make.
Other configurations are self explanatory.
License: because SuiteSparse is a collection, it comes with a variety of licenses. Find below a copy of the “LICENSES.txt”
shipped with SuiteSparse.
AMD/Doc/License.txt
AMD, Copyright (c), 1996-2015, Timothy A. Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights
Reserved.
Availability:
http://www.suitesparse.com
AMD License: BSD 3-clause:
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.

562

Chapter 6. All External Packages

Packages and Features, Release 10.4

• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
BTF/Doc/License.txt
BTF, Copyright (C) 2004-2013, University of Florida by Timothy A. Davis and Ekanathan Palamadai. BTF
is also available under other licenses; contact authors for details. http://www.suitesparse.com
BTF is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.
BTF is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
CAMD/Doc/License.txt
CAMD, Copyright (c) by Timothy A. Davis, Yanqing Chen, Patrick R. Amestoy, and Iain S. Duff. All
Rights Reserved. CAMD is available under alternate licenses, contact T. Davis for details.
CAMD License: BSD 3-clause
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR

6.1. Details of external packages

563

Packages and Features, Release 10.4

OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
Availability:
http://www.suitesparse.com
CCOLAMD/Doc/License.txt
CCOLAMD: constrained column approximate minimum degree ordering Copyright (C) 2005-2016, Univ.
of Florida. Authors: Timothy A. Davis, Sivasankaran Rajamanickam, and Stefan Larimore. Closely basedon COLAMD by Davis, Stefan Larimore, in collaboration with Esmond Ng, and John Gilbert. http://www.
suitesparse.com
CCOLAMD license: BSD 3-clause:
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
CHOLMOD/Doc/License.txt==Check/License.txt==
CHOLMOD/Check Module. Copyright (C) 2005-2006, Timothy A. Davis CHOLMOD is also available
under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Check module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
564

Chapter 6. All External Packages

Packages and Features, Release 10.4==Cholesky/License.txt==
CHOLMOD/Cholesky module, Copyright (C) 2005-2006, Timothy A. Davis. CHOLMOD is also available
under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Cholesky module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA==Core/License.txt==
CHOLMOD/Core Module. Copyright (C) 2005-2006, Univ. of Florida. Author: Timothy A. Davis.
CHOLMOD is also available under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Core module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA==Demo/License.txt==
CHOLMOD/Demo Module. Copyright (C) 2005-2006, Timothy A. Davis. CHOLMOD is also available
under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Demo module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
==Include/License.txt==
CHOLMOD/Include/* files. Copyright (C) 2005-2006, either Univ. of Florida or T. Davis, depending on
the file.
Each file is licensed separately, according to the Module for which it contains definitions and prototypes:

6.1. Details of external packages

565

Packages and Features, Release 10.4

Include/cholmod.h LGPL Include/cholmod_blas.h LGPL Include/cholmod_camd.h part of Partition module Include/cholmod_check.h part of Check module Include/cholmod_cholesky.h part of Cholesky module Include/cholmod_complexity.h LGPL Include/cholmod_config.h LGPL Include/cholmod_core.h part ofCore module Include/cholmod_function.h no license; freely usable, no restrictions Include/cholmod_gpu.h
part of GPU module Include/cholmod_gpu_kernels.h part of GPU module Include/cholmod_internal.h LGPL Include/cholmod_io64.h LGPL Include/cholmod_matrixops.h part of MatrixOps module Include/cholmod_modify.h part of Modify module Include/cholmod_partition.h part of Partition module Include/cholmod_supernodal.h part of Supernodal module Include/cholmod_template.h LGPL==MATLAB/License.txt==
CHOLMOD/MATLAB Module. Copyright (C) 2005-2006, Timothy A. Davis. CHOLMOD is also available under other licenses; contact authors for details. MATLAB(tm) is a Registered Trademark of The
MathWorks, Inc. http://www.suitesparse.com
Note that this license is for the CHOLMOD/MATLAB module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
==MatrixOps/License.txt==
CHOLMOD/MatrixOps Module. Copyright (C) 2005-2006, Timothy A. Davis. CHOLMOD is also available under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/MatrixOps module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
==Modify/License.txt==
CHOLMOD/Modify Module. Copyright (C) 2005-2006, Timothy A. Davis and William W. Hager.
CHOLMOD is also available under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Modify module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See

566

Chapter 6. All External Packages

Packages and Features, Release 10.4

the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
==Partition/License.txt==
CHOLMOD/Partition Module. Copyright (C) 2005-2006, Univ. of Florida. Author: Timothy A. Davis
CHOLMOD is also available under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Partition module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA==Supernodal/License.txt==
CHOLMOD/Supernodal Module. Copyright (C) 2005-2006, Timothy A. Davis CHOLMOD is also available under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Supernodal module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
==Tcov/License.txt==
CHOLMOD/Tcov Module. Copyright (C) 2005-2006, Timothy A. Davis CHOLMOD is also available
under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Tcov module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
==Valgrind/License.txt==

6.1. Details of external packages

567

Packages and Features, Release 10.4

CHOLMOD/Valgrind Module. Copyright (C) 2005-2006, Timothy A. Davis. CHOLMOD is also available
under other licenses; contact authors for details. http://www.suitesparse.com
Note that this license is for the CHOLMOD/Valgrind module only. All CHOLMOD modules are licensed
separately.
This Module is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This Module is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
COLAMD/Doc/License.txt
COLAMD, Copyright 1998-2016, Timothy A. Davis. http://www.suitesparse.com http://www.suitesparse.
com
COLAMD License: BSD 3-clause
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
CSparse/Doc/License.txt
CSparse: a Concise Sparse matrix package. Copyright (c) 2006, Timothy A. Davis. http://www.suitesparse.
com
CSparse is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.

568

Chapter 6. All External Packages

Packages and Features, Release 10.4

CSparse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
CXSparse/Doc/License.txt
CXSparse: a Concise Sparse matrix package - Extended. Copyright (c) 2006, Timothy A. Davis. http://www.suitesparse.com
CXSparse is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.
CXSparse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
CXSparse_newfiles/Doc/License.txt
CXSparse: a Concise Sparse matrix package - Extended. Copyright (c) 2006, Timothy A. Davis. http://www.suitesparse.com
CXSparse is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser
General Public License as published by the Free Software Foundation; either version 2.1 of the License, or(at your option) any later version.
CXSparse is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
GPUQREngine/Doc/License.txt
GPUQREngine Copyright (c) 2013, Timothy A. Davis, Sencer Nuri Yeralan, and Sanjay Ranka. http://
www.suitesparse.com
GPUQREngine is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
GPUQREngine is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

6.1. Details of external packages

569

Packages and Features, Release 10.4

KLU/Doc/License.txt
KLU, Copyright (C) 2004-2013, University of Florida by Timothy A. Davis and Ekanathan Palamadai. KLU
is also available under other licenses; contact authors for details. http://www.suitesparse.com
KLU is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.
KLU is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
LDL/Doc/License.txt
LDL Copyright (c) 2005-2013 by Timothy A. Davis. LDL is also available under other licenses; contact theauthor for details. http://www.suitesparse.com
LDL is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General
Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.
LDL is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License along with this Module; if not,write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
MATLAB_Tools/Doc/License.txt
The MATLAB_Tools collection of packages is Copyright (c), Timothy A. Davis, All Rights Reserved, withthe exception of the spqr_rank package, which is Copyright (c), Timothy A. Davis and Les Foster, All Rights
Reserved,
All packages are available under alternative licenses. Contact the authors for details.
MATLAB_Tools License, with the exception of SSMULT and SuiteSparseCollection:
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
570

Chapter 6. All External Packages

Packages and Features, Release 10.4

NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
SuiteSparseCollection License:
SuiteSparseCollection is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option)
any later version.
SuiteSparseCollection is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this package; if not, write to theFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
SSMULT License:
SSMULT, Copyright (c) 2007-2011, Timothy A. Davis, http://www.suitesparse.com.
SSMULT is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later
version.
SSMULT is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
Public License for more details.
You should have received a copy of the GNU General Public License along with this package; if not, write to theFree Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
RBio/Doc/License.txt
RBio toolbox. Copyright (C) 2006-2009, Timothy A. Davis RBio is also available under other licenses;
contact authors for details. http://www.suitesparse.com
RBio is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either version 2 of the License, or (at your option)
any later version.
RBio is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without eventhe implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

6.1. Details of external packages

571

Packages and Features, Release 10.4

SPQR/Doc/License.txt
SPQR, Copyright 2008-2016 by Timothy A. Davis. All Rights Reserved. SPQR is available under alternate
licenses, contact T. Davis for details.
SPQR License:
Your use or distribution of SPQR or any modified version of SPQR implies that you agree to this License.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this library; if not, write to
the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Permission is hereby granted to use or copy this program under the terms of the GNU GPL, provided that
the Copyright, this License, and the Availability of the original version is retained on all copies. User documentation of any code that uses this code or any modified version of this code must cite the Copyright, thisLicense, the Availability note, and “Used by permission.” Permission to modify the code and to distributemodified code is granted, provided the Copyright, this License, and the Availability note are retained, and anotice that the code was modified is included.
Availability:
http://www.suitesparse.com
SuiteSparse_GPURuntime/Doc/License.txt
SuiteSparse_GPURuntime Copyright (c) 2013-2016, Timothy A. Davis, Sencer Nuri Yeralan, and Sanjay
Ranka. http://www.suitesparse.com
SuiteSparse_GPURuntime is free software; you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation; either version 2 of the License,or (at your option) any later version.
SuiteSparse_GPURuntime is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this Module; if not, write
to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
ssget/Doc/License.txt
Copyright (c), 2009-2016, Timothy A. Davis, All Rights Reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.

572

Chapter 6. All External Packages

Packages and Features, Release 10.4

• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
UMFPACK/Doc/License.txt
UMFPACK, Copyright 1995-2009 by Timothy A. Davis. All Rights Reserved. UMFPACK is available
under alternate licenses, contact T. Davis for details.
UMFPACK License:
Your use or distribution of UMFPACK or any modified version of UMFPACK implies that you agree tothis License.
This library is free software; you can redistribute it and/or modify it under the terms of the GNU General
Public License as published by the Free Software Foundation; either version 2 of the License, or (at youroption) any later version.
This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this library; if not, write to
the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Permission is hereby granted to use or copy this program under the terms of the GNU GPL, provided that
the Copyright, this License, and the Availability of the original version is retained on all copies. User documentation of any code that uses this code or any modified version of this code must cite the Copyright, thisLicense, the Availability note, and “Used by permission.” Permission to modify the code and to distributemodified code is granted, provided the Copyright, this License, and the Availability note are retained, and anotice that the code was modified is included.
Availability:
http://www.suitesparse.com
CSparse/MATLAB/ssget/Doc/License.txt
Copyright (c), 2009-2016, Timothy A. Davis, All Rights Reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.

6.1. Details of external packages

573

Packages and Features, Release 10.4

• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
CXSparse/MATLAB/ssget/Doc/License.txt
Copyright (c), 2009-2016, Timothy A. Davis, All Rights Reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided thatthe following conditions are met:
• Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
• Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
• Neither the name of the organizations to which the authors are affiliated, nor the names of its contributors may be
used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” ANDANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
GraphBLAS/Doc/License.txt
SuiteSparse:GraphBLAS, Copyright 2017, Timothy A. Davis
Licensed under the Apache License, Version 2.0 (the “License”); you may not use SuiteSparse:GraphBLAS
except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributedon an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied. See the License for the specific language governing permissions and limitations under the License.

574

Chapter 6. All External Packages

Packages and Features, Release 10.4

Mongoose License
Mongoose, Copyright 2018, Timothy A. Davis, Scott P. Kolodziej, William W. Hager, S. Nuri Yeralan
Licensed under the GNU GENERAL PUBLIC LICENSE, Version 3, 29 June 2007
Type
standard
Dependencies• $(BLAS)• $(MP_LIBRARY)• gfortran: Fortran compiler from the GNU Compiler Collection• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
5.10.1

Equivalent System Packages$ apk add suitesparse-dev$ sudo pacman -S suitesparse$ conda install suitesparse$ apt-cyg install libsuitesparseconfig-devel$ sudo apt-get install libsuitesparse-dev$ sudo yum install suitesparse suitesparse-devel$ sudo pkg install math/suitesparse$ sudo emerge sci-libs/amd sci-libs/cholmod sci-libs/suitesparseconfig \sci-libs/umfpack$ brew install suite-sparse

No package needed.
$ sudo zypper install suitesparse-devel

install the following packages: suitesparse
6.1. Details of external packages

575

Packages and Features, Release 10.4

$ sudo xbps-install SuiteSparse-devel

See https://repology.org/project/suitesparse/versions
If the system package is installed, ./configure will check if it can be used.

6.1.401 surf: Visualization of algebraic curves, algebraic surfaces and hyperplanesections of surfaces
Description
surf is a tool to visualize some real algebraic geometry: plane algebraic curves, algebraic surfaces and hyperplane sectionsof surfaces. surf is script driven and has (optionally) a nifty GUI using the Gtk widget set.
This is used by the Singular Jupyter kernel to produce 3D plots.
LicenseGPL version 2 or later
Upstream Contact
http://surf.sourceforge.net (although the project is essentially dead)
Dependencies• cups (optional)• GNU flex Version 2.5 or higher• GTK+ Version 1.2.0 or higher (optional)• POSIX Threads• GNU MP(gmp) Version 2 or higher• lib-tiff• lib-jpeg• zlib• ps2pdf (optional)
This package is “experimental” because not all of these dependencies are packaged with Sage.

576

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typeexperimental
Dependencies• $(MP_LIBRARY)
Version Information
package-version.txt:
1.0.6-gcc6

Equivalent System Packages$ sudo zypper install surf

See https://repology.org/project/surf-alggeo/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.402 surface_dynamics: dynamics on surfaces (measured foliations, interval
exchange transformation, Teichmüller flow, etc)
Description
Dynamics on surfaces.
LicenseGPLv2+
Upstream Contact
https://gitlab.com/videlec/surface_dynamics https://pypi.org/project/surface-dynamics/
Typeoptional

6.1. Details of external packages

577

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• $(SAGERUNTIME)• cysignals: Interrupt and signal handling for Cython• pplpy: Python interface to the Parma Polyhedra Library
Version Information
requirements.txt:
surface_dynamics

Equivalent System Packages
See https://repology.org/project/python:surface-dynamics/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.403 symengine: A C++ symbolic manipulation library
Description
SymEngine is a standalone fast C++ symbolic manipulation library.
LicenseBSD 3-clause
Upstream Contact
https://github.com/symengine/symengine
Type
optional

578

Chapter 6. All External Packages

Packages and Features, Release 10.4

Dependencies• $(MP_LIBRARY)• cmake: A cross-platform build system generator• ecm: Elliptic curve method for integer factorization• flint: Fast Library for Number Theory• mpc: Arithmetic of complex numbers with arbitrarily high precision and correct rounding• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
0.11.2Equivalent System Packages$ sudo pacman -S symengine$ conda install symengine$ sudo pkg install math/symengine$ sudo emerge sci-libs/symengine$ brew install symengine$ sudo port install symengine$ nix-env --install symengine$ sudo zypper install symengine

See https://repology.org/project/symengine/versions
If the system package is installed, ./configure will check if it can be used.

6.1.404 symengine_py: Python wrappers for SymEngine
Description
Python wrappers for SymEngine

6.1. Details of external packages

579

Packages and Features, Release 10.4

Licensesymengine.py is MIT licensed and uses several LGPL, BSD-3 and MIT licensed libraries
Upstream Contact
https://github.com/symengine/symengine.pyTypeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cmake: A cross-platform build system generator• cython: C-Extensions for Python, an optimizing static compiler• symengine: A C++ symbolic manipulation library
Version Information
package-version.txt:
0.11.0version_requirements.txt:
symengine.py >= 0.6.1

Equivalent System Packages$ sudo pacman -S python-symengine$ conda install python-symengine$ sudo pkg install math/py-symengine$ sudo emerge dev-python/symengine

See https://repology.org/project/python:symengine/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

580

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.405 symmetrica: Library for representation theory
Description
Symmetrica is a Collection of C routines for representation theory.
It is a program developed by Lehrstuhl Mathematik II of the University of Bayreuth. It has routines to handle the following
topics:• ordinary representation theory of the symmetric group and related groups (2/11/04)• ordinary representation theory of the classical groups• modular representation theory of the symmetric group• projective representation theory of the symmetric group• combinatorics of tableaux• symmetric functions and polynomials (7/22/04)• commutative and non commutative Schubert polynomials• operations of finite groups.
• ordinary representation theory of Hecke algebras of type A_n
For more details check http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA
Updated package on https://gitlab.com/sagemath/symmetrica/-/releases with changes to modernize the source and thebuild system.
LicensePublic Domain (see the above web site)
Upstream Contact• (passed away in 2013) Axel Kohnert - see http://www.mathe2.uni-bayreuth.de/axel/Typestandard
Dependencies• xz: General-purpose data compression software

6.1. Details of external packages

581

Packages and Features, Release 10.4

Version Information
package-version.txt:
3.0.1

Equivalent System Packages$ sudo pacman -S symmetrica$ conda install symmetrica$ sudo apt-get install libsymmetrica2-dev$ sudo yum install symmetrica-devel$ sudo pkg install math/symmetrica$ sudo emerge sci-libs/symmetrica$ nix-env --install symmetrica$ sudo xbps-install symmetrica-devel

See https://repology.org/project/symmetrica/versions
If the system package is installed, ./configure will check if it can be used.

6.1.406 sympow: Computes special values of symmetric power elliptic curve
L-functions
Description
SYMPOW is a package to compute special values of symmetric power elliptic curve L-functions. It can compute up to
about 64 digits of precision.
License• See the file src/COPYING

582

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
SYMPOW does not appear to be maintained any longer. Mark Watkins, the package author, now works at Magma.
Previous (possibly still usable) email is watkins@maths.usyd.edu.au
New upstream: https://gitlab.com/rezozer/forks/sympow
Dependencies• GNU patch
Special Update/Build Instructions• Some of the code is very dubious, and it is anyones guess really what the compiler does with it. For example, thefollowing line exists in src/eulerfactors.c:
if ((HECKE) && (d==1)) return hecke_good(p,ap,m,v);
But since hecke_good is defined as returning void, it’s hard to know exactly how this code behaves. I would not be
surprised by any bugs that might show up. I (David Kirkby) would personally not trust this code much at all.
• This is a difficult package to maintain. A github issue (#9758) has been opened to implement Watkins-Delaunay’s
algorithm for computing modular degrees in Sage. Once implemented, it should be possible to remove this package.
• The package is configured such that the data files are in a directory below where ‘sympow’ is installed. If Sage
is installed globally, then it will be impossible to create the data files without being root. This has been fixed in
the Gentoo Linux distribution. Some information from Christopher can be seen on Issue #9703 This package will
generate binary versions of all shipped datafiles, so these will work. However, creating totally new datafiles fromscratch will not work.
Typestandard
Dependencies• pari: Computer algebra system for fast computations in number theory
Version Information
package-version.txt:
2.023.6

6.1. Details of external packages

583

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S sympow$ conda install sympow$ sudo apt-get install sympow$ sudo yum install sympow$ sudo emerge sci-mathematics/sympow$ nix-env --install sympow$ sudo zypper install sympow$ sudo xbps-install sympow

See https://repology.org/project/sympow/versions
If the system package is installed, ./configure will check if it can be used.

6.1.407 sympy: Python library for symbolic mathematics
Description
SymPy is a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS)while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely
in Python and does not require any external libraries, except optionally for plotting support.
Websitehttps://sympy.org/
LicenseNew BSD: http://www.opensource.org/licenses/bsd-license.php
Upstream Contact
https://pypi.org/project/sympy/

584

Chapter 6. All External Packages

Packages and Features, Release 10.4

Typestandard
Dependencies• $(PYTHON)• mpmath: Pure Python library for multiprecision floating-point arithmetic• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.12.1

version_requirements.txt:
sympy >=1.6, <2.0

Equivalent System Packages$ sudo pacman -S python-sympy$ conda install sympy$ sudo apt-get install python3-sympy$ sudo yum install python-sympy$ sudo emerge dev-python/sympy$ sudo port install py-sympy$ sudo zypper install python3\$\{PYTHON_MINOR\}-sympy$ sudo xbps-install python3-sympy

See https://repology.org/project/python:sympy/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

585

Packages and Features, Release 10.4

6.1.408 tachyon: A ray tracing system
Description
Tachyon is a raytracer developed by John E. Stone. Tachyon supports the typical ray tracer features, most of the common
geometric primitives, shading and texturing modes, etc. It also supports less common features such as HDR image output,
ambient occlusion lighting, and support for various triangle mesh and volumetric texture formats beneficial for molecularvisualization (e.g. rendering VMD scenes).
Currently not all of Tachyon’s functionality is exported by the Sage interface.
LicenseCopyright (c) 1994-2010 John E. Stone All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products derived from this software without specificprior written permission.
Upstream Contact• http://jedi.ks.uiuc.edu/ johns/raytracer/• http://www.photonlimited.com/ johns/raytracer/• John Stone <johns@ks.uiuc.edu>
Dependencies
This spkg depends on:• libpng
Special Update/Build Instructions• Delete the scenes directory, which has lots of cool examples.
• Delete the msvc directory, which is also large and not used within Sage.
• The CVS subdirectories are currently (almost) empty, but should otherwise be deleted.
• The upstream files had strange permissions, i.e. some source files were executable, while almost all files weren’t
world-readable.
• There’s seems to be some crap like tachyon.html.tar.gz and a few .#* files I haven’t [yet] deleted, since
they’re not that large.
• TODO: Check whether building multi-threaded versions on MacOS X meanwhile works. (This was said to failwith an old beta.)
586

Chapter 6. All External Packages

Packages and Features, Release 10.4

• TODO: Use patch instead of copying over pre-patched files.
• TODO: [Optionally] also install some of the documentation.
• TODO: I doubt the CFLAGS set for AIX and HP-UX won’t get overridden by the created Makefile, but that’s aminor issue. -leifTypestandard
Dependencies• libpng: Bitmap image support
Version Information
package-version.txt:
0.98.9.p7

Equivalent System Packages$ sudo pacman -S tachyon$ conda install tachyon$ sudo apt-get install tachyon$ sudo yum install tachyon tachyon-devel$ sudo pkg install graphics/tachyon$ sudo emerge media-gfx/tachyon$ nix-env --install tachyon$ sudo zypper install tachyon$ sudo xbps-install tachyon

See https://repology.org/project/tachyon/versions, https://repology.org/project/tachyon-opengl/versions
If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

587

Packages and Features, Release 10.4

6.1.409 tdlib: Algorithms for computing tree decompositions of graphs
Description
This library, now known as treedec, provides algorithms concerning tree decompositions.
License• GNU General Public License v2• GNU General Public License v3
Upstream Contact• https://gitlab.com/freetdi/treedec• https://github.com/freetdi/tdlib• https://github.com/felix-salfelder
Type
optional
Dependencies• boost_cropped: Portable C++ libraries (subset needed for Sage)
Version Information
package-version.txt:
0.9.3.p0

Equivalent System Packages$ sudo pacman -S tdlib

See https://repology.org/project/python:tdlib/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

588

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.410 terminado: Tornado websocket backend for the term.js Javascript terminal
emulator library
Description
This is a Tornado websocket backend for the term.js Javascript terminal emulator library.
It evolved out of pyxterm, which was part of GraphTerm (as lineterm.py), v0.57.0 (2014-07-18), and ultimately derived
from the public-domain Ajaxterm code, v0.11 (2008-11-13) (also on Github as part of QWeb).
Type
standard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• hatchling: Modern, extensible Python build backend• ptyprocess: Python interaction with subprocesses in a pseudoterminal• tornado: Python web framework and asynchronous networking library
Version Information
package-version.txt:
0.17.1

version_requirements.txt:
terminado >=0.8.3

Equivalent System Packages$ conda install terminado$ sudo emerge dev-python/terminado$ sudo port install py-terminado$ sudo xbps-install python3-terminado

See https://repology.org/project/terminado/versions, https://repology.org/project/python:terminado/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

589

Packages and Features, Release 10.4

6.1.411 texlive: A comprehensive TeX system
Description
TeX Live is an easy way to get up and running with the TeX document production system. It provides a comprehensive
TeX system with binaries for most flavors of Unix, including GNU/Linux, and also Windows. It includes all the major
TeX-related programs, macro packages, and fonts that are free software, including support for many languages aroundthe world.
This package installs all texlive packages required to build Sage. If necessary, texlive itself is installed.
LicenseVarious FSF-approved free software licenses. See https://www.tug.org/texlive/copying.html for details.
Upstream Contact
Home page: https://www.tug.org/texlive
Dependencies• pythonSpecial Update/Build Instructions
This package requires internet access to download texlive packages for the TeX mirrors.
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ apk add texlive$ sudo pacman -S texlive-core texlive-latexextra texlive-langjapanese \texlive-langcyrillic$ apt-cyg install texlive$ sudo apt-get install texlive-latex-extra texlive-xetex latexmk dvipng \tex-gyre texlive-fonts-recommended texlive-lang-cyrillic \texlive-lang-english texlive-lang-european texlive-lang-french \texlive-lang-german texlive-lang-italian texlive-lang-japanese \texlive-lang-polish texlive-lang-portuguese texlive-lang-spanish

590

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo yum install latexmk texlive texlive-collection-latexextra \texlive-collection-langcyrillic texlive-collection-langeuropean \texlive-collection-langfrench texlive-collection-langgerman \texlive-collection-langitalian texlive-collection-langjapanese \texlive-collection-langpolish texlive-collection-langportuguese \texlive-collection-langspanish$ sudo emerge dev-tex/latexmk app-text/texlive app-text/dvipng \dev-texlive/texlive-langcjk dev-texlive/texlive-langcyrillic \dev-texlive/texlive-langenglish dev-texlive/texlive-langeuropean \dev-texlive/texlive-langfrench dev-texlive/texlive-langgerman \dev-texlive/texlive-langitalian dev-texlive/texlive-langjapanese \dev-texlive/texlive-langportuguese \dev-texlive/texlive-langspanish dev-texlive/texlive-latexextra \dev-texlive/texlive-latexrecommended \dev-texlive/texlive-mathscience$ sudo port install texlive$ sudo zypper install texlive$ sudo slackpkg install texlive$ sudo xbps-install texlive

See https://repology.org/project/texlive/versions
If the system package is installed, ./configure will check if it can be used.

6.1.412 texlive_luatex: LuaTeX packages
Description
Packages for LuaTeX, a TeX engine using Lua as an embedded scripting and extension language, with native support for
Unicode, OpenType/TrueType fonts, and both PDF and DVI output.
The purpose of this dummy package is to associate system package lists with it.
LicenseGNU General Public License version 2.0 (GPLv2)
Upstream Contact
https://www.luatex.org/

6.1. Details of external packages

591

Packages and Features, Release 10.4

Type
optional
Dependencies• texlive: A comprehensive TeX system
Version Information
Equivalent System Packages$ apk add texlive-luatex$ sudo pacman -S texlive-luatex$ apt-cyg install texlive$ sudo apt-get install texlive-luatex$ sudo yum install texlive-luatex$ sudo emerge dev-texlive/texlive-luatex$ sudo port install texlive-luatex$ sudo zypper install texlive-luatex

See https://repology.org/project/texlive-luatex/versions
If the system package is installed, ./configure will check if it can be used.

6.1.413 texttable: Python module for creating simple ASCII tables
Description
Python module for creating simple ASCII tables
LicenseMIT License (MIT)592

Chapter 6. All External Packages

Packages and Features, Release 10.4

Upstream Contact
https://github.com/foutaise/texttable/
Dependencies• pythonSpecial Update/Build Instructions
Typeoptional
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.7.0

version_requirements.txt:
texttable >=1.6.3

Equivalent System Packages$ sudo pacman -S python-texttable$ conda install texttable$ sudo apt-get install python3-texttable$ sudo yum install python-texttable$ sudo emerge dev-python/texttable$ sudo port install py-texttable$ sudo zypper install python3\$\{PYTHON_MINOR\}-texttable$ sudo xbps-install python3-texttable

6.1. Details of external packages

593

Packages and Features, Release 10.4

See https://repology.org/project/texttable/versions, https://repology.org/project/python:texttable/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.414 threejs: JavaScript library to display 3D graphics in the browser
Description
Three.js is a JavaScript library to display 3D graphics in the browser.
LicenseMIT License
Upstream Contact
Home page: http://threejs.org
Dependencies
None.
Special Update/Build Instructions
None.
Type
standard
Dependencies
Version Information
package-version.txt:
r122.p0594

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ conda install threejs-sage=122.\*

See https://repology.org/project/threejs/versions, https://repology.org/project/threejs-sage/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.415 tides: Integration of ODEs
Description
TIDES is a library for integration of ODEs with high precision.
LicenseGPLv3+
Upstream Contact• Marcos Rodriguez (marcos@unizar.es)
Dependencies• gcc• mpfr• gmp
Special Update/Build Instructions
minc_tides.patch changes the size of the name of the temporal files, so there is no problem in systems that use long names.
Also solves a bug in the inverse function.
Typeoptional

6.1. Details of external packages

595

Packages and Features, Release 10.4

Dependencies• $(MP_LIBRARY)• mpfr: Multiple-precision floating-point computations with correct rounding
Version Information
package-version.txt:
2.0.p0Equivalent System Packages
See https://repology.org/project/tides/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.416 tinycss2: A tiny CSS parser
Description
A tiny CSS parser
License
Upstream Contact
https://pypi.org/project/tinycss2/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• webencodings: Character encoding aliases for legacy web content

596

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
1.2.1

version_requirements.txt:
tinycss2

Equivalent System Packages$ apk add py3-tinycss2$ sudo pacman -S python-tinycss2$ conda install tinycss2$ sudo apt-get install python3-tinycss2$ sudo yum install python-tinycss2$ sudo pkg install textproc/py-tinycss2$ sudo emerge dev-python/tinycss2$ sudo port install py-tinycss2$ sudo zypper install python-tinycss2$ sudo xbps-install python3-tinycss2

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.417 tomli: A lil’ TOML parser
Description
A lil’ TOML parser

6.1. Details of external packages

597

Packages and Features, Release 10.4

License
Upstream Contact
https://pypi.org/project/tomli/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
2.0.1

version_requirements.txt:
tomli

Equivalent System Packages$ conda install tomli$ sudo emerge dev-python/tomli$ sudo xbps-install python3-tomli

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.418 topcom: Compute triangulations of point configurations and oriented matroids
Description
TOPCOM is a collection of clients to compute Triangulations Of Point Configurations and Oriented Matroids, resp.
The algorithms use only combinatorial data of the point configuration as is given by its oriented matroid. Some basic
commands for computing and manipulating oriented matroids can also be accessed by the user.
It was very much inspired by the maple program PUNTOS, which was written by Jesus de Loera. TOPCOM is entirely
written in C++, so there is a significant speed up compared to PUNTOS.

598

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseGPL v2
Upstream Contact
Prof. Dr. Jörg Rambau <Joerg.Rambau@uni-bayreuth.de>Lehrstuhl für Wirtschaftsmathematik
Raum FAN-D.1.29 (Sekretariat: FAN-D.1.30)
Universität Bayreuth
D-95440 Bayreuth
Germany
Tel: +49-921-55-7350, Fax: +49-921-55-7352
http://www.rambau.wm.uni-bayreuth.de

Dependencies• gmp, libcdd
Special Update/Build Instructions
See spkg-src
Typeoptional
Dependencies• cddlib: Double description method for polyhedral representation conversion
Version Information
package-version.txt:
1.1.2

Equivalent System Packages
See https://repology.org/project/topcom/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

599

Packages and Features, Release 10.4

6.1.419 tornado: Python web framework and asynchronous networking library
Description
Python web framework and asynchronous networking library
LicenseApache License
Upstream Contact
Home page: http://www.tornadoweb.org
Dependencies
PythonTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• certifi: Python package for providing Mozilla’s CA Bundle
Version Information
package-version.txt:
6.4

version_requirements.txt:
tornado >=6.0.4

Equivalent System Packages$ conda install tornado$ sudo emerge www-servers/tornado$ sudo port install py-tornado

600

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo zypper install python3\$\{PYTHON_MINOR\}-tornado$ sudo xbps-install python3-tornado

See https://repology.org/project/python:tornado/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.420 tox: tox is a generic virtualenv management and test command line tool
Description
tox is a generic virtualenv management and test command line tool
LicenseMIT
Upstream Contact
https://pypi.org/project/tox/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• cachetools: Extensible memoizing collections and decorators• chardet: Universal encoding detector for Python 3• colorama: Cross-platform colored terminal text
• filelock: Platform independent file lock
• packaging: Core utilities for Python packages• platformdirs: Small Python package for determining appropriate platform-specific dirs, e.g. a “user data dir”
• pluggy: Plugin and hook calling mechanisms for python• pyproject_api: API to interact with the python pyproject.toml based projects• tomli: A lil’ TOML parser• virtualenv: Virtual Python Environment builder

6.1. Details of external packages

601

Packages and Features, Release 10.4

Version Information
package-version.txt:
4.11.1

version_requirements.txt:
tox >= 4.2.7

Equivalent System Packages$ sudo pacman -S python-tox$ conda install tox$ sudo apt-get install tox$ sudo yum install tox$ sudo pkg install tox$ sudo emerge dev-python/tox$ brew install tox$ sudo port install py-tox$ sudo slackpkg install tox$ sudo xbps-install tox

See https://repology.org/project/python:tox/versions
If the system package is installed, ./configure will check if it can be used.

6.1.421 traitlets: Traitlets Python configuration system
Description
Traitlets Python configuration system

602

Chapter 6. All External Packages

Packages and Features, Release 10.4

License
BSD
Upstream Contact
https://pypi.org/project/traitlets/
Type
standard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
5.14.3version_requirements.txt:
traitlets >=4.3.3

Equivalent System Packages$ conda install traitlets$ sudo emerge dev-python/traitlets$ sudo port install py-traitlets$ sudo zypper install python3\$\{PYTHON_MINOR\}-traitlets$ sudo xbps-install python3-traitlets

See https://repology.org/project/traitlets/versions, https://repology.org/project/python:traitlets/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1. Details of external packages

603

Packages and Features, Release 10.4

6.1.422 trove_classifiers: Canonical source for classifiers on PyPI (pypi.org)
Description
Canonical source for classifiers on PyPI (pypi.org)
License
Upstream Contact
https://pypi.org/project/trove-classifiers/Typestandard
Dependencies• $(PYTHON)• calver: Setuptools extension for CalVer package versions• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
2024.4.10

version_requirements.txt:
trove-classifiers

Equivalent System Packages$ apk add py3-trove-classifiers$ sudo pacman -S python-trove-classifiers$ sudo yum install python-trove-classifiers$ sudo pkg install devel/py-trove-classifiers$ sudo emerge dev-python/trove-classifiers$ sudo port install py-trove-classifiers

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.
604

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.423 types_python_dateutil: Typing stubs for python-dateutil
Description
Typing stubs for python-dateutil
LicenseApache-2.0 license
Upstream Contact
https://pypi.org/project/types-python-dateutil/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.9.0.20240316

version_requirements.txt:
types-python-dateutil

Equivalent System Packages(none known)

6.1.424 typing_extensions: Backported and Experimental Type Hints for Python
3.8+
Description
Backported and Experimental Type Hints for Python 3.8+

6.1. Details of external packages

605

Packages and Features, Release 10.4

LicensePSF
Upstream Contact
https://pypi.org/project/typing-extensions/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
4.12.0version_requirements.txt:
typing_extensions >= 4.4.0; python_version< 3.11

Equivalent System Packages$ sudo pacman -S python-typing_extensions$ conda install typing_extensions$ sudo apt-get install python3-typing-extensions$ sudo yum install python-typing-extensions$ sudo pkg install devel/py-typing-extensions$ sudo emerge dev-python/typing-extensions$ sudo zypper install python3\$\{PYTHON_MINOR\}-typing_extensions$ sudo xbps-install python3-typing_extensions

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

606

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.425 tzdata: Provider of IANA time zone data
Description
Provider of IANA time zone data
LicenseApache-2.0
Upstream Contact
https://pypi.org/project/tzdata/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2023.3version_requirements.txt:
tzdataEquivalent System Packages$ conda install tzdata

However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1. Details of external packages

607

Packages and Features, Release 10.4

6.1.426 tzlocal: Python timezone information for the local timezone
Description
tzinfo object for the local timezoneTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• pytz_deprecation_shim: Shims to make deprecation of pytz easier
Version Information
package-version.txt:
5.0.1

version_requirements.txt:
tzlocal >=2.1

Equivalent System Packages$ sudo pacman -S python-tzlocal$ conda install tzlocal$ sudo apt-get install python3-tzlocal$ sudo yum install python-tzlocal$ sudo pkg install devel/py-tzlocal$ sudo emerge dev-python/tzlocal$ sudo port install py-tzlocal$ sudo zypper install python3\$\{PYTHON_MINOR\}-tzlocal$ sudo xbps-install python3-tzlocal

608

Chapter 6. All External Packages

Packages and Features, Release 10.4

See https://repology.org/project/tzlocal/versions, https://repology.org/project/python:tzlocal/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.427 uri_template: RFC 6570 URI Template Processor
Description
RFC 6570 URI Template Processor
LicenseMIT License
Upstream Contact
https://pypi.org/project/uri-template/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
1.3.0

version_requirements.txt:
uri-template

Equivalent System Packages(none known)

6.1. Details of external packages

609

Packages and Features, Release 10.4

6.1.428 urllib3: HTTP library with thread-safe connection pooling, file post, andmore
Description
HTTP library with thread-safe connection pooling, file post, and more
LicenseMIT
Upstream Contact
https://pypi.org/project/urllib3/
Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
2.1.0

version_requirements.txt:
urllib3

Equivalent System Packages$ sudo pacman -S python-urllib3$ conda install urllib3$ sudo apt-get install python3-urllib3$ sudo yum install python-urllib3$ sudo pkg install net/py-urllib3

610

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo emerge dev-python/urllib3$ sudo zypper install python3\$\{PYTHON_MINOR\}-urllib3$ sudo xbps-install python3-urllib3

If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.429 valgrind: Memory error detector, call graph generator, runtime profiler
Description
This is an optional spkg. It supports Linux on x86, x86-64, ppc, ppc64 and ARM as well as Darwin (Mac OS X 10.5 and10.6) on x86 and x86-64.
Valgrind is an instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use
Valgrind to build new tools.
The Valgrind distribution currently includes six production-quality tools: a memory error detector, two thread error detectors, a cache and branch-prediction profiler, a call-graph generating cache and branch-prediction profiler, and a heap
profiler. It also includes three experimental tools: a heap/stack/global array overrun detector, a second heap profiler
that examines how heap blocks are used, and a SimPoint basic block vector generator. It runs on the following platforms: X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux, PPC64/Linux, S390X/Linux, ARM/Android (2.3.x),
X86/Darwin and AMD64/Darwin (Mac OS X 10.6 and 10.7).
LicenseValgrind is Open Source / Free Software, and is freely available under the GNU General Public License, version 2.
Upstream Contact• http://www.valgrind.org/• valgrind-user, valgrind-devel mailing lists
Dependencies• None6.1. Details of external packages

611

Packages and Features, Release 10.4

Special Build Instructions• To build on OS X, you need to use Apple’s compiler. FSF GCC is unsupported.
Patches• None.
Typeexperimental
Dependencies
Version Information
package-version.txt:
3.14.0Equivalent System Packages$ apk add valgrind$ brew install valgrind$ sudo port install valgrind$ sudo zypper install valgrind$ sudo xbps-install valgrind

See https://repology.org/project/valgrind/versions
However, these system packages will not be used for building Sage because spkg-configure.m4 has not been written
for this package; see Issue #27330 for more information.

6.1.430 virtualenv: Virtual Python Environment builder
Description
Virtual Python Environment builder

612

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseMIT
Upstream Contact
https://pypi.org/project/virtualenv/Typestandard
Dependencies• $(PYTHON)• distlib: Distribution utilities• filelock: Platform independent file lock• importlib_metadata: Library to access the metadata for a Python package• pip: Tool for installing and managing Python packages• platformdirs: Small Python package for determining appropriate platform-specific dirs, e.g. a “user data dir”
Version Information
package-version.txt:
20.26.2

version_requirements.txt:
virtualenv

Equivalent System Packages$ conda install virtualenv$ sudo xbps-install python3-virtualenv

If the system package is installed, ./configure will check if it can be used.

6.1. Details of external packages

613

Packages and Features, Release 10.4

6.1.431 wcwidth: Measures the displayed width of unicode strings in a terminal
Description
Measures the displayed width of unicode strings in a terminal
LicenseMIT
Upstream Contact
https://pypi.org/project/wcwidth/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.2.12version_requirements.txt:
wcwidth >=0.1.7

Equivalent System Packages$ conda install wcwidth$ sudo emerge dev-python/wcwidth$ sudo port install py-wcwidth$ sudo zypper install python3\$\{PYTHON_MINOR\}-wcwidth$ sudo xbps-install python3-wcwidth

See https://repology.org/project/wcwidth/versions, https://repology.org/project/python:wcwidth/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.
614

Chapter 6. All External Packages

Packages and Features, Release 10.4

6.1.432 webcolors: Library for working with the color formats defined by HTML and
CSS
Description
Library for working with the color formats defined by HTML and CSS
LicenseBSD-3-Clause
Upstream Contact
https://pypi.org/project/webcolors/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.13

version_requirements.txt:
webcolors

Equivalent System Packages(none known)

6.1.433 webencodings: Character encoding aliases for legacy web content
Description
Character encoding aliases for legacy web content.

6.1. Details of external packages

615

Packages and Features, Release 10.4

LicenseBSD License
Upstream Contact
Home Page: https://github.com/gsnedders/python-webencodings
Dependencies
PythonTypestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
0.5.1

version_requirements.txt:
webencodings >=0.5.1

Equivalent System Packages$ sudo pacman -S python-webencodings$ conda install webencodings$ sudo apt-get install python3-webencodings$ sudo yum install python-webencodings$ sudo emerge dev-python/webencodings$ sudo port install py-webencodings$ sudo zypper install python3\$\{PYTHON_MINOR\}-webencodings

616

Chapter 6. All External Packages

Packages and Features, Release 10.4

$ sudo xbps-install python3-webencodings

See https://repology.org/project/python:webencodings/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.434 websocket_client: WebSocket client for Python with low level API options
Description
WebSocket client for Python with low level API options
LicenseApache-2.0
Upstream Contact
https://pypi.org/project/websocket-client/Typestandard
Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)
Version Information
package-version.txt:
1.6.4

version_requirements.txt:
websocket-client

6.1. Details of external packages

617

Packages and Features, Release 10.4

Equivalent System Packages(none known)

6.1.435 wheel: A built-package format for Python
Description
A built-package format for Python
LicenseMIT
Upstream Contact
https://pypi.org/project/wheel/Typestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages
Version Information
package-version.txt:
0.43.0src/pyproject.toml:
wheel >=0.36.2

version_requirements.txt:
wheel >=0.36.2

618

Chapter 6. All External Packages

Packages and Features, Release 10.4

Equivalent System Packages$ sudo pacman -S python-wheel$ conda install wheel$ sudo apt-get install python3-wheel$ sudo yum install python-wheel$ sudo emerge dev-python/wheel$ sudo port install py-wheel$ sudo zypper install python3\$\{PYTHON_MINOR\}-wheel$ sudo xbps-install python3-wheel

See https://repology.org/project/wheel/versions, https://repology.org/project/python:wheel/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.436 widgetsnbextension: Jupyter interactive widgets for Jupyter Notebook
Description
Jupyter interactive widgets for Jupyter Notebook
LicenseBSD 3-Clause License
Upstream Contact
https://pypi.org/project/widgetsnbextension/Typestandard

6.1. Details of external packages

619

Packages and Features, Release 10.4

Dependencies• $(PYTHON)• $(PYTHON_TOOLCHAIN)• jupyter_core: Jupyter core package
Version Information
package-version.txt:
4.0.9

version_requirements.txt:
widgetsnbextension

Equivalent System Packages$ sudo pacman -S jupyter-widgetsnbextension$ conda install widgetsnbextension$ sudo yum install python-widgetsnbextension$ sudo pkg install devel/py-widgetsnbextension$ sudo emerge dev-python/widgetsnbextension$ sudo port install py-widgetsnbextension$ sudo zypper install jupyter-widgetsnbextension$ sudo xbps-install python3-jupyter_widgetsnbextension

See
https://repology.org/project/python:widgetsnbextension/versions,
https://repology.org/project/
jupyter-widgetsnbextension/versions, https://repology.org/project/python:jupyter-widgetsnbextension/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.437 xindy: a general-purpose index processor
Description
This dummy package represents xindy: xindy was developed after an impasse had been encountered in the attempt
to complete internationalisation of makeindex. Xindy can be used to process indexes for documents marked up using(LA)TEX, Nroff family and SGML-based languages. Xindy is highly configurable, both in markup terms and in termsof the collating order of the text being processed.
We do not have an SPKG for it. The purpose of this dummy package is to associate system package lists with it.
620

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseGNU General Public License version 2.0 (GPLv2)
Upstream Contact
http://www.xindy.org/
Typeoptional
Dependencies
Version Information
Equivalent System Packages$ sudo apt-get install xindy$ sudo port install xindy$ sudo zypper install xindy

See https://repology.org/project/xindy/versions
If the system package is installed, ./configure will check if it can be used.

6.1.438 xz: General-purpose data compression software
Description
XZ Utils is free general-purpose data compression software with a high compression ratio.
LicenseSome parts public domain, other parts GNU LGPLv2.1, GNU GPLv2, or GNU GPLv3.
Upstream Contact
http://tukaani.org/xz/

6.1. Details of external packages

621

Packages and Features, Release 10.4

Dependencies
Typestandard
Dependencies
Version Information
package-version.txt:
5.2.5

Equivalent System Packages$ apk add xz$ conda install xz$ apt-cyg install xz$ sudo apt-get install xz-utils$ sudo yum install xz$ brew install xz$ sudo port install xz$ sudo zypper install xz$ sudo slackpkg install xz$ sudo xbps-install xz

See https://repology.org/project/xz/versions
If the system package is installed, ./configure will check if it can be used.

6.1.439 zeromq: A modern networking library
Description
A modern networking library. Also known as 0mq or zmq. The same API is provided by http://www.crossroads.io,
though we currently use the http://www.zeromq.org implementation.

622

Chapter 6. All External Packages

Packages and Features, Release 10.4

LicenseLGPLv3+
Upstream Contact
http://www.zeromq.org
Dependencies
A working compiler.
Special Update/Build Instructions
N/A
Type
standard
Dependencies
Version Information
package-version.txt:
4.3.5

Equivalent System Packages$ apk add zeromq-dev$ sudo pacman -S zeromq$ conda install zeromq$ apt-cyg install libzmq-devel$ sudo apt-get install libzmq3-dev$ sudo yum install zeromq zeromq-devel$ sudo pkg install net/libzmq4$ sudo emerge net-libs/zeromq

6.1. Details of external packages

623

Packages and Features, Release 10.4

$ brew install zeromq

No package needed.
$ sudo zypper install pkgconfig\(libzmq\)$ sudo xbps-install zeromq-devel

See https://repology.org/project/zeromq/versions
If the system package is installed, ./configure will check if it can be used.

6.1.440 zipp: A pathlib-compatible zipfile object wrapper
Description
A pathlib-compatible Zipfile object wrapper. A backport of the Path object.
LicenseMIT License
Upstream Contact
Home page: https://github.com/jaraco/zipp
Dependencies
Python, SetuptoolsTypestandard
Dependencies• $(PYTHON)• pip: Tool for installing and managing Python packages

624

Chapter 6. All External Packages

Packages and Features, Release 10.4

Version Information
package-version.txt:
3.19.0version_requirements.txt:
zipp >=0.5.2

Equivalent System Packages$ conda install zipp$ sudo emerge dev-python/zipp$ sudo port install py-zipp$ sudo xbps-install python3-zippSee https://repology.org/project/python:zipp/versions
If the system package is installed and if the (experimental) option --enable-system-site-packages is passed
to ./configure, then ./configure will check if the system package can be used.

6.1.441 zlib: Data compression library
Description
Massively Spiffy Yet Delicately Unobtrusive Compression Library (Also Free, Not to Mention Unencumbered by Patents)
License• Modified BSD.
Upstream Contact• http://www.zlib.net/
Typestandard

6.1. Details of external packages

625

Packages and Features, Release 10.4

Dependencies
Version Information
package-version.txt:
1.2.11.p0

Equivalent System Packages$ apk add zlib-dev$ conda install zlib
$ apt-cyg install zlib-devel$ sudo apt-get install libz-dev$ sudo yum install zlib-devel$ brew install zlib
$ sudo port install zlib
$ sudo zypper install pkgconfig\(zlib\)install the following packages: zlib
$ sudo slackpkg install zlib
$ sudo xbps-install zlib-devel

See https://repology.org/project/zlib/versions
If the system package is installed, ./configure will check if it can be used.

626

Chapter 6. All External Packages

PYTHON MODULE INDEX

fsage.features, 17
sage.features.all, 33
sage.features.bliss, 47
sage.features.csdp, 48
sage.features.databases, 49
sage.features.dvipng, 52
sage.features.ffmpeg, 52
sage.features.four_ti_2, 53
sage.features.gap, 53
sage.features.graph_generators, 54
sage.features.graphviz, 55
sage.features.imagemagick, 56
sage.features.interfaces, 57
sage.features.internet, 60
sage.features.join_feature, 31
sage.features.kenzo, 60
sage.features.latex, 60
sage.features.latte, 64
sage.features.lrs, 64
sage.features.mcqd, 66
sage.features.meataxe, 66
sage.features.mip_backends, 67
sage.features.normaliz, 67
sage.features.pandoc, 68
sage.features.pdf2svg, 68
sage.features.pkg_systems, 46
sage.features.polymake, 68
sage.features.rubiks, 69
sage.features.sagemath, 35
sage.features.tdlib, 71

627

Packages and Features, Release 10.4

628

Python Module Index

INDEXA

69
all_features()(in module sage.features.rubiks), 69(sage.features.Executable
all_features() (in module sage.features.sagemath),
35(sage.features.FileFeature
all_features() (in module sage.features.tdlib), 71

absolute_filename()method), 20
absolute_filename()method), 28
absolute_filename() (sage.features.latex.TeXFile
method), 62
absolute_filename()(sage.features.StaticFile
method), 29
all_features() (in module sage.features.all), 33
all_features() (in module sage.features.bliss), 48
all_features() (in module sage.features.csdp), 48
all_features() (in module sage.features.databases),51
all_features() (in module sage.features.dvipng), 52
all_features() (in module sage.features.ffmpeg), 52
all_features() (in module sage.features.four_ti_2),
53
all_features() (in module sage.features.gap), 53
all_features() (in module sage.features.graph_generators), 55
all_features() (in module sage.features.graphviz),55
all_features() (in module sage.features.imagemagick), 57
all_features() (in module sage.features.interfaces),59
all_features() (in module sage.features.internet), 60
all_features() (in module sage.features.kenzo), 60
all_features() (in module sage.features.latex), 62
all_features() (in module sage.features.latte), 64
all_features() (in module sage.features.lrs), 66
all_features() (in module sage.features.mcqd), 66
all_features() (in module sage.features.meataxe),66
all_features() (in module sage.features.mip_backends), 67
all_features() (in module sage.features.normaliz),67
all_features() (in module sage.features.pandoc), 68
all_features() (in module sage.features.pdf2svg), 68
all_features() (in module sage.features.polymake),

B
Benzene (class in sage.features.graph_generators), 54
Bliss (class in sage.features.bliss), 47
BlissLibrary (class in sage.features.bliss), 47
Buckygen (class in sage.features.graph_generators), 54

CCC, 209, 216
COIN (class in sage.features.mip_backends), 67
CPLEX (class in sage.features.mip_backends), 67
CSDP (class in sage.features.csdp), 48
cu2 (class in sage.features.rubiks), 69
cubex (class in sage.features.rubiks), 69
CVXOPT (class in sage.features.mip_backends), 67
CXX, 209, 216
CythonFeature (class in sage.features), 18

D
DatabaseCremona (class in sage.features.databases),49
DatabaseCubicHecke(classin
sage.features.databases), 49
DatabaseEllcurves(classin
sage.features.databases), 49
DatabaseGraphs (class in sage.features.databases), 50
DatabaseJones (class in sage.features.databases), 50
DatabaseKnotInfo (class in sage.features.databases),
50
DatabaseMatroids (class in sage.features.databases),
50
DatabaseReflexivePolytopes (class in sage.features.databases), 51
dikcube (class in sage.features.rubiks), 70
dot (class in sage.features.graphviz), 56
dvipng (class in sage.features.dvipng), 52
dvips (class in sage.features.latex), 62
629

Packages and Features, Release 10.4

E
environment variable
CC, 209, 216
CXX, 209, 216
FC, 209, 216
Executable (class in sage.features), 20

FFC, 209, 216
Feature (class in sage.features), 21
FeatureNotPresentError, 26
FeatureTestResult (class in sage.features), 26
FFmpeg (class in sage.features.ffmpeg), 52
FileFeature (class in sage.features), 27
FourTi2 (class in sage.features.four_ti_2), 53
FourTi2Executable(classin
sage.features.four_ti_2), 53

G
GapPackage (class in sage.features.gap), 53
Graphviz (class in sage.features.graphviz), 55
Gurobi (class in sage.features.mip_backends), 67

H
hide() (sage.features.Feature method), 22
hide() (sage.features.join_feature.JoinFeature method),
32

I
ImageMagick (class in sage.features.imagemagick), 56
InterfaceFeature (class in sage.features.interfaces),
57
Internet (class in sage.features.internet), 60
is_functional() (sage.features.csdp.CSDP method),48
is_functional() (sage.features.Executable method),21
is_functional()(sage.features.ffmpeg.FFmpeg
method), 52
is_functional()(sage.features.graph_generators.Benzene method), 54
is_functional()(sage.features.graph_generators.Buckygen method), 54
is_functional()(sage.features.graph_generators.Plantri method), 55
is_functional() (sage.features.imagemagick.Magick
method), 56
is_functional()(sage.features.latex.LaTeX
method), 61
is_functional() (sage.features.lrs.Lrs method), 65
is_functional() (sage.features.lrs.LrsNash method),65
is_hidden() (sage.features.Feature method), 22
630

is_optional() (sage.features.Feature method), 23
is_present() (sage.features.Feature method), 23
is_standard() (sage.features.Feature method), 24

Jjoined_features() (sage.features.Feature method),
24
JoinFeature (class in sage.features.join_feature), 31
JuPyMake (class in sage.features.polymake), 68K
Kenzo (class in sage.features.kenzo), 60

L
LaTeX (class in sage.features.latex), 60
latex (class in sage.features.latex), 63
LaTeXPackage (class in sage.features.latex), 61
Latte (class in sage.features.latte), 64
Latte_count (class in sage.features.latte), 64
Latte_integrate (class in sage.features.latte), 64
Lrs (class in sage.features.lrs), 64
Lrslib (class in sage.features.lrs), 65
LrsNash (class in sage.features.lrs), 65
lualatex (class in sage.features.latex), 63

M
Macaulay2 (class in sage.features.interfaces), 57
Magick (class in sage.features.imagemagick), 56
Magma (class in sage.features.interfaces), 57
Maple (class in sage.features.interfaces), 57
Mathematica (class in sage.features.interfaces), 58
Matlab (class in sage.features.interfaces), 58
Mcqd (class in sage.features.mcqd), 66
mcube (class in sage.features.rubiks), 70
Meataxe (class in sage.features.meataxe), 66
MIPBackend (class in sage.features.mip_backends), 67
modulesage.features, 17
sage.features.all, 33
sage.features.bliss, 47
sage.features.csdp, 48
sage.features.databases, 49
sage.features.dvipng, 52
sage.features.ffmpeg, 52
sage.features.four_ti_2, 53
sage.features.gap, 53
sage.features.graph_generators, 54
sage.features.graphviz, 55
sage.features.imagemagick, 56
sage.features.interfaces, 57
sage.features.internet, 60
sage.features.join_feature, 31
sage.features.kenzo, 60

Index

Packages and Features, Release 10.4

sage.features.latex, 60
sage.features.latte, 64
sage.features.lrs, 64
sage.features.mcqd, 66
sage.features.meataxe, 66
sage.features.mip_backends, 67
sage.features.normaliz, 67
sage.features.pandoc, 68
sage.features.pdf2svg, 68
sage.features.pkg_systems, 46
sage.features.polymake, 68
sage.features.rubiks, 69
sage.features.sagemath, 35
sage.features.tdlib, 71
module_feature() (in module sage.features.all), 33

N
name_feature() (in module sage.features.all), 34
neato (class in sage.features.graphviz), 56

O
Octave (class in sage.features.interfaces), 58
optimal (class in sage.features.rubiks), 70

P
package_systems() (in module sage.features), 31
PackageSystem (class in sage.features.pkg_systems), 46
Pandoc (class in sage.features.pandoc), 68
pdf2svg (class in sage.features.pdf2svg), 68
pdflatex (class in sage.features.latex), 63
PipPackageSystem (class in sage.features.pkg_systems), 46
Plantri (class in sage.features.graph_generators), 55
PyNormaliz (class in sage.features.normaliz), 67
PythonModule (class in sage.features), 28

Rrequire() (sage.features.Feature method), 25
resolution(sage.features.FeatureNotPresentError
property), 26
resolution (sage.features.FeatureTestResult property),
27
resolution() (sage.features.Feature method), 25
Rubiks (class in sage.features.rubiks), 69

S
sage__combinat (class in sage.features.sagemath), 36
sage__geometry__polyhedron (class in sage.features.sagemath), 37
sage__graphs (class in sage.features.sagemath), 38
sage__groups (class in sage.features.sagemath), 40
sage__libs__braiding (class in sage.features.sagemath), 40
Index

sage__libs__ecl (class in sage.features.sagemath),40
sage__libs__flint (class in sage.features.sagemath), 41
sage__libs__gap (class in sage.features.sagemath),
41
sage__libs__linbox (class in sage.features.sagemath), 41
sage__libs__m4ri (class in sage.features.sagemath),
41
sage__libs__ntl (class in sage.features.sagemath),
41
sage__libs__pari (class in sage.features.sagemath),
41
sage__libs__singular (class in sage.features.sagemath), 42
sage__modular (class in sage.features.sagemath), 42
sage__modules (class in sage.features.sagemath), 42
sage__numerical__mip (class in sage.features.sagemath), 42
sage__plot (class in sage.features.sagemath), 42
sage__rings__complex_double(classin
sage.features.sagemath), 43
sage__rings__finite_rings (class in sage.features.sagemath), 43
sage__rings__function_field(classin
sage.features.sagemath), 43
sage__rings__number_field (class in sage.features.sagemath), 43
sage__rings__padics (class in sage.features.sagemath), 45
sage__rings__polynomial__pbori (class insage.features.sagemath), 45
sage__rings__real_double (class in sage.features.sagemath), 45
sage__rings__real_mpfr (class in sage.features.sagemath), 45
sage__sat (class in sage.features.sagemath), 45
sage__schemes (class in sage.features.sagemath), 45
sage__symbolic (class in sage.features.sagemath), 45
sage_data_path()(inmodulesage.features.databases), 51
SAGE_SRC (class in sage.features.sagemath), 35
sage.featuresmodule, 17
sage.features.all
module, 33
sage.features.bliss
module, 47
sage.features.csdp
module, 48
sage.features.databases
module, 49
sage.features.dvipng
631

Packages and Features, Release 10.4

module, 52
sage.features.ffmpeg
module, 52
sage.features.four_ti_2
module, 53
sage.features.gap
module, 53
sage.features.graph_generators
module, 54
sage.features.graphviz
module, 55
sage.features.imagemagick
module, 56
sage.features.interfaces
module, 57
sage.features.internet
module, 60
sage.features.join_feature
module, 31
sage.features.kenzo
module, 60
sage.features.latex
module, 60
sage.features.latte
module, 64
sage.features.lrs
module, 64
sage.features.mcqd
module, 66
sage.features.meataxe
module, 66
sage.features.mip_backends
module, 67
sage.features.normaliz
module, 67
sage.features.pandoc
module, 68
sage.features.pdf2svg
module, 68
sage.features.pkg_systems
module, 46
sage.features.polymake
module, 68
sage.features.rubiks
module, 69
sage.features.sagemathmodule, 35
sage.features.tdlib
module, 71
sagemath_doc_html (class in sage.features.sagemath), 46
SagePackageSystem (class in sage.features.pkg_systems), 47
Scilab (class in sage.features.interfaces), 59
632

size222 (class in sage.features.rubiks), 70
spkg_installation_hint()tures.pkg_systems.PackageSystem
46
StaticFile (class in sage.features), 29(sage.feamethod),T
Tdlib (class in sage.features.tdlib), 71
TeXFile (class in sage.features.latex), 62
TrivialClasscallMetaClass (class in sage.features), 30
TrivialUniqueRepresentation(classin
sage.features), 30
twopi (class in sage.features.graphviz), 56

Uunhide() (sage.features.Feature method), 26
unhide()(sage.features.join_feature.JoinFeature
method), 32

X
xelatex (class in sage.features.latex), 63

Index