Skip to main content

Long-Memory Echo State Networks (fESN, wESN) for time-series forecasting

Project description

memory-esn Logo

🧠 memory-esn: Long-Memory Echo State Networks

Reservoir Computing for Time-Series Forecasting with Long-Range Dependence 📈✨

PyPI Python NumPy Cython scikit-learn Docs License

Long-Memory Echo State Networks for Time-Series Forecasting

A reservoir-computing library that augments the classic Echo State Network with a dedicated memory reservoir for long-range dependence. Two memory mechanisms are provided — a fractional-difference filter (fESN) and a wavelet-smoothed fractional filter (wESN) — while keeping all internal weights fixed after random initialization and training only a linear ridge readout. BLAS-backed Cython kernels make it fast; pure-NumPy fallbacks keep it portable.

The vanilla reservoir captures short-term nonlinear dynamics (exponential forgetting); the memory reservoir sustains long-term dynamics (polynomially decaying weights). Their states are concatenated and mapped to the output.

Class hierarchy

PersistenceMixin              save() / load()  (joblib)
│
BaseESN                       single reservoir + ridge readout
│
MultiESN                      N reservoirs, one input each (composes BaseESN)
└── DoubleReservoirESN        fixed to 2 reservoirs;  fit([X1, X2], y)
    ├── fESN                  memory reservoir <- ((1-B)^d - 1) u(t)
    └── wESN                  memory reservoir <- ((1-B)^d - 1) MODWT_smooth(u(t))

Reservoir 1 (vanilla) always sees the raw series; reservoir 2 (memory) sees a pure-past, long-memory filter of it. fESN/wESN take a single series and build the memory input internally; DoubleReservoirESN and MultiESN take the inputs explicitly.

Plus TimeSeriesDataset — sliding-window train/val/test splitting with leakage-free scaling (none / minmax / standard / log).

Defaults follow the paper

Out of the box the models match the paper's construction: uniform weight initialization, reservoirs sparsified to 90% zeros then rescaled to a spectral radius < 1, and a memory filter f(t) = ((1-B)^d - 1) u(t) = Σ_{k≥1} ω_k u(t-k) (standard fractional differencing with the present term removed, so the memory reservoir is driven purely by the past). Optional isotropic state noise η(t) ~ N(0, σ² I) is available via noise=σ.

Install

pip install -e .                       # installs deps; builds Cython kernels if a
                                       # C compiler is available
# or build the fast kernels in place:
python setup.py build_ext --inplace

The compiled kernels are optional — pure-NumPy fallbacks are used automatically when they are not present (with a one-time warning). Check which is active:

import memory_esn as m
m.USING_CYTHON_RESERVOIR, m.USING_CYTHON_FRACDIFF, m.USING_CYTHON_MODWT

Dependencies: numpy, scipy, scikit-learn, joblib, PyWavelets.

Quickstart

import numpy as np
from memory_esn import BaseESN, fESN

X = np.cumsum(np.random.randn(1000, 3), axis=0) * 0.1
y = np.sin(X[:, :1])
Xtr, Xte, ytr, yte = X[:800], X[800:], y[:800], y[800:]

# Single reservoir
esn = BaseESN(n_reservoir=200, spectral_radius=0.95, random_state=0)
esn.fit(Xtr, ytr, washout=100)
y_pred = esn.predict(Xte)

# Fractional ESN (raw + fractionally-differenced branch)
fesn = fESN(n_reservoir=(200, 150), d=0.5, K=100, random_state=0)
fesn.fit(Xtr, ytr, washout=100)
y_pred = fesn.predict(Xte, continuation=True)   # continuation keeps output length

See examples/quickstart.py for one example per class.

Wavelet options (wESN)

wESN decomposes each input feature with a MODWT (undecimated, shift-invariant) and feeds the selected component(s) to reservoir 2. The wavelet is validated at construction:

  • Discrete wavelets (usable): haar, db1..db38, sym2..sym20, coif1..coif17, bior*, rbio*, dmey — 106 in total (pywt.wavelist(kind='discrete')).
  • Continuous wavelets (mexh, morl, gaus*, cmor, …) raise NotImplementedError — support is planned for a future release.

Pick which decomposition components form reservoir 2's input via wavelet_components:

from memory_esn import wESN

# default: level-J smooth (approximation) trend — one component
wESN(wavelet='db4', wavelet_level=2)                       # components = [A2]

# a single detail level
wESN(wavelet='db4', wavelet_level=3, wavelet_components=2) # components = [D2]

