Skip to main content

Eigency

PyPI version PEP 517 pip wheel setup.py pre-commit

Eigency is a Cython interface between Numpy arrays and Matrix/Array objects from the Eigen C++ library. It is intended to simplify the process of writing C++ extensions using the Eigen library. Eigency is designed to reuse the underlying storage of the arrays when passing data back and forth, and will thus avoid making unnecessary copies whenever possible. Only in cases where copies are explicitly requested by your C++ code will they be made.

Versioning

Eigency uses a 4-number version (N.N.N.N) where the first 3 parts correspond to the embedded Eigen library version. The last part is a revision number of Eigency itself.

Installing

Eigency is packaged as a source distribution (sdist) and available on PyPi. It can be easily installed using pip:

python -m pip install eigency

Requirement: pip >= 18.0

If your pip is too old, then upgrade it using:

python -m pip install --upgrade pip

Contributing

For instructions on building and/or packaging Eigency from source, see the contributing guide here.

Usage

Below is a description of a range of common usage scenarios. A full working example of both setup and these different use cases is available in the test directory distributed with the this package.

Setup

To import eigency functionality, add the following to your .pyx file:

from eigency.core cimport *

In addition, in the setup.py file, the include directories must be set up to include the eigency includes. This can be done by calling the get_includes function in the eigency module:

import eigency
...
extensions = [
    Extension("module-dir-name/module-name", ["module-dir-name/module-name.pyx"],
              include_dirs = [".", "module-dir-name"] + eigency.get_includes()
              ),
]

Eigency includes a version of the Eigen library, and the get_includes function will include the path to this directory. If you have your own version of Eigen, just set the include_eigen option to False, and add your own path instead:

    include_dirs = [".", "module-dir-name", 'path-to-own-eigen'] + eigency.get_includes(include_eigen=False)

From Numpy to Eigen

Assume we are writing a Cython interface to the following C++ function:

void function_w_mat_arg(const Eigen::Map<Eigen::MatrixXd> &mat) {
    std::cout << mat << "\n";
}

Note that we use Eigen::Map to ensure that we can reuse the storage of the numpy array, thus avoiding making a copy. Assuming the C++ code is in a file called functions.h, the corresponding .pyx entry could look like this:

cdef extern from "functions.h":
     cdef void _function_w_mat_arg "function_w_mat_arg"(Map[MatrixXd] &)

# This will be exposed to Python
def function_w_mat_arg(np.ndarray array):
    return _function_w_mat_arg(Map[MatrixXd](array))

The last line contains the actual conversion. Map is an Eigency type that derives from the real Eigen map, and will take care of the conversion from the numpy array to the corresponding Eigen type.

We can now call the C++ function directly from Python:

>>> import numpy as np
>>> import eigency_tests
>>> x = np.array([[1.1, 2.2], [3.3, 4.4]])
>>> eigency_tests.function_w_mat_arg(x)
1.1 3.3
2.2 4.4

(if you are wondering about why the matrix is transposed, please see the Storage layout section below).

Types matter

The basic idea behind eigency is to share the underlying representation of a numpy array between Python and C++. This means that somewhere in the process, we need to make explicit which numerical types we are dealing with. In the function above, we specify that we expect an Eigen MatrixXd, which means that the numpy array must also contain double (i.e. float64) values. If we instead provide a numpy array of ints, we will get strange results.

>>> import numpy as np
>>> import eigency_tests
>>> x = np.array([[1, 2], [3, 4]])
>>> eigency_tests.function_w_mat_arg(x)
4.94066e-324  1.4822e-323
9.88131e-324 1.97626e-323

This is because we are explicitly asking C++ to interpret out python integer values as floats.

To avoid this type of error, you can force your cython function to accept only numpy arrays of a specific type:

cdef extern from "functions.h":
     cdef void _function_w_mat_arg "function_w_mat_arg"(Map[MatrixXd] &)

