Skip to main content

coxdev

A high-performance C++ for computing Cox proportional hazards model deviance, gradients, and Hessian information matrices. Built with Eigen for ease of use in R and Python, this library provides efficient survival analysis computations with support for different tie-breaking methods.

Features

  • High Performance: C++ implementation with Eigen linear algebra library
  • Comprehensive Support: Handles both Efron and Breslow tie-breaking methods
  • Left-Truncated Data: Support for left-truncated survival data
  • Efficient Computations: Optimized algorithms for deviance, gradient, and Hessian calculations
  • Memory Efficient: Uses linear operators for large-scale computations
  • Sampling the Score: Draws of the score from the fitted model (multinomial, Bernoulli or Fisher noncentral hypergeometric draws of the failures at each event time) or from its score residuals (a wild bootstrap), reproducible from a seed on every platform
  • Cross-Platform: Works on Linux, macOS, and Windows

Installation

Prerequisites

This package requires the Eigen C++ library headers. The Eigen library is included as a git submodule.

  1. Initialize Eigen submodule: The Eigen library is included as a git submodule. Make sure it's initialized:
    git submodule update --init --recursive
    

Standard Installation

pip install .

With Custom Eigen Path

If you have Eigen installed elsewhere, you can specify its location:

env EIGEN_LIBRARY_PATH=/path/to/eigen pip install .

Development Installation

pip install .[dev]
pip install -e . --no-build-isolation

Quick Start

import numpy as np
from coxdev import CoxDeviance

# Generate sample survival data
n_samples = 1000
event_times = np.random.exponential(1.0, n_samples)
status = np.random.binomial(1, 0.7, n_samples)  # 70% events, 30% censored
linear_predictor = np.random.normal(0, 1, n_samples)

# Create CoxDeviance object
coxdev = CoxDeviance(event=event_times, status=status, tie_breaking='efron')

# Compute deviance and related quantities
result = coxdev(linear_predictor)

print(f"Deviance: {result.deviance:.4f}")
print(f"Saturated log-likelihood: {result.loglik_sat:.4f}")
print(f"Gradient norm: {np.linalg.norm(result.gradient):.4f}")

R Package

The R package in R/coxdev runs the same C++ code, with the interface of the Python package. Install it from a clone of the repository:

R CMD INSTALL R/coxdev

or with remotes::install_github("jonathan-taylor/coxdev", subdir = "R/coxdev").

library(coxdev)
set.seed(1)
n <- 1000
X <- matrix(rnorm(n * 3), n, 3)
eta <- drop(X %*% c(0.5, -0.5, 0.25))
event <- rexp(n, exp(eta))
status <- rbinom(n, 1, 0.7)

cox <- CoxDeviance$new(event = event, status = status, tie_breaking = "efron")
# or with a Surv response: Surv(time, status) or Surv(start, stop, status),
# with strata from glmnet::stratifySurv() if set
cox <- CoxDeviance$new(survival::Surv(event, status), tie_breaking = "efron")

res <- cox$compute(eta)          # Python: coxdev(eta)
res$deviance                     # the objective
res$gradient                     # its gradient in eta
res$diag_hessian                 # the diagonal of its Hessian

I <- cox$information(eta)        # a matrix-free operator, never n x n
I %*% X                          # or I$multiply(X); t(X) %*% I also works
info_beta <- crossprod(X, I %*% X)

draws <- cox$sample_score(eta, method = "fisher", n_draws = 2000, seed = 1)
G <- rnorm(n)
w <- cox$wild_score(eta, G)
Python R
CoxDeviance(event=, status=, start=, strata=, sample_weight=, tie_breaking=) CoxDeviance$new(event =, status =, start =, strata =, sample_weight =, tie_breaking =)
CoxDeviance$new(Surv(...), strata =, sample_weight =, tie_breaking =)
coxdev(eta, sample_weight) cox$compute(eta, sample_weight)
coxdev.information(eta, sample_weight) (a LinearOperator) cox$information(eta, sample_weight) (a CoxInformation, with %*%, $multiply(), $diagonal(), $to_dense(), dim())
coxdev.sample_score(eta, sample_weight, method, n_draws, seed) cox$sample_score(eta, sample_weight, method, n_draws, seed)
coxdev.wild_score(eta, multipliers, sample_weight) cox$wild_score(eta, multipliers, sample_weight)
coxdev.score_residuals(eta, X, sample_weight) cox$score_residuals(eta, X, sample_weight)
coxdev.baseline_hazard(eta, sample_weight) (a BaselineHazard) cox$baseline_hazard(eta, sample_weight) (a data frame, with stratum labels as given)

