Skip to main content

Rust-powered collection of financial functions for Python.

Project description

rust-lang.org License pypi versions

PyXIRR

Rust-powered collection of financial functions.

PyXIRR stands for "Python XIRR" (for historical reasons), but contains many other financial functions such as IRR, FV, NPV, etc.

Features:

  • correct
  • supports different day count conventions (e.g. ACT/360, 30E/360, etc.)
  • works with different input data types (iterators, numpy arrays, pandas DataFrames)
  • no external dependencies
  • type annotations
  • blazingly fast

Installation

pip install pyxirr

Benchmarks

Rust implementation has been tested against existing xirr package (uses scipy.optimize under the hood) and the implementation from the Stack Overflow (pure python).

bench

PyXIRR is ~10-20x faster in XIRR calculation than the other implementations.

Powered by github-action-benchmark and plotly.js.

Live benchmarks are hosted on Github Pages.

Example

from datetime import date
from pyxirr import xirr

dates = [date(2020, 1, 1), date(2021, 1, 1), date(2022, 1, 1)]
amounts = [-1000, 750, 500]

# feed columnar data
xirr(dates, amounts)
# feed iterators
xirr(iter(dates), (x / 2 for x in amounts))
# feed an iterable of tuples
xirr(zip(dates, amounts))
# feed a dictionary
xirr(dict(zip(dates, amounts)))
# dates as strings
xirr(['2020-01-01', '2021-01-01'], [-1000, 1200])

Multiple IRR problem

The Multiple IRR problem occur when the signs of cash flows change more than once. In this case, we say that the project has non-conventional cash flows. This leads to situation, where it can have more the one IRR or have no IRR at all.

PyXIRR's approach to the Multiple IRR problem:

  1. It looks for positive result around 0.1 (the same as Excel with the default guess=0.1).
  2. If it can't find a result, it uses several other attempts and selects the lowest IRR to be conservative.

Here is an example of how to find multiple IRRs:

import numpy as np
import pyxirr

# load cash flow:
cf = pd.read_csv("tests/samples/30-22.csv", names=["date", "amount"])
# check whether the cash flow is conventional:
print(pyxirr.is_conventional_cash_flow(cf["amount"]))  # false

# build NPV profile:
# calculate 50 NPV values for different rates
rates = np.linspace(-0.5, 0.5, 50)
# any iterable, any rates, e.g.
# rates = [-0.5, -0.3, -0.1, 0.1, -0.6]
values = pyxirr.xnpv(rates, cf)

# print NPV profile:
# NPV changes sign two times:
#   1) between -0.316 and -0.295
#   2) between -0.03 and -0.01
print("NPV profile:")
for rate, value in zip(rates, values):
    print(rate, value)

# plot NPV profile
import pandas as pd
series = pd.Series(values, index=rates)
pd.DataFrame(series[series > -1e6]).assign(zero=0).plot()

# find points where NPV function crosses zero
indexes = pyxirr.zero_crossing_points(values)

print("Zero crossing points:")
for idx in indexes:
    print("between", rates[idx], "and", rates[idx+1])

# XIRR has two results:
#   -0.31540826742734207
#   -0.028668460065441048
for i, idx in enumerate(indexes, start=1):
    rate = pyxirr.xirr(cf, guess=rates[idx])
    npv = pyxirr.xnpv(rate, cf)
    print(f"{i}) {rate}; XNPV = {npv}")

More Examples

Numpy and Pandas

import numpy as np
import pandas as pd

# feed numpy array
xirr(np.array([dates, amounts]))
xirr(np.array(dates), np.array(amounts))

# feed DataFrame (columns names doesn't matter; ordering matters)
xirr(pd.DataFrame({"a": dates, "b": amounts}))

# feed Series with DatetimeIndex
xirr(pd.Series(amounts, index=pd.to_datetime(dates)))

# bonus: apply xirr to a DataFrame with DatetimeIndex:
df = pd.DataFrame(
    index=pd.date_range("2021", "2022", freq="MS", inclusive="left"),
    data={
        "one": [-100] + [20] * 11,
        "two": [-80] + [19] * 11,
    },
)
df.apply(xirr)  # Series(index=["one", "two"], data=[5.09623547168478, 8.780801977141174])

Day count conventions

Check out the available options on the docs/day-count-conventions.

from pyxirr import DayCount

xirr(dates, amounts, day_count=DayCount.ACT_360)

# parse day count from string
xirr(dates, amounts, day_count="30E/360")

Private equity performance metrics

from pyxirr import pe

