xact-py
Python wrapper for XAct.jl — a native Julia port of the Wolfram xAct tensor algebra library for general relativity.
Note: All code in this repository is generated by AI. It was built under strict engineering practices but is not warranted to be absolutely correct. See the full disclaimer.
Installation
Install the latest published release from PyPI:
pip install xact-py
On first import, xact-py resolves the Julia package XAct from the Julia registries via juliapkg/juliacall.
If you need unreleased changes from this repository, install from a local checkout in editable mode and point juliapkg at a shared Julia project that develops the local XAct.jl checkout:
git clone https://github.com/sashakile/XAct.jl.git
cd XAct.jl
uv pip install -e packages/xact-py
export PYTHON_JULIAPKG_PROJECT="$PWD/.juliapkg-xact"
julia --project="$PYTHON_JULIAPKG_PROJECT" -e 'using Pkg; Pkg.develop(path=pwd()); Pkg.instantiate()'
Julia is managed automatically via juliacall.
Quick Start
import xact
xact.reset()
M = xact.Manifold("M", 4, ["a", "b", "c", "d"])
T = xact.Tensor("T", ["-a", "-b"], M, symmetry="Symmetric[{-a,-b}]")
xact.canonicalize("T[-b,-a] - T[-a,-b]") # returns "0"
Features
- Canonicalization — Butler-Portugal algorithm for tensor index canonicalization
- Contraction & Simplification — metric contraction, iterative simplification
- Covariant Derivatives — commutation, sorting, Riemann identities
- Perturbation Theory — multinomial Leibniz expansion, curvature perturbations
- Coordinate Components (xCoba) — basis changes, Christoffel symbols, CTensor
- Riemann Invariants (xInvar) — classification and database of Riemann polynomial invariants
- Variational Calculus — Euler-Lagrange operator, integration by parts
Example: Metric and Curvature
import xact
xact.reset()
M = xact.Manifold("M", 4, ["a", "b", "c", "d", "e", "f"])
g = xact.Metric("g", ["-a", "-b"], M)
# Riemann symmetry: R_abcd + R_abdc = 0
xact.canonicalize("RiemannCD[-a,-b,-c,-d] + RiemannCD[-a,-b,-d,-c]")
# returns "0"
# Simplify a contracted Riemann expression
xact.simplify("RicciCD[-a,-b] - RiemannCD[-a,-c,-b,-d] * g[c,d]")
# returns "0"
Documentation
Full documentation at saxa.xyz/XAct.jl.
License
GPL-3.0 — see LICENSE.
Metadata
Release files for xact-py 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xact_py-0.8.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / xact_py-0.8.0-py3-none-any.whl
| Download URL | xact_py-0.8.0-py3-none-any.whl |
|---|---|
| Size | 42.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0f5516189156df376f7fd7a96d1e52370156581ad121ac30897daf4d93c63ee1
|
|
BLAKE2b-256 checksum How to use checksums |
25f014dfdf209fd2c8129bfa8e93aa2542bef9ecb68040598d0d1e4b50f57587
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 9, 2026.
Transparency log