# This will be exposed to Python
def function_w_mat_arg(np.ndarray[np.float64_t, ndim=2] array):
    return _function_w_mat_arg(Map[MatrixXd](array))

(Note that when using this technique to select the type, you also need to specify the dimensions of the array (this will default to 1)). Using this new definition, users will get an error when passing arrays of the wrong type:

>>> import numpy as np
>>> import eigency_tests
>>> x = np.array([[1, 2], [3, 4]])
>>> eigency_tests.function_w_mat_arg(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "eigency_tests/eigency_tests.pyx", line 87, in eigency_tests.eigency_tests.function_w_mat_arg
ValueError: Buffer dtype mismatch, expected 'float64_t' but got 'long'

Since it avoids many surprises, it is strongly recommended to use this technique to specify the full types of numpy arrays in your cython code whenever possible.

Writing Eigen Map types in Cython

Since Cython does not support nested fused types, you cannot write types like Map[Matrix[double, 2, 2]]. In most cases, you won't need to, since you can just use Eigens convenience typedefs, such as Map[VectorXd]. If you need the additional flexibility of the full specification, you can use the FlattenedMap type, where all type arguments can be specified at top level, for instance FlattenedMap[Matrix, double, _2, _3] or FlattenedMap[Matrix, double, _2, Dynamic]. Note that dimensions must be prefixed with an underscore.

Using full specifications of the Eigen types, the previous example would look like this:

cdef extern from "functions.h":
     cdef void _function_w_mat_arg "function_w_mat_arg" (FlattenedMap[Matrix, double, Dynamic, Dynamic] &)

# This will be exposed to Python
def function_w_mat_arg(np.ndarray[np.float64_t, ndim=2] array):
    return _function_w_mat_arg(FlattenedMap[Matrix, double, Dynamic, Dynamic](array))

FlattenedType takes four template parameters: arraytype, scalartype, rows and cols. Eigen supports a few other template arguments for setting the storage layout and Map strides. Since cython does not support default template arguments for fused types, we have instead defined separate types for this purpose. These are called FlattenedMapWithOrder and FlattenedMapWithStride with five and eight template arguments, respectively. For details on their use, see the section about storage layout below.

From Numpy to Eigen (insisting on a copy)

Eigency will not complain if the C++ function you interface with does not take a Eigen Map object, but instead a regular Eigen Matrix or Array. However, in such cases, a copy will be made. Actually, the procedure is exactly the same as above. In the .pyx file, you still define everything exactly the same way as for the Map case described above.

For instance, given the following C++ function:

void function_w_vec_arg_no_map(const Eigen::VectorXd &vec);

The Cython definitions would still look like this:

cdef extern from "functions.h":
     cdef void _function_w_vec_arg_no_map "function_w_vec_arg_no_map"(Map[VectorXd] &)

# This will be exposed to Python
def function_w_vec_arg_no_map(np.ndarray[np.float64_t] array):
    return _function_w_vec_arg_no_map(Map[VectorXd](array))

Cython will not mind the fact that the argument type in the extern declaration (a Map type) differs from the actual one in the .h file, as long as one can be assigned to the other. Since Map objects can be assigned to their corresponding Matrix/Array types this works seemlessly. But keep in mind that this assignment will make a copy of the underlying data.

Eigen to Numpy

C++ functions returning a reference to an Eigen Matrix/Array can also be transferred to numpy arrays without copying their content. Assume we have a class with a single getter function that returns an Eigen matrix member:

class MyClass {
public:
    MyClass():
        matrix(Eigen::Matrix3d::Constant(3.)) {
    }
    Eigen::MatrixXd &get_matrix() {
        return this->matrix;
    }
private:
    Eigen::Matrix3d matrix;
};

The Cython C++ class interface is specified as usual:

     cdef cppclass _MyClass "MyClass":
         _MyClass "MyClass"() except +
         Matrix3d &get_matrix()

And the corresponding Python wrapper:

cdef class MyClass:
    cdef _MyClass *thisptr;

    def __cinit__(self):
        self.thisptr = new _MyClass()

    def __dealloc__(self):
        del self.thisptr

    def get_matrix(self):
        return ndarray(self.thisptr.get_matrix())

This last line contains the actual conversion. Again, eigency has its own version of ndarray, that will take care of the conversion for you.

Due to limitations in Cython, Eigency cannot deal with full Matrix/Array template specifications as return types (e.g. Matrix[double, 4, 2]). However, as a workaround, you can use PlainObjectBase as a return type in such cases (or in all cases if you prefer):

         PlainObjectBase &get_matrix()

Overriding default behavior

The ndarray conversion type specifier will attempt do guess whether you want a copy or a view, depending on the return type. Most of the time, this is probably what you want. However, there might be cases where you want to override this behavior. For instance, functions returning const references will result in a copy of the array, since the const-ness cannot be enforced in Python. However, you can always override the default behavior by using the ndarray_copy or ndarray_view functions.

Expanding the MyClass example from before:

class MyClass {
public:
    ...
    const Eigen::MatrixXd &get_const_matrix() {
        return this->matrix;
    }
    ...
};

With the corresponding cython interface specification The Cython C++ class interface is specified as usual:

     cdef cppclass _MyClass "MyClass":
         ...
         const Matrix3d &get_const_matrix()

The following would return a copy

cdef class MyClass:
    ...
    def get_const_matrix(self):
        return ndarray(self.thisptr.get_const_matrix())

while the following would force it to return a view

cdef class MyClass:
    ...
    def get_const_matrix(self):
        return ndarray_view(self.thisptr.get_const_matrix())

Eigen to Numpy (non-reference return values)

Functions returning an Eigen object (not a reference), are specified in a similar way. For instance, given the following C++ function:

Eigen::Matrix3d function_w_mat_retval();

The Cython code could be written as:

cdef extern from "functions.h":
     cdef Matrix3d _function_w_mat_retval "function_w_mat_retval" ()

# This will be exposed to Python
def function_w_mat_retval():
    return ndarray_copy(_function_w_mat_retval())

As mentioned above, you can replace Matrix3d (or any other Eigen return type) with PlainObjectBase, which is especially relevant when working with Eigen object that do not have an associated convenience typedef.

Note that we use ndarray_copy instead of ndarray to explicitly state that a copy should be made. In c++11 compliant compilers, it will detect the rvalue reference and automatically make a copy even if you just use ndarray (see next section), but to ensure that it works also with older compilers it is recommended to always use ndarray_copy when returning newly constructed eigen values.

Corrupt data when returning non-map types

The tendency of Eigency to avoid copies whenever possible can lead to corrupted data when returning non-map Eigen arrays. For instance, in the function_w_mat_retval from the previous section, a temporary value will be returned from C++, and we have to take care to make a copy of this data instead of letting the resulting numpy array refer directly to this memory. In C++11, this situation can be detected directly using rvalue references, and it will therefore automatically make a copy:

def function_w_mat_retval():
    # This works in C++11, because it detects the rvalue reference
    return ndarray(_function_w_mat_retval())

However, to make sure it works with older compilers, it is recommended to use the ndarray_copy conversion:

def function_w_mat_retval():
    # Explicit request for copy - this always works
    return ndarray_copy(_function_w_mat_retval())

Storage layout - why arrays are sometimes transposed

The default storage layout used in numpy and Eigen differ. Numpy uses a row-major layout (C-style) per default while Eigen uses a column-major layout (Fortran style) by default. In Eigency, we prioritize to avoid copying of data whenever possible, which can have unexpected consequences in some cases: There is no problem when passing values from C++ to Python - we just adjust the storage layout of the returned numpy array to match that of Eigen. However, since the storage layout is encoded into the type of the Eigen array (or the type of the Map), we cannot automatically change the layout in the Python to C++ direction. In Eigency, we have therefore opted to return the transposed array/matrix in such cases. This provides the user with the flexibility to deal with the problem either in Python (use order="F" when constructing your numpy array), or on the C++ side: (1) explicitly define your argument to have the row-major storage layout, 2) manually set the Map stride, or 3) just call .transpose() on the received array/matrix).