The same seed gives the same draws from R and Python. In R, a seed is a whole number up to 2^53, or a string of digits for any seed below 2^64; with seed = NULL it is drawn from R's generator, so set.seed() makes the draws reproducible. Strata may be integers, a factor or character. %*% with the operator needs R 4.4.0 or later; $multiply() works on any version.

The C++ sources in R/coxdev/src and R/coxdev/inst/include are copies of those in cpp/, so that the R package is self-contained: after editing cpp/, run R/coxdev/tools/sync_cpp.sh (CI checks that the copies agree).

Notebooks

doc/using_coxdev.md (fitting by Newton's method with the information operator, robust standard errors, the baseline hazard and survival curves, and what keeping state saves) and doc/sampling.md (the methods of sample_score compared) are jupytext notebooks, with executed copies in doc/*.ipynb. The R package has the same two as vignettes.

Advanced Usage

Left-Truncated Data

# With start times (left-truncated data)
start_times = np.random.exponential(0.5, n_samples)
coxdev = CoxDeviance(
    event=event_times, 
    status=status, 
    start=start_times,
    tie_breaking='efron'
)

Computing Information Matrix

# Get information matrix as a linear operator
info_matrix = coxdev.information(linear_predictor)

# Matrix-vector multiplication
v = np.random.normal(0, 1, n_samples)
result_vector = info_matrix @ v

# For small problems, you can compute the full matrix
X = np.random.normal(0, 1, (n_samples, 10))
beta = np.random.normal(0, 1, 10)
eta = X @ beta

# Information matrix for coefficients: X^T @ I @ X
I = info_matrix @ X
information_matrix = X.T @ I

Sampling the Score

sample_score draws the score at a linear predictor. Each draw has one entry per observation, on the scale of the score -gradient / 2, so for a design X the vector X.T @ draw is a draw of the score of the coefficients. Ties, start times and strata are handled as for the deviance.

X = np.random.normal(0, 1, (n_samples, 3))
eta = X @ np.array([0.5, -0.5, 0.25])
coxdev = CoxDeviance(event=event_times, status=status, tie_breaking='efron')

# 2000 draws of the score of the coefficients
draws = X.T @ coxdev.sample_score(eta, method='multinomial', n_draws=2000, seed=1)

# their covariance is about the (Breslow) information: the ratios are near 1
I = coxdev.information(eta)
information_matrix = X.T @ (I @ X)
print(np.diag(np.cov(draws)) / np.diag(information_matrix))

The methods are:

method Draw Score of the draw Covariance
'multinomial' the d failures at each event time drawn with replacement from the risk set, with probabilities proportional to sample_weight * exp(eta) under Breslow's (1974) likelihood, of which this is the sampling model the Breslow information
'bernoulli' each subject at risk fails independently with probability min(1, d * p), a Cox-model analogue of the weird bootstrap (Andersen et al., 1993; Burr, 1994) Breslow's, with the number of failures drawn less than the information when ties are heavy
'fisher' the set of d failures at each event time drawn from Fisher's noncentral hypergeometric distribution (Harkness, 1965; Fog, 2008): independent Bernoullis given d failures, P(A) proportional to the product of exp(eta_j) over the set A under the exact discrete partial likelihood (Cox, 1972; Kalbfleisch and Prentice, 2002), of which this is the sampling model, centered at its exact mean the information of the exact likelihood
'wild' the score residuals of the observations times independent standard normals (Lin, Wei and Ying, 1993; Kline and Santos, 2012) of the likelihood set by tie_breaking (Breslow, 1974; Efron, 1977) the sandwich, the sum of the outer products of the score residuals (Lin and Wei, 1989)

Each model-based draw is the score of failures drawn from the model: at each event time, the sum over the failures of x_j minus their expected sum. For 'multinomial' and 'fisher' the draw is from the model whose likelihood gives the score, so every draw has mean exactly zero. For 'bernoulli' this holds only while d * p < 1 for every subject at risk: the cap min(1, d * p) biases it when ties are heavy. The methods differ only at tied event times: with one failure at each event time all three draw the same failure distribution. The model-based methods (all but 'wild') need equal positive weights and do not depend on tie_breaking. 'wild' does not rely on the model: its covariance is the sandwich, which is right even when the proportional hazards model is not.

'fisher' samples and centers with the elementary symmetric polynomials of the risk weights, computed on the log scale by the recursion of Gail, Lubin and Rubinstein (1981), the one used for the exact partial likelihood by R's survival package and SAS PROC PHREG. Each event time with d tied failures among m at risk costs O(m d) once, and O(m) per draw.

wild_score gives the wild draw for given multipliers: with multipliers G, X.T @ coxdev.wild_score(eta, G) is the sum over observations of G[i] times the score residual of observation i. With G all one it is the score.

References

  • Andersen, P. K., Borgan, Ø., Gill, R. D. and Keiding, N. (1993). Statistical Models Based on Counting Processes. Springer, New York.
  • Breslow, N. E. (1974). Covariance analysis of censored survival data. Biometrics, 30(1), 89–99.
  • Burr, D. (1994). A comparison of certain bootstrap confidence intervals in the Cox model. Journal of the American Statistical Association, 89(428), 1290–1302.
  • Cox, D. R. (1972). Regression models and life-tables (with discussion). Journal of the Royal Statistical Society, Series B, 34(2), 187–220.
  • Efron, B. (1977). The efficiency of Cox's likelihood function for censored data. Journal of the American Statistical Association, 72(359), 557–565.
  • Fog, A. (2008). Sampling methods for Wallenius' and Fisher's noncentral hypergeometric distributions. Communications in Statistics: Simulation and Computation, 37(2), 241–257.
  • Gail, M. H., Lubin, J. H. and Rubinstein, L. V. (1981). Likelihood calculations for matched case-control studies and survival studies with tied death times. Biometrika, 68(3), 703–707.
  • Harkness, W. L. (1965). Properties of the extended hypergeometric distribution. The Annals of Mathematical Statistics, 36(3), 938–945.
  • Kalbfleisch, J. D. and Prentice, R. L. (2002). The Statistical Analysis of Failure Time Data, 2nd edition. Wiley, Hoboken, NJ.
  • Kline, P. and Santos, A. (2012). A score based approach to wild bootstrap inference. Journal of Econometric Methods, 1(1), 23–41.
  • Lin, D. Y. and Wei, L. J. (1989). The robust inference for the Cox proportional hazards model. Journal of the American Statistical Association, 84(408), 1074–1078.
  • Lin, D. Y., Wei, L. J. and Ying, Z. (1993). Checking the Cox model with cumulative sums of martingale-based residuals. Biometrika, 80(3), 557–572.

The random numbers come from the C++ code, from the bits of std::mt19937_64, so the same seed gives the same draws on every platform. With seed=None, a fresh seed is drawn.

Score Residuals and the Baseline Hazard

# the score residuals of a design: row i is observation i's contribution
# to the score of the coefficients
U = coxdev.score_residuals(eta, X)
I = X.T @ (coxdev.information(eta) @ X)
robust_cov = np.linalg.solve(I, np.linalg.solve(I, U.T @ U).T)   # the sandwich

# Breslow's (or, with Efron's ties, Efron's) baseline hazard, for eta as given
H = coxdev.baseline_hazard(eta)
H.time, H.hazard, H.cumulative_hazard, H.stratum

The cumulative hazard of observation i at time t is the cumulative_hazard at the last failure time <= t (in its stratum) times exp(eta[i]). Both agree with R's survival (residuals(fit, type = "score"), which is per unit weight, and basehaz(fit, centered = FALSE)).

Schoenfeld Residuals and Expected Survival at Exit

# Schoenfeld residuals: for each failure, x_i less the mean of x over its
# risk set; zero rows for the observations that do not fail
R = coxdev.schoenfeld_residuals(eta, X)

# the expected number of events of each observation over (start, event],
# and the probability of surviving to event, given survival to start
E = coxdev.expected_events(eta)
S = coxdev.survival_at_exit(eta)          # exp(-E)
martingale = status - E

The Schoenfeld residual of a failure is its covariates less their mean over its risk set, with weights sample_weight * exp(eta) (Schoenfeld, 1982). With Efron's ties the mean is the average over the tied failures of their Efron means, as in R's survival. Weighted by sample_weight, they sum to the score. Plotted against time, or against a function of time, they check the proportional hazards assumption (Grambsch and Therneau, 1994; Therneau and Grambsch, 2000, Chapter 6). As for the score residuals, the C++ takes one covariate, an n-vector, at a time, and schoenfeld_residuals loops over the columns of X, dense or sparse.

risk_set_variance(eta, Z) gives, for each failure, the variance of each column of Z over its risk set, the V_z by which Grambsch and Therneau (1994) scale the Schoenfeld residuals: for one covariate, beta + r / V_z has mean about beta(t) at the failure time t. Weighted by sample_weight, the variances sum to the diagonal of the information. The covariance of two columns follows by polarization, (V(y + z) - V(y - z)) / 4.

The expected number of events of observation i is exp(eta[i]) times the increase of the baseline cumulative hazard (Breslow, 1972) over (start[i], event[i]], with Efron's share at a tied failure time for the failures there. status - E is the martingale residual (Barlow and Prentice, 1988; Therneau, Grambsch and Fleming, 1990), and exp(-E) the expected survival probability at exit (Therneau and Grambsch, 2000, Chapter 4). These agree with R's survival: residuals(fit, type = "schoenfeld") (which has the rows of the failures only, in order of failure time), predict(fit, type = "expected"), residuals(fit, type = "martingale") and predict(fit, type = "survival").

References

  • Barlow, W. E. and Prentice, R. L. (1988). Residuals for relative risk regression. Biometrika, 75(1), 65–74.
  • Breslow, N. E. (1972). Discussion of Professor Cox's paper. Journal of the Royal Statistical Society, Series B, 34(2), 216–217.
  • Grambsch, P. M. and Therneau, T. M. (1994). Proportional hazards tests and diagnostics based on weighted residuals. Biometrika, 81(3), 515–526.
  • Schoenfeld, D. (1982). Partial residuals for the proportional hazards regression model. Biometrika, 69(1), 239–241.
  • Therneau, T. M. and Grambsch, P. M. (2000). Modeling Survival Data: Extending the Cox Model. Springer, New York.
  • Therneau, T. M., Grambsch, P. M. and Fleming, T. R. (1990). Martingale-based residuals for survival models. Biometrika, 77(1), 147–160.

The C-index

C = coxdev.c_index(eta)          # Harrell's concordance index

Harrell's concordance index (Harrell et al., 1982; Harrell, Lee and Mark, 1996): for each failure i at time t, every j at risk at t is compared with it, except the other failures at t; the pair has weight w_i * w_j, is concordant if eta[i] > eta[j], and counts half if they are tied. With strata, only pairs within a stratum are compared. It is R's survival::concordance(y ~ -eta, weights = w) and, without strata, glmnet::Cindex. A two-dimensional eta gives one C-index per column.

It takes O(n log n), by the algorithm of the survival package's concordance vignette (Therneau and Atkinson): the subjects in decreasing time, with the weights of the risk set in a Fenwick tree (Fenwick, 1994) over the ranks of the predictor, counting the ordered pairs as Knight (1966) does for Kendall's tau.

References

  • Fenwick, P. M. (1994). A new data structure for cumulative frequency tables. Software: Practice and Experience, 24(3), 327–336.
  • Harrell, F. E., Califf, R. M., Pryor, D. B., Lee, K. L. and Rosati, R. A. (1982). Evaluating the yield of medical tests. JAMA, 247(18), 2543–2546.
  • Harrell, F. E., Lee, K. L. and Mark, D. B. (1996). Multivariable prognostic models: issues in developing models, evaluating assumptions and adequacy, and measuring and reducing errors. Statistics in Medicine, 15(4), 361–387.
  • Knight, W. R. (1966). A computer method for calculating Kendall's tau with ungrouped data. Journal of the American Statistical Association, 61(314), 436–439.
  • Therneau, T. M. and Atkinson, E. J. The concordance statistic. Vignette of the R package survival.

Different Tie-Breaking Methods

# Efron's method (default)
coxdev_efron = CoxDeviance(event=event_times, status=status, tie_breaking='efron')

# Breslow's method
coxdev_breslow = CoxDeviance(event=event_times, status=status, tie_breaking='breslow')

API Reference

CoxDeviance

The main class for computing Cox model quantities.

Parameters

  • event: Event times (failure times) for each observation
  • status: Event indicators (1 for event occurred, 0 for censored)
  • start: Start times for left-truncated data (optional)
  • strata: Stratum labels (optional): integers, strings or any sortable values; baseline_hazard reports each stratum by its label
  • tie_breaking: Method for handling tied event times ('efron' or 'breslow')

Methods

  • __call__(linear_predictor, sample_weight=None): Compute deviance and related quantities
  • information(linear_predictor, sample_weight=None): Get information matrix as linear operator
  • sample_score(linear_predictor, sample_weight=None, method='multinomial', n_draws=None, seed=None): Draws of the score, one entry per observation: a vector if n_draws is None, else an (n, n_draws) array. See Sampling the Score
  • wild_score(linear_predictor, multipliers, sample_weight=None): The wild draw of the score for given multipliers
  • score_residuals(linear_predictor, X, sample_weight=None): The (n, p) score residuals of a design X
  • baseline_hazard(linear_predictor, sample_weight=None): The baseline hazard, a BaselineHazard with time, hazard, cumulative_hazard and stratum
  • schoenfeld_residuals(linear_predictor, X, sample_weight=None): The (n, p) Schoenfeld residuals of a design X, zero for the observations that do not fail
  • risk_set_variance(linear_predictor, Z, sample_weight=None): The (n, p) risk-set variances of the columns of Z at each failure, zero for the observations that do not fail
  • c_index(linear_predictor, sample_weight=None): Harrell's concordance index (C-index) of a linear predictor, or one per column
  • expected_events(linear_predictor, sample_weight=None): The expected number of events of each observation over (start, event]
  • survival_at_exit(linear_predictor, sample_weight=None): The expected survival probability of each observation at its exit, exp(-expected_events)

CoxDevianceResult

Result object containing computation results.

Attributes

  • linear_predictor: The linear predictor values used
  • sample_weight: Sample weights used
  • loglik_sat: Saturated log-likelihood value
  • deviance: Computed deviance value
  • gradient: Gradient of deviance with respect to linear predictor
  • diag_hessian: Diagonal of Hessian matrix

Performance

The library is optimized for performance:

  • C++ Implementation: Core computations in C++ with Eigen
  • Memory Efficient: Reuses buffers and uses linear operators
  • Vectorized Operations: Leverages Eigen's optimized linear algebra
  • Minimal Python Overhead: Heavy computations done in C++

Building from Source

Prerequisites

  • C++ compiler with C++17 support
  • Eigen library headers
  • For Python library: Python >= 3.9 + pybind11

C++ API

The Python package (and the R package in R/coxdev) wrap the C++ classes CoxDeviance and StratifiedCoxDeviance in cpp/include/coxdev.h. After compute_deviance(eta, weights), besides the gradient, the diagonal of the Hessian, products with the information and draws of the score, they give:

  • score_residuals(x): for one covariate x (an n-vector), the n-vector of score residuals, each observation's contribution to the score x^T (-gradient / 2), centered within each risk set (with Efron's weights for ties if efron). They are linear in x, with wild_score the adjoint: G^T score_residuals(x) is x^T wild_score(G). The C++ never sees a design: applied to each column of X they give the n x p matrix U, whose crossproduct U^T U is the middle of the robust (sandwich) variance (Lin and Wei, 1989).
  • baseline_hazard(): the estimate of the baseline hazard, Breslow's (1972) or, with Efron's ties, Efron's (1977), at each distinct failure time (within each stratum): its increments and cumulative sum, for the linear predictor as given, so that the cumulative hazard of observation i at time t is cumulative_hazard(t) * exp(eta_i).

