pyo3/pyo3

Rust bindings for the Python interpreter

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 50 minutes ago
Added to GitGenius on September 3rd, 2026
Created on May 13th, 2017
Open Issues & Pull Requests: 393 (+0)
GitHub issues: Enabled
Number of forks: 1,016
Total Stargazers: 16,114 (+2)
Total Subscribers: 107 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 10.4 hours
Mean response time: 32.9 days
90th percentile: 52.2 days
Tracked items: 1,003

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 73% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "Unsound" is answered fastest, typically in about an hour, while "free-threading" waits about 2 days. 63% of tracked open issues have had no activity in three months, so the open count overstates what is actively being worked. Only 3% of issues opened in the past year have been closed.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 252
New in 7 days: 2
Closed in 7 days: 2
Avg open age: 801 days
Stale 30+ days: 229
Stale 90+ days: 188

Recent activity

Opened in 7 days: 2
Closed in 7 days: 0
Comments in 7 days: 1
Events in 7 days: 3

Top labels

  • needs-design (59)
  • Good First Issue (55)
  • documentation (32)
  • needs-implementer (29)
  • Unsound (27)
  • 1.0-candidate (15)
  • FFI (11)
  • free-threading (11)

Most active issues this week

Detailed Description

PyO3 is a Rust bindings library that enables Rust code to call Python and Python code to call Rust.

The library solves the problem of integrating Rust and Python by providing safe, ergonomic bindings to the Python C API. Rather than writing low-level C code to interface with Python, developers use Rust's type system and macro-based abstractions to define Python modules, classes, and functions. PyO3 handles the complexity of reference counting, type conversions, and error propagation between the two languages, allowing Rust code to be exposed as native Python extensions or embedded within Python applications.

Developers should choose PyO3 when they need to write performance-critical components in Rust while maintaining a Python interface, or when embedding Python in a Rust application. It suits projects where Python's ease of use must be paired with Rust's speed and safety guarantees. The tool is particularly valuable for data processing pipelines, scientific computing libraries, and systems where Python serves as the user-facing layer but computationally intensive work happens in Rust. Teams already committed to Rust will find PyO3 more natural than alternatives requiring C or C++ interop code.

The project maintains active development with regular updates addressing both new Python versions and Rust ecosystem changes. Contributions flow steadily across multiple areas including documentation improvements, bug fixes, and feature additions. The maintainers respond to issues and pull requests consistently, indicating sustained engagement with the user base. Development spans both core binding functionality and auxiliary tooling that makes the integration experience smoother. The project demonstrates responsiveness to community needs while managing the technical complexity of supporting multiple Python and Rust versions simultaneously.