As an example, consider the case of a C++ function that both receives and returns a Eigen Map type, thus acting as a filter:

Eigen::Map<Eigen::ArrayXXd> function_filter(Eigen::Map<Eigen::ArrayXXd> &mat) {
    return mat;
}

The Cython code could be:

cdef extern from "functions.h":
    ...
    cdef Map[ArrayXXd] &_function_filter1 "function_filter1" (Map[ArrayXXd] &)

def function_filter1(np.ndarray[np.float64_t, ndim=2] array):
    return ndarray(_function_filter1(Map[ArrayXXd](array)))

If we call this function from Python in the standard way, we will see that the array is transposed on the way from Python to C++, and remains that way when it is again returned to Python:

>>> x = np.array([[1., 2., 3., 4.], [5., 6., 7., 8.]])
>>> y = function_filter1(x)
>>> print x
[[ 1.  2.  3.  4.]
 [ 5.  6.  7.  8.]]
>>> print y
[[ 1.  5.]
 [ 2.  6.]
 [ 3.  7.]
 [ 4.  8.]]

The simplest way to avoid this is to tell numpy to use a column-major array layout instead of the default row-major layout. This can be done using the order='F' option:

>>> x = np.array([[1., 2., 3., 4.], [5., 6., 7., 8.]], order='F')
>>> y = function_filter1(x)
>>> print x
[[ 1.  2.  3.  4.]
 [ 5.  6.  7.  8.]]