# MULTIVARIATE: several levels stacked -> reservoir 2 gets multiple channels
wESN(wavelet='db4', wavelet_level=3,
           wavelet_components=[1, 2, 'smooth'])                  # components = [D1, D2, A3]

# shortcuts
wESN(wavelet='haar', wavelet_level=2, wavelet_components='all')      # D1, D2, A2
wESN(wavelet='haar', wavelet_level=2, wavelet_components='details')  # D1, D2

wavelet_level is the decomposition depth J; detail levels are 1..J and 'smooth' is the level-J approximation. Selecting n components on an F-feature series gives reservoir 2 an F × n-channel (multivariate) input.

MODWT normalizationwavelet_norm='modwt' (default) uses the standard Percival–Walden rescaling (Haar smooth filter [1/2, 1/2]); wavelet_norm='classic' uses the DWT orthonormal filters ([1/√2, 1/√2]). The two differ only by a per-level constant absorbed by the random memory-input weights, so they are model-equivalent.

Multivariate fESN (multiple differencing orders)

fESN has the analogous knob: d accepts a single order (default, univariate) or a list of orders that are stacked as channels.

from memory_esn import fESN

fESN(d=0.5)                 # univariate (default)
fESN(d=[0.3, 0.5, 0.8])     # multivariate: 3 orders stacked

Selecting n orders on an F-feature series gives reservoir 2 an F × n-channel input. Defaults for both classes are univariate: fESN d=0.5, wESN wavelet_components='smooth'.

wESN also accepts a list d, which cross-products with the wavelet components: n_features × n_components × n_d channels. For example wESN(wavelet_components=[1, 2, 'smooth'], d=[0.3, 0.5]) on a 2-feature series → 2 × 3 × 2 = 12 channels into reservoir 2.

Weight initialization & reservoir options

Every reservoir weight is drawn from a configurable distribution (memory_esn.weights):

parameter controls options default
input_init input weights W_in uniform, gaussian, bernoulli, laplace uniform
reservoir_init reservoir weights W same uniform
bias_init neuron bias same uniform
input_scaling scale of W_in (= U[-ψ, ψ] for uniform) float 0.5
spectral_radius W rescaled to this ρ float <1 0.9
sparsity fraction of W set to zero (φ) [0,1) 0.9
bias_scaling scale of bias (0 = none) float 0.0
noise std σ of state noise η(t)~N(0,σ²I) float ≥ 0 0.0

In MultiESN each is broadcastable — a scalar applies to all reservoirs, a list of length n_reservoirs sets them per reservoir. In the two-reservoir models a scalar or a (vanilla, memory) pair is accepted. random_state follows the same rule: a single int derives distinct per-reservoir seeds (reproducible but not identical); a list sets them explicitly.

Paper ↔ code notation

paper meaning code
p, q vanilla / memory reservoir sizes n_reservoir=(p, q)
ρ_x, ρ_m spectral radii spectral_radius=(ρ_x, ρ_m)
φ_x, φ_m sparsification proportion sparsity=(φ_x, φ_m)
ψ_x, ψ_m input scalings input_scaling=(ψ_x, ψ_m)
σ_x, σ_m state-noise std noise=(σ_x, σ_m)
d fractional-differencing order d
K filter truncation (lags) K
ζ washout ratio T₀/T washout=int(ζ*T)
H forecast horizon number of columns of y

The per-horizon readouts W_out^(h) are fitted jointly as a multi-output ridge on a single design matrix Φ = [x; m; u; f] ∈ ℝ^{p+q+2}, with RidgeCV selecting λ by efficient leave-one-out — matching the paper's shared-Cholesky LOOCV.

Notes on alignment (fESN / wESN)

The fractional-difference filter needs K past samples. With skip_initial=True (default) and continuation=False, predictions are K steps shorter than the input. With continuation=True, the model prepends stored history so the output matches the input length — this is the normal mode for streaming / iterative forecasting. wESN.predict uses continuation=True by default (it also re-smooths using training history to avoid wavelet boundary effects).

Speed-up kernels

memory_esn/_speedups/ holds three Cython extensions (with NumPy fallbacks):

kernel what it does
esn_reservoir_optimized reservoir state update via BLAS dgemv, nogil, 12 activations
fractional_diff binomial fractional-difference weights + windowed filtering
modwt_fast maximal-overlap DWT (smoothing) via circular convolution

Tests

pip install pytest
python -m pytest tests/          # run from the project root

The suite includes Cython-vs-NumPy numerical-equivalence checks, so the fast and fallback paths are guaranteed to agree.

