Skip to main content

Random Forests for Change Point Detection

Project description

Random Forests for Change Point Detection

Change point detection aims to identify structural breaks in the probability distribution of a time series. Existing methods either assume a parametric model for within-segment distributions or are based on ranks or distances and thus fail in scenarios with a reasonably large dimensionality.

changeforest implements a classifier-based algorithm that consistently estimates change points without any parametric assumptions, even in high-dimensional scenarios. It uses the out-of-bag probability predictions of a random forest to construct a classifier log-likelihood ratio that gets optimized using a computationally feasible two-step method.

See [1] for details.

Installation

To install from conda-forge (recommended), run

conda install -c conda-forge changeforest

To install from PyPI, run

pip install changeforest

Example

In the following example, we perform random forest-based change point detection on a simulated dataset with n=600 observations and covariance shifts at t=200, 400.

In [1]: import numpy as np
   ...: 
   ...: Sigma = np.full((5, 5), 0.7)
   ...: np.fill_diagonal(Sigma, 1)
   ...: 
   ...: rng = np.random.default_rng(12)
   ...: X = np.concatenate(
   ...:     (
   ...:         rng.normal(0, 1, (200, 5)),
   ...:         rng.multivariate_normal(np.zeros(5), Sigma, 200, method="cholesky"),
   ...:         rng.normal(0, 1, (200, 5)),
   ...:     ),
   ...:     axis=0,
   ...: )

The simulated dataset X coincides with the change in covariance (CIC) setup described in [1]. Observations in the first and last segments are independently drawn from a standard multivariate Gaussian distribution. Observations in the second segment are i.i.d. normal with mean zero and unit variance, but with a covariance of ρ = 0.7 between coordinates. This is a challenging scenario.

In [2]: from changeforest import changeforest
   ...: 
   ...: result = changeforest(X, "random_forest", "bs")
   ...: result
Out[2]: 
                    best_split max_gain p_value
(0, 600]                   400   14.814   0.005
 ¦--(0, 400]               200   59.314   0.005
 ¦   ¦--(0, 200]             6    -1.95    0.67
 ¦   °--(200, 400]         393   -8.668    0.81
 °--(400, 600]             412   -9.047    0.66

In [3]: result.split_points()
Out[3]: [200, 400]

changeforest correctly identifies the change points at t=200 and t=400. The changeforest function returns a BinarySegmentationResult. We use its plot method to investigate the gain curves maximized by the change point estimates:

In [4]: result.plot().show()

Change point estimates are marked in red.

For method="random_forest" and method="knn", the changeforest algorithm uses a two-step approach to find an optimizer of the gain. This fits a classifier for three split candidates at the segment's 1/4, 1/2 and 3/4 quantiles, computes approximate gain curves using the resulting classifier log-likelihood ratios and selects the overall optimizer as a second guess. We can investigate the gain curves from the optimizer using the plot method of OptimizerResult. The initial guesses are marked in blue.

In [5]: result.optimizer_result.plot().show()

One can observe that the approximate gain curves are piecewise linear, with maxima around the true underlying change points.

The BinarySegmentationResult returned by changeforest is a tree-like object with attributes start, stop, best_split, max_gain, p_value, is_significant, optimizer_result, model_selection_result, left, right and segments. These can be interesting to investigate the output of the algorithm further.

The changeforest algorithm can be tuned with hyperparameters. See here for their descriptions and default values. In Python, the parameters can be specified with the Control class, which can be passed to changeforest. The following will build random forests with 50 trees:

In [6]: from changeforest import Control
   ...: changeforest(X, "random_forest", "bs", Control(random_forest_n_estimators=50))
Out[6]: 
                    best_split max_gain p_value
(0, 600]                   416    7.463    0.01
 ¦--(0, 416]               200   43.935   0.005
 ¦   ¦--(0, 200]           193  -14.993   0.945
 ¦   °--(200, 416]         217    -9.13   0.085
 °--(416, 600]             591   -12.07       1 

The changeforest algorithm still detects change points at t=200, but is slightly off with t=416.

Due to the nature of the change, method="change_in_mean" is unable to detect any change points at all:

In [7]: changeforest(X, "change_in_mean", "bs")
Out[7]: 
          best_split max_gain p_value
(0, 600]         589    8.625  

References

[1] M. Londschien, P. Bühlmann and S. Kovács (2023). "Random Forests for Change Point Detection" Journal of Machine Learning Research

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