cpp/tests has tests of these against direct computations:

c++ -std=c++17 -O2 -Ieigen -Icpp/include cpp/src/coxdev.cpp cpp/tests/test_residuals_hazard.cpp -o test_residuals_hazard
./test_residuals_hazard

Testing

Most of the tests compare coxdev with R's survival and glmnet packages, through rpy2. If rpy2, R or those packages are missing, those tests are skipped and the run still passes, so check the summary for skipped tests.

Running the full test suite in a fresh environment

  1. Install R (4.x), and in it survival and glmnet 5.0 or later (the tests use glmnet::coxnet.deviance and glmnet:::coxgrad with cox.ties):

    Rscript -e 'install.packages(c("survival", "glmnet"), repos = "https://cloud.r-project.org")'
    Rscript -e 'packageVersion("glmnet")'   # 5.0 or later
    
  2. Clone the repository with its Eigen submodule, and make a new virtual environment:

    git clone --recurse-submodules https://github.com/jonathan-taylor/coxdev.git
    cd coxdev
    python -m venv .venv
    source .venv/bin/activate          # on Windows: .venv\Scripts\activate
    python -m pip install --upgrade pip
    

    (In an existing clone without the submodule, run git submodule update --init --recursive.)

  3. Build and install coxdev (this needs a C++17 compiler), with the test dependencies and rpy2:

    pip install ".[test]" rpy2
    
  4. Check that rpy2 finds R and the two packages:

    python -c "from rpy2.robjects.packages import importr; importr('survival'); importr('glmnet'); print('R is ready')"
    
    • If rpy2 first prints Error importing in API mode ... Trying to import in ABI mode, its compiled interface was built for another version of R. ABI mode works; export RPY2_CFFI_MODE=ABI skips the attempt and the message.
    • If rpy2 cannot find R, set R_HOME: export R_HOME=$(R RHOME).
  5. From the top of the repository, run the tests, reporting any skipped:

    python -m pytest tests -rs
    

    It takes a couple of minutes, and should end with every test passed and none skipped.