Repository layout

memory_esn/            the package (import as `memory_esn`)
  base.py              BaseESN, PersistenceMixin
  multi.py             MultiESN
  double.py            DoubleReservoirESN
  fractional.py        fESN  (alias FractionalESN)
  wavelet.py           wESN  (alias WaveletESN)
  dataset.py           TimeSeriesDataset
  _speedups/           Cython kernels + NumPy fallbacks
examples/quickstart.py
tests/test_package.py
setup.py               builds the Cython extensions
garbage/               the previous, pre-refactor files (archived)

Authors

Citation

If you use memory-esn in your research, please cite it (see CITATION.cff).

License

MIT — see LICENSE.

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

memory_esn-0.1.1.tar.gz (490.8 kB view details)

Uploaded Source

Built Distributions

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

memory_esn-0.1.1-cp313-cp313-win_amd64.whl (698.0 kB view details)

Uploaded CPython 3.13Windows x86-64

memory_esn-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memory_esn-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (718.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

memory_esn-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl (722.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

memory_esn-0.1.1-cp312-cp312-win_amd64.whl (699.4 kB view details)

Uploaded CPython 3.12Windows x86-64

memory_esn-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memory_esn-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (720.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

memory_esn-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl (724.1 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

memory_esn-0.1.1-cp311-cp311-win_amd64.whl (695.6 kB view details)

Uploaded CPython 3.11Windows x86-64

memory_esn-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memory_esn-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (716.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

memory_esn-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl (720.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

memory_esn-0.1.1-cp310-cp310-win_amd64.whl (695.9 kB view details)

Uploaded CPython 3.10Windows x86-64

memory_esn-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memory_esn-0.1.1-cp310-cp310-macosx_11_0_arm64.whl (718.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

memory_esn-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl (722.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

memory_esn-0.1.1-cp39-cp39-win_amd64.whl (697.0 kB view details)

Uploaded CPython 3.9Windows x86-64

memory_esn-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

memory_esn-0.1.1-cp39-cp39-macosx_11_0_arm64.whl (719.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

memory_esn-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl (723.3 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

Details for the file memory_esn-0.1.1.tar.gz.

File metadata

  • Download URL: memory_esn-0.1.1.tar.gz
  • Upload date:
  • Size: 490.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memory_esn-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f04567e6ccd6f8dfc39f6f879c65543c27176773e4d1529e097b0f93f6128df6
MD5 21eb228843b371e8fbc5e4ff129815ef
BLAKE2b-256 eb6cad81b6242c5d75db28dc34685d8e3c3bec9ccaf517b333e0ac5f125360f0

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: memory_esn-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 698.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memory_esn-0.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 54ecd70a7df354f0e95e852a391eb66ffd20b4c9c85d1e1bf2dd85fa64b20e3b
MD5 419ba342ad9cb92cbeeedfa49345b676
BLAKE2b-256 6fd6e8543d6744ba7c14c3d32bd92b4c42f41138025749ddb6e30a0dbd0f4e8f

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2fa7b4e6369514180e397b325d44a9362c4db296786156188aab59a1256e7e29
MD5 da9449d268957dc06e8046f2336aba7f
BLAKE2b-256 88abbabfdbbc3c405e3c6bff6fc47e270a93b54805ebb6895c58837d7475b687

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e7c13a53c19dbdc207e263021e31c15a87637e00b8c6d9532cbba195470ad5d5
MD5 1c907e46f89ea7618bd6045cfe65fcdf
BLAKE2b-256 dff3c76f88125d1f722c28ce38bfd49835900cb1c3c2b08860a7bfa50b9260ca

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 536f0c3850efe8e68f56268ca754e61a6e850b4ce7afd2cdbe74f5da879aeb2d
MD5 fbf2936b43a5ba226a6fa3222133dfad
BLAKE2b-256 8d4b4d13bd100790f5aef13fd702be3e44a3eed64f4d0b7dd6595d8b684ad6f3

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: memory_esn-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 699.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memory_esn-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a5dc10d1616b7e541c7cea9bd52edd32ffbfded5f1221dfee39c0dc054446665
MD5 934abcf360015cce2edb938360ac817d
BLAKE2b-256 013dfc7304e4c760dd7fe678717c72e30d40737be1f7975bc99389bb3c1ca0b5

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4206f5fd3a55771bb48fc7adda61732ef429bfdd302b91304a65d720c7ddbad
MD5 307bcd292530a2ff855b86b887a433dd
BLAKE2b-256 12301483ff07a70a0fd56a32f10e61fe5a5a19d8c396f2439f7fee47ec11c6c8

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aabcdce8d7aa7f936ab324c672c1c778c8a5295c16c196bbd6936084c65a2d7e
MD5 efcab78e5af1160950e157c2f660c6ee
BLAKE2b-256 ce5edf8dda6922b4eac024f8657cd7d79e038e46d735b29077882882253d586e

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8de66b8880fdca4f6b3e76abd0198975218141d384ead2c18a6b29bc786e2253
MD5 3f92d040eb10a728001656106d77eb86
BLAKE2b-256 755ed89b20b9b62c826aaa59f9324c81132f2e4e5e3ff75f3db3e5aaa19300fd

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: memory_esn-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 695.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memory_esn-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 05fa74391e79c6eef00e863bc20d3c524f3a43548dcb8a155f8f17687bafac96
MD5 8a4eb3986c1653c0c2066d7cde2ba2ba
BLAKE2b-256 bb0c5702a1c72709da1964dede3eaa6e473a0b9b13e64aee733bf9f68d4ecf1e

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8c1c645bcece27e8fc93e0bda2979db2e455312f27011924b8f1e8c21785af6a
MD5 9df237c90062f932d51c24bba3d3cfbc
BLAKE2b-256 aa8c1ea67c85a96aa0b72ef49c85de14ed26c1f6ab051743cab05a48b5cfe479

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 46fe83c5061d3bcad23e16b039fc530fbe626fa2d6493f4fccaf3b9655324393
MD5 5978466e73448c20b87f25bccb1f7a3e
BLAKE2b-256 e077dff18949c26b156d2aaf266ddce7b0f98c98de6c379de4fa1169783b8aac

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d5486932cee3cf2f31a424bee4d72bb848695691a333ae3e11da0a8e1ee1573e
MD5 e94f69e74dcbf94301fce3771ae71677
BLAKE2b-256 44b3e8edee4f7febde98a52f6811c80d69478e2152bae821072baab2eadc6aa2

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: memory_esn-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 695.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memory_esn-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 2adbd5d3c8686df895c5d8bfbaa89cc40d91f97cb0738ddfbdd8828a10815423
MD5 21e402d90690da8d7194b145bb4f4e5a
BLAKE2b-256 3c93cf4b40862c119a400c45363b56c5a98b7fb232830117611e57d2b1be4c22

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 83e137449f9c3801c5078c567a40462aacffb7291a1e98bb2e86f8928d045834
MD5 fee8943af1be839c23cb356aaf7f5054
BLAKE2b-256 c68fa4333ec701122bf8bfb2ed39b132d9ef0abf137d6d129b5f7121b3dec216

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4eb6fb94baee30fb98f06feebbe4bb81259ce67eefe8422ad68138f606692ff7
MD5 f078506fd3b384496c910f681f7562a8
BLAKE2b-256 88048a4489e16d574a99d89db45c90ea755a60de8181b1b23d6c289e4968867f

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9b8c178196d2f6caa501e1e0f5498c18d462523fb116244a98dfa108dccf2d69
MD5 5a0208f25324327fec47b95afe0cc093
BLAKE2b-256 396daf718dd3d2a5aa7e311137738a4f650f967540da194452aca0958e08b5ba

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: memory_esn-0.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 697.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for memory_esn-0.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 2423f743432608a33d32d4709f8f755d5f6f802b42e1e7a1c0f7a7f09c9cce79
MD5 ec32b41b951d03e75b5296ed01cc5697
BLAKE2b-256 989c182999654754f5961dbc3b44dd6b70745c50bc0d557829238a7dff957f87

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45db88e1f35614c27405a10307864b27d1632e53fdd732905d11a47c89f030f8
MD5 b0f355c02cc63099f5cf951c008f6694
BLAKE2b-256 c5a7eb8c02958d966f6ccda147ca6fb90c15e048a269fa199a3a79e3a670f12b

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0779f3e88ef6082d78783a72f6a8767aa71cde984e080dc8b14cec9ad0559b53
MD5 3f9cf26d0e05039b2f00dae6005a5696
BLAKE2b-256 df6822a03e3660e261a2cfa5008be7e0031c02d18888c9e7f44f984a0fae142d

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for memory_esn-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 504c77ad75f4039ae640f338b3ce797f81ab39fae34cf686f4bd2b3522cc3907
MD5 ae0139d69b081e0757a3c7f14d54807c
BLAKE2b-256 4c5909d1923c50ec5807629c3dafb437333035516d883c526c7f4abe1d49bb2f

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