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.0.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.0-cp313-cp313-win_amd64.whl (698.0 kB view details)

Uploaded CPython 3.13Windows x86-64

memory_esn-0.1.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (718.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

memory_esn-0.1.0-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.0-cp312-cp312-win_amd64.whl (699.4 kB view details)

Uploaded CPython 3.12Windows x86-64

memory_esn-0.1.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (720.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

memory_esn-0.1.0-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.0-cp311-cp311-win_amd64.whl (695.6 kB view details)

Uploaded CPython 3.11Windows x86-64

memory_esn-0.1.0-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.0-cp311-cp311-macosx_11_0_arm64.whl (716.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

memory_esn-0.1.0-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.0-cp310-cp310-win_amd64.whl (695.9 kB view details)

Uploaded CPython 3.10Windows x86-64

memory_esn-0.1.0-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.0-cp310-cp310-macosx_11_0_arm64.whl (718.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

memory_esn-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (722.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

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

Uploaded CPython 3.9Windows x86-64

memory_esn-0.1.0-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.0-cp39-cp39-macosx_11_0_arm64.whl (720.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

memory_esn-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl (723.4 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: memory_esn-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 d0b110c9f1f004e20e25ef97aab79c747f16bafa35b79c3881a44b38005465ac
MD5 86b0dc21cbe594ecfce2559f36b4d1a1
BLAKE2b-256 d6fccb595cae643a36b75c37ac11b193fc3e8897f0e36ce2664180656082425b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: memory_esn-0.1.0-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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e1d2d509e8b9784d0c43dbcbc1b5ec655fa6d10c255e60f0192068a1e6e0d716
MD5 bc4a205f509c9104e6cb088ce49f181a
BLAKE2b-256 1fb56343c1e8fbe28f29ca51da5c0bd4bdf9466d255aaa087daeb508dd1187b3

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.0-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.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8b2beb92e9cb6a24cee02c830a59cad2e230a1e9f2e2591f611f1ec8df80ab2e
MD5 452db045384b1de4bda492079addf2de
BLAKE2b-256 3256b79051601b673fbd0ff7657bd147b1b340e44bb0250ed87f0ed6e6469141

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 697f9fc0b0f84188d3657398e0a2ff92797be39993d0dc55b2150fd828f2862c
MD5 6033e38d7793d4c0798d016d135892b0
BLAKE2b-256 d047c32305b58c2aced2a3cf873c2c21672ba47220dca8c68bf6279ac8335b8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 18f8bbd62526201a291d3470dcf9e7629e8d79ce5474ae48750853387050525a
MD5 a8ca98a855ae2eb589455f70bb022653
BLAKE2b-256 788c9ee116e526d9f2e212d5981eee3c5663587ad76dc9227b1f9d5e8322fd0a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: memory_esn-0.1.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 214a10834025f1e13fcc15671e4af605f15f5295760c2ca815a05ef31a433feb
MD5 f845bb14e74318ee3fa0b5b03f777528
BLAKE2b-256 07acfc21968adf6b96dff56e2221b14f3118f22e28c18fee8e876b345180171c

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.0-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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 165f35994930c9c0e28c151f5df7626e1c2ac4dee65c8d42f9b1d9d709569a75
MD5 7a3907a5f1e2f740696f0b5d7ffa49a1
BLAKE2b-256 29d317fd614690202faf4a86a4cd1472c75d7e251bc782dc43e7cc1cfa8b96f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e01052fe794897ba3dc0bd5f264fc10edc6670b0c444f09b8a759b86b224781
MD5 04a162a2eaf68833ac654f5f6703add0
BLAKE2b-256 fa340f935ee1d4f711a1f02f72bab4017244732b61b4f01720100ad231f5f04d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c20a3156031f38ec0942ec93e6bd66d73db43b98fffed89a2f066f0108e2f451
MD5 0fb370d2156d5e50b544b82082966c82
BLAKE2b-256 c59a9da98193575237e8291978ef0451cf93ded994c3b68612e5bebb2bf937f2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: memory_esn-0.1.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2305f37d906dac1e67a03d7cf014d5c2d45af0d516f1c4481cf6cd11f67f3822
MD5 13e533d3bce8fa163d9a5754e13f7704
BLAKE2b-256 749d1c45cde4214241ffb4a070c1c0056a456260ebdc4a666d59f50ba3d4e1e6

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.0-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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d2fd8d4cb2221eab931635691800165adf63b4609cf050e7b15e14582b88cd71
MD5 bb0a5a9a4ecffa5afb3bee5c3c93e3ec
BLAKE2b-256 e814bf965fa74ca62051d4a9809c8b0c87f646393442cd7683e1c940ce750265

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19aeabc85780296788756699b90e76b0877566d219c5116c3b8097f88924f8a9
MD5 ff01483d14a3e68270eb2000920bf234
BLAKE2b-256 411292821789a0e20a3470b2b3f0bbf55a052cd099436cffb940049b9ec1013a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 79e5b8a16d25e021398bf0a9d87b336d58b8d3db3206d42153c289728e2db13d
MD5 d9a2c58105f34caa1aed1f080df9f150
BLAKE2b-256 f2d7048a67ba31e3a77ba93b159b890f5dd7a4ec23ef5c793a68164f92cea679

See more details on using hashes here.

File details

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

File metadata

  • Download URL: memory_esn-0.1.0-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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 07477b27db3f1ec7b6d327aabbdbcb64cee5f64f780cfa5871ca143503853d02
MD5 dab40883ddbadbf3294420b1b36bb586
BLAKE2b-256 9281e4517c4809159e8b91ee1733bc2e9689ca796b600656d8b4046d45ebe630

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.0-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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 396e852cc53afee8ef17d57fe756000560a048d486c134fd7ed60dc7851a4f4d
MD5 442e574fc55bcdad2400846138b52ef5
BLAKE2b-256 0d13885499f4eadd3f5d4f2419dbf38768a2b3ef48a174c14025c499d1535806

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f153a5ec3f945bcf8314e39532d574b841675c00fc31d896d0ec9f8edf5b20bd
MD5 6c5e128af13a694270555858df0ff17b
BLAKE2b-256 5563d6471035fea01b10996747391a554c0c81f1dfbc481cece8b564b21b73d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eb722e97fb2f6d4983832d81a2dcec25af4cd62bce6259194915ddb531a0cd04
MD5 195b9ff7883e1782eae637acfa7f7686
BLAKE2b-256 c7a80aace5580c1ccce9c9d0cbe765311a59c06c044de430cfe9261f4f35294d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: memory_esn-0.1.0-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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6c72c9b7fc71ad3b2ada77c024b6fb1b082ab00dd12f0df6052080ba9754cd14
MD5 583208e25a34bdf59aa9ef859e869acb
BLAKE2b-256 53c920ae2b3ef1e834a71f33256252bac4fc5e855c09710b7a519a070a1a3d38

See more details on using hashes here.

File details

Details for the file memory_esn-0.1.0-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.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2a9d3b61b998cad265759f2ba96b8ee38c0d0d1926b1dd03d0a5f5b9fcb39eb5
MD5 563455045d1db13d18977935ecaa0c52
BLAKE2b-256 de1addbc6f5f3c87ecb5acb7220d124c31c990555b17546a25a351b9059263ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ba61fcdf592e9a9ad73b5f6db87813b92aa5271faa91d5fca5570fa860f30c6
MD5 35ca3b978a12e1d9589a2ad479379b4a
BLAKE2b-256 b712da333e8d38abee301408b23ce1400ba9859aa3d7898cc5c37a093081c56c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for memory_esn-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9d66cb56ae3791b3b7549c6ff75750113a0518ff367d952006e3540df4d4234c
MD5 17f720de0a31da6175b3ab6d7767249e
BLAKE2b-256 234a3aecdc92ed77156785b20c9d65f52a15cb50db20063264dd4efed9502c38

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