Skip to main content

xact-py

PyPI Build Status License: GPL v3

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)

Table of built distributions (wheels) for xact-py 0.8.0
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.8.0 This release

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.4.2

1 release file

0.4.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page