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.2.tar.gz (36.8 kB view details)

Uploaded Source

Built Distributions

pyxirr-0.10.2-cp312-none-win_amd64.whl (465.1 kB view details)

Uploaded CPython 3.12 Windows x86-64

pyxirr-0.10.2-cp312-cp312-musllinux_1_2_x86_64.whl (691.5 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ x86-64

pyxirr-0.10.2-cp312-cp312-musllinux_1_2_i686.whl (680.9 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ i686

pyxirr-0.10.2-cp312-cp312-musllinux_1_2_armv7l.whl (706.8 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.2-cp312-cp312-musllinux_1_2_aarch64.whl (637.6 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.2+ ARM64

pyxirr-0.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (518.8 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (868.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ s390x

pyxirr-0.10.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (611.3 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.2-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (503.6 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (443.5 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (457.2 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.2-cp312-cp312-macosx_11_0_arm64.whl (434.3 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pyxirr-0.10.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (906.8 kB view details)

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

pyxirr-0.10.2-cp311-none-win_amd64.whl (460.4 kB view details)

Uploaded CPython 3.11 Windows x86-64

pyxirr-0.10.2-cp311-cp311-musllinux_1_2_x86_64.whl (688.7 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ x86-64

pyxirr-0.10.2-cp311-cp311-musllinux_1_2_i686.whl (678.2 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ i686

pyxirr-0.10.2-cp311-cp311-musllinux_1_2_armv7l.whl (704.7 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.2-cp311-cp311-musllinux_1_2_aarch64.whl (636.5 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.2+ ARM64

pyxirr-0.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (904.7 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ s390x

pyxirr-0.10.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (609.0 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.2-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (502.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (441.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (455.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.2-cp311-cp311-macosx_11_0_arm64.whl (430.1 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pyxirr-0.10.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (905.6 kB view details)

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

pyxirr-0.10.2-cp310-none-win_amd64.whl (460.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

pyxirr-0.10.2-cp310-cp310-musllinux_1_2_x86_64.whl (688.7 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ x86-64

pyxirr-0.10.2-cp310-cp310-musllinux_1_2_i686.whl (678.2 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ i686

pyxirr-0.10.2-cp310-cp310-musllinux_1_2_armv7l.whl (704.7 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.2-cp310-cp310-musllinux_1_2_aarch64.whl (636.4 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.2+ ARM64

pyxirr-0.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (515.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (904.6 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ s390x

pyxirr-0.10.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (609.0 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.2-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (502.2 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (441.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (455.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.2-cp310-cp310-macosx_11_0_arm64.whl (434.5 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pyxirr-0.10.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (903.3 kB view details)

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

pyxirr-0.10.2-cp39-none-win_amd64.whl (460.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

pyxirr-0.10.2-cp39-cp39-musllinux_1_2_x86_64.whl (689.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ x86-64

pyxirr-0.10.2-cp39-cp39-musllinux_1_2_i686.whl (678.6 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ i686

pyxirr-0.10.2-cp39-cp39-musllinux_1_2_armv7l.whl (705.0 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.2-cp39-cp39-musllinux_1_2_aarch64.whl (636.7 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.2+ ARM64

pyxirr-0.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (516.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (905.0 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ s390x

pyxirr-0.10.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (609.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.2-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (502.5 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (441.5 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (456.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.2-cp39-cp39-macosx_11_0_arm64.whl (434.6 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pyxirr-0.10.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (905.9 kB view details)

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

pyxirr-0.10.2-cp38-none-win_amd64.whl (458.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

pyxirr-0.10.2-cp38-cp38-musllinux_1_2_x86_64.whl (687.1 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ x86-64

pyxirr-0.10.2-cp38-cp38-musllinux_1_2_i686.whl (676.8 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ i686

pyxirr-0.10.2-cp38-cp38-musllinux_1_2_armv7l.whl (703.2 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.2-cp38-cp38-musllinux_1_2_aarch64.whl (635.1 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.2+ ARM64

pyxirr-0.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (514.3 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pyxirr-0.10.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (905.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ s390x

pyxirr-0.10.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (607.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.2-cp38-cp38-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (500.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ppc64

pyxirr-0.10.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (439.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (454.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

pyxirr-0.10.2-cp38-cp38-macosx_11_0_arm64.whl (432.5 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pyxirr-0.10.2-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (901.2 kB view details)

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

pyxirr-0.10.2-cp37-none-win_amd64.whl (458.7 kB view details)

Uploaded CPython 3.7 Windows x86-64

pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_x86_64.whl (687.2 kB view details)

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

pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_i686.whl (676.9 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ i686

pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_armv7l.whl (703.3 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ ARMv7l

pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_aarch64.whl (635.1 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.2+ ARM64

pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (514.3 kB view details)

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

pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (905.0 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ s390x

pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (607.7 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ppc64le

pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (500.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ppc64

pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (439.7 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARMv7l

pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (454.4 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

pyxirr-0.10.2-cp37-cp37m-macosx_11_0_arm64.whl (429.0 kB view details)

Uploaded CPython 3.7m macOS 11.0+ ARM64

pyxirr-0.10.2-cp37-cp37m-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (901.3 kB view details)

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

File details

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

File metadata

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

File hashes

Hashes for pyxirr-0.10.2.tar.gz
Algorithm Hash digest
SHA256 c9ff25fffbcefda0e2b324a44470b684290a1bdab846d2d04a453047eb058b66
MD5 c7fba7514f6aa59db92609834361492b
BLAKE2b-256 22cb549e6f7e79b5223be7729de105ca0f5364faa3beda1509063241d1378e0c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 4aa8bdaaf15170afc82997a6989f64165250b74e90a77d653bed34077ae7323b
MD5 94cbe65fc9026a174e88051f77c3bb71
BLAKE2b-256 02c2f5abf5047c24582ac6fc83ee2d1710ce30a848d04f15d7ffb380738205f2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e7f4f63c932e032da45384f67cd441b95184517c6d4a869d4ef398cd0efd46fb
MD5 2851fb6932fefe5b12e8b3c6ba60a9d0
BLAKE2b-256 8b0d18a1738f9bcc9a2747e889eddf5cb8795984867d8fe9cd085e9ff3a19149

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d4d24196410ce33b6544a12581b78ab53993e1690d506ac1e2f0b7c5f6ab5ece
MD5 87259a2400d568ee685d2b18c5577ca6
BLAKE2b-256 452821861d4dc2583ca690e1e6b5a8cbfe3e22f873d20bdc82bfe39f9a9ff928

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d7e5c6c90d1744948232848e2f5c7050a5a54b631557fa94e48bebd66420f4a2
MD5 5a1ce60526c67197ce161db9222bec2d
BLAKE2b-256 e18f6ccc51ac0d8c6a481478a6be405e4441f3c95c0762ce8fd9798b9b1b454f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bc87d9bffaf863e98a731b41c21c312aa74212ed5cdd25468c7867db40b22e9a
MD5 f1c590bcab2fd716618c7f6d91e37c12
BLAKE2b-256 466025c662f1f36c7f6be9ab9c87d3b1a8d40ac7a6b49fadd22f85822323c901

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee875b0b2aa453bc243fa490a3e51b3f972dcc9d4a834b59038a8697e7254fe9
MD5 01220151acaa748b2485621703248373
BLAKE2b-256 7fe9f4c04d352e617e1f2880683d9c0378a6f5e851f0c86e610d6431668175d6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f937735668ec52efdf26851fd63142c0beba1d4c4008ea670d34f37cdb99977f
MD5 056d528b147de096b9356c24636c7658
BLAKE2b-256 f89a529ff1bce2683416c0b44760e52acf856d7657afc9edce6ce70bd84c9bfe

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 bd470103ce2f20a748cefbee99edf419cc56bb8c48f22b280e4ac845584b7243
MD5 38715af1731ce1eff3d311720a43d57b
BLAKE2b-256 826777089781997d28c9f8eb57775aa3f22c7c0dee7380048aeb9373e3ea042e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 e62cbf6aca76e6b0325fc863024440a62f284f67ba3bef486d151d1ac94c45aa
MD5 2f45d1ed9494b0e452da00d695300620
BLAKE2b-256 0140dc0fabd725daa25b0995373f79484d17c2acf3c24854c372741bafe4b77f

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 7785965a090b2deb74097d4b05b439a17d228d0753c4c7025af77f2160e9f751
MD5 dd88206295eb339319eb01ca8c52f7ef
BLAKE2b-256 b8e2425cb82b9483aec87184b145157b4b387aa4d7db47b4dd0d30150f48699b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1dad887b81ef7fd56e9565ab645d1a1fe9d0b320a58ef00dfa9f70f4903df68d
MD5 061abc68b231929029ab10bb110b4aa9
BLAKE2b-256 6692bf9174905d7c5a0ce4eb13a6948a8938d83d175f3c4bb837b58d6cacda12

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41de8169c370933832efde266e104fe64806d84df94e15387053f1d09e56587f
MD5 6a4bcdc3ec053d9f29a5c910ea546eca
BLAKE2b-256 3c043e2b5038a4cdced9dd6d9719002bd897c79eb88aa2357d09274f9fce2b34

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 0dbc4b9cfb4200e9f4619785b3291532419dd20c1657c7c876a2d829000a3aad
MD5 b6971a28c142504911dcc53227995875
BLAKE2b-256 348880d694d07d419ba567def33052a1cd8dfa6c70a2cbf6e0bf1cc11107083d

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 9d77a6c99fd33d4121ac76ea6a199f5c4832dda3776b7723235bb9e5ea13957a
MD5 daf00bd605c217963eaff0723927da14
BLAKE2b-256 dc82f04185045db3a2072c86c34e804dd5aed9e07dbd5041bf526cef8deaa5bc

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c762da9469af8adfa6f18b6086f1aaffc8415edef38b40c87b9d772565c344f2
MD5 cda7b58ced6677ba8b2ca69539cdfc73
BLAKE2b-256 723317903a09ae6e24c5ef21246b7a140aead8a7b1221c72d414cceca28bcb82

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0945fd0aa57619b238d497d5a1db0a3421a791f55c68c5dea38840cd27c5dfc5
MD5 e1dfc37f325ed524a402d2d7215cfcde
BLAKE2b-256 921f9cfafccf581aaeb4857684d497cb8d156f26a572318e05aa91894f143640

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a7e8e48f65119bdf73fc04716bd77d6921a2d6f8e01f91abc8d94e0108763006
MD5 bc2257266ebcd0160ccbeb2eb0d9a255
BLAKE2b-256 4c62fce25a58ba4ad743b1eb9340bcc5d976e3b0f12f8e87a0697e629588c07c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3447ba9751c364ef0d5697cfd853c0fbd320940b5b26fa8dc2e3f4d17153807c
MD5 5ee6ad94cc573ddb2d9c8e54d0397de1
BLAKE2b-256 0bb9417e51844a52347511f98277de31ec368ea7a73b6ef6de635be87d8c791b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21c4cef0eb97976fc9cba1a1e694bef9edc7e0dc86e06b61ab5d875d33bc69ea
MD5 a3da36779e6dcba62801565a9d8a6441
BLAKE2b-256 9fc9d6a144e44f397b2135aa6da6a88403870279451545ac7da0ec296464b5aa

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a592e71c92fae68eeb8ae0942510541bfc64ef4a4c86e3c1d44f868be93bbdc2
MD5 560637bb87ebadfc761ded5826be3ac1
BLAKE2b-256 3b9a1ddbfb7ce400886056262aae3c82f175776a00aa1da9132f1de6403d52e4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 48ed0556a324c1f27b2d8ecd0d48610e358cb3506e9af0c227cacb66beb74b56
MD5 cbe93fc8d4d8dba3db69b96faa2feafb
BLAKE2b-256 7ec9598b7dc14e361a70f4eb66cf10aaf184b4838faf8c7ea7bfa31328fb40a3

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 52d4a3655ef3e05bc2eefc0ef76dad1b8aab4f7e6ffd38f0bb582656bc2288cf
MD5 d8261b9b2d6e7dda97c092294045c046
BLAKE2b-256 d9c860fbbe91771baf16ee5fca484ac58865ec7b8a65ffab91d1cb9372593a89

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 faabf2534c63cba059571b804e277fa7e385fec632a6619993cef31d018d52fd
MD5 61ecec343d1a17ab9e02ce34a9b56269
BLAKE2b-256 6bbb650856b6df05aa39d4f9973c821cc755e604b5aa28c443d66cd81d3e50b8

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 74fa8da5fabc14bcf87a7147aecc02a0aa1c390e2d578c5bc1cd30dd12c49607
MD5 b5554200f01efc6ded52ba95a8db057b
BLAKE2b-256 20a3cba3ef2f926ae21f2dd2569fd1951ddf9656e08001bc0f0f3f7a0d9a24f8

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6d70703d2df6ce3cca9c08c2d032679ea59ec6053a6ba0f42d8e2304d179c6a
MD5 7150ee058e9d9c46b2888173a67bee22
BLAKE2b-256 a2090485cbce5d781ee7f409b1cfae54b03e4095ca256210b3d0d87f9257aa6d

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 297ae6ccc2d1b3687f8f98d133501d800c4a911741a5b3486f6f1528398b8180
MD5 67267a974c408d47a5db08da170dea3f
BLAKE2b-256 8cb9dc602e945978c80282f792f44f565b27977b8179a71cdb8ea0c07b0251b7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 d8302e1d65f0c71297e28ea34971a2248c1e2476b6a0d74e9af7eb8140c0501c
MD5 106c850238023fd35eeab9eabef37e1c
BLAKE2b-256 ae692f3608ce4a115bce34e5467a82a4795bbc1ef643118b20fb8ede776b7ca4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 95d3b05defc197bfc0a264be84d4a39ec36bda29e6ebe8fe7b08e790d05d3413
MD5 84eba5ecfdb31b76b5de7ed36ac3585c
BLAKE2b-256 fc17ff0a420de285c0500b4de85a581389f2f743ad68a90da5d5f0020cc14b1e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 70ebc8725e82b691bce0ee1159de8e2d4f6858c654ec4bce04350d7dee0b3aad
MD5 d489f90fbec344b99e4545d40dc727b2
BLAKE2b-256 2a53a936038bb9597b9279009259cb4619c3d77bc21a3bd48f656af613e491a6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ef3f6f17906ea39af434361078c62b38fcd6c16799971b7a511159e71b194316
MD5 c283bb35b877b38934c38a56580fdd78
BLAKE2b-256 d3f07d400f472599ddc0171f47831b3edf3478a73701474073d6242a54286f6c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 44154fa70845f8b17a698ac4669cb6002bed44808acb6e0cdd0d4a34338849b1
MD5 fc515c96e978798bc2f69e0be4f36ad3
BLAKE2b-256 403a66abdb47044bb24ca3a19de3df8339b1cfb50d468cc571b40655805b39c0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 99a94c22cf937705dd34b6e92439157484ad802119846de40c11cad47bdb9ba8
MD5 5f16389f543dd18b1b85e0cb55702e45
BLAKE2b-256 e99d561cd8d7193d8fb3f5b3523965996374733ab0d2d7ad189be2a0cbc9e9de

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 a82637cd18fc56e913a492fe79f3ac12d09d6724214fecb194a521e573577ef9
MD5 6925196993e2dca70bd8eddb63634932
BLAKE2b-256 4887efeabba2be2b6269107ccfa933e520a26a458e07d65c6c53e4df533424b6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 affc40481e0f726563ecab90368253ecf2b2df74fc167bc5cb6c30db38013e22
MD5 55457f212733f30e6c2592324d8c4905
BLAKE2b-256 c1c596d33b22b090a9b7eaefa7e0d7c6a8368b034a132264810c875bf42898f6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 d22af9d045845eb8b71bb0a61100fe9aa6efc75f69e9ea350eecbd6cb34a5d2a
MD5 225a3ae610ba6369ee3d599c49179c01
BLAKE2b-256 7ecd592292a5e8ca88f8ac42d08082681c7c1963463d07fdffefbda131e8720a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 4c277b7937798bcf75d6659bb6e3dab27a680572e026fe1615327faaa4ed37c5
MD5 61ef3701753f885e47411f28423ff822
BLAKE2b-256 0085a9795d679e907637e287c1eeb2132e8bdbdeda0ce0d78e2c8c684aecedfb

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d29b0c9c12edb7ed8397665b6c897aa854583b4f3755e3a76c90ceb9f008d75
MD5 46fb34f3d18a74d32d33755b2153a98e
BLAKE2b-256 ac9e1765d8ed593cf65e44113f7feba218c869a1b289a1c7c9ba168105ded4c0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 992711c35ee4558feb420d093480fb5a27c7268c116cb9ff52637493233590e7
MD5 f1dd85093c77d703e2a0fca5a5299213
BLAKE2b-256 f10e8a45aaa6c8376e9801b061b5359ec019b0c259b1f348b96655274edd5596

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 d56a3a9cf2aef9965908af69ce103d731a8219ed2ea2d110e0dca54fa40964c7
MD5 9d70033c6e90dbc34a8dcb827286e7fd
BLAKE2b-256 7498ca16c5ba7487e5aebeac164362bb33cb730a679aff808b927a6676c5756e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 8ebd868d2b1090dcb00f911afcea0f6c281e013431e7bb1fad25238082e85916
MD5 39c3cae87531d6f6ea8e2b67d68c282f
BLAKE2b-256 b480992870ab6d60274bbd87ba2df2770e0c08bdaaf8ab6b0e35bbd4c9ed6eb7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7e0fb718536547640d1f0bf615fd4c4f01a39319df16f3ac1de30ecd9361bfc7
MD5 9bd19fc46916f4371f0e6a0e8a40e15a
BLAKE2b-256 28c02b9f19f37357f93a80365da043744321ea1e7f984d436bcd6c6235559215

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 621dd9d8baac8bc5039e7af2ea943539168fc00451b74c65b0fd9a63750c4cdf
MD5 bf82989743538f36d951ebbcbf4a4e01
BLAKE2b-256 df6135781bb3142971e8d1f71fa88b961b7ff5ec0b0a4cf9cca6fe21897d8a88

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 11fcaec17667d2ffe0cb15ee706abdf142402f3483df7883680704fa8ed3e41b
MD5 8a1ff5e5ad32a25e1a95de1331d41007
BLAKE2b-256 8e2725e9acf4c9fc585ec0907714a23be3b3f99c02de1218384d9feebe777feb

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 adb5b3d90a9bbbd5773fde2789d56c61823787920ec9cfad97b6ee73367dc43e
MD5 cee86fce860ed7a836376af73e754403
BLAKE2b-256 b52f08938b14710532b8fbd0da0696ed778148abec1cb4bac2576dea7eb7f60e

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90c08f49f75a37914b76bf9f89de5deac09990b9b777bd470ff0e800d3e3f833
MD5 a422733a73055858629443dbdec833a8
BLAKE2b-256 06ccbfca9feaccbff2bf0022b1d5119a0eef123614dcc784f4ede48e60978843

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 b3a22d1b41ae1d3bf654f96e5cc3c34621f441f7eaf55bfb6da32ef001292aa3
MD5 411b507607214e4cc9d54d8154ba5a70
BLAKE2b-256 68edec59b40720dce137fba6901536eb7812cb2a809502516e1a83bb36cd2ff6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4893485f047af4c3f45646f2518602f1e8a87a349768b1b5c897a097caa19ac6
MD5 2227b1553e27987b1c83856c2981921d
BLAKE2b-256 6213f70c11235e3769f7dd745a6b382b4f195d444a46b59e3e87b1495183df5a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 2d2bb6f751ed42200bf54e22caf9f0b53b5d722eafb17a65a514bef2859882e0
MD5 cbcbc1713f0fba5150be085a11a0f0c3
BLAKE2b-256 55cfc61ff8bf3d24e23df3f2deb52adbe8a9caf6d86a613bc8fb28fa2dac301a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 e8162e1e6e9fc4e3f2a0a075af9401599ac3f640c2d2ca274e40fa88687ab421
MD5 09e48b5dc37cbd26949e8c38c9cf37a5
BLAKE2b-256 ab2d816de588c10ddd290a2eff94ac3370da53b6bcfa769bd01d36d52d13011b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b170c39c1397a874a1494d77a36acfee0e57077b0e542ac4f4b67ad3ada381e5
MD5 1eae053d92ea054cfd67392c1d51fd2c
BLAKE2b-256 7dbe9761f77b11e7e7bf35724fd6920f1e1d49d98d468b6c303810aff9fc0c47

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fd8dd6229023eab6c377340010736183739139e663230c5d834b987554007cd
MD5 0f8c951f31565a1379f6baa4295400a8
BLAKE2b-256 466b2e59a0ac26bd1ca11b38307433794404e4918221a60a4d8d28fda593c02f

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 dce4da0b5bb1381a65f5edaee2dc209abaedc4207f206a71482195342bfe50f1
MD5 f004f2a289c958e68ad8c0f06aebc4c5
BLAKE2b-256 b49d21a33e66e98bdeb85aabfd2b792e3d3e00afc6f985f67c2927dd94e994e2

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 9f27ab45291d70354d7ff9187d8172eddef35dca108582efe0c47d2dcf800e50
MD5 b1773d14220ecc1032632e3981514010
BLAKE2b-256 e59d0c1e2162bfc7a93d4337ded2d32db8827fbaf94a2f92dd3f22ad3dcda590

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 099ff5bdd171eb5e05fa97ee810001b64970012766aad729f9cb6fbdcc3aee1a
MD5 a94b1c3bcf08d0bea78d13791f219558
BLAKE2b-256 2f5538239d963eec5d8244ce1d5376febd73b2f06f6173b17d6160466de47337

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c8a84f3f833747b30224b905ab6a1d769f5b66c47a45468cbc9ad538b381a566
MD5 d81159dba39b475d232cf4ecf0c626cf
BLAKE2b-256 c2463e641a29399ba6cc4c4f904edd506fd2f65bafe2533b7071e75335cf63c7

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 337855c4271021989b823bfab0e40a9989e39eaf529ac1d6a2532ec541649d63
MD5 146d832e43aea7c4fcd9031120b6e417
BLAKE2b-256 eb5b27a4f98cfda689e36ce5de1eba9fea464698d1c72f22aa48bf0e32bbae5b

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fa479e3cd827846a30d3e4c92f4b6cf44b16787cc563fdad17721b82f49db49f
MD5 b794098ace504bbd6d9aafd4ef0829fb
BLAKE2b-256 2c674a8ef406b67a0336527581251945fac7c90ebb767afbd60384e80926ea7c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18fccc6e58506b41306bacf9916109b21cc13229eb7dfa0233795d3ada3adc4b
MD5 58503b2254145bf7660f3051026e3a5b
BLAKE2b-256 e1c6b767f190fc399f5ccd25fb49c29a64af3b0e6703fdc6a96061d0790214cd

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 7ea33c634124714e240e90ee0a175d39a3f8ddb1bc7efc84c7ed3cc0e649ba5c
MD5 59d616c6d2b876bbe93464065216ccb8
BLAKE2b-256 1463f265541966e9b39888911e2674a811bc95592b8a00f1d2b668834fda733a

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a13283bd7fbc64c38b868209e4316c7563a1de3833d3e3bf428b40b36ec8d48c
MD5 63dc36ac4d8bad9f456747888e01e8f7
BLAKE2b-256 7803e1713f169ca603512b0be8c4925e8a94f2597a746c9fc119decb5eaed911

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 14c5d8794a49f980658b75c52f5b6da43dc516ee7d712628b61d3fd711c0854d
MD5 7a46957344420fceecf6f7168f18615e
BLAKE2b-256 166a3805d8d88f45d5c7642ce19c28d79e0daaed1d9cd842c057accc667c8dba

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 35376427552eb48e94758379a3cad2c4accf923144db502459805da1b06458a2
MD5 90e5696eef42a0fabed3d27fa0d206fe
BLAKE2b-256 a16c78d239c101fafaaf7eedc53fc3dc6e866179583238a63db76dcd5fca6596

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b853ca6f97ba5d313aeec8609c047cead4e46a9fc88d78203026df5dfbebb906
MD5 38c5f954c1397844909e376924d98f6b
BLAKE2b-256 9fc0f3eebdf5245f64f24f81ce916925b13b1bc62b470fe4bea1f9a87ad34961

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0c376f960c49c4ea16856faa23b977f5a88f80361e8a2c198b81d46aba64d2e3
MD5 a140fb5712ac52d8e5c884c55fb27462
BLAKE2b-256 e6cac755876becf8663c8dfa86c28db276fd9c3fe944ab900964df796834dc31

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.2-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 2e95792deaa7ddc67977d4eabc6f2935829c01f641664b8d7dc803eb8a4f0183
MD5 798666931a6a746b2e5c66170d4ed885
BLAKE2b-256 fb9382b116be33e81170789d2109ea70f7d6b7b2ecb61f06ef7de01ae485bfd9

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-none-win_amd64.whl
Algorithm Hash digest
SHA256 01ad4143754d52b81f1d0ee335acdbf2d5008c2ecd9161810ce1d8f2aa66f484
MD5 78870c410e5b9926ee01a982332af55a
BLAKE2b-256 82b42455c072bd70d55942256d4ea3ca7c81d6c245903e83dca0e350bc9c8923

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 92619085e81789834baa07cce81fbf772354b5f7ef53147d8e15a7342b429f9a
MD5 cf31f74369eadee2cef50fe3b4c50e4b
BLAKE2b-256 25589b21dc7b16946d956e18c7785e1fb67ec8064d27c087eb2cee5ec3ee90a6

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e019c4452ae43e1c2cf0e237fdcac94c93110fea6f1e1eedaf73561c70dd97e4
MD5 ba7fe57ffc352ff64e80960a4683805d
BLAKE2b-256 b5f80777482d5ef47e213873828300385b72896f6639b426efc9906d293eac45

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3e468067386f0d568bb2500dfb5526aee76c3576b31c7cd9456550da7f42c101
MD5 ff32b55f9b5348ed943036ae9b00b7a4
BLAKE2b-256 52275bf3a0417d1304c7b48c766c6d2affc7f70d02c3fc54a84830b2336fe283

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1044084ea70d634b59057cb783865bdb2b6776552481fb5a346a5a6c3e182a92
MD5 f8ab2ba66afe052ceb6b0c89978abe16
BLAKE2b-256 556ebd3451bd0cde8e2e571b34b065bf6f5c00172b551a86931e3ca04c518107

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c1f74adde2bcec78a51cedf3ba360df61831538b8ae4b10019c9af65d932849
MD5 10a171eb3b2c6cebc8dff22b2add5325
BLAKE2b-256 7eb1b6a1a0c47b50ddc9aea1be37cdee97e2116d305b4895509b08cd7a38f54c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4bd5563d458968e77f88ebdc9b5b8b408adea6d06a26972630d3a74c36dcc0ed
MD5 23eeb3169afe070d1fd4a242832b9a56
BLAKE2b-256 3d8e8398ad54f0c212e9264dab007d1f8539a94e8284a830793fcb2b2e3fde2c

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d20c7412923e45a81de20f78737a719fe4dd025a939c3fdc4f41283ff55b5779
MD5 7f1f3cd9212ad8440609872757b107e9
BLAKE2b-256 c2ec3acf7bc4328e73f8389e106c46057e2c3a63577ccdc379f65a1cdae7e5b4

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_ppc64.manylinux2014_ppc64.whl
Algorithm Hash digest
SHA256 616641691926dae25d6834e9d45437746c095e33701f9e52a2a70787ee1f1f4d
MD5 435ea9fc74edd06ea1c435edd4e61cfb
BLAKE2b-256 06bda8ccc7d75cc446670694d3404dd2e481589fab7899729d4558e1af8ea317

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 91a357316d1d50cf103c245ff5a094728da1c61850e72560e5d9d18df4ad6798
MD5 10ffe169e546e77e047bbe721103928d
BLAKE2b-256 25a1474fa6791d4c7bd7f006ff1e32f5deed9c6d8652d445714fbadc9d11f126

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 64892478416b74d865810fb9fab0ad9982126a0e88e5bcef81cffd3fdd854785
MD5 9550dd0de02563485470cc57ec81e6b4
BLAKE2b-256 f352647b8dec0a2a9bccfa3bbb4e35a5beb9e2eb5cc920b22ad964989e0a37ca

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 962de703bf8338171c25076c915cf622bc814236e3393422de44cd53f85cf16c
MD5 e3e87b849e55acaa04fcb5041ecf7d88
BLAKE2b-256 28bd834d0dbaf2727e1bfd4d9f82e429b19ff8bbb3c7078c416efd48d4b379f6

See more details on using hashes here.

Provenance

File details

Details for the file pyxirr-0.10.2-cp37-cp37m-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.

File metadata

File hashes

Hashes for pyxirr-0.10.2-cp37-cp37m-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Algorithm Hash digest
SHA256 23f690ca3c222c41dd96189cf040c4a889b499b2404e4363f13f616ce13d5439
MD5 3930477931e9e964661bd7e0a6fd443f
BLAKE2b-256 031a73964553611892fb874b69b0049e8ddd7ac39e02a04ded095b593376c204

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