Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

ToRSh Python Bindings

License: Apache 2.0 Python Versions

Python bindings for ToRSh - a PyTorch-compatible deep learning framework built in pure Rust.

🚀 Quick Start

Installation

From Source (Development)

# Install maturin
pip install maturin

# Clone the repository
git clone https://github.com/cool-japan/torsh.git
cd torsh/crates/torsh-python

# Build and install in development mode
maturin develop

# Or build in release mode for better performance
maturin develop --release

From PyPI (Coming Soon)

pip install RsTorch

Basic Usage

import rstorch

# Device management
cpu = rstorch.PyDevice("cpu")
cuda = rstorch.PyDevice("cuda:0")
print(f"Device: {cpu.type}, Index: {cpu.index}")

# Data types
float32 = rstorch.PyDType("float32")
int64 = rstorch.PyDType("int64")
print(f"DType: {float32.name}, Size: {float32.itemsize} bytes")

# Check device availability
print(f"CUDA available: {rstorch.cuda_is_available()}")
print(f"MPS available: {rstorch.mps_is_available()}")

See examples/basic_usage.py for more examples.

📚 Documentation

Current Status

Version: 0.1.0

Note: This crate is in active development. Many features are currently disabled due to dependency conflicts with scirs2-autograd and are being re-enabled incrementally.

✅ Available Features

  • Device Management: CPU, CUDA, Metal device support with PyTorch-compatible API
  • Data Type Handling: Complete dtype system with float32, int64, bool, etc.
  • Error Handling: Comprehensive error types with helpful messages
  • Validation Utilities: 25+ validation functions for input checking
  • Type Stubs: Full .pyi type stubs for IDE support
  • Documentation: Comprehensive documentation for all public APIs

❌ Currently Disabled (Coming Soon)

  • Tensor operations and creation functions
  • Neural network layers (rstorch.nn)
  • Optimization algorithms (rstorch.optim)
  • Automatic differentiation (rstorch.autograd)
  • Distributed training (rstorch.distributed)
  • Functional operations (rstorch.F)

See TODO.md for the full roadmap and progress tracking.

API Reference

Device Management

# Create devices
cpu = rstorch.PyDevice("cpu")
cuda0 = rstorch.PyDevice("cuda")      # Default to cuda:0
cuda1 = rstorch.PyDevice("cuda:1")    # Specific GPU
metal = rstorch.PyDevice("metal:0")   # Apple Silicon

# Device properties
print(cuda1.type)   # "cuda"
print(cuda1.index)  # 1

# Device equality
cpu1 = rstorch.PyDevice("cpu")
cpu2 = rstorch.PyDevice("cpu")
assert cpu1 == cpu2

# Utility functions
rstorch.device_count()        # Number of devices
rstorch.is_available()        # General availability
rstorch.cuda_is_available()   # CUDA availability
rstorch.mps_is_available()    # Metal Performance Shaders availability

Data Types

# Create dtypes
float32 = rstorch.PyDType("float32")  # or "f32"
float64 = rstorch.PyDType("float64")  # or "f64"
int32 = rstorch.PyDType("int32")      # or "i32"
int64 = rstorch.PyDType("int64")      # or "i64"
bool_type = rstorch.PyDType("bool")

# DType properties
print(float32.name)              # "float32"
print(float32.itemsize)          # 4 (bytes)
print(float32.is_floating_point) # True
print(float32.is_signed)         # True

# DType constants
rstorch.float32  # Predefined dtype
rstorch.float64
rstorch.int32
rstorch.int64
rstorch.bool

# PyTorch-style aliases
rstorch.float   # Same as float32
rstorch.double  # Same as float64
rstorch.long    # Same as int64
rstorch.int     # Same as int32

Error Handling

# Custom errors
error = rstorch.TorshError("Custom error message")
print(str(error))    # "Custom error message"
print(repr(error))   # "TorshError('Custom error message')"

# Built-in validation with helpful errors
try:
    invalid_device = rstorch.PyDevice("invalid")
except ValueError as e:
    print(f"Error: {e}")  # "Unknown device: invalid"

🏗️ Architecture

