| Index | index by Group | index by Distribution | index by Vendor | index by creation date | index by Name | Mirrors | Help | Search |
| Name: python313-cotengra | Distribution: openSUSE Tumbleweed |
| Version: 0.7.5 | Vendor: openSUSE |
| Release: 1.1 | Build date: Fri Mar 27 02:33:48 2026 |
| Group: Unspecified | Build host: reproducible |
| Size: 1938114 | Source RPM: python-cotengra-0.7.5-1.1.src.rpm |
| Packager: https://bugs.opensuse.org | |
| Url: https://github.com/jcmgray/cotengra | |
| Summary: Hyper optimized contraction trees for large tensor networks and einsums | |
A python library for contracting tensor networks or einsum expressions involving large numbers of tensors. Some of the key feautures of cotengra include: * drop-in einsum replacement * an explicit contraction tree object that can be flexibly built, modified and visualized * a 'hyper optimizer' that samples trees while tuning the generating meta-paremeters * dynamic slicing for massive memory savings and parallelism * support for hyper edge tensor networks and thus arbitrary einsum equations * paths that can be supplied to numpy.einsum, opt_einsum, quimb among others * performing contractions with tensors from many libraries via cotengra, even if they don't provide einsum or tensordot but do have (batch) matrix multiplication
Apache-2.0
* Fri Mar 27 2026 Steve Kowalik <steven.kowalik@suse.com>
- Update to 0.7.5:
[#]# Enhancements
* Add optimize="edgesort" (aliased to optimize="ncon" too), which performs
a contraction by contracting edges in sorted order, thus can be entirely
specified by the graph labelling.
* Add edge_path_to_ssa and edge_path_to_linear for converting edge paths to
SSA and linear paths respectively.
* ContractionTree.from_path: allow an edge_path argument.
* Allow manual path specification as edge path
* ReusableHyperOptimizer and DiskDict, allow splitting key into
subdirectory structure for better performance
* High level interface functions accept the strip_exponent kwarg, which
eagerly strips a scaling exponent (log10) as the contraction proceeds,
avoiding issues to do with very large or very small numeric values.
* Add cmaes as an optlib method, use it by default for 'auto' preset if
available since ih has less overhead than optuna.
* Add HyperOptimizer.plot_parameters_parallel for plotting the sampled
parameter space of a hyper optimizer method in parallel coordinates.
* Add ncon interface.
* Add utils.save_to_json and utils.load_from_json for saving and loading
contractions to/from json.
* Add examples/benchmarks with various json benchmark contractions
* Add utils.networkx_graph_to_equation for converting a networkx graph to
cotengra style inputs, output and size_dict.
* Add "max" as a valid minimize option for optimize_optimal (also added to
cotengrust), which minimizes the single most expensive contraction (i.e.
the cost scaling)
* Add RandomOptimizer, a fully random optimizer for testing and
initialization purposes. It can be used with optimize="random" but is not
recommended for actual optimization.
* Add PathOptimizer to top-level namespace.
* ContractTreeCompressed.from_path: add the autocomplete option
* Add option overwrite="improved" to reusable hyper optimizers, which
always searches but only overwrites if the new tree is better, allowing
easy incremental refining of a collection of trees.
* einsum via bmm (implementation="cotengra") avoids using einsum for
transposing inputs.
[#]# Bug fixes
* ContractionTree.print_contractions: fix show_brackets option, show
preprocessing steps with original inputs indices.
* Fix and add edge case test for optimize=()
* When contracting with slices and strip_exponent enabled, each slice
result is returned with the exponent separately, rather than matching
the first, these are are now combined in gather_slices.
* Fix HyperGraph.plot when nodes are not labelled as consecutive integers
* Fix ContractionTreeCompressed.windowed_reconfigure not propagating the
default objective
* Fix kahypar path optimization when no edges are present
* Tue May 28 2024 John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
- Update to version 0.6.2
* Fix final, output contractions being mistakenly marked as not tensordot-able.
* When `implementation="autoray"` don't require a backend to have both
`einsum` and `tensordot`, instead fallback to `cotengra`'s own.
- from version 0.6.1
* The number of workers initialized (for non-distributed pools) is now set to,
in order of preference, 1. the environment variable `COTENGRA_NUM_WORKERS`,
2. the environment variable `OMP_NUM_THREADS`, or 3. `os.cpu_count()`.
* Add [RandomGreedyOptimizer](cotengra.pathfinders.path_basic.RandomGreedyOptimizer)
which is a lightweight and performant randomized greedy optimizer, eschewing both
hyper parameter tuning and full contraction tree construction, making it suitable
for very large contractions (10,000s of tensors+).
* Add [optimize_random_greedy_track_flops](cotengra.pathfinders.path_basic.optimize_\
random_greedy_track_flops) which runs N trials of (random) greedy path optimization,
whilst computing the FLOP count simultaneously. This or its accelerated rust counterpart
in `cotengrust` is the driver for the above optimizer.
* Add `parallel="threads"` backend, and make it the default for `RandomGreedyOptimizer`
when `cotengrust` is present, since its version of `optimize_random_greedy_track_flops`
releases the GIL.
* Significantly improve both the speed and memory usage of [`SliceFinder`](cotengra.slicer.SliceFinder)
* Alias `tree.total_cost()` to `tree.combo_cost()`
- from version 0.6.0
* All input node legs and pre-processing steps are now calculated lazily,
allowing slicing of indices including those 'simplified' away {issue}`31`.
* Make [`tree.peak_size`](cotengra.ContractionTree.peak_size) more accurate,
by taking max assuming left, right and parent intermediate tensors are all
present at the same time.
* Add simulated annealing tree refinement (in `path_simulated_annealing.py`),
based on "Multi-Tensor Contraction for XEB Verification of
Quantum Circuits" by Gleb Kalachev, Pavel Panteleev, Man-Hong Yung
(arXiv:2108.05665), and the "treesa" implementation in
OMEinsumContractionOrders.jl by Jin-Guo Liu and Pan Zhang. This can be
accessed most easily by supplying
`opt = HyperOptimizer(simulated_annealing_opts={})`.
* Add [`ContractionTree.plot_flat`](cotengra.plot.plot_tree_flat): a new method
for plotting the contraction tree as a flat diagram showing all indices on
every intermediate (without requiring any graph layouts), which is useful for
visualizing and understanding small contractions.
* [`HyperGraph.plot`](cotengra.plot.plot_hypergraph): support showing hyper
outer indices, multi-edges, and automatic unique coloring of nodes and
indices (to match `plot_flat`).
* Add [`ContractionTree.plot_circuit](cotengra.plot.plot_tree_circuit) for
plotting the contraction tree as a circuit diagram, which is fast and useful
for visualizing the traversal ordering for larger trees.
* Add [`ContractionTree.restore_ind`](cotengra.ContractionTree.restore_ind)
for 'unslicing' or 'unprojecting' previously removed indices.
* [`ContractionTree.from_path`](cotengra.ContractionTree.from_path): add option
`complete` to automatically complete the tree given an incomplete path
(usually disconnected subgraphs - {issue}`29`).
* Add [`ContractionTree.get_incomplete_nodes`](cotengra.ContractionTree.get_incomplete_nodes)
for finding all uncontracted childless-parentless node groups.
* Add [`ContractionTree.autocomplete`](cotengra.ContractionTree.autocomplete)
for automatically completing a contraction tree, using above method.
* [`tree.plot_flat`](cotengra.plot.plot_tree_flat): show any preprocessing
steps and optionally list sliced indices
* Add [get_rng](cotengra.utils.get_rng) as a single entry point for getting or
propagating a random number generator, to help determinism.
* Set ``autojit="auto"`` for contractions, which by default turns on jit for
`backend="jax"` only.
* Add [`tree.describe`](cotengra.ContractionTree.describe) for a various levels
of information about a tree, e.g. `tree.describe("full")` and
`tree.describe("concise")`.
* Add [ctg.GreedyOptimizer](cotengra.pathfinders.path_basic.GreedyOptimizer)
and [ctg.OptimalOptimizer](cotengra.pathfinders.path_basic.OptimalOptimizer)
to the top namespace.
* Add [ContractionTree.benchmark](cotengra.ContractionTree.benchmark) for
for automatically assessing hardware performance vs theoretical cost.
* Contraction trees now have a `get_default_objective` method to return the
objective function they were optimized with, for simpler further refinement
or scoring, where it is now picked up automatically.
* Change the default 'sub' optimizer on divisive partition building algorithms
to be `'greedy'` rather than `'auto'`. This might make individual trials
slightly worse but makes each cheaper, see discussion: ({issue}`27`).
- Drop patches for issues fixed upstream
* fix-check.patch
* Thu Mar 21 2024 Guillaume GARDET <guillaume.gardet@opensuse.org>
- Fix test for aarch64 with:
* fix-check.patch
* Tue Feb 27 2024 Ben Greiner <code@bnavigator.de>
- Initial specfile for v0.5.6 required by quimb
/usr/lib/python3.13/site-packages/cotengra /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info/INSTALLER /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info/METADATA /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info/RECORD /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info/REQUESTED /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info/WHEEL /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info/licenses /usr/lib/python3.13/site-packages/cotengra-0.7.5.dist-info/licenses/LICENSE.md /usr/lib/python3.13/site-packages/cotengra/__init__.py /usr/lib/python3.13/site-packages/cotengra/__pycache__ /usr/lib/python3.13/site-packages/cotengra/__pycache__/__init__.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/__init__.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/_version.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/_version.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/contract.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/contract.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/core.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/core.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/core_multi.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/core_multi.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/hypergraph.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/hypergraph.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/interface.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/interface.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/oe.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/oe.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/parallel.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/parallel.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/plot.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/plot.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/presets.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/presets.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/reusable.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/reusable.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/schematic.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/schematic.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/scoring.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/scoring.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/slicer.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/slicer.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/utils.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/__pycache__/utils.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/_version.py /usr/lib/python3.13/site-packages/cotengra/contract.py /usr/lib/python3.13/site-packages/cotengra/core.py /usr/lib/python3.13/site-packages/cotengra/core_multi.py /usr/lib/python3.13/site-packages/cotengra/experimental /usr/lib/python3.13/site-packages/cotengra/experimental/__init__.py /usr/lib/python3.13/site-packages/cotengra/experimental/__pycache__ /usr/lib/python3.13/site-packages/cotengra/experimental/__pycache__/__init__.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/experimental/__pycache__/__init__.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/experimental/__pycache__/path_compressed_branchbound.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/experimental/__pycache__/path_compressed_branchbound.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/experimental/__pycache__/path_compressed_mcts.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/experimental/__pycache__/path_compressed_mcts.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/experimental/path_compressed_branchbound.py /usr/lib/python3.13/site-packages/cotengra/experimental/path_compressed_mcts.py /usr/lib/python3.13/site-packages/cotengra/hypergraph.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__init__.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__ /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/__init__.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/__init__.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_baytune.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_baytune.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_choco.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_choco.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_cmaes.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_cmaes.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_nevergrad.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_nevergrad.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_optuna.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_optuna.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_random.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_random.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_skopt.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/__pycache__/hyper_skopt.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper_baytune.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper_choco.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper_cmaes.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper_nevergrad.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper_optuna.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper_random.py /usr/lib/python3.13/site-packages/cotengra/hyperoptimizers/hyper_skopt.py /usr/lib/python3.13/site-packages/cotengra/interface.py /usr/lib/python3.13/site-packages/cotengra/oe.py /usr/lib/python3.13/site-packages/cotengra/parallel.py /usr/lib/python3.13/site-packages/cotengra/pathfinders /usr/lib/python3.13/site-packages/cotengra/pathfinders/__init__.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__ /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/__init__.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/__init__.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_basic.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_basic.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_compressed.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_compressed.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_compressed_greedy.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_compressed_greedy.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_edgesort.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_edgesort.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_flowcutter.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_flowcutter.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_greedy.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_greedy.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_igraph.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_igraph.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_kahypar.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_kahypar.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_labels.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_labels.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_quickbb.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_quickbb.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_random.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_random.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_simulated_annealing.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/path_simulated_annealing.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/treedecomp.cpython-313.opt-1.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/__pycache__/treedecomp.cpython-313.pyc /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/cut_kKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/cut_rKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/km1_kKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/km1_rKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/old /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/old/cut_kKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/old/cut_rKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/old/km1_kKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/kahypar_profiles/old/km1_rKaHyPar_sea20.ini /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_basic.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_compressed.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_compressed_greedy.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_edgesort.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_flowcutter.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_greedy.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_igraph.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_kahypar.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_labels.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_quickbb.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_random.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/path_simulated_annealing.py /usr/lib/python3.13/site-packages/cotengra/pathfinders/treedecomp.py /usr/lib/python3.13/site-packages/cotengra/plot.py /usr/lib/python3.13/site-packages/cotengra/presets.py /usr/lib/python3.13/site-packages/cotengra/reusable.py /usr/lib/python3.13/site-packages/cotengra/schematic.py /usr/lib/python3.13/site-packages/cotengra/scoring.py /usr/lib/python3.13/site-packages/cotengra/slicer.py /usr/lib/python3.13/site-packages/cotengra/utils.py /usr/share/doc/packages/python313-cotengra /usr/share/doc/packages/python313-cotengra/README.md /usr/share/licenses/python313-cotengra /usr/share/licenses/python313-cotengra/LICENSE.md
Generated by rpm2html 1.8.1
Fabrice Bellet, Sat Mar 28 22:25:47 2026