Long-Memory Echo State Networks (fESN, wESN) for time-series forecasting
Project description
🧠 memory-esn: Long-Memory Echo State Networks
Reservoir Computing for Time-Series Forecasting with Long-Range Dependence 📈✨
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, …) raiseNotImplementedError— 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 normalization — wavelet_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f04567e6ccd6f8dfc39f6f879c65543c27176773e4d1529e097b0f93f6128df6
|
|
| MD5 |
21eb228843b371e8fbc5e4ff129815ef
|
|
| BLAKE2b-256 |
eb6cad81b6242c5d75db28dc34685d8e3c3bec9ccaf517b333e0ac5f125360f0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54ecd70a7df354f0e95e852a391eb66ffd20b4c9c85d1e1bf2dd85fa64b20e3b
|
|
| MD5 |
419ba342ad9cb92cbeeedfa49345b676
|
|
| BLAKE2b-256 |
6fd6e8543d6744ba7c14c3d32bd92b4c42f41138025749ddb6e30a0dbd0f4e8f
|
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
- Download URL: memory_esn-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fa7b4e6369514180e397b325d44a9362c4db296786156188aab59a1256e7e29
|
|
| MD5 |
da9449d268957dc06e8046f2336aba7f
|
|
| BLAKE2b-256 |
88abbabfdbbc3c405e3c6bff6fc47e270a93b54805ebb6895c58837d7475b687
|
File details
Details for the file memory_esn-0.1.1-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 718.8 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7c13a53c19dbdc207e263021e31c15a87637e00b8c6d9532cbba195470ad5d5
|
|
| MD5 |
1c907e46f89ea7618bd6045cfe65fcdf
|
|
| BLAKE2b-256 |
dff3c76f88125d1f722c28ce38bfd49835900cb1c3c2b08860a7bfa50b9260ca
|
File details
Details for the file memory_esn-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp313-cp313-macosx_10_13_x86_64.whl
- Upload date:
- Size: 722.0 kB
- Tags: CPython 3.13, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
536f0c3850efe8e68f56268ca754e61a6e850b4ce7afd2cdbe74f5da879aeb2d
|
|
| MD5 |
fbf2936b43a5ba226a6fa3222133dfad
|
|
| BLAKE2b-256 |
8d4b4d13bd100790f5aef13fd702be3e44a3eed64f4d0b7dd6595d8b684ad6f3
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5dc10d1616b7e541c7cea9bd52edd32ffbfded5f1221dfee39c0dc054446665
|
|
| MD5 |
934abcf360015cce2edb938360ac817d
|
|
| BLAKE2b-256 |
013dfc7304e4c760dd7fe678717c72e30d40737be1f7975bc99389bb3c1ca0b5
|
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
- Download URL: memory_esn-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d4206f5fd3a55771bb48fc7adda61732ef429bfdd302b91304a65d720c7ddbad
|
|
| MD5 |
307bcd292530a2ff855b86b887a433dd
|
|
| BLAKE2b-256 |
12301483ff07a70a0fd56a32f10e61fe5a5a19d8c396f2439f7fee47ec11c6c8
|
File details
Details for the file memory_esn-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 720.8 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aabcdce8d7aa7f936ab324c672c1c778c8a5295c16c196bbd6936084c65a2d7e
|
|
| MD5 |
efcab78e5af1160950e157c2f660c6ee
|
|
| BLAKE2b-256 |
ce5edf8dda6922b4eac024f8657cd7d79e038e46d735b29077882882253d586e
|
File details
Details for the file memory_esn-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 724.1 kB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8de66b8880fdca4f6b3e76abd0198975218141d384ead2c18a6b29bc786e2253
|
|
| MD5 |
3f92d040eb10a728001656106d77eb86
|
|
| BLAKE2b-256 |
755ed89b20b9b62c826aaa59f9324c81132f2e4e5e3ff75f3db3e5aaa19300fd
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
05fa74391e79c6eef00e863bc20d3c524f3a43548dcb8a155f8f17687bafac96
|
|
| MD5 |
8a4eb3986c1653c0c2066d7cde2ba2ba
|
|
| BLAKE2b-256 |
bb0c5702a1c72709da1964dede3eaa6e473a0b9b13e64aee733bf9f68d4ecf1e
|
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
- Download URL: memory_esn-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c1c645bcece27e8fc93e0bda2979db2e455312f27011924b8f1e8c21785af6a
|
|
| MD5 |
9df237c90062f932d51c24bba3d3cfbc
|
|
| BLAKE2b-256 |
aa8c1ea67c85a96aa0b72ef49c85de14ed26c1f6ab051743cab05a48b5cfe479
|
File details
Details for the file memory_esn-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 716.4 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46fe83c5061d3bcad23e16b039fc530fbe626fa2d6493f4fccaf3b9655324393
|
|
| MD5 |
5978466e73448c20b87f25bccb1f7a3e
|
|
| BLAKE2b-256 |
e077dff18949c26b156d2aaf266ddce7b0f98c98de6c379de4fa1169783b8aac
|
File details
Details for the file memory_esn-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 720.1 kB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5486932cee3cf2f31a424bee4d72bb848695691a333ae3e11da0a8e1ee1573e
|
|
| MD5 |
e94f69e74dcbf94301fce3771ae71677
|
|
| BLAKE2b-256 |
44b3e8edee4f7febde98a52f6811c80d69478e2152bae821072baab2eadc6aa2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2adbd5d3c8686df895c5d8bfbaa89cc40d91f97cb0738ddfbdd8828a10815423
|
|
| MD5 |
21e402d90690da8d7194b145bb4f4e5a
|
|
| BLAKE2b-256 |
3c93cf4b40862c119a400c45363b56c5a98b7fb232830117611e57d2b1be4c22
|
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
- Download URL: memory_esn-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83e137449f9c3801c5078c567a40462aacffb7291a1e98bb2e86f8928d045834
|
|
| MD5 |
fee8943af1be839c23cb356aaf7f5054
|
|
| BLAKE2b-256 |
c68fa4333ec701122bf8bfb2ed39b132d9ef0abf137d6d129b5f7121b3dec216
|
File details
Details for the file memory_esn-0.1.1-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 718.6 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eb6fb94baee30fb98f06feebbe4bb81259ce67eefe8422ad68138f606692ff7
|
|
| MD5 |
f078506fd3b384496c910f681f7562a8
|
|
| BLAKE2b-256 |
88048a4489e16d574a99d89db45c90ea755a60de8181b1b23d6c289e4968867f
|
File details
Details for the file memory_esn-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 722.0 kB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b8c178196d2f6caa501e1e0f5498c18d462523fb116244a98dfa108dccf2d69
|
|
| MD5 |
5a0208f25324327fec47b95afe0cc093
|
|
| BLAKE2b-256 |
396daf718dd3d2a5aa7e311137738a4f650f967540da194452aca0958e08b5ba
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2423f743432608a33d32d4709f8f755d5f6f802b42e1e7a1c0f7a7f09c9cce79
|
|
| MD5 |
ec32b41b951d03e75b5296ed01cc5697
|
|
| BLAKE2b-256 |
989c182999654754f5961dbc3b44dd6b70745c50bc0d557829238a7dff957f87
|
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
- Download URL: memory_esn-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45db88e1f35614c27405a10307864b27d1632e53fdd732905d11a47c89f030f8
|
|
| MD5 |
b0f355c02cc63099f5cf951c008f6694
|
|
| BLAKE2b-256 |
c5a7eb8c02958d966f6ccda147ca6fb90c15e048a269fa199a3a79e3a670f12b
|
File details
Details for the file memory_esn-0.1.1-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 719.9 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0779f3e88ef6082d78783a72f6a8767aa71cde984e080dc8b14cec9ad0559b53
|
|
| MD5 |
3f9cf26d0e05039b2f00dae6005a5696
|
|
| BLAKE2b-256 |
df6822a03e3660e261a2cfa5008be7e0031c02d18888c9e7f44f984a0fae142d
|
File details
Details for the file memory_esn-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl.
File metadata
- Download URL: memory_esn-0.1.1-cp39-cp39-macosx_10_9_x86_64.whl
- Upload date:
- Size: 723.3 kB
- Tags: CPython 3.9, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
504c77ad75f4039ae640f338b3ce797f81ab39fae34cf686f4bd2b3522cc3907
|
|
| MD5 |
ae0139d69b081e0757a3c7f14d54807c
|
|
| BLAKE2b-256 |
4c5909d1923c50ec5807629c3dafb437333035516d883c526c7f4abe1d49bb2f
|