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 random numbers on every platform. The draws are then the same to rounding: they go through exp, log, sin and cos, whose last bits can differ between math libraries (by about 1e-16), and on one machine R and Python give identical draws. 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).

Compiling against coxdev's C++

coxdev's C++ is header-only, like Eigen or pybind11:

  • cpp/include/coxdev.h declares the classes, and includes their implementation from cpp/include/coxdev_impl.h;
  • every definition is inline, so any number of source files can include coxdev.h.

The Python package installs both headers, and coxdev.get_include() returns their directory, as numpy.get_include() does. Another package can then compile coxdev into its own extension:

  1. Add coxdev to [build-system] requires.

  2. Add coxdev.get_include(), and Eigen's headers (not part of coxdev's wheel), to the include path. In meson:

    coxdev_include = run_command(py, '-c', 'import coxdev; print(coxdev.get_include())',
                                 check : true).stdout().strip()
    
  3. #include <coxdev.h> where the classes are used.

Everything is in namespace coxdev: coxdev::CoxDeviance, coxdev::StratifiedCoxDeviance, coxdev::BaselineHazard, coxdev::Concordance and coxdev::concordance() (with its internals in coxdev::detail), and the header's macros start with COXDEV_, so it shares no global names with the code that includes it.

The code is compiled into the dependent package's own module, so it doesn't link against coxdev's. tests/test_get_include.py builds a two-file program this way.

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.4.1

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.4.1
File Size Uploaded Provenance
coxdev-0.4.1.tar.gz 4.3 MB Without provenance Details

Built distributions (wheels)

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

Total release size: 19.9 MB

Release files / coxdev-0.4.1.tar.gz

Download URL coxdev-0.4.1.tar.gz
Size 4.3 MB
Tags Source
SHA-256 checksum
How to use checksums
abf007e7fc117a18f0191cf7f3e6c0a89e68380ae67a1a0663611515a4979678
BLAKE2b-256 checksum
How to use checksums
8fdffa5f6d8b5e55608b4d6bab7d0a897ee87e488e94f41e0b7a18b8448ccaee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp314-cp314t-win_amd64.whl
Size 386.2 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
bd6c548cef87cb81e7498ab6014aadce38b50fc6d4b6d4e4b3f987f09b56a25b
BLAKE2b-256 checksum
How to use checksums
fd0a913881ed4c7f6d639465273aa0626dc248e02605a574f33779d7f583c7dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-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
cea869dd6a781381e4b8821303cf05f70e25d8e748ca04c98bdc8e4b074baaf4
BLAKE2b-256 checksum
How to use checksums
94a5880d0672d5955757834b2ff417be4e0580514efa33d19c9a75e2001b4254
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 277.5 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
de80f12873666336f96de579d3cb872b63848ba68be4ded90b30c56f7b6f31ff
BLAKE2b-256 checksum
How to use checksums
454a83b276ad4e09a8841aa8233be43ed2a47e1a8afdecd993f21b38c73d4a7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

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

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

Download URL coxdev-0.4.1-cp314-cp314-win_amd64.whl
Size 380.0 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
750fae0c6c2d9afa27a2a67cdaef87fbd9016fd7936790313f267fc4d2f0850c
BLAKE2b-256 checksum
How to use checksums
d0af395044fcbb32684573f8c6ddd58d1f88496d90e00690c05d0365bb3a8c59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-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
eb47c7873960ace6fa68aebd5cfc33eae9a46b7d4d2c8c9bbd2080344429e585
BLAKE2b-256 checksum
How to use checksums
14c4d72bf81f202e0c0579330f34ec709e1ba3a1845aae2d7239a9feaffb71c5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

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

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

