testamentoverload 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- testamentoverload-0.1.0/Cargo.lock +133 -0
- testamentoverload-0.1.0/Cargo.toml +15 -0
- testamentoverload-0.1.0/PKG-INFO +8 -0
- testamentoverload-0.1.0/README.md +0 -0
- testamentoverload-0.1.0/dist/testamentoverload-0.1.0-cp39-abi3-linux_x86_64.whl +0 -0
- testamentoverload-0.1.0/dist/testamentoverload-0.1.0.tar.gz +0 -0
- testamentoverload-0.1.0/pyproject.toml +19 -0
- testamentoverload-0.1.0/src/lib.rs +14 -0
- testamentoverload-0.1.0/src/testamentoverload/__init__.py +5 -0
- testamentoverload-0.1.0/src/testamentoverload/_core.pyi +1 -0
- testamentoverload-0.1.0/src/testamentoverload/differential/__init__.py +0 -0
- testamentoverload-0.1.0/src/testamentoverload/differential/discrete.py +24 -0
- testamentoverload-0.1.0/src/testamentoverload/py.typed +0 -0
- testamentoverload-0.1.0/uv.lock +8 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# This file is automatically @generated by Cargo.
|
|
2
|
+
# It is not intended for manual editing.
|
|
3
|
+
version = 4
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "heck"
|
|
7
|
+
version = "0.5.0"
|
|
8
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
|
+
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
10
|
+
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "libc"
|
|
13
|
+
version = "0.2.189"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
16
|
+
|
|
17
|
+
[[package]]
|
|
18
|
+
name = "once_cell"
|
|
19
|
+
version = "1.21.4"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "portable-atomic"
|
|
25
|
+
version = "1.15.0"
|
|
26
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
27
|
+
checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
|
|
28
|
+
|
|
29
|
+
[[package]]
|
|
30
|
+
name = "proc-macro2"
|
|
31
|
+
version = "1.0.107"
|
|
32
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
33
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
34
|
+
dependencies = [
|
|
35
|
+
"unicode-ident",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[[package]]
|
|
39
|
+
name = "pyo3"
|
|
40
|
+
version = "0.28.3"
|
|
41
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
42
|
+
checksum = "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12"
|
|
43
|
+
dependencies = [
|
|
44
|
+
"libc",
|
|
45
|
+
"once_cell",
|
|
46
|
+
"portable-atomic",
|
|
47
|
+
"pyo3-build-config",
|
|
48
|
+
"pyo3-ffi",
|
|
49
|
+
"pyo3-macros",
|
|
50
|
+
]
|
|
51
|
+
|
|
52
|
+
[[package]]
|
|
53
|
+
name = "pyo3-build-config"
|
|
54
|
+
version = "0.28.3"
|
|
55
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
56
|
+
checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e"
|
|
57
|
+
dependencies = [
|
|
58
|
+
"target-lexicon",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
[[package]]
|
|
62
|
+
name = "pyo3-ffi"
|
|
63
|
+
version = "0.28.3"
|
|
64
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
65
|
+
checksum = "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e"
|
|
66
|
+
dependencies = [
|
|
67
|
+
"libc",
|
|
68
|
+
"pyo3-build-config",
|
|
69
|
+
]
|
|
70
|
+
|
|
71
|
+
[[package]]
|
|
72
|
+
name = "pyo3-macros"
|
|
73
|
+
version = "0.28.3"
|
|
74
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
75
|
+
checksum = "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813"
|
|
76
|
+
dependencies = [
|
|
77
|
+
"proc-macro2",
|
|
78
|
+
"pyo3-macros-backend",
|
|
79
|
+
"quote",
|
|
80
|
+
"syn",
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[[package]]
|
|
84
|
+
name = "pyo3-macros-backend"
|
|
85
|
+
version = "0.28.3"
|
|
86
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
87
|
+
checksum = "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb"
|
|
88
|
+
dependencies = [
|
|
89
|
+
"heck",
|
|
90
|
+
"proc-macro2",
|
|
91
|
+
"pyo3-build-config",
|
|
92
|
+
"quote",
|
|
93
|
+
"syn",
|
|
94
|
+
]
|
|
95
|
+
|
|
96
|
+
[[package]]
|
|
97
|
+
name = "quote"
|
|
98
|
+
version = "1.0.47"
|
|
99
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
100
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
101
|
+
dependencies = [
|
|
102
|
+
"proc-macro2",
|
|
103
|
+
]
|
|
104
|
+
|
|
105
|
+
[[package]]
|
|
106
|
+
name = "syn"
|
|
107
|
+
version = "2.0.119"
|
|
108
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
109
|
+
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
110
|
+
dependencies = [
|
|
111
|
+
"proc-macro2",
|
|
112
|
+
"quote",
|
|
113
|
+
"unicode-ident",
|
|
114
|
+
]
|
|
115
|
+
|
|
116
|
+
[[package]]
|
|
117
|
+
name = "target-lexicon"
|
|
118
|
+
version = "0.13.5"
|
|
119
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
120
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
121
|
+
|
|
122
|
+
[[package]]
|
|
123
|
+
name = "testamentoverload"
|
|
124
|
+
version = "0.1.0"
|
|
125
|
+
dependencies = [
|
|
126
|
+
"pyo3",
|
|
127
|
+
]
|
|
128
|
+
|
|
129
|
+
[[package]]
|
|
130
|
+
name = "unicode-ident"
|
|
131
|
+
version = "1.0.24"
|
|
132
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
133
|
+
checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "testamentoverload"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
edition = "2024"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
|
|
7
|
+
[lib]
|
|
8
|
+
name = "_core"
|
|
9
|
+
# "cdylib" is necessary to produce a shared library for Python to import from.
|
|
10
|
+
crate-type = ["cdylib"]
|
|
11
|
+
|
|
12
|
+
[dependencies]
|
|
13
|
+
# "extension-module" tells pyo3 we want to build an extension module (skips linking against libpython.so)
|
|
14
|
+
# "abi3-py39" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.9
|
|
15
|
+
pyo3 = { version = "0.28.2", features = ["extension-module", "abi3-py39"] }
|
|
File without changes
|
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "testamentoverload"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
description = "Add your description here"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.12"
|
|
7
|
+
dependencies = []
|
|
8
|
+
|
|
9
|
+
[tool.maturin]
|
|
10
|
+
module-name = "testamentoverload._core"
|
|
11
|
+
python-packages = ["testamentoverload"]
|
|
12
|
+
python-source = "src"
|
|
13
|
+
|
|
14
|
+
[tool.uv]
|
|
15
|
+
cache-keys = [{ file = "pyproject.toml" }, { file = "src/**/*.rs" }, { file = "Cargo.toml" }, { file = "Cargo.lock" }]
|
|
16
|
+
|
|
17
|
+
[build-system]
|
|
18
|
+
requires = ["maturin>=1.0,<2.0"]
|
|
19
|
+
build-backend = "maturin"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
use pyo3::prelude::*;
|
|
2
|
+
|
|
3
|
+
/// A Python module implemented in Rust. The name of this module must match
|
|
4
|
+
/// the `lib.name` setting in the `Cargo.toml`, else Python will not be able to
|
|
5
|
+
/// import the module.
|
|
6
|
+
#[pymodule]
|
|
7
|
+
mod _core {
|
|
8
|
+
use pyo3::prelude::*;
|
|
9
|
+
|
|
10
|
+
#[pyfunction]
|
|
11
|
+
fn hello_from_bin() -> String {
|
|
12
|
+
"Hello from testamentoverload!".to_string()
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
def hello_from_bin() -> str: ...
|
|
File without changes
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
def diff(t, x):
|
|
2
|
+
"""
|
|
3
|
+
Discrete-time signal operations implemented with python arrays.
|
|
4
|
+
Computes the discrete derivative v(t) of a timeseries x(t) sampled at times t.
|
|
5
|
+
Uses v(t_k) = (x(t_k) - x(t_k-1)) / (t_k - t_k-1).
|
|
6
|
+
Inputs are plain Python lists of equal length.
|
|
7
|
+
The result will always have one fewer element since no derivative is defined at v[0]
|
|
8
|
+
"""
|
|
9
|
+
if len(t) != len(x):
|
|
10
|
+
raise ValueError(
|
|
11
|
+
f"t and x must have equal length ({len(t)} != {len(x)})"
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
if len(t) < 2:
|
|
15
|
+
raise ValueError("at least two samples are required to compute a derivative")
|
|
16
|
+
|
|
17
|
+
v = [] # accumulator for the computed derivative values
|
|
18
|
+
for k in range(1, len(t)):
|
|
19
|
+
dt = t[k] - t[k - 1] # time step between consecutive samples
|
|
20
|
+
if dt == 0:
|
|
21
|
+
raise ZeroDivisionError(f"duplicate timestamp at index {k}: t[{k}] == t[{k-1}]")
|
|
22
|
+
v.append((x[k] - x[k - 1]) / dt) # backward difference quotient
|
|
23
|
+
|
|
24
|
+
return v
|
|
File without changes
|