pe.pme_plus([-20, 15, 0], index=[100, 115, 130], nav=20)

pe.direct_alpha([-20, 15, 0], index=[100, 115, 130], nav=20)

Docs

Other financial functions

import pyxirr

# Future Value
pyxirr.fv(0.05/12, 10*12, -100, -100)

# Net Present Value
pyxirr.npv(0, [-40_000, 5_000, 8_000, 12_000, 30_000])

# IRR
pyxirr.irr([-100, 39, 59, 55, 20])

# ... and more! Check out the docs.

Docs

Vectorization

PyXIRR supports numpy-like vectorization.

If all input is scalar, returns a scalar float. If any input is array_like, returns values for each input element. If multiple inputs are array_like, performs broadcasting and returns values for each element.

import pyxirr

# feed list
pyxirr.fv([0.05/12, 0.06/12], 10*12, -100, -100)
pyxirr.fv([0.05/12, 0.06/12], [10*12, 9*12], [-100, -200], -100)

# feed numpy array
import numpy as np
rates = np.array([0.05, 0.06, 0.07])/12
pyxirr.fv(rates, 10*12, -100, -100)

# feed any iterable!
pyxirr.fv(
    np.linspace(0.01, 0.2, 10),
    (x + 1 for x in range(10)),
    range(-100, -1100, -100),
    tuple(range(-100, -200, -10))
)

# 2d, 3d, 4d, and more!
rates = [[[[[[0.01], [0.02]]]]]]
pyxirr.fv(rates, 10*12, -100, -100)

API reference

See the docs

Roadmap

  • Implement all functions from numpy-financial
  • Improve docs, add more tests
  • Type hints
  • Vectorized versions of numpy-financial functions.
  • Compile library for rust/javascript/python

Development

Running tests with pyo3 is a bit tricky. In short, you need to compile your tests without extension-module feature to avoid linking errors. See the following issues for the details: #341, #771.

If you are using pyenv, make sure you have the shared library installed (check for ${PYENV_ROOT}/versions/<version>/lib/libpython3.so file).

$ PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install <version>

Install dev-requirements

$ pip install -r dev-requirements.txt

Building

$ maturin develop

Testing

$ LD_LIBRARY_PATH=${PYENV_ROOT}/versions/3.10.8/lib cargo test

Benchmarks

$ pip install -r bench-requirements.txt
$ LD_LIBRARY_PATH=${PYENV_ROOT}/versions/3.10.8/lib cargo +nightly bench

Building and distribution

This library uses maturin to build and distribute python wheels.

$ docker run --rm -v $(pwd):/io ghcr.io/pyo3/maturin build --release --manylinux 2010 --strip
$ maturin upload target/wheels/pyxirr-${version}*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyxirr-0.10.0.tar.gz (35.9 kB view details)

Uploaded Source

Built Distributions

pyxirr-0.10.0-cp312-none-win_amd64.whl (468.0 kB view details)

Uploaded CPython 3.12 Windows x86-64