Design Principles

  1. PyTorch Compatibility: API designed to match PyTorch's interface for easy migration
  2. SciRS2 Integration: Built on top of the SciRS2 scientific computing ecosystem
  3. Type Safety: Leverages Rust's type system with Python type hints
  4. Performance: Zero-cost abstractions and efficient memory management
  5. Modularity: Clean separation between core functionality and Python bindings

SciRS2 POLICY Compliance

This crate strictly follows the SciRS2 POLICY:

  • ✅ REQUIRED: All external dependencies accessed through scirs2-core abstractions
  • ✅ REQUIRED: No direct imports of ndarray, rand, num-traits, rayon, etc.
  • ✅ REQUIRED: Unified access through scirs2_core::ndarray, scirs2_core::random, etc.
  • ✅ MANDATORY: SIMD/parallel operations through scirs2_core only

See SCIRS2_INTEGRATION_POLICY.md for full details.

Project Structure

torsh-python/
├── src/
│   ├── lib.rs              # Main module registration
│   ├── device.rs           # Device management
│   ├── dtype.rs            # Data type handling
│   ├── error.rs            # Error handling
│   ├── tensor/             # Tensor operations (disabled)
│   ├── nn/                 # Neural network layers (disabled)
│   ├── optim/              # Optimizers (disabled)
│   └── utils/              # Validation and utilities
├── python/
│   └── torsh/
│       ├── __init__.pyi    # Type stubs
│       └── py.typed        # PEP 561 marker
├── tests/                  # Integration tests
├── examples/               # Usage examples
├── pyproject.toml          # Python package metadata
├── Cargo.toml              # Rust package metadata
└── README.md               # This file

🧪 Testing

Running Tests

# Run Rust unit tests
cargo test

# Run validation tests
cargo test --lib validation::tests

# Build Python extension for manual testing
maturin develop
python examples/basic_usage.py

Test Coverage

  • ✅ Device Module: 30+ comprehensive tests covering all functionality
  • ✅ DType Module: 40+ tests for all data types and properties
  • ✅ Error Module: Error creation and conversion tests
  • ✅ Validation Module: 70+ tests for all validation functions

🛠️ Development

Prerequisites

  • Rust 1.70+ (for GAT support)
  • Python 3.8+
  • Maturin 1.0+

Building from Source

# Install development dependencies
pip install -r requirements-dev.txt

# Build in debug mode
maturin develop

# Build in release mode
maturin develop --release

# Build wheel
maturin build --release

Code Quality

# Format Rust code
cargo fmt

# Lint Rust code
cargo clippy

# Format Python code
black examples/

# Type check Python code
mypy examples/

📊 Benchmarks

Benchmarks will be added once tensor operations are re-enabled.

🗺️ Roadmap

v0.1.0 (Next Release)

  • Re-enable tensor operations
  • Re-enable basic neural network layers
  • Add tensor creation functions (zeros, ones, randn)
  • Add basic tensor operations (add, mul, matmul)

v0.1.0

  • Re-enable autograd support
  • Re-enable optimizer implementations
  • Add data loading utilities
  • Performance benchmarks

v0.1.0

  • Distributed training support
  • Complete PyTorch API compatibility
  • Comprehensive documentation
  • Full test coverage

See TODO.md for detailed task breakdown.

🤝 Contributing

Contributions are welcome! Please follow these guidelines:

  1. SciRS2 POLICY: All code must follow the SciRS2 POLICY strictly
  2. Tests: Add comprehensive tests for all new functionality
  3. Documentation: Document all public APIs with examples
  4. Type Hints: Include Python type stubs (.pyi files)
  5. Code Quality: Run cargo fmt and cargo clippy before submitting

📄 License

Licensed under the Apache License, Version 2.0. See LICENSE for details.

🙏 Acknowledgments

  • PyTorch: For the excellent API design that we strive to emulate
  • SciRS2: For providing the scientific computing foundation
  • PyO3: For excellent Rust-Python bindings

📞 Contact

  • ToRSh - Main ToRSh framework
  • SciRS2 - Scientific computing in Rust
  • NumRS2 - Numerical computing library
  • PyO3 - Rust-Python bindings

Status: 🚧 Active Development | Version: 0.1.0 | Last Updated: 2025-10-24