changeforest-1.1.1.tar.gz (368.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

changeforest-1.1.1-cp312-none-win_amd64.whl (322.8 kB view details)

Uploaded CPython 3.12Windows x86-64

changeforest-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

changeforest-1.1.1-cp312-cp312-macosx_11_0_arm64.whl (480.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

changeforest-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl (479.3 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

changeforest-1.1.1-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (953.3 kB view details)

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

changeforest-1.1.1-cp311-none-win_amd64.whl (322.1 kB view details)

Uploaded CPython 3.11Windows x86-64

changeforest-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

changeforest-1.1.1-cp311-cp311-macosx_11_0_arm64.whl (480.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

changeforest-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl (480.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

changeforest-1.1.1-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (953.8 kB view details)

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

changeforest-1.1.1-cp310-none-win_amd64.whl (322.1 kB view details)

Uploaded CPython 3.10Windows x86-64

changeforest-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

changeforest-1.1.1-cp310-cp310-macosx_11_0_arm64.whl (480.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

changeforest-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl (480.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

changeforest-1.1.1-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (953.8 kB view details)

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

changeforest-1.1.1-cp39-none-win_amd64.whl (322.1 kB view details)

Uploaded CPython 3.9Windows x86-64

changeforest-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

changeforest-1.1.1-cp39-cp39-macosx_11_0_arm64.whl (480.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

changeforest-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl (480.4 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

changeforest-1.1.1-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (954.6 kB view details)

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

changeforest-1.1.1-cp38-none-win_amd64.whl (321.9 kB view details)

Uploaded CPython 3.8Windows x86-64

changeforest-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

changeforest-1.1.1-cp38-cp38-macosx_11_0_arm64.whl (480.7 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

changeforest-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl (480.6 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

changeforest-1.1.1-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (954.7 kB view details)

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

File details

Details for the file changeforest-1.1.1.tar.gz.

File metadata

  • Download URL: changeforest-1.1.1.tar.gz
  • Upload date:
  • Size: 368.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for changeforest-1.1.1.tar.gz
Algorithm Hash digest
SHA256 1aff482840a6366b2dedf8a6997b5fa533ca826600454aabc2029bcb9241a017
MD5 3aa1470fc068ba437b4ea4dfabdf0deb
BLAKE2b-256 388129c58ab49961b76402b29f228c6769c6f3133e9e0fdfde2a237f865021e4

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 c5dc1c016325bddb6c77939d0e921ca795deffa6281c891d6be8330866f5bfe5
MD5 b84eae86091d1e15cac81767ba65c7a3
BLAKE2b-256 656dcf61b89451b274aabddbdde43214d52b6f370c15f183149c3dafcec0441b

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e5f427456610c078fbcfb42fd1644f7c79d1ff79d8fca8d59fe38996725bdc3
MD5 42a6e6856f0d9418c08f367c739b4366
BLAKE2b-256 90bb0d1ea457584671ad683ff65cead495df312ee3bc5efa2414db1c8f9e1a0a

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0312066735a8a6aa267e183db69ab9594de80572fce5d80f0f4fdc57876c3ac4
MD5 a3b17332eb78ffdc81284c1b59cf2e51
BLAKE2b-256 09812d82adf1faa3989fd9c994bdcc19de147e90ae22529c3f83bdc655236e45

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3f7311e57e6ba73785577e1df63b407c7c27deac87ee6b6ff16d362a40463fdb
MD5 aecb45a3fe8601a7a047c02a7ced5844
BLAKE2b-256 fc984fd3114bdba3aa1f270929edc643a1b2fb521b6e321905985ba83197ed0e

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 39c86ad9e3591dc22e67e4553fea0da809eaebaece7ab45d32cd4358a0dfde8b
MD5 5cf2a210abbe830a923a7f9300c9a739
BLAKE2b-256 b40776dd561c0b4959ac5c40ecb3afdb9b5486084c30b0f0b66bf20e4efcbc35

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 403b187da7661eefdee2678e5b994b2616135a3b8352daaa43c892c21e6c6d31
MD5 5f51dd288399c348fcc4dbc4ef6e2360
BLAKE2b-256 b4c279ec986b5acd87c076659d97150fb68e49f28a4c8d400d5eac88d8735fb0

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f15f6f4a316157f9a344b8f81f467956123b76f3ff5ac37c2ce25e2c1937461a
MD5 921986c2241c586b8aa44cdbc46e8a3e
BLAKE2b-256 b4677c69dcdd9fc91c538de1a42482d673b5b999a1b320184cf365bdc6e8d6df

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee1889799edda2f54f0e983baaaa35ecad11f84a59f4918bf18294b5aeb645c9
MD5 dbbd2f6bafb191877f01645747de50ba
BLAKE2b-256 956f74b57170bb0fb2b182606bbc39ece3bab12c07df41b046b20ea46418f47c

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c11542c5a9a6b848be59c999edffefa122e3d603e833b53d31ba52a7cdc05913
MD5 858d9e0ef2bbed9676f34281bac0feea
BLAKE2b-256 52d54eeb6846fa96d850706065d3950c2e9da4b794f4bf2825c7bb0cdc2a763a

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 025a2b197742f5778bc1445bd65e4ea6900dd04bf956797cfc327f97ca6da41f
MD5 ee1bbb298205f90df477605647e5f3be
BLAKE2b-256 caaf275967e78622bde9771b4229c68aba759da484373d8ae66fca5b283cedcf

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 e741eba95f4ffc9938a195f53ecc2c3db017c06b277bfe5ba3f32cc46b838bad
MD5 2a47522770e49f2e16ea70b315d0b4fa
BLAKE2b-256 3afabd7c484601ead8673ed2e5a0267f7bd4f381ac663201799a590000be7083

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 da0d433ea21a06dc8a6652483cd5da2d6cc7a99406fc240a5f4c7ef3b73cf5e2
MD5 a6b5e87e6d76fa329de68d5a205d507a
BLAKE2b-256 6ddf0d725b20ef436fad8bba9f0ce86e35957fbcf8328530835049769ba13815

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8deaf0289d9f4bdb462ef2db32292b532b479b91e27eaf58228f4f66f6713863
MD5 bbe5a55fddc0910bd93796e34d20f5ff
BLAKE2b-256 4e0bf5db4b14eab77e77f19f6be05e05ab45f557346203e997823b102a5310b2

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 405fe2028cb15fb51873fd0171c3d5c8124eb1f5fccd84a21eea626f1c6d20dc
MD5 a2e4eeb1881b63cf753dea8763403e02
BLAKE2b-256 0d23d602475fe3f79f31248b6bc2bec7c490d0d287afd31c4da01206657949c6

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4a702ca27e301731e75b38f5d9000c92c363972f95bc4cb0a0eefa7c11018713
MD5 4a5ca5acacca80634a65944795805aa4
BLAKE2b-256 dda7074a97cf3b041d3586464990f6ea4ca122312e0b0b5b6ae8fda43a9b80b0

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp39-none-win_amd64.whl.

File metadata

  • Download URL: changeforest-1.1.1-cp39-none-win_amd64.whl
  • Upload date:
  • Size: 322.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for changeforest-1.1.1-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 2f537cf3d0596874330319dff3a8b9c87e5c0ed228b245075dcfbee1eae51205
MD5 1c1c61b7dbe4b4340e29878464664c06
BLAKE2b-256 7e6a4b7dbc2baa599ff0a576d5ad1376fa83d1448a056f77a1c56433824e1890

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c492d11be062556f04c72bdcf1b742c5c22c35d023f2d3a2dc029b662c6988d
MD5 c25775d8107d888cc5563b95c1c5b28a
BLAKE2b-256 dfa9d0645263dc257adbf9f10813571d061cb63f78e07c5f4e65b4349661654a

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d4712f2aa31af3320bc3b4c0075e809c7f010e2a98c7d84998acaf789f3ac07
MD5 d7f433d634acf085f1d98b59ff0cb5d0
BLAKE2b-256 84ebdc11a81acdcd911a7b35fb0323f30b69c091a758785a7c74d5260c652bc1

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 294c5eb74d0f67148733181fcbdfe37882c6b46c0f3ebc009d1112fcf1c8f83a
MD5 9f91ddcc6cff4f2ea6adc404cc4e561f
BLAKE2b-256 096da005acf99311813208dd7ef44cc2c0163a0c1601d455c3b4401251777bfb

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1138dbb3e97afe37bd90cd58512d62634a498d6b712e385294ccda9f88afad56
MD5 c53255f362b0bfc0c769f459094bcf92
BLAKE2b-256 8a423809d379a419c8a7912e83ea57009a9064c029aa0403eee3852cbeffc5b7

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp38-none-win_amd64.whl.

File metadata

  • Download URL: changeforest-1.1.1-cp38-none-win_amd64.whl
  • Upload date:
  • Size: 321.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for changeforest-1.1.1-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 625d0b8df25953aea47a360bf22e9bfef6a08d60043928ca428a2f6e998828fc
MD5 891aaedf895cd6c52e2083adaf429b95
BLAKE2b-256 757a869b99789ff17fff4894dc1161f6ab3a16dd1a2d349ad7aa8239474236bc

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bce0b5f8096d23fdc07fadbc41de67d3c5dc520051122ecdcd308ddfb8c79356
MD5 82c1771a9fc635013749daf9adfb7fe2
BLAKE2b-256 2d6425aa6853ca00ed2afd7a54bfb4bc8d5eec02205590c13f678018a78bed17

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 986fbe4293dc474519007a152c96f4aaa05c2161f1f8d1d0ec57e91846789bcc
MD5 6693c856e3e1eaebd79a53dbac74970a
BLAKE2b-256 74b5eae32c347c3ca5fc7bd2c297945f3de5f373145f6ecca2565b3276df7828

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4e1eafb9bfa90ceeb615cf18aee7a69f36fc7a562b127fc7943d60eccb07b71f
MD5 1169518d1482371673e3a11c0abc73f9
BLAKE2b-256 fa0117109fe5b151add5759089a6acde147f50ec81e0be60c936922d2d585a56

See more details on using hashes here.

File details

Details for the file changeforest-1.1.1-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for changeforest-1.1.1-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 19815c328fb35b9d83d3a1b1c9e29fb204bfbd08742dd2ad566c0549081f493d
MD5 7b7abb2a63ac838638654f1c01b90953
BLAKE2b-256 061eb97ca7ec2049c73c0067736ac92b65adc45e01ef9f4e4fb1fde6be66ae34

See more details on using hashes here.

Supported by

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