1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# =============================================================================
# BUILD SYSTEM
# =============================================================================
# Why maturin?
# - Maturin is the standard tool for building Python extensions from Rust
# - It handles the complex cross-platform compilation and wheel building
# - Version 1.7+ required for latest PyO3 features and Python 3.14 support
[]
= ["maturin>=1.7,<2.0"]
= "maturin"
# =============================================================================
# PROJECT METADATA
# =============================================================================
[]
= "rust-ai-core-bindings"
= "0.2.7"
= "Python bindings for rust-ai-core: memory estimation, device detection, and ML utilities"
= "README.md"
= { = "MIT" }
= [
{ = "Tyler Zervas", = "tz-dev@vectorweight.com" }
]
# Why Python 3.9 minimum?
# - 3.9 is the oldest Python version still receiving security updates (until Oct 2025)
# - Provides good balance between compatibility and modern language features
# - NumPy 2.0+ requires Python 3.9+
= ">=3.9"
= ["machine-learning", "cuda", "gpu", "tensors", "deep-learning", "memory-estimation"]
# Why these classifiers?
# - Explicitly list supported Python versions so users know compatibility
# - Programming Language :: Rust indicates this is a Rust extension (helps discovery)
# - Topic classifiers help users find this package when searching
= [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Rust",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
"Topic :: Software Development :: Libraries :: Python Modules",
]
# Why numpy>=1.20?
# - 1.20 is minimum for consistent ndarray interop with PyO3/numpy crate
# - Most ML users will have a recent numpy anyway
# - We don't pin to numpy 2.0 to allow users on older environments
= [
"numpy>=1.20",
]
[]
= "https://github.com/tzervas/rust-ai-core"
= "https://github.com/tzervas/rust-ai-core"
= "https://docs.rs/rust-ai-core"
= "https://github.com/tzervas/rust-ai-core/issues"
[]
= [
"pytest>=7.0",
"pytest-benchmark>=4.0",
]
# =============================================================================
# MATURIN CONFIGURATION
# =============================================================================
[]
# Why "python" feature?
# - Enables PyO3 bindings compilation (feature-gated to keep core crate lean)
# - Users of the Rust crate don't need Python dependencies
= ["python"]
# Why this module name?
# - Matches the import name: `import rust_ai_core_bindings`
# - Follows Python naming conventions (snake_case)
= "rust_ai_core_bindings"
# Why python-source = "python"?
# - Tells maturin where to find Python stub files (.pyi) and __init__.py
# - Enables proper IDE autocompletion and type checking
= "python"
# Why strip = true?
# - Removes debug symbols from release builds
# - Significantly reduces wheel size (often 50%+ smaller)
# - Users don't need debug symbols for production use
= true