Metadata

Release files for RsTorch 0.1.0a2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for RsTorch 0.1.0a2
File Size Uploaded Provenance Actions
rstorch-0.1.0a2.tar.gz 3.9 MB With provenance Details for rstorch-0.1.0a2.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for RsTorch 0.1.0a2
File Actions
rstorch-0.1.0a2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details for rstorch-0.1.0a2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rstorch-0.1.0a2-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details for rstorch-0.1.0a2-cp38-abi3-win_amd64.whl
rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details for rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 abi3 Linux glibc 2.17+ ARM64 Details for rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
rstorch-0.1.0a2-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details for rstorch-0.1.0a2-cp38-abi3-macosx_11_0_arm64.whl
rstorch-0.1.0a2-cp38-abi3-macosx_10_12_x86_64.whl CPython 3.8 abi3 macOS 10.12+ x86-64 Details for rstorch-0.1.0a2-cp38-abi3-macosx_10_12_x86_64.whl

Total release size: 9.0 MB

Release files / rstorch-0.1.0a2.tar.gz

Download URL rstorch-0.1.0a2.tar.gz
Size 3.9 MB
Tags Source
SHA-256 checksum
How to use checksums
694a22ba2d41e9f66fb731e78d108153afe200d22a4db5d70776834982a38cc3
BLAKE2b-256 checksum
How to use checksums
21b9deb855f7c80160928d7f98f47d4e5793837735e03fa873a438cd476a964e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Release files / rstorch-0.1.0a2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rstorch-0.1.0a2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 861.6 kB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
052f7e3b249ac723fe4167302fe73b1958fa6ba32960aa575dbbff219d794581
BLAKE2b-256 checksum
How to use checksums
ed7863ec0efc1ade9d3f942963ad9f71b139350d89e426c7336a079b65c98d05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Release files / rstorch-0.1.0a2-cp38-abi3-win_amd64.whl

Download URL rstorch-0.1.0a2-cp38-abi3-win_amd64.whl
Size 847.1 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
e3789fb286b579a26876d2cda6fc9561a969be50553ec6477d464f6f76e2005a
BLAKE2b-256 checksum
How to use checksums
1fd21bc64ff969be6872c9cf2cd7de83ff834cdc5c550dc9b077f798675e8159
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Release files / rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 862.3 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
c1b858c1c942c3b7e2dcbf612c350142561c850aaffddb1e1c0d53f37221c093
BLAKE2b-256 checksum
How to use checksums
665e781df1ae54ed2d63808567b74aeb62e5a6ba5ebc94089a110e92c53905a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Release files / rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL rstorch-0.1.0a2-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 799.3 kB
Tags CPython 3.8 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
e62892abe366e06326debe1dc03a0f16aed1f8a729687489edb76431a97a5f4f
BLAKE2b-256 checksum
How to use checksums
301adc6f18f93ec237a0eb8d51631e32d5dce230b2c4b0674e321216a6ad93a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Release files / rstorch-0.1.0a2-cp38-abi3-macosx_11_0_arm64.whl

Download URL rstorch-0.1.0a2-cp38-abi3-macosx_11_0_arm64.whl
Size 809.9 kB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e62599ffc741d9cae4c4fe246c28f2a588b06444d48fe78bd5ef2e39f91296a4
BLAKE2b-256 checksum
How to use checksums
e5b392309dbbebb938eba6fb36664aa4e0943aeae3180108f0b6d1d4f62c5727
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Release files / rstorch-0.1.0a2-cp38-abi3-macosx_10_12_x86_64.whl

Download URL rstorch-0.1.0a2-cp38-abi3-macosx_10_12_x86_64.whl
Size 870.3 kB
Tags CPython 3.8 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
1f977cccb30cfddf654537d13ad1ed16bc661c5395b70d62b89c788cd14d54ed
BLAKE2b-256 checksum
How to use checksums
10aa9b0789482cb8b78f3351add2315fbcc47e5807d258f11d57230e4458202e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

Security for RsTorch 0.1.0a2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 7 files in this release have been uploaded with provenance metadata.

Select from 7 files

Attestation for rstorch-0.1.0a2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page