Skip to main content

PyPI version info PyPI supported Python versions

Key Features

  • Result Type: Rust-style Result[T, E] for explicit error handling without exceptions
  • Ok/Err Variants: Type-safe success and error cases with pattern matching methods
  • Panic Mechanism: Rust-like panic() for unrecoverable errors with detailed stack traces
  • Decorator Utilities: Convert existing functions to return Results with @resultify and @resultify_catch_only
  • Chainable Operations: Functional methods like map, map_err, unwrap_or, and more
  • Fully Typed: Complete type hints for excellent IDE support and type checking

Installation

# using pip
pip install pa-py-rs

# using uv
uv add pa-py-rs

NOTE: Python 3.7 or higher is required

Examples

Result

Basic Result Usage

from pa_py_rs import Result, Ok, Err

def divide(a: float, b: float) -> Result[float, str]:
    if b == 0:
        return Err("Division by zero")
    return Ok(a / b)

result = divide(10, 2)
print(result)   # Ok(5.0)
if result.is_ok():
    print(f"Success: {result.unwrap()}")    # Success: 5.0

result = divide(10, 0)
print(result)   # Err(Division by zero)
if result.is_err():
    print(f"Error: {result.unwrap_err()}")  # Error: Division by zero

Using decorators

from pa_py_rs import resultify, resultify_catch_only

# Convert any function to return Result
# Automatically catch errors and wrap in Err(...)
@resultify
def parse_int(value: str) -> int:
    return int(value)

result = parse_int("123")   # Ok(123)
result = parse_int("abc")   # Err(...)

# For functions already returning Result
# Automatically catch errors and wrap in Err(...)
@resultify_catch_only
def safe_divide(a: float, b: float) -> Result[float, str]:
    return Ok(a / b)

result = safe_divide(10, 2)  # Ok(5.0)
result = safe_divide(10, 0)  # Err("cannot divide by zero")

Chaining Operations

from pa_py_rs import Ok, Err

result = Err("error").unwrap_or(0)
print(result)   # 0

result = (Ok(10)
    .map(lambda x: x * 2)
    .map(lambda x: x + 5)
    .unwrap())
print(result)   # 25

Metadata

Release files for pa-py-rs 0.1.2

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

Source distribution (sdist)

Source distribution for pa-py-rs 0.1.2
File Size Uploaded
pa_py_rs-0.1.2.tar.gz 4.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pa-py-rs 0.1.2
File Interpreter ABI Platform
pa_py_rs-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 9.8 kB

Release files / pa_py_rs-0.1.2.tar.gz

Download URL pa_py_rs-0.1.2.tar.gz
Size 4.3 kB
Tags Source
SHA-256 checksum
How to use checksums
67bff2b72c306d7ebee17b027fe245b2cc838bc935baf4d09a36bcd378cf2a26
BLAKE2b-256 checksum
How to use checksums
e57d10f9942fe303fb1267761efa8348e0a94ab81b13f9575efbbfb0d98b1fee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.13

Release files / pa_py_rs-0.1.2-py3-none-any.whl

Download URL pa_py_rs-0.1.2-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d17eea9f551a2d3e4a1bc959856ef9ae3338565fc65367cb5fbc0ae99cfccbc3
BLAKE2b-256 checksum
How to use checksums
2a85378efd0d9185176e6027a51ddafbe6fc91e16b13ef82946b6923554c2365
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.13

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

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