>>> print y
[[ 1.  2.  3.  4.]
 [ 5.  6.  7.  8.]]

The other alternative is to tell Eigen to use RowMajor layout. This requires changing the C++ function definition:

typedef Eigen::Map<Eigen::Array<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> > RowMajorArrayMap;

RowMajorArrayMap &function_filter2(RowMajorArrayMap &mat) {
    return mat;
}

To write the corresponding Cython definition, we need the expanded version of FlattenedMap called FlattenedMapWithOrder, which allows us to specify the storage order:

cdef extern from "functions.h":
    ...
    cdef PlainObjectBase _function_filter2 "function_filter2" (FlattenedMapWithOrder[Array, double, Dynamic, Dynamic, RowMajor])

def function_filter2(np.ndarray[np.float64_t, ndim=2] array):
    return ndarray(_function_filter2(FlattenedMapWithOrder[Array, double, Dynamic, Dynamic, RowMajor](array)))

Another alternative is to keep the array itself in RowMajor format, but use different stride values for the Map type:

typedef Eigen::Map<Eigen::ArrayXXd, Eigen::Unaligned, Eigen::Stride<1, Eigen::Dynamic> > CustomStrideMap;

CustomStrideMap &function_filter3(CustomStrideMap &);

In this case, in Cython, we need to use the even more extended FlattenedMap type called FlattenedMapWithStride, taking eight arguments:

cdef extern from "functions.h":
    ...
    cdef PlainObjectBase _function_filter3 "function_filter3" (FlattenedMapWithStride[Array, double, Dynamic, Dynamic, ColMajor, Unaligned, _1, Dynamic])

def function_filter3(np.ndarray[np.float64_t, ndim=2] array):
    return ndarray(_function_filter3(FlattenedMapWithStride[Array, double, Dynamic, Dynamic, ColMajor, Unaligned, _1, Dynamic](array)))

In all three cases, the returned array will now be of the same shape as the original.

Long double support

Eigency provides new shorthands for Eigen long double and complex long double Matrix and Array types. Examples:

Vector4ld
Matrix3ld
Vector2cld
Matrix4cld
Array3Xld
ArrayXXcld

These typedefs are available in the eigency namespace when including the eigency header:

#include "eigency.h"

void receive_long_double_matrix(Eigen::Map<eigency::MatrixXld> &mat) {
    // use long double eigen matrix
}