For a quick check, --test-size N runs a random sample of N of the (many) parametrized cases in each of the large comparison files:

python -m pytest tests -rs --test-size 50

Testing the R package

The R package has its own tests, against survival and glmnet, and tests/test_R_package.py checks that the R and Python packages agree (results, information and draws for the same seed). With the R package installed (R CMD INSTALL R/coxdev, which needs Rcpp, RcppEigen and R6, plus testthat for its tests):

Rscript -e 'testthat::test_local("R/coxdev")'
python -m pytest tests/test_R_package.py -rs

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Ensure all tests pass
  6. Submit a pull request

License

This project is licensed under the BSD-3-Clause License - see the LICENSE file for details.

Citation

If you use this library in your research, please cite:

@software{coxdev2024,
  title={coxdev: High-performance Cox proportional hazards deviance computation},
  author={Taylor, Jonathan and Hastie, Trevor and Narasimhan, Balasubramanian},
  year={2024},
  url={https://github.com/jonathan-taylor/coxdev}
}

Acknowledgments

  • Built with Eigen for efficient linear algebra
  • Uses pybind11 for Python bindings
  • Inspired by the R glmnet package for survival analysis

Metadata

Release files for coxdev 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for coxdev 0.3.0
File Size Uploaded
coxdev-0.3.0.tar.gz 3.7 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for coxdev 0.3.0
File
coxdev-0.3.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
coxdev-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
coxdev-0.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
coxdev-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
coxdev-0.3.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
coxdev-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
coxdev-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
coxdev-0.3.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
coxdev-0.3.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
coxdev-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
coxdev-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
coxdev-0.3.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
coxdev-0.3.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
coxdev-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
coxdev-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
coxdev-0.3.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
coxdev-0.3.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
coxdev-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
coxdev-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
coxdev-0.3.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
coxdev-0.3.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
coxdev-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
coxdev-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
coxdev-0.3.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
coxdev-0.3.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
coxdev-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
coxdev-0.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
coxdev-0.3.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details

Total release size: 18.0 MB

Release files / coxdev-0.3.0.tar.gz

Download URL coxdev-0.3.0.tar.gz
Size 3.7 MB
Tags Source
SHA-256 checksum
How to use checksums
e6c4443e14ff9008db3091e155f9b9aa539baa66019606cc2e262cfae0772cde
BLAKE2b-256 checksum
How to use checksums
fc5cdbba5c87314995f26585157c273d897bb52c1919615307ea7eee5cf2200c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314t-win_amd64.whl

Download URL coxdev-0.3.0-cp314-cp314t-win_amd64.whl
Size 279.9 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
3572e87d81b2f2d73c7817f9d204ebb56f93aa0153f2348f94f7b5429e1198f3
BLAKE2b-256 checksum
How to use checksums
142027099b526d06017cb46f2c8c6ce0d3783bdc8116356d97cf3aa16cdd3858
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL coxdev-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
bdd6b7a4d8b7f53a148eef4f1a56c72198f0010964c8a37a52068764382b0f6b
BLAKE2b-256 checksum
How to use checksums
ce41bf053aca5e87cb4cbd419f43908fd5f358460b21438d7970cc82af8d2be7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coxdev-0.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 251.8 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
57184981b180a5dcc1aab62e1a7afb21a6b152ed7a5174aaf47b985c65f94870
BLAKE2b-256 checksum
How to use checksums
a2ff55164dc705d8e9b22cc1fac844d1ce50758168b63168e80c81b6d1732058
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL coxdev-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 231.3 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c2ebe6f4013f8f69e0f685c39bcbb7b227a1513713195407ec5d0e2e72d8934c
BLAKE2b-256 checksum
How to use checksums
ecc7b073f1b1df28ca14ef63018c55a78dae66a4f5225bde57006bf56673cc56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314-win_amd64.whl

Download URL coxdev-0.3.0-cp314-cp314-win_amd64.whl
Size 278.8 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
c883c68349119152fafb1dc0dff876c9cb4091bdcd1a8ce2b58adfa9ca962030
BLAKE2b-256 checksum
How to use checksums
e6aaa09ea908cf49c408f8d0cc975bad5a2e80bebc9d2ee5a8e754efd8d68d5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL coxdev-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
dea4960872e9ab53fe4cd76f70b9debd056c9cee10bd2ce6ced23a0645930833
BLAKE2b-256 checksum
How to use checksums
b4fa2cf3bb48c2b398b904a575586ad6458b68d5384314a31d95ff310387d6a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coxdev-0.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 250.3 kB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e1b7355dabce4ae73e29e35a9760aa9b49033b3a9f7f85a51c2dca1e66688b83
BLAKE2b-256 checksum
How to use checksums
c32268e902fc408d89d91231ec12cbf7674a080a362505917970d472aeadc596
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL coxdev-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Size 221.5 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6e046a92b5a89a7f4c1a6ff209315fa13cddcb39514a82775cbc72ac55ba5821
BLAKE2b-256 checksum
How to use checksums
ebdb2ff458e4cca23fd84f8d38c8dddb5e484f4e81d55f79dfce700307e95138
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp313-cp313-win_amd64.whl

Download URL coxdev-0.3.0-cp313-cp313-win_amd64.whl
Size 272.8 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
e9a47caa489b2bbbdf4ce904827f134d71a12d0e78aa49ec88e69564e3b6dba4
BLAKE2b-256 checksum
How to use checksums
b967588ef2fee9a995bc4e1108f54c00ac9699814f098509442a8a24a2896227
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL coxdev-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
73d2e5720613149f37858527e3dcef3a32c89719afc4a7a9fe1b5e3ff64157e2
BLAKE2b-256 checksum
How to use checksums
27f43a915198f0f793abc2fa2a73e1922ce9ccaae82d2d713a1579aa9539beeb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coxdev-0.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 250.2 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4bb874f4b2131a4516a03b661a8da7b14ac5f41fb28cacbc599dda3dd7e66599
BLAKE2b-256 checksum
How to use checksums
1430ef5658278ac5eed06c82cc094ace3c8159c5e72f517e128289110c5f926b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL coxdev-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Size 221.2 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f3e0a63fe00bc709c1bcac99325ce6f9dda0c8cc2f043b6fb4ad0b8d7b319273
BLAKE2b-256 checksum
How to use checksums
71616b90dcd04fd4bd7449ae159ace6eaf69bde469fb735f8fb817ac1790423c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp312-cp312-win_amd64.whl

Download URL coxdev-0.3.0-cp312-cp312-win_amd64.whl
Size 272.6 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
06bfd765e896a1caec5b56d04cbc779e0f8401223d2170c30d22c7f045c91b0f
BLAKE2b-256 checksum
How to use checksums
8be784a5f109bd5c67ddb558dea13cf4805fd7ee72636ac6d49def9430a3db3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL coxdev-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6d8148d04e0973ae2bbd09110a317696cd4226449fa1e5a572fdacbdd0ed159a
BLAKE2b-256 checksum
How to use checksums
0ee45e14ac63c5b746606d20f4b46b33c8b146b4cba5bfc74fdf950308c3d759
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coxdev-0.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 250.2 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5fa18bbe1366d74c35c271e866c8788931d3d311f2fe71b73d60b547a7e27959
BLAKE2b-256 checksum
How to use checksums
00a58185e61745955e95ed5a14f077a1c29e8d035c48f4670252e51ce4954549
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL coxdev-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Size 221.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ca979ceb6401f6b83ce5844c5e48550920e1d3eb3dbdb629cad354f7da3de460
BLAKE2b-256 checksum
How to use checksums
fccad6e8a732c474c25b76fadded8683b6855247a0e6c62a44797311efb3300b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp311-cp311-win_amd64.whl

Download URL coxdev-0.3.0-cp311-cp311-win_amd64.whl
Size 270.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
fa24cda7764c0ce51ff645f0cc6f8f4d9ba6df6ffdf4a1f58b5f2190200b4b0d
BLAKE2b-256 checksum
How to use checksums
0ad4d483e7b4cc75c3532cf3c1b501efe035e305c79426166eb4b2ec73131382
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL coxdev-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
44a79215616fefe9898e171d329b9e52678ec3908a4e6215c924c1a26b3b510f
BLAKE2b-256 checksum
How to use checksums
fd557c715ea6b30014699493b9530112327b17a5103743c884ee3e975f05fe29
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coxdev-0.3.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 248.6 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
795a4e309005e07b6fb3bd05b4077a87fb79eeb636c6ee7addccd111ce13fb77
BLAKE2b-256 checksum
How to use checksums
f59fbdb44de78aa759178da7505ed3cb92f3fe01e65f37f9de7d11641bb83e8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL coxdev-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Size 219.8 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7795276b23693c45b37cbc34ba1e77860d175ba0094d3513c099020d508898f9
BLAKE2b-256 checksum
How to use checksums
5af6114bbd6d70e0354251c7cbdbb09db3524e541b4a9547f0d6f7e66c556a6c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp310-cp310-win_amd64.whl

Download URL coxdev-0.3.0-cp310-cp310-win_amd64.whl
Size 268.8 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
5c70de0733819a2023b72cf9a224d0c606d74f43a312641acd4f24adbf6a8979
BLAKE2b-256 checksum
How to use checksums
b939d6ad3a4e9f4474e1a17b7d87a8c3252962e7ef5ede68c275f1302be3a0d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL coxdev-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
d6f18c670f9a86d807b36d59bd74249174e783223705033aa6c822606ee2ed10
BLAKE2b-256 checksum
How to use checksums
f9955f69bd9d655624f08092652cb4f6bbf1c51eace6ca4806faa2a37581bd24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coxdev-0.3.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 247.8 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
44b390e252ebc2ef29e3e220c0ac620205ccd4955c9444874ca897e238b39f9d
BLAKE2b-256 checksum
How to use checksums
732879a8c8a5d4a4422238cad09357199092394e865c30dec3ffe1bc6fe4a9ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL coxdev-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Size 218.7 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
552ca00caf51b40def1999c31eeb89f18e55e47148bb51cd7ee936db3b1bc233
BLAKE2b-256 checksum
How to use checksums
7ca18121d08c59ba62c4b0b3c9a5db58d6d2bc1cfb5e2119c26c9694c3bc408b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp39-cp39-win_amd64.whl

Download URL coxdev-0.3.0-cp39-cp39-win_amd64.whl
Size 269.4 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
7324f994e386cf7dce19cdc15a70934c320a3defcb892ec1b311a793bf48f77f
BLAKE2b-256 checksum
How to use checksums
aaf742f4dc1381d1ee84855e13914077b6a6e54a52751b43c32bb03501bdd1de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL coxdev-0.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
Size 1.3 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
6d3a935e2d9c0b63cee33b82fa99143d231be4f156cdc114a560dee8cc0a58fb
BLAKE2b-256 checksum
How to use checksums
e0c134e6434e713261a3f65ac303767166387915eb3653b7c2aba40bb91b3015
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL coxdev-0.3.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 248.0 kB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4e51851e98f6068bdb460ed617f7cfd5459f4e661f43a54e20c80d48f48a9cab
BLAKE2b-256 checksum
How to use checksums
99d66f9e7b4c9d5ebd01ddfe83038f2563bc6e8198ca3e2747256f5c6d935e2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release files / coxdev-0.3.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL coxdev-0.3.0-cp39-cp39-macosx_11_0_arm64.whl
Size 218.8 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6ccde44800231c405e7163cd5cbd6aa5d38c55e9b3583f6f61f692786185c063
BLAKE2b-256 checksum
How to use checksums
828d5dde1350393eaa696d11dc3a96b33a303061c362ff7dbfa04d7d6b6fde23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.3.0 This release

29 release files

0.2.0

29 release files

0.1.8

29 release files

0.1.6

29 release files

0.1.5

29 release files

0.1.4

26 release files

0.1.3

26 release files

0.1.2

2 release files

0.1.1

1 release file

0.1.0

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