pyxirr-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl (691.7 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

pyxirr-0.10.0-cp312-cp312-musllinux_1_2_i686.whl (684.2 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

pyxirr-0.10.0-cp312-cp312-musllinux_1_2_armv7l.whl (702.8 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl (634.0 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

pyxirr-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (519.1 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (873.9 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

pyxirr-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (611.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (504.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (436.3 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (452.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.0-cp312-cp312-macosx_11_0_arm64.whl (432.5 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyxirr-0.10.0-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (915.3 kB view details)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

pyxirr-0.10.0-cp311-none-win_amd64.whl (462.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

pyxirr-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl (689.1 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

pyxirr-0.10.0-cp311-cp311-musllinux_1_2_i686.whl (682.7 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

pyxirr-0.10.0-cp311-cp311-musllinux_1_2_armv7l.whl (702.5 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl (631.8 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

pyxirr-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (516.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (864.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

pyxirr-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (610.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (504.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (436.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (450.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.0-cp311-cp311-macosx_11_0_arm64.whl (430.3 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyxirr-0.10.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (912.2 kB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

pyxirr-0.10.0-cp310-none-win_amd64.whl (462.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

pyxirr-0.10.0-cp310-cp310-musllinux_1_2_x86_64.whl (689.1 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

pyxirr-0.10.0-cp310-cp310-musllinux_1_2_i686.whl (682.6 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

pyxirr-0.10.0-cp310-cp310-musllinux_1_2_armv7l.whl (702.4 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.0-cp310-cp310-musllinux_1_2_aarch64.whl (631.8 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

pyxirr-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (516.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (863.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

pyxirr-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (610.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (504.7 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (436.4 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (450.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.0-cp310-cp310-macosx_11_0_arm64.whl (430.4 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyxirr-0.10.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (912.2 kB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

pyxirr-0.10.0-cp39-none-win_amd64.whl (462.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

pyxirr-0.10.0-cp39-cp39-musllinux_1_2_x86_64.whl (689.4 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

pyxirr-0.10.0-cp39-cp39-musllinux_1_2_i686.whl (683.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

pyxirr-0.10.0-cp39-cp39-musllinux_1_2_armv7l.whl (702.7 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.0-cp39-cp39-musllinux_1_2_aarch64.whl (632.4 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

pyxirr-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (516.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (864.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

pyxirr-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (610.5 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (505.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (436.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (450.8 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.0-cp39-cp39-macosx_11_0_arm64.whl (430.6 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pyxirr-0.10.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (912.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

pyxirr-0.10.0-cp38-none-win_amd64.whl (460.9 kB view details)

Uploaded CPython 3.8 Windows x86-64

pyxirr-0.10.0-cp38-cp38-musllinux_1_2_x86_64.whl (687.5 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

pyxirr-0.10.0-cp38-cp38-musllinux_1_2_i686.whl (681.4 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

pyxirr-0.10.0-cp38-cp38-musllinux_1_2_armv7l.whl (700.5 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.0-cp38-cp38-musllinux_1_2_aarch64.whl (630.4 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

pyxirr-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (864.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

pyxirr-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (608.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.0-cp38-cp38-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (503.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (434.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (449.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.0-cp38-cp38-macosx_11_0_arm64.whl (429.3 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pyxirr-0.10.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (909.8 kB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

pyxirr-0.10.0-cp37-none-win_amd64.whl (460.8 kB view details)

Uploaded CPython 3.7 Windows x86-64

pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_x86_64.whl (687.5 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ x86-64

pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_i686.whl (681.4 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ i686

pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_armv7l.whl (700.6 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_aarch64.whl (630.5 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ ARM64

pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515.1 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (864.1 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ s390x

pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (608.5 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (503.0 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ppc64

pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (434.4 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (449.2 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pyxirr-0.10.0-cp37-cp37m-macosx_11_0_arm64.whl (429.4 kB view details)

Uploaded CPython 3.7m macOS 11.0+ ARM64

pyxirr-0.10.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (909.9 kB view details)

Uploaded CPython 3.7m macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

File details

Details for the file pyxirr-0.10.0.tar.gz.

File metadata

  • Download URL: pyxirr-0.10.0.tar.gz
  • Upload date:
  • Size: 35.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.4.0

File hashes

Hashes for pyxirr-0.10.0.tar.gz
Algorithm Hash digest
SHA256 3cd8152307fda27c810c4179f36b2d6bd696552363e635aa505619fed77a9c1c
MD5 007f5e2f79125f031e11ca8b8d1ae185
BLAKE2b-256 3a62840168b0e63376c313fa7f156aaa8a6ec89218238e148a379dd8f0e04cc2

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 772773a2f95bec56bf808e88f6c30be6bc003bd027ebeeb320998a73f42470ab
MD5 a443cec63d0bf9ab74b48ad016a16196
BLAKE2b-256 8d4112373dec3f48f803c9e15bbc8063ba83ec7463cc9452c0a4f808a1726219

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ba30094147a15566c2ea78fa7c4e7bce66b37c327ce2156a3c926cad888690f4
MD5 b5078e0146d21c2b96190205b4db6068
BLAKE2b-256 3fc60e55502f5397459d1a3047d45ee4c4cee83a6358c2e220fcd93b5a10a3d1

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3c739c8e3a06149cba3f2a1dc52a3bc20a378e63055bec0992a0bf38889b5ce2
MD5 93df6bb6e4fe1fe7d8040a4a19a8d137
BLAKE2b-256 84f8dab9f81211117bde59530ef47dd39b7c83cf3a902cbbf2f4c20b96263ae5

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 24038b1a59ff1cef8494830db86a52bc72037d3334c134658090dc49146ee863
MD5 788def61abe3ca5bcc1c3c83915031a7
BLAKE2b-256 fff7420e2685c2bec7e1a8fe0a59f4d986947b7a60b6159ee446d1ea16c8d768

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 cd6974485a7e9d94a1b095e02acfa069be24099173980ea847a22aa8abdc09c5
MD5 848f63b0be2e54d46a473c2bb129921d
BLAKE2b-256 1764ac02a1f793fb5d0848116826a86ee6383f2a01941dc0d95d7dd4970e3664

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa3cc20dce3a563229f48e22aea62675da8a2c6b2cd59c7a055f95bd038fd251
MD5 b88d658947d0d933635e30a994e4e240
BLAKE2b-256 d908072650916681451b3015e971ac37f4b105f96d7388f122a7783786c191e6

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 994d7eac03edec9c3459131253480c1dde8788f05877c900018eaa61ec7579d1
MD5 eed295cb2f7a5c999d38a54f472c4f7c
BLAKE2b-256 05f099d25cf54dff0f01df779c6ed1f0982430b17c046db75450db20cbeda2ca

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 31cf8b19a3ff2c05a7dafb2b7421b305613729d9749b9b3fef9cb0460a7f4e3e
MD5 e596881e28fe09bca6ae6a1bca700cf9
BLAKE2b-256 4a8ff09530e75ec961790846025fc975427d89a3c6879ab76ec70ee71d329d24

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 5ce107e70590f8157c1ec0c11661603d3bb9d27923ccc864651c8ad2a86f9963
MD5 3c4bdcf19b33cec7417c9d2afcda5f34
BLAKE2b-256 8199a34e76effed838d2ec1ce046e0c40150d68e29269aad19516c30e0c43e06

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 ecbfaa89b956890f87c1a7e0520b149baa6996499a5f919f52a6cfef36916336
MD5 255c9ed2d21596f9af917a3e0a597c58
BLAKE2b-256 eacefa6220ddd90ad5248355ba3d8f2e8d5eaf9818d951509fb73a8d07e0a5bc

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9820fa516de798ba8b9f7590cff7423bf54a9e04a3b88a337cdf68996110bf1
MD5 e85d7aa3eb99b22b8de759ad8da7ebbe
BLAKE2b-256 4c5e04bb7c0d606a1704461a3f4480f63a4dde29b61fa9509b6156edb5de81dc

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee8722dd7f177e2d5add5094c546e10ae89bec8baf7c615977dc1d24b663c976
MD5 78fa8eeb52f4dc676d5441829f54b930
BLAKE2b-256 fbcc66493fe3fa969481fede1a16c8c00f8f1d58daf7b7b17034795fcb2c286d

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 606d2b538cfd10afba4192916472b575941c0fbbb0a7d6248a49289d3ea0d305
MD5 6b863643a8e491c4e649a4c706dbaa2a
BLAKE2b-256 1b897c775266ca275a91cb13d2a219f9fa2f15f16f9bc99f762846e990bae382

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 c8038b83ce4e4dadec9605ad6ae208d6738596f5997a32e11381493925fe22ed
MD5 5009ffccbedb2f751285bd80d5e6e2fd
BLAKE2b-256 0a05eacc74263f368686ae53c88f3da26053f75b5f3fe4841cc4deb16926dc6f

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cca5c132785c98a4fd1c0e75910b771fd12c088c251bdf6254daa25715caefd1
MD5 04dd672aec706448c7abc301e3ac3812
BLAKE2b-256 62f2bbe7e5eca83a2f3e56cd154dcec5aa5868aa847935ed20d2d48dd4753c5c

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c7d682b4409e4e2fa250d81425988882dcf45b244ad13d2470992f8a450f278c
MD5 659b104bc265cc2d9c2e6c58c961b17a
BLAKE2b-256 31b33567b294276f8f81cb4fa5e875ef70993c6f19692f00cf1f331d87540861

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 2b29c8d5ae3e18ebd48efaf367574a2bfa1b47d930891d33f5bd5f2cb4f4cedf
MD5 76fa37e7ce8887d76a7e3338d39a37e2
BLAKE2b-256 9ccac7cd64861ef45e6658e5d94da07b88ed6aab41b1039698fe5cfaf5762795

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1ce16d1ca0fa22070595f40539a9c8de00deaf424fd770df6266cb1620ff39a8
MD5 c6a47db969f51ccd5adf46b2b9ae91c2
BLAKE2b-256 e35aa114f7c7abfe6ae3a15de0e61ae7ba768d538b8d471063234478bbb8f280

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df5155c7e60e266e2418a5d98496394701f7b58ef0cfe31a61e5ab0b07e88865
MD5 3fe53baf5a72d5195cd8681e5eb764ac
BLAKE2b-256 638dfdf4c1a5bc3da80f8387b633149c02ca16155c2bcde2a86b309535378bb3

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 d48859acb2ec082347b85e794062c075233be5347e4288be5ed0423eb0bdcecf
MD5 48563ec4f418ce9c4ac1fd0abe43d566
BLAKE2b-256 8fb65643cf08e6e090aa3eabce43a83d3cd7676035fcb3b49715d7d384747515

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 474d8f04e01a408d4d39628f188283f4b97f6a4e44f329ce48da02500f961905
MD5 b33ac2ff08eeaa2638de43b1032bdb50
BLAKE2b-256 d6b0755b0bac9fe51be80840d046d20ee49f374c8500a1871e7ab79abd9425f2

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 e2c938be373e93576a4981e42df4b061e9cec63369317e471441caa33c1ec996
MD5 58594804cb874ee35f750199ab9f0a6b
BLAKE2b-256 193c24d52b1a262952323d6e20716c4bb7cb881b8dbac360d57af36f6851b049

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e7a60503e85b1631d879f457310c79cf3f17728a96a392bad4dd984f8aec9708
MD5 e279c030a8f5e077d290c3652e145ee1
BLAKE2b-256 a603a1ad633109571d0cda36e7f630fe9eb1cecbf96b2140e4e81f571bf39b9f

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8699ef7b530f6e31a87cccce77d1933567a85f4f645b3aea2b6b42ae8fc71a96
MD5 6072b163fabe57153cf53fc2ccfbcfb2
BLAKE2b-256 0054d7cd352d91b925bfaf515e6b0983f26b8213515372cdc670bf2a31db74c5

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ad93cedcbcf8f5210c6d82b338df514a5da3dd58b638fe8097113629c7d096b
MD5 1250d57339f1dab851d16e9dfa6e1854
BLAKE2b-256 58d3d10e569885053a2fc053f01d9ccd321751eb2d6c55b7d2f632d92609eb88

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6c72238a5593fb516688ae7d09a9870b51b2bbb7acc0f8cdb8119f8d35b41372
MD5 066ac9887174cf4d642b5ef95cf261c8
BLAKE2b-256 0b74b7f7a1458e6fc4fcbb195819eaace9ba58843fd3498ba93a32a645f35aa5

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 bdc085f715ed56a6df7fd71405e1002ca15e24bd452786ffd0ebd30e2749cb14
MD5 e98bdf178f97e9c75c6d3c962d37905c
BLAKE2b-256 df88f926e84a120e94437a7c35f84ead76f05f534e7a8ba073bfa5bb6b6e4d58

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f328d474e39a5922fac787817029fcc0fe1c3e72fd40d59d29e14cd37ef39e42
MD5 202e0553a928157219ac1bfecbf60226
BLAKE2b-256 0d104d8e73c58025b75e55fe8e845b3666746f0aec84ae5200601677782e79fe

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a74a0201bf1f7804fb0e3c6e2230ba93efc46fb65295732ca9e1254ec1fe8adb
MD5 195a3eeebf78bb052293b42ecbfcae08
BLAKE2b-256 94196be43e47bd76697d61b5f0855be27dad9ea9375b8f1d9df03af30577a785

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 edb8987186552d14c59bad7539ab7ab52b132e6456865b05ba7fc7b2c3548e1f
MD5 2d994335009307b4e15646552f74e999
BLAKE2b-256 9f42b0dcd175a7b171e2c456123d2e384713306725ac96cd61595b6d08ed29fc

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fc94c344e394852e9ac6e220d2b45b4a16848e6062efd9fab4a450dfefea8fdd
MD5 0408f454e36e4b32762303c9e4070559
BLAKE2b-256 ac06e84f558af138ec77a9f19f8f69e053040a697702997d67cf5afa76546c9d

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b680e5c440037811494917cff13da6afb45f5d806b370b035b8735f523ef1f51
MD5 acf0a04ddf2961e7f785ebcd836de579
BLAKE2b-256 45fe94fa180e1ff8481662bb80c536c90a17358a126627812b58ac5b9cb0ed19

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 327a9f0577fd6315f939ae8a1c4c1f6e50280cb0978c0ca5c28e28d09ed7039c
MD5 a9b96982b1c614256d7a3ff724d6dc7e
BLAKE2b-256 47cbdbe4c8501dcd022c2ab65a522ff67396028b5a3f65b36dfc1e4efc81a666

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0fee01c1a19ae76a5c813e18e6f935af6fcbaed5e0b94475fac5860c0a0a54d7
MD5 b0bd1a34c6dcf0d13de66d89e75c6bfc
BLAKE2b-256 c82c57e24bb7491b027357f73ee3ae7dc8477f2138f65af85a11ce673741dbfe

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 6451a800496737f317f371da8e2f6bce1261fb0da6d83f03cc325993c64ffc44
MD5 a76aa5186c80f3c9f09ba945c0a947bd
BLAKE2b-256 5212f1ba7d1d885fddc3926c0aac9288b8b8eec3e94d0b8a770046a1f2f0f272

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6364c59edef10a8a954525f21a3c44e9d5a1e8d50e5b6e928597d7e8017a42d3
MD5 4463a964999c636d167d17b1d8c05177
BLAKE2b-256 b4f1131155ca28cf4ac37302e5b06b2e430ea64f1fa805f3d98ffee0eff93979

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b3dbf9fe8b9fd37d18548fa64c78bc987ecf6e3b635ac1cb41d1e9998979184
MD5 2ccdfa9ee7598210d1160033060e41c2
BLAKE2b-256 59578ddfc6d0823ab7fa445499d29fbd3e2e000d2fc0206be85e313a1337328e

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fcdd8b9196d2da28370ffe9c53ea8adec0c9f2e0a32b8fd38d375fb039625c4
MD5 b9ea305a692285876087fd0a287491fd
BLAKE2b-256 b0b7552c8fb55d4e6ac3358066095bc40e6d41d9e314368d89cca0d70e22bd96

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 6ccc101d0af0b9a6eb8d4ac7b7a4f1fa37ab764e0448b7a6cdeeb3a1f82d91ca
MD5 89f78c0439fc5a7d3683781fe1aa3ab4
BLAKE2b-256 3807b4e5bf2ceb3457f0aaf75e473e71e5feac21450dfe28a921f92a1760bfc0

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 7839ab9e09a81d02ac26ed4b3e4e2d3a41c386d294a34def04753d8d62169578
MD5 a87be448ac1372811279d1779e22cb52
BLAKE2b-256 d18ad0c3446be4dd09427a23e6f3d47b737be827bfc5eb4ee5aa8284bded20ab

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 323befcd102ec56dcc3add3f05f9299b58a58a7fe1996aabd44e44db91b406ba
MD5 f0766cb9d81cf6702d657e106e3a4358
BLAKE2b-256 69aaf98eb68a143792cb2280ba1ac3955eab09b467b38dfb36fb261c23706ec3

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 457de8199cec9d46ed1ed1eddc5572ccf009e1538cab8dc588eefdffe621619d
MD5 308c9203a26a7a8488c1ab6ffc76d228
BLAKE2b-256 1fab770935e0cb77cd5a0b5901ea4f3f154182b896447b15bfbbe7cf085686e7

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7a00dc6d1126215f18e5f871edeb6858462617debedf939508b88e8d3073321d
MD5 4a414f88e4c2dc80898d5bc8627f35b2
BLAKE2b-256 53f33f9d5efaf2465bbf388d3b9ea3f8c5e5fe4fafd589086cccce60989b7ee7

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 10d24473c88b7502dacbf635c11107e6c5216be001b86a1080e5280245592136
MD5 02687cb8e721ef48f3088e3b4c8681b8
BLAKE2b-256 b44fdf7b0eb5fd8be4741078f59a970a05402b6e8185fd5c8c82670ac0a40169

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1e86a6ad9aee1d78b706b2170da9b8122efecabac9896977f61da9f06759ed72
MD5 73291bc494a08571aba3558568b088ea
BLAKE2b-256 3eaccfe3f06deddfc664cb5180a4bad447bea86faa367eeb753530bda4e0da1f

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c42d118850b6bbde793f8553f4b193133f76d5cea0023e53dae5dc4b073bc22f
MD5 c48a471562f4ee7e4bb2fc86f5ca269a
BLAKE2b-256 068586275433cff61aed8a5fc028c0562b0b215996d895fa8a7fa5ccc879696a

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4bd3430e1edb2a9e393d2a1444120ae6e26b5deff108adc085b15e3e2cfc15e2
MD5 ad0df144c3d0370c2b66371e1f2c4858
BLAKE2b-256 00b5f58bb46391913a06b76c8c768b96f81fb3e241b88adfdf836a144e853d84

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 493cac4a75653dd8c84d683863e7751e64ea65d0a429cdfeb0947af278f687fb
MD5 9212a7d794271070bb66d962bae398cd
BLAKE2b-256 05f19ee2d1125a61f665f8b0e90f3f16bf657ed546b5ac59916cde992045c468

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 13064d25555645f880262a2b52b05cacfa499a3b7ae05540bb31c9518097667b
MD5 f04e8da61590e9705267117cb64e923d
BLAKE2b-256 6396d816fa1a8e6f9d0eb876e13c53e586de47fc3d91553dfded07c04e69cee9

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc6f9e69c14eb9c4b6ee67864b0054ef33c8367ec4710b768b01b3ae34fe1f57
MD5 71f5d49a42dea0baf96ea439c1d015b6
BLAKE2b-256 0195fb3d917d2572d3cedd4b1c2ec9834dd66332868a4ebb491fd4d2d72476b8

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3a9567e83a7db4dba02f8efd61734d27971bf9401dde6bb4f2f0208e404f68be
MD5 b9ae9cd147bdd49afb0744ff911010b1
BLAKE2b-256 f70a9bab70554f03d97547f97f66357e87d874bff23a1fe6cd5355e65c686fce

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2b3221e7b492424b670f9f18080351948ff1b88d73f1136086a092cd76789428
MD5 8e929f8394b54de4ee90e91c7d392411
BLAKE2b-256 e0035d6f28d454cab4cf961aefd8138ffb4e8156d93ded6aecfbea59f21906e6

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 21a78460df05cfdb105849969e7f8cacdb42eb38bda931ecbe2e3f43201afb34
MD5 3f5f6a970482858f6466300c30d8f43b
BLAKE2b-256 2d326113a4338d1bc0c7ffd20eef5c066c1125d570f4cffd135255cf4cc46d2f

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f30cd9c510419083d0f259c5a0db29b84a7abef39d5d0a7f265078a8b6ba547a
MD5 373e780085e689017e835b3dd87ae0d4
BLAKE2b-256 2dfc2d6bd013f62fb942b546f781ac96e5bae43d37248a3a0000e25c1256199f

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8c53aee985fa2b607685fe385e528d8a32f5a5a10fd27cf21d2457d756e16f87
MD5 d9fa6c4dcdd9eb235e79fe125465100b
BLAKE2b-256 becab9c3036d8b63077e96773ed6dc13837f6b070209a505c7331ef490ecc602

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 45ac43bbf0703f2242c97e12397a2337ab5eccb272e5fbf7d1963f1524386997
MD5 6a19b6ec9ba0c7e990c2e94cbdfc3c5a
BLAKE2b-256 34bbb1886b204ab2922dc5dfe89b348ab1a8547a00fa734904942866bded9e2e

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 04283f2dc268fcfaaf93679f1782226dcc03f36fbee37e587153eddd5ff196f2
MD5 da4f391552c2bf71a760b8ff571d20df
BLAKE2b-256 abd3d80ec552fe84f6c1ae651b58c229d1f1a6f3891353af79494741ee312e30

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 115a7e9fc1fcf33400b219f1a209017c1a2d29ff18dd2320e1ff6a46fd6cd641
MD5 378b2482b177bc85e6ae18b2e671339e
BLAKE2b-256 d50ba96a44f5efd8f4f99dcdd1c1ab765f8883bbc47e7912b1a9e15c1d3ee860

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 849e64b05c905f13f884c4971551b813e10a543c64fe88821fc14b7f8c4e4600
MD5 3d58e2d5f9211a1e776dfd2e4f5023cd
BLAKE2b-256 1e3500359f41b660640c174f19b76dbc48ee94af58c5e9c85e0b87b176efa369

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 69c7a09559c467023412277760aaee4fc1708880fc21c5c1494938b070cb2312
MD5 b0d32f55622bef5e850dcd96e9a7450d
BLAKE2b-256 1864d8fcf34728fe4d13e0e229f293b49d5a7ffa78d13d706e717e55d1b1bafa

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 054c3247af38c8bc1ed4e1b7846c92eed913e6fc4b1e0c04ba50444c938c093d
MD5 32792f7447057af48c89f36198ac02a1
BLAKE2b-256 5483c9419062ff70c389ac74653e7685140565fc97221d7c858f67db0d937991

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 426527a156e62fc34857329777701f9013ff491832cc0d442007c3c1c10ba53c
MD5 4823b38ef92cac0f07feb4806b599f53
BLAKE2b-256 db6a3ccdc4808c94c6e273ee91bda9337e13c6a675a3e5eddceccdfa18bf4fe3

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fd43fb56702758fdb12eb40f5d255a4696186594bea4c585aea588247abbbaf0
MD5 85f59eef7690222d6d48b2ce923648c2
BLAKE2b-256 78b79608bb09968958898070a109a6003af4c29b67f6e6be0b3ee49c646701a3

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc5e3af38ecec3bf637e1f2b869befbb1822b486d25d4e734541ee4ba6971c79
MD5 ed976f28d45bf69bd73e36b9a978c7f7
BLAKE2b-256 30284d81ecbcc0e75ad604e7b7f44326b994b1ffcf0a668813245a53abfae7e0

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 459a79e9600fcf9f83f3bfc8e7be6e1f1ab1334a331ca3b2948e9ad7c748a824
MD5 7736a4dcd35c0617d6b308d16639384b
BLAKE2b-256 96b4dede92016574596f23d834a66323b59dc7ec8beb9bebdd42d019253c5f36

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 65c3f3e7b4707942641fb268fb25be07e53843db67f45c882d24d636db3fd43f
MD5 1c7f3a55ed4c0a63bd700b823021063d
BLAKE2b-256 afe41c6d058d9dbae608370ef303aa14382913a3079fa876cf3e6f6fca022aaa

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 43810b4ac50d35828497ede2f816442b27d1191adeb104e631809634ff5e4aca
MD5 849fa77fb981dfcd55631347a2786d75
BLAKE2b-256 4e292306821fbb22d8fa439ce54269a9a77f33269eef5fdb760addf07f4c526c

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cb6d8e35855904dbc0cbdda21105fd012619122b8de2ea9a377b791aaba395a7
MD5 b160c7d5dbf3a066e6f8df1848535d9a
BLAKE2b-256 244e0936d9d9801699cdde948c28921e710a18239567f5c133211e6156521c3c

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 90a3952a52288ea91079913d5d6b90ce118450fd9fc663d00171904d6278d229
MD5 f30f74d7606d4cca9319f36bc4a04353
BLAKE2b-256 d8b05766528721ce9f62c76005a8dda565f9e9c2adc40b1b634370d9b24f3d67

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bd29e93228cff0b843d6d72e07b7b5f3545ffff9dc741a34ac89f207e786d07f
MD5 eec19c0c24f3d5bd8e2899ae1d331d03
BLAKE2b-256 a902c3cdd81b2a51b298606ea85ada0ef48b5f99c8c8d85bf32d4b04a573d0d9

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b6f2fd603c942cf821dca04dd71e39c297f6494179053c3f2fffe6b257427065
MD5 f31a51c033e06be021b1c847508f3be8
BLAKE2b-256 ad040a0db883458e86534d192242b3503de34f4d5e5a233539a7bf775161f6c0

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 0fccd96936e5ac496eb822cb4f22a7b44d7c26b056bd053405e3e142c47b3cc9
MD5 3cd242f0508df05b7e32b454d6ee7a9f
BLAKE2b-256 d52795b93b79fa245f4793b3e3a053893688764e61064c38c83f31e24be4e0b9

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 eb60c6488885108090ff52af1e4503a345ebaecfb95abea36ff53d1fce9f3d24
MD5 a9a1bf7afae45ef6af5c06e97d35cb2a
BLAKE2b-256 b43c1a400481c464245f26b33753898c6d2a7eda7e1e0363228ff8cc3aa12142

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_ppc64.manylinux2014_ppc64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 0a3d35289a392339287f3373da685569e5625a091cbd4d78afc8758a56228685
MD5 c6cc4e29a921c2c2ab651bfd5b0b9de0
BLAKE2b-256 2be7efaa472e37460488995c7f78c909ffdfbc51d04f1ecd1e24768fcd0a9bb5

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 26029f3f14170cf7ce41c9e3cce11dd3181ad94fbfcbc7527e2e2ea8aa58416a
MD5 012dd4720839d168e7517e2e9fbed3e4
BLAKE2b-256 483eb4fcfe22d3101714487a5c36748c50b3f0faec2e6bf559774b763c465f19

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6357313eda5b0672434578419c8d2effb8d142f76c7d72fdca2281ef891854e4
MD5 a1ce38eac181a6f33b3ea1737cd2f001
BLAKE2b-256 3e6fafc23f279a38818449a1867fd58dffb6a9ba2b974f08ba3bfe3048529657

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2f2baa9ad4d2799cfdde23d1e97dafb50b36e5f247f83224dabb6721680afc44
MD5 be17b24009dac6971cb38f31eb480161
BLAKE2b-256 23f033417e7088e71606163cd3eb127266dc410930ad01ada4eaa449d920c7f6

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.0-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 c368a46c8cbf0bd53ea714f1980cf8850bf3c4a305b3830fe0bbe13177770492
MD5 e615128bc1337ce598b7ab66c7026dc7
BLAKE2b-256 812c31732c1bf0855079b55c5a719e61262d81b694e7261028bc853d3ea6d6e4

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page