Use Cython (.pyx) to create Python binding to your C++ function:

cdef extern from "functions.h":
     cdef void _receive_long_double_matrix "receive_long_double_matrix"(Map[MatrixXld] &)

def send_long_double_ndarray(np.ndarray[np.longdouble_t, ndim=2] array):
    return _receive_long_double_matrix(Map[MatrixXld](array))

Invoke in Python:

import numpy as np
import my_module

x = np.array([[1.1, 2.2], [3.3, 4.4]], dtype=np.longdouble)
my_module.send_long_double_ndarray(x)

Release files for eigency 5.0.1.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 eigency 5.0.1.1
File Size Uploaded
eigency-5.0.1.1.tar.gz 1.5 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for eigency 5.0.1.1
File
eigency-5.0.1.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
eigency-5.0.1.1-cp314-cp314-win32.whl CPython 3.14 CPython 3.14 Windows x86-32 Details
eigency-5.0.1.1-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
eigency-5.0.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
eigency-5.0.1.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
eigency-5.0.1.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
eigency-5.0.1.1-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details
eigency-5.0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
eigency-5.0.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details
eigency-5.0.1.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
eigency-5.0.1.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
eigency-5.0.1.1-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
eigency-5.0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
eigency-5.0.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
eigency-5.0.1.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
eigency-5.0.1.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
eigency-5.0.1.1-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
eigency-5.0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
eigency-5.0.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
eigency-5.0.1.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
eigency-5.0.1.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
eigency-5.0.1.1-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
eigency-5.0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
eigency-5.0.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
eigency-5.0.1.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details

Total release size: 56.0 MB

Release files / eigency-5.0.1.1.tar.gz

Download URL eigency-5.0.1.1.tar.gz
Size 1.5 MB
Tags Source
SHA-256 checksum
How to use checksums
ee55b1c9c64fb164aa542420890ec907b7e345205136343c92e3d6da96f2419b
BLAKE2b-256 checksum
How to use checksums
45f47d39f7cc11f79fdbc03f89e8db8c5731dd909e33f810f1e9687ac438a0b6
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp314-cp314-win_amd64.whl

Download URL eigency-5.0.1.1-cp314-cp314-win_amd64.whl
Size 1.8 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
c7621096e416338337c975e5a07f620828dcde5776d7ea2872e032bc0f34fbe0
BLAKE2b-256 checksum
How to use checksums
be9ac33eb5bbf8af8a659c537e166557879a385acb5feea778033da8988e6e45
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp314-cp314-win32.whl

Download URL eigency-5.0.1.1-cp314-cp314-win32.whl
Size 1.8 MB
Tags CPython 3.14 Windows x86-32
SHA-256 checksum
How to use checksums
06ac2802bda2137f181ef9b9010022a987ae3cdd6dcd3baaf0325ddbca807002
BLAKE2b-256 checksum
How to use checksums
c16076e10a7354cf7ea7d50197815b6bfd7a89ef7f61b71b2be3705b20e462b9
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL eigency-5.0.1.1-cp314-cp314-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
7f3919d6036815fbd890bf0b4b065608a53b25ff66c1406d6ee84cbed9010d9e
BLAKE2b-256 checksum
How to use checksums
75b62d3d0956bfbdcb7b60ff2309f9224bc2111d175e82705291848ba9c79fd8
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL eigency-5.0.1.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a7ab8472edad980dfe98630d9aabd00287d3bfc213fca2515644e4bde60df1d2
BLAKE2b-256 checksum
How to use checksums
93e6f6a6ccf63eb8f070c88b02ed05679775b3e8d3bdbba9b03cb81c23921b00
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL eigency-5.0.1.1-cp314-cp314-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e4127a538ec80bea292f4307162d38df26d336e5bd3f8b707e7a000ee11da334
BLAKE2b-256 checksum
How to use checksums
3fb479247077d4f028f7fd871ff78b91196d2821dafb4ea1b82a4c790bf1e6b9
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp313-cp313-win_amd64.whl

