within
within provides high-performance solvers for projecting out high-dimensional fixed effects from regression problems.
By the Frisch-Waugh-Lovell theorem, estimating a regression of the form y = Xβ + Dα + ε reduces to a sequence of least-squares projections, one for y and one for each column of X, followed by a cheap regression fit on the resulting residuals. The projection step of solving the normal equations D'Dx = D'z is the computational bottleneck, which is the problem within is designed to solve.
within's solvers are tailored to the structure of fixed effects problems, which can be represented as a graph (as first noted by Correia, 2016). Concretely, within uses modified LSMR with a domain decomposition (Schwarz) preconditioner, backed by approximate Cholesky local solvers (Gao et al, 2025).
Scope
within is a low-level fixed-effects kernel. Callers pass categorical labels as uint32 F-order (column-major) arrays. Labels need not be contiguous: observed labels are compacted internally, while result layouts retain the caller-visible labels. Formula-level convenience — DataFrames, string/object categoricals, pandas.factorize, and formula parsing — is intentionally out of scope and belongs to a frontend layer built on top. The pyfixest-style workflow is served by such a frontend calling within underneath.
Installation
You can install Python bindings from PyPi by running
pip install within_py
Wheels ship for CPython 3.9+ (one abi3 wheel per platform), free-threaded CPython 3.14+ (cp314t; PyO3 dropped experimental 3.13t support), and PyPy 3.11 (PyO3's minimum supported PyPy version; earlier PyPy releases are rejected at build time). CPython 3.15's abi3t (PEP 803, PyO3/maturin#3064) will let the free-threaded build fold back into a single wheel per platform.
musllinux ships no PyPy wheel at all — the musllinux_1_2 build image bundles no PyPy interpreter.
Python Quickstart
within's main user-facing function is solve. Provide a 2-D uint32 array of category codes (one column per fixed-effect factor) and a response vector y. The solver finds x in the normal equations D'D x = D'y, where D is the sparse categorical design matrix.
import numpy as np
from within import solve, solve_batch, LsmrOptions, PreconditionerConfig
np.random.seed(1)
n = 100_000
fe = np.asfortranarray(np.column_stack([
np.random.randint(0, 500, n).astype(np.uint32),
np.random.randint(0, 200, n).astype(np.uint32),
]))
y = np.random.randn(n)
# Default: the adaptive diagonal→Schwarz ladder + LSMR
result = solve(fe, y)
# Custom tolerance / iteration cap
result = solve(fe, y, options=LsmrOptions(tol=1e-10, maxiter=2000))
# Weighted solve
result = solve(fe, y, weights=np.ones(n))
# Opt into diagonal/Jacobi preconditioning
result = solve(fe, y, preconditioner=PreconditionerConfig.Diagonal())
FWL regression example
beta_true = np.array([1.0, -2.0, 0.5])
X = np.random.randn(n, 3)
y = X @ beta_true + np.random.randn(n)
result = solve_batch(fe, np.column_stack([y, X]))
y_tilde, X_tilde = result.demeaned[:, 0], result.demeaned[:, 1:]
beta_hat = np.linalg.lstsq(X_tilde, y_tilde, rcond=None)[0]
print(np.round(beta_hat, 4)) # [ 0.9982 -2.006 0.5005]
Varying slopes
Pass a list of Effect terms instead of a categories array. Each term is a
factor's level codes plus an optional intercept and zero or more slope
covariates (per-level slopes, as in fixest's f[z] notation).
from within import solve, Effect
firm = np.random.randint(0, 500, n).astype(np.uint32)
year = np.random.randint(0, 20, n).astype(np.uint32)
x = np.random.randn(n) # covariate whose slope varies by firm
result = solve(
[
Effect(firm, intercept=True, slopes=[x]), # firm intercept + firm-specific x slope
Effect(year, intercept=True), # year intercept
],
y,
)
# Read firm level 3's x-slope via the layout map (column 0 = intercept, 1 = first slope):
i = result.layout.index(0, 3, 1)
print(result.x[i])
Python API
High-level functions
| Function | Description |
|---|---|
solve(design, y, weights?, options?, preconditioner?) |
Solve a single right-hand side. Returns SolveResult. |
solve_batch(design, Y, weights?, options?, preconditioner?) |
Solve multiple RHS vectors in parallel. Y has shape (n_obs, k). Returns BatchSolveResult. |
design is a persistent Design, a 2-D uint32 array of shape (n_obs, n_factors), or a list of Effect terms (see Varying slopes). A UserWarning is emitted when a C-contiguous categories array is passed — use np.asfortranarray(design) for best performance.
Persistent solver
For repeated solves with the same design matrix, Design reuses the preprocessed observation storage and Solver builds the weight-dependent state and preconditioner once.
from within import Design, Solver, solve
design = Design(fe)
solver = Solver(design)
r = solver.solve(y) # reuses preconditioner
r = solver.solve_batch(np.column_stack([y, X]))
precond = solver.preconditioner # picklable property
solver2 = Solver(design, preconditioner=precond) # skip re-factorization
# Reuse design preprocessing while rebuilding weight-dependent solver state.
weighted = solve(design, y, weights=np.ones(n))
| Property / Method | Description |
|---|---|
Design(design) |
Build an owned native design for reuse across solves and solvers. |
Solver(design, weights?, preconditioner?) |
Build solver. Factorizes the preconditioner at construction. |
.solve(y, options?) |
Solve a single RHS with the given LSMR tuning. Returns SolveResult. |
.solve_batch(Y, options?) |
Solve multiple RHS columns in parallel. Returns BatchSolveResult. |
.preconditioner |
Return the built Preconditioner (picklable), or None. Reuse via Solver(design, preconditioner=p). |
Solver configuration
| Class | Description |
|---|---|
LsmrOptions(tol=1e-8, maxiter=1000, local_size=None) |
Modified LSMR. local_size enables windowed reorthogonalization. |
Preconditioners
The preconditioner argument accepts any of:
| Form | Meaning |
|---|---|
None (default) |
Library default — Adaptive: diagonal, escalating to additive Schwarz on a stalled contraction. |
PreconditionerConfig.Off() |
Explicit identity — solve unpreconditioned. |
PreconditionerConfig.Additive() |
Additive Schwarz shortcut, built up front. |
PreconditionerConfig.Diagonal() |
Diagonal/Jacobi preconditioner using diag(D^T W D)^{-1}. |
PreconditionerConfig.Additive(local_solver?, reduction?) |
Tuned additive Schwarz. Argument types import from within.config. |
PreconditionerConfig.Adaptive(local_solver?, reduction?, stall?) |
Tuned form of the default; the factorization is built only on escalation. |
Preconditioner instance |
Reuse a previously-built preconditioner across solvers. |
PreconditionerConfig is a tagged union: each variant is a subclass, so instances
support match/case and compare by value. A built preconditioner exposes
the configuration used to construct it as .config and its original build duration in seconds
as .build_duration_seconds; both are preserved across pickling and reuse.
Local solver configuration (advanced — within.config)
| Class | Description |
|---|---|
LocalSolverConfig(approx_chol?, schur?, dense_threshold=24, scaling?) |
Schur reduction + approximate Cholesky. Omit schur for the library-default approximate variant; pass schur=Schur.exact() to request an exact Schur (slower, used for validation). |
Schur.approximate(config?) / Schur.exact() |
Schur-reduction mode passed as LocalSolverConfig(schur=...). |
ApproxCholConfig(seed=0, split_merge=None) |
Approximate Cholesky parameters. |
ApproxSchurConfig(seed=0, split=1) |
Approximate Schur complement sampling parameters. |
ReductionStrategy |
Auto (default), AtomicScatter, ParallelReduction (class attributes, not an Enum). |
Result types
SolveResult: x (coefficients), unidentified (directions the data cannot identify, as UnidentifiedDirection(term, level, column) records), layout (a CoefficientLayout mapping a (term, level, column) address to its flat x index and back), demeaned (residuals), converged, iterations, residual, time_total, time_setup, time_solve.
BatchSolveResult: Same fields, with converged, iterations, residual, and time_solve as lists (one entry per RHS).
Coefficients for unidentified directions are pinned to the minimal-norm value 0 (never NaN). This is why x can differ from reference tools that instead drop a reference level; the identified fit — demeaned — is unaffected by the choice.
Rust API
use ndarray::Array2;
use within::{solve, LsmrOptions, PreconditionerConfig};
use within::config::{LocalSolverConfig, ReductionStrategy};
let categories = /* Array2<u32> of shape (n_obs, n_factors) */;
let y: &[f64] = /* response vector */;
// Default: LSMR + the adaptive ladder (None → library default)
let r = solve(categories.view(), &y, None, &LsmrOptions::default(), None)?;
assert!(r.converged);
// Tighter tolerance with an explicit additive preconditioner
let lsmr = LsmrOptions { tol: 1e-10, ..LsmrOptions::default() };
let precond = PreconditionerConfig::Additive {
local_solver: LocalSolverConfig::default(),
reduction: ReductionStrategy::default(),
};
let r = solve(categories.view(), &y, None, &lsmr, &precond)?;
// Opt into diagonal/Jacobi preconditioning
let diagonal = PreconditionerConfig::Diagonal;
let r = solve(categories.view(), &y, None, &lsmr, &diagonal)?;
Persistent solver — build once, solve many:
use ndarray::array;
use within::{solve, Channel, CoefficientAddress, Design, Solver};
// Caller labels are deliberately non-contiguous.
let categories = array![
[10_u32, 100],
[20, 100],
[10, 900],
[20, 900],
];
let y = [1.0, 2.0, 3.0, 4.0];
// Build and compact the design once, then share it across solvers.
let design = Design::from_categories(categories.view())?;
let unweighted = Solver::new(&design, None, None)?;
let weights = [1.0, 2.0, 1.0, 2.0];
let weighted = Solver::new(&design, Some(&weights), None)?;
let result = unweighted.solve(&y, None)?;
let weighted_result = weighted.solve(&y, None)?;
let one_shot_result = solve(&design, &y, None, None, None)?;
assert!(weighted_result.converged && one_shot_result.converged);
// Internal factor positions stay private; result lookup uses caller labels.
let address = CoefficientAddress {
channel: Channel { term: 1, column: 0 },
level: 900,
};
let slot = result.layout.index(address).expect("observed label");
assert_eq!(result.layout.address(slot), Some(address));
assert_eq!(result.x.len(), 4); // two observed levels in each of two factors
solve and Solver::new take the preconditioner as impl Into<PreconditionerInput>:
None (library default), a &PreconditionerConfig or owned PreconditionerConfig
(e.g. PreconditionerConfig::Off for the identity), or an owned/borrowed
Preconditioner for reuse. LSMR options are impl Into<Option<&LsmrOptions>>, so
None accepts the defaults and &opts overrides them.
| Type | Variants / Fields |
|---|---|
Design |
Reusable immutable design; build with Design::from_categories or Design::new, then share via Solver::new(&design, ...) or solve(&design, ...). |
LsmrOptions |
{ tol: f64, maxiter: usize, local_size: Option<usize> } |
PreconditionerConfig |
Off | Additive { local_solver: LocalSolverConfig, reduction: ReductionStrategy } | Diagonal (#[non_exhaustive]) |
LocalSolverConfig |
{ approx_chol, schur: SchurMode, dense_threshold, scaling } |
SchurMode |
Approximate(ApproxSchurConfig) | Exact |
Preconditioner |
Opaque built handle — reuse via Solver::new(.., precond) (owned or &) |
Effect |
Effect::new(levels: &[u32], intercept: bool, slopes: impl IntoIterator<Item = &[f64]>) -> Result<Self, BuildError> |
CoefficientAddress |
{ channel: Channel { term, column }, level: u32 } |
CoefficientLayout |
index(CoefficientAddress) -> Option<usize>, address(usize) -> Option<CoefficientAddress>, n_dofs(), n_terms(), n_levels(term), n_columns(term) |
Varying slopes
Pass a Vec<Effect> instead of a categories array. Each term is a factor's
level codes plus an optional intercept and zero or more slope covariates
(per-level slopes, as in fixest's f[z] notation).
use within::{solve, Channel, CoefficientAddress, Effect};
let firm: &[u32] = /* level codes */;
let year: &[u32] = /* level codes */;
let x: &[f64] = /* covariate whose slope varies by firm */;
let terms = vec![
Effect::new(firm, true, [x])?, // firm intercept + firm-specific x slope
Effect::new(year, true, [])?, // year intercept
];
let r = solve(terms, &y, None, None, None)?;
// Read firm level 3's x-slope via the layout map (column 0 = intercept, 1 = first slope):
let at = CoefficientAddress { channel: Channel { term: 0, column: 1 }, level: 3 };
println!("{}", r.x[r.layout.index(at).unwrap()]);
Solver::new takes the same Vec<Effect>, so a slope design can be reused
across solves like any other.
Lower-level access
| Module | Visibility | Key types |
|---|---|---|
within::config |
public | LsmrOptions, PreconditionerConfig, LocalSolverConfig, SchurMode, ApproxCholConfig, ApproxSchurConfig, ScalingConfig, ReductionStrategy |
within::error |
public | WithinError, BuildError, SolveError |
block_elim / channel / csr_block / domain / linalg / operator / solver |
pub(crate) |
implementation layers — public items are re-exported at the crate root |
Project structure
crates/
schwarz-precond/ Generic domain decomposition library (traits, solvers, Schwarz preconditioners)
within/ Core fixed-effects solver (designs, domains, operators, solver)
within-py/ PyO3 bridge (cdylib → within._within)
python/within/ Python package re-exporting the Rust extension
benchmarks/ Python benchmark framework
Development
Uses pixi as the task runner.
pixi run develop # Build Rust extension (release mode)
pixi run test # Rebuild + pytest
cargo test --workspace # Rust tests only
cargo bench -p within # Criterion benchmarks
pixi run python -m benchmarks run all # Python benchmarks
Rust changes require rebuilding before running Python code (pixi run develop).
License
MIT
References
- Correia, Sergio. "A feasible estimator for linear models with multi-way fixed effects." Preprint at http://scorreia.com/research/hdfe.pdf (2016).
- Gao, Y., Kyng, R. & Spielman, D. A. (2025). AC(k): Robust Solution of Laplacian Equations by Randomized Approximate Cholesky Factorization. SIAM Journal on Scientific Computing.
- Toselli & Widlund (2005). Domain Decomposition Methods — Algorithms and Theory. Springer.
- Xu, J. (1992). Iterative Methods by Space Decomposition and Subspace Correction. SIAM Review, 34(4), 581--613.
Metadata
Release files for within-py 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| within_py-0.4.0.tar.gz | 251.5 kB | With provenance | Details |
Built distributions (wheels)
Total release size: 22.8 MB
Release files / within_py-0.4.0.tar.gz
| Download URL | within_py-0.4.0.tar.gz |
|---|---|
| Size | 251.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87f887a78d6ac844b4f0c869c858fd888d0257fd139ad2fb133b7f2cb0ea1b96
|
|
BLAKE2b-256 checksum How to use checksums |
dbccbb97ad36eaa60cabcde4176e69334d50ba699e0f32a2292bd37228c82ba7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-pp311-pypy311_pp73-win_amd64.whl
| Download URL | within_py-0.4.0-pp311-pypy311_pp73-win_amd64.whl |
|---|---|
| Size | 752.7 kB |
| Tags | PyPy 3.11 PyPy 3.11 7.3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
cabd3567ae17e93ca05b3876c3ab53f6a2a7a4769ddbe3bd714f3b2e0eb1e98f
|
|
BLAKE2b-256 checksum How to use checksums |
5e77e25a8499ec98177f5133e3d4d5c68dba9f314ff95311f91c0a7dc90bb2d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | within_py-0.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 864.4 kB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
ca76a40254e09348246d94306d601774295fd25c4e9af29c7cb0a3c55fb2ca2c
|
|
BLAKE2b-256 checksum How to use checksums |
14e7ce206c1587415f6360dfb5b6bc576d4040f1227a1aa025ea0778cd21fcfd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | within_py-0.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 829.1 kB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3 |
|
SHA-256 checksum How to use checksums |
32e4743cd157104f1e803bd22dabbd5b127de0b77cab4568f4f3eb544aae79a3
|
|
BLAKE2b-256 checksum How to use checksums |
b5181239c12f3f19d4a583710edc1a9fc857527dc609f957d8aa6bfce528d884
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl
| Download URL | within_py-0.4.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl |
|---|---|
| Size | 796.4 kB |
| Tags | PyPy 3.11 PyPy 3.11 7.3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
11ad049bb3f95cddf403a3e49d94fee65da813ddd2b6e2bbbe8c53aef9d480c1
|
|
BLAKE2b-256 checksum How to use checksums |
63bf004fab6a10f7e248310f1a72dc0ee2597ea6611a3b8e8377d3194639c378
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl
| Download URL | within_py-0.4.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl |
|---|---|
| Size | 822.1 kB |
| Tags | PyPy 3.11 PyPy 3.11 7.3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
389983245dd8651a08e7e7bdd604746dd5383e2c21f335243864c58cf5e230af
|
|
BLAKE2b-256 checksum How to use checksums |
886f72dcd72c1555164649578214c8c9ce660848e1c703aaa5198e5d138df1ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp314-cp314t-win_amd64.whl
| Download URL | within_py-0.4.0-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 743.2 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
59c6eafef09b4bcc8919d561d3b836cbd74dd74dc58759e343fdbd8db92d6269
|
|
BLAKE2b-256 checksum How to use checksums |
c0787d538df8507bc6dd7820513c86f678897ef376cef5291324a51d2890cc67
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | within_py-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
aad3d15f962f12d29ad5ac083b73ec0f44e8bab841e2710ecc4a3a851ac98fdc
|
|
BLAKE2b-256 checksum How to use checksums |
766aeaf4f3508001cf1b9fe4395e203d7e2e09baf838b0e21aeff021eb940f27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | within_py-0.4.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 858.3 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
1136b6183d2229745e07c8a6adfbc36d0d10e1b9675c2ab63819371b1f17850a
|
|
BLAKE2b-256 checksum How to use checksums |
a7a2fe82979bd1b3e6ce4d3094176abd5b999d59d932fee0006df4a07ba640ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | within_py-0.4.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 821.0 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
bd021a14f3c103e6bc863765a44c9ee2b1973c2145886dc39e8da1448abfca27
|
|
BLAKE2b-256 checksum How to use checksums |
ef9da9b3a9289a1a78347aed5cc74601fa327630c8548eea4d2c418cca7b1390
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | within_py-0.4.0-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 786.7 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
15a405ea354183573de84fcee52ba3bb5358e1bcdce14b549aedf0015cd91032
|
|
BLAKE2b-256 checksum How to use checksums |
45eac297a5d0af41f7e863bd2f3aab42e8548a39bb92036c7b99b8e5ae7d7eea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl
| Download URL | within_py-0.4.0-cp314-cp314t-macosx_10_12_x86_64.whl |
|---|---|
| Size | 819.9 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
51e37f6dcfc9cde004ec2e104d892be979a909ece7f5923587750a5a095024ba
|
|
BLAKE2b-256 checksum How to use checksums |
99948da7d3ee14f8ec440a400883dcfe9c04005906586211d9979d273a1ea17f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-win_arm64.whl
| Download URL | within_py-0.4.0-cp39-abi3-win_arm64.whl |
|---|---|
| Size | 700.2 kB |
| Tags | CPython 3.9 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
1cbb9d89487f545bb4ef929a0db7002b3eb5ba4aa25dad7427775e67708466fa
|
|
BLAKE2b-256 checksum How to use checksums |
19a57a083af17264c0083febfdf8bc467120aa7366b9c23fdb73f31cd72ddf65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-win_amd64.whl
| Download URL | within_py-0.4.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 753.6 kB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7f6879aa024666928ed39de81de3eb696234cd4d2f681a90c0ffc686a2305a12
|
|
BLAKE2b-256 checksum How to use checksums |
d6930f507fe0062c12d4c559877f2897d082adb56e518c5a8e4f58650955fe76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-win32.whl
| Download URL | within_py-0.4.0-cp39-abi3-win32.whl |
|---|---|
| Size | 659.2 kB |
| Tags | CPython 3.9 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
a693cca8f58ae16b41aeecc1983cdc19ef9c301477053a37315bffd301481dec
|
|
BLAKE2b-256 checksum How to use checksums |
e1068a9657ea74002f79032b64e0f66b481bec0634e62e9f03253f15c32daaa3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | within_py-0.4.0-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
7cfb5e15e10487549ad35a15a351cbb077e84d2dcfdd31cfe21cc7dd8c70a450
|
|
BLAKE2b-256 checksum How to use checksums |
5b98d7b15a3357594651470e8a68a38ebaca4cbed87ccc24b2f9ee6e4a5dd6ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-musllinux_1_2_i686.whl
| Download URL | within_py-0.4.0-cp39-abi3-musllinux_1_2_i686.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
23ac23db720df0cb7ae0e17945bbccd9c2d0908bc3bc1108d200216eeb7117d3
|
|
BLAKE2b-256 checksum How to use checksums |
648686092d94955d4e590e65173856ca47e3e0e82f443c0b617cec4bd3348820
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-musllinux_1_2_armv7l.whl
| Download URL | within_py-0.4.0-cp39-abi3-musllinux_1_2_armv7l.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
6adac5bb6a25ba1ebf67decdd7fde44e232717d990a0bc2e8b26ccc58d4c2047
|
|
BLAKE2b-256 checksum How to use checksums |
ef33666161104be41788f1acab27a7b74012cc1644cfec86ede9763eb29b86a1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | within_py-0.4.0-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
d01e3805ea27580439c30bccfd66667aeda7c237c22329a9b1e1ee1835c5e8ee
|
|
BLAKE2b-256 checksum How to use checksums |
b0a56aa96e88ca6d7b2a1dd74598d7a3f2db5593421dbbc8ba169474ffd70b06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | within_py-0.4.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 866.3 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
9293688e0bf521104bee06b906b6538bb1de811c98587dd15726753555823a77
|
|
BLAKE2b-256 checksum How to use checksums |
12dbdfad58f009d88e21a3c30ca0f152e31bdec4aad84527ae7f8e8c1fa3e7ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
| Download URL | within_py-0.4.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl |
|---|---|
| Size | 962.3 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ IBM System/390x abi3 |
|
SHA-256 checksum How to use checksums |
b8fb6123a731db284cd398f635fb5941031115a024ed4ddbf935cbc5f7ea2891
|
|
BLAKE2b-256 checksum How to use checksums |
c29818f007705892cfd6e566b326a0b1c0c8c99da96602afe448ac43eaf63124
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
| Download URL | within_py-0.4.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl |
|---|---|
| Size | 957.2 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ PowerPC 64-le abi3 |
|
SHA-256 checksum How to use checksums |
8803cb18ced8790f8399ac2ff83241d739b54e791abcbbf691d1d3fe9cd4fac8
|
|
BLAKE2b-256 checksum How to use checksums |
79a604bc27d6890d2e61f339cc8496eb0f6c3f330b14d1d0792073e2e6411ea3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
| Download URL | within_py-0.4.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl |
|---|---|
| Size | 847.6 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARMv7l abi3 |
|
SHA-256 checksum How to use checksums |
3e943c70884ec3ea87b51765fe03d6a3c0a06287c9e3662f1a80ac35c4a818ba
|
|
BLAKE2b-256 checksum How to use checksums |
6a3bd47df5c8b5c16f74d416045f2a57b52a7c3e91f85f0835338f4fc73d9f22
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | within_py-0.4.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 831.0 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
7a9c28dff5be025a0b45854dc6476a0eb5b6cbf22df27fe76c28814e2d88440a
|
|
BLAKE2b-256 checksum How to use checksums |
ef0c0e45a40db2bd2158a8480ebb3ef2a5a89b76be38101c2a36597617741f20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-manylinux_2_12_i686.manylinux2010_i686.whl
| Download URL | within_py-0.4.0-cp39-abi3-manylinux_2_12_i686.manylinux2010_i686.whl |
|---|---|
| Size | 887.1 kB |
| Tags | CPython 3.9 Linux glibc 2.12+ x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
a46a679afe3078bfd5167cf10cb8e24d0a301c0c9e942b1b3045f8b5575a48f6
|
|
BLAKE2b-256 checksum How to use checksums |
656263768705f79db4215960afca555b5e719274f4a4e35e8e1cd26df8dbe144
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | within_py-0.4.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 799.5 kB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b27e156547684523ddafca5f96a5555d7aa79634fc099015bca0b04908e7da1c
|
|
BLAKE2b-256 checksum How to use checksums |
948d3d5822079bf326db940d4284a00e092901e51c4d7083241293a59f011c62
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logRelease files / within_py-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | within_py-0.4.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 823.5 kB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
c6fc10dc1af40005f95f01f05949e76048d973a1c23e0d4ce74a910394b04e8c
|
|
BLAKE2b-256 checksum How to use checksums |
04215eba00d739714c31ca01f9a37c05f775e506dc30c3caa9fc7b5d92f132db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 9, 2026.
Transparency logSecurity for within-py 0.4.0
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.
Full provenance
All 27 files in this release have been uploaded with provenance metadata.
Attestation for within_py-0.4.0.tar.gz
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 Oct 9, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.