Download URL coxdev-0.4.1-cp314-cp314-macosx_11_0_arm64.whl
Size 259.1 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dbbfa8812e47b1611e249ed7892ba3dd993a25c401eb1d03a7fdd4dc862614d9
BLAKE2b-256 checksum
How to use checksums
155c41edb1f4593dd40b17f17ef6295a45c72dcd89ec08fc0399c68f088d2985
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp313-cp313-win_amd64.whl
Size 370.2 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2496abec590d0af7f14584cce256a6cf5fa1e1c21380c22de96b9c37489a3ed6
BLAKE2b-256 checksum
How to use checksums
2538a76adc03ac33ce421987c9e64d2e79178d10b6445710295f48578977c8d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-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
8edba6219fa53b51229a531fc6156217f7d02b0a34e54a4df70ddf28b90e1a0d
BLAKE2b-256 checksum
How to use checksums
b2c5aeaa67ec697f91d16e2370480caabeba512dc60a2d425fea0d6301558a3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 275.8 kB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
81108fd0aa8559e0ce343e6e12330e45de0b5e272d6dda7f4f9bfd5ed5b1f3b6
BLAKE2b-256 checksum
How to use checksums
26baa930e76e5934b7a2e20e9a589e4d665208d47e7c298625845658a73f3ffa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Size 258.6 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
08a565abdb1ff5eb18f233b63f20b0d0649c794d7ef87747377442c5694d9595
BLAKE2b-256 checksum
How to use checksums
9d6d627c069ab965565a62d67958631f2e746b9aa608ece7d8e43f64188a4d33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp312-cp312-win_amd64.whl
Size 370.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b6e79f3dfba1ca494474fd40ab1971b4adde8d32cbb7d86a067e77b633802158
BLAKE2b-256 checksum
How to use checksums
c2c22ec9ac8c54e4066feab7fb0b42de3391384118c9402cf63101d443b5792a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-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
35b586846dd20d8c28e20c45a524c573ae95211c44e8e8ff5e3119e9b8cb9e81
BLAKE2b-256 checksum
How to use checksums
062489302489d109b6d9e4870c4a92814aaa7efea9b24058da1ffa3f1346915f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 275.7 kB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fbc3b0001f18d5aebd433345c39b33e7c0246888673c8820a07d7907ef3eb1c7
BLAKE2b-256 checksum
How to use checksums
ce732f6572c0e40052acb786e354afc212b49947817ba487836849ec33abf80b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Size 258.5 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1e92fd848c941ec027c3930195d3d390a5e0d7bc3a6c0e20357154dd26a6f1fa
BLAKE2b-256 checksum
How to use checksums
345576dbd9f7a2c5e02e5eb9fcd197486112c8a6491b90027103a265d7562ba1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp311-cp311-win_amd64.whl
Size 371.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
bcc4a856f3fddc881b75e44b99766565e638357b3e1d4acc8070ca2d35375ad1
BLAKE2b-256 checksum
How to use checksums
3e40999bf1c291b984e82509dc2b29b9922b19cd3b5c782f06b5ac9248a71225
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-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
c363f92d2a9177c39828b23b8349d82d5662e0603ac52b61e4c3edb2f644b0c1
BLAKE2b-256 checksum
How to use checksums
5b474768cadb2354049dca5936296fb2029d199557a0910a3365180d3a8edac1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 274.0 kB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
459fbf6f063c9f1731520ab506818d931d4ad7dd99e8bcc4b971311eab9c7217
BLAKE2b-256 checksum
How to use checksums
2af35a5a9241646a5672d51d82e99df703394afbb2d729e5d56eac77ad1e708e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Size 256.9 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
624cc5940d3c476df6a0fca17759efcb07efbd182ff772251626cbbe6bb9f886
BLAKE2b-256 checksum
How to use checksums
022240837229792d090bbb06f88ead75042c1d2b36dbee2abcde64fd8cba5a80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp310-cp310-win_amd64.whl
Size 370.3 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
5c623e6372e788910d523a346b35bd687dc29a1c677ce95bdd7d44b3081ca377
BLAKE2b-256 checksum
How to use checksums
0fa93cc27c648819e0081ea6065936654beefde37e0fa9c10cc28dd83c9f6a16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-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
096f64e5bb422a49978a051389b8150efdc18ecb9cc2f8a14da63e26f6ee066e
BLAKE2b-256 checksum
How to use checksums
eb6bd00c2d92715f630b38ebed53584fa38dac8d9befb44ecbd21c3ca9c592fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 273.2 kB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8749662360e6bdc40a2c46cfad38d5dda2ff110fac17daa3e2a06c69dd6aa2b3
BLAKE2b-256 checksum
How to use checksums
02e1c215010671eae888d1638fef9c999a6fde4479291beb41b5787fb56dc108
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
Size 255.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d81f4903b68ddd25fafdb51dd883f14b574ef62691982f02403a25fd4cd067fe
BLAKE2b-256 checksum
How to use checksums
3085095517cfa5bb31a74d10bda8af1bfdc17eb6bdb31d24bb8716980708097a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp39-cp39-win_amd64.whl
Size 365.6 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
195ba28b6721f0014da5b3b8f7148004ec252d388678973d79d287ca849213e1
BLAKE2b-256 checksum
How to use checksums
069148746a209bd2f03bd4b1e5c991a22361886bc636f42d5882b10b8990baf8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-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
3be69073b2e29af51e17b31e13af629baaf806056ee7b6282faf9d2d49186ae6
BLAKE2b-256 checksum
How to use checksums
f58e25fc77f4547ae6504d62f68ed19cba4733c59b4ec2926c3b0b7e11b9b17d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 273.4 kB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
05f6727ff1509ae6c324ee0056a68c1ae5fb7ece3225a01d3fa08feb97e24928
BLAKE2b-256 checksum
How to use checksums
fcbeb24326d83f4102e3f1fc7d663afd71059210ae5bba58a5b602050875cdf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

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

Download URL coxdev-0.4.1-cp39-cp39-macosx_11_0_arm64.whl
Size 255.9 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2576100bf0d8605136bb6b121e8448ac9d792665bc31041a33cfa643d39116fa
BLAKE2b-256 checksum
How to use checksums
40e213f877433d5078586c0b971e2c72320cc03aa0947118d18089a3b29372a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.13

Security for coxdev 0.4.1

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A 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.

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