Download URL eigency-5.0.1.1-cp313-cp313-win_amd64.whl
Size 1.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
11d34c03e5b8de7b160b2bb34ee5aff8c310e5c60b63b47027f8e4ca9fea1a91
BLAKE2b-256 checksum
How to use checksums
c84f3485a1239f2f8ffb5af0d22bc6795848ebcc37a8f3b3ebcd20b9b9f11347
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp313-cp313-win32.whl

Download URL eigency-5.0.1.1-cp313-cp313-win32.whl
Size 1.8 MB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
3197ea6e7822f80cf4bab4f1d1d4b7583254fd3937d6d3420887f6b8d2e9b206
BLAKE2b-256 checksum
How to use checksums
f0b3ba7d876cd81aa690f77a407766517ceabfd1f2ce6bc0367a114c8efb6d72
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL eigency-5.0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3e57bcb9287097ded23c606facf981c1ddf58f17e74929df5af54f5caa889510
BLAKE2b-256 checksum
How to use checksums
2249098fa7dc927d227f137bc44e46682057eacddb6d37abc163a346426980fd
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL eigency-5.0.1.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1674f3503be118123fa466f30d3a5d6409ba235b8306e55fe720f418e6ce5c41
BLAKE2b-256 checksum
How to use checksums
250ee27f36ff5c47af5ac01815bba63d0857d3665fe16f6053d8f9251d7f5199
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL eigency-5.0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
944783ddbc0f99e15ac52485b566706cf3ecd4f292d7f5f186e6a9a8651e38cc
BLAKE2b-256 checksum
How to use checksums
8f2fb3fb39c0e7156abe7b1d1a64adcb01b0968ccbfac937cd67cc9f1ff1e6e0
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp312-cp312-win_amd64.whl

Download URL eigency-5.0.1.1-cp312-cp312-win_amd64.whl
Size 1.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
a823eb50a6264e49b9d91ede05451dc42312697113208ad029a5e5c035caa1ea
BLAKE2b-256 checksum
How to use checksums
278f4af98d694a22bf6d44e76a86529f4be9227a6cf4be519e74dda65f886127
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp312-cp312-win32.whl

Download URL eigency-5.0.1.1-cp312-cp312-win32.whl
Size 1.8 MB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
1590f8a2dff8332842202a17b83a9066605fd535b072cb4aa1642ef71ae0730e
BLAKE2b-256 checksum
How to use checksums
630b92c6c1c5b5180e984b493d76afa40cba728adddf9b7cf1488ac92b36d3b6
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL eigency-5.0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c9ab9684f4fcc520580b77eb1cbe920e5a55a0308d02a315bf2c362d9cac378d
BLAKE2b-256 checksum
How to use checksums
b42ba8bd4e17dfc713c958d42240506fcd1d6ba7d4fe33a1aa00550b1ad0ea19
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL eigency-5.0.1.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
65401540614f7731970ad59d625d9351d7683bf4c9654be68094c6f80e1179f6
BLAKE2b-256 checksum
How to use checksums
b7ef6e6690d7ccc15d127c77b3841db581dc17cb3650e43440c1df6313978fb6
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL eigency-5.0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7a265b068ec03b9e0b0660d68fd712bf3996f10a20ba1be157175262aed0f4d5
BLAKE2b-256 checksum
How to use checksums
db459da0486d54e59e6e1f14a8efcac82180553d87430160e3c291bf636ea9c9
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp311-cp311-win_amd64.whl

Download URL eigency-5.0.1.1-cp311-cp311-win_amd64.whl
Size 1.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
49405471f70d552ccfd25467c33bd906139627389d3eac5adb09910cb3af27ae
BLAKE2b-256 checksum
How to use checksums
fa4964e5b34121629886d8cae30491b8e39375e7ee8a2614aaf89aa741bf7b38
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp311-cp311-win32.whl

Download URL eigency-5.0.1.1-cp311-cp311-win32.whl
Size 1.8 MB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
204bc7d04a84f3f09cbefd052a430b3cb9d08bb280cb7b09f38bf7ae7d218962
BLAKE2b-256 checksum
How to use checksums
b27b711bca8c7b46ce3447af0f68f36dc152a01af3c9a9779b02c3cc737d6bdb
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL eigency-5.0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
8dcf48df70b5efe9b5a5d6669641ae8d5c2f6a0b302646da923031fe76fab922
BLAKE2b-256 checksum
How to use checksums
dbc06e7e9e1039c90347aada68e981ab8294ea1112fca9613de04040b3d181c0
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL eigency-5.0.1.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5a34a04a6039e067b7fe5ed4b876522fdbab81383b2f9286e94e45e15ae50676
BLAKE2b-256 checksum
How to use checksums
cb61d23f66d81babf40b01026660f15b3c79144ffc308add8337ed69aa969aff
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL eigency-5.0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5efffedbcfbb3f31f3f313627c120cf4bc6700c8cc00ad1e347a3e4d9e70ea96
BLAKE2b-256 checksum
How to use checksums
0dc1e71b7097f67d7924a7b0ae9ef4e4f0a4f7d89799f80677bcf1929f7d08fd
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp310-cp310-win_amd64.whl

Download URL eigency-5.0.1.1-cp310-cp310-win_amd64.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
638405ddc8bb0421074ed6dc076bcc8b2e94db9322f85d888d1ee8aa3daa8e54
BLAKE2b-256 checksum
How to use checksums
7571ca3b23c1447db273ecb0e407d50f292a47c541c17afbeb065ebe1e7d396c
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp310-cp310-win32.whl

Download URL eigency-5.0.1.1-cp310-cp310-win32.whl
Size 1.8 MB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
6b4ab5dab350866f10f966586c35f83919b19a958c92165bd20b09b21a0b7943
BLAKE2b-256 checksum
How to use checksums
d9706d081fbdd6b956f156a2d14ba67dc9e13ef77d8feedeeee67c04ed9fa5c8
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL eigency-5.0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c7584f6a91808a407ae7dfc969880a8ad7a75f54114b50163d66d71e11a27050
BLAKE2b-256 checksum
How to use checksums
b7ad310f4cf04302f14fac62c1a4a1fcd469a9f24c84b353b44d42bec73f6786
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL eigency-5.0.1.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 2.8 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1b8ca3b522c3fe72eb89e48246ceaa8e4a0a8331a129b649c615a13709767078
BLAKE2b-256 checksum
How to use checksums
dac06cdfe43574f9ffb543cd91d7f0b0c8773a98fc5cd5e663290dc73190bf54
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 Sep 18, 2026.

Transparency log

Release files / eigency-5.0.1.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL eigency-5.0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Size 1.8 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
54c7599819624f61cf1b5e8fb337406687fb0b3b1cbe64a7334d073d08ed6d7d
BLAKE2b-256 checksum
How to use checksums
329cd277512a27399366688a1443026bb6dad9d77268690eb2f6da5efd25a05b
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 Sep 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

5.0.1.1 This release

26 release files

5.0.0

26 release files

3.4.0.4

1 release file

3.4.0.2

1 release file

3.4.0.1

1 release file

3.4.0.0

1 release file

2.0.0

1 release file

1.80

1 release file

1.79

1 release file

1.78

1 release file

1.77

1 release file

1.76

1 release file

1.75

1 release file

1.74

1 release file

1.73

1 release file

1.72

1 release file

1.71

1 release file

1.70

1 release file

1.69

1 release file

1.68

1 release file

1.66

1 release file

1.65

1 release file

1.64

1 release file

1.63

1 release file

1.62

1 release file

1.61

1 release file

1.6

1 release file

1.5

1 release file

1.4

1 release file

1.3

1 release file

1.2

1 release file

1.1

1 release file

1.0

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