Skip to content

Split up module_writer.rs code for code organization#2857

Merged
messense merged 2 commits intoPyO3:mainfrom
e-nomem:module-writer-split
Nov 19, 2025
Merged

Split up module_writer.rs code for code organization#2857
messense merged 2 commits intoPyO3:mainfrom
e-nomem:module-writer-split

Conversation

@e-nomem
Copy link
Copy Markdown
Contributor

@e-nomem e-nomem commented Nov 17, 2025

I was going to refactor the write_<binding>_module() methods because it seems like there's a lot of duplicate logic in those functions, but the module_writer.rs file is absolutely massive and annoying to navigate. Instead, I made this PR which contains absolutely no logic changes, and just copy/pastes the code into multiple smaller files for code organization.

The only changes here are occasionally to the visibility of the structs and functions to accommodate the new module structure.

@e-nomem e-nomem force-pushed the module-writer-split branch from 5f714b3 to 2cc1a45 Compare November 18, 2025 20:16
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR reorganizes the large module_writer.rs file by splitting it into multiple smaller, more manageable files without changing any logic. The refactoring creates a new module structure with module_writer and binding_generator directories, each containing focused submodules.

Key changes:

  • Splits module_writer.rs (1561 lines) into separate modules: wheel_writer.rs, sdist_writer.rs, path_writer.rs, and util.rs
  • Creates new binding_generator module with submodules for different binding types (pyo3, cffi, uniffi, wasm)
  • Refactors FileTracker from a tuple struct to a struct with a named files field
  • Adjusts visibility modifiers to accommodate the new module structure

Reviewed Changes

Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/module_writer.rs Deleted the original 1561-line file
src/module_writer/mod.rs New module root with common traits and functions
src/module_writer/wheel_writer.rs Extracted WheelWriter implementation
src/module_writer/sdist_writer.rs Extracted SDistWriter implementation
src/module_writer/path_writer.rs Extracted PathWriter implementation
src/module_writer/util.rs Extracted FileTracker utility
src/binding_generator/mod.rs New module for binding generation
src/binding_generator/pyo3_binding.rs Extracted PyO3 binding logic
src/binding_generator/cffi_binding.rs Extracted CFFI binding logic
src/binding_generator/uniffi_binding.rs Extracted UniFfi binding logic
src/binding_generator/wasm_binding.rs Extracted WASM binding logic
src/compression.rs Moved get_file_options method here
src/build_context.rs Updated imports for new module structure
src/lib.rs Added binding_generator module

Comment thread src/module_writer/util.rs Outdated
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@messense messense merged commit d4138be into PyO3:main Nov 19, 2025
35 of 36 checks passed
@e-nomem e-nomem deleted the module-writer-split branch November 19, 2025 14:15
bmwiedemann pushed a commit to bmwiedemann/openSUSE that referenced this pull request Jan 8, 2026
https://build.opensuse.org/request/show/1325799
by user mia + anag_factory
- Update to version 1.11.2 (version bump only)
- Changes in 1.11.1:
  * Fix compiled artifacts being excluded by source path matching
    gh#PyO3/maturin#2910
  * Better error reporting for missing interpreters
    gh#PyO3/maturin#2918
  * Ignore unreadable excluded directories
    gh#PyO3/maturin#2916
- Changes in 1.11.0:
  * Correct tagging for x86_64 iOS simulator wheels.
    gh#PyO3/maturin#2851
  * Bump MSRV to 1.85.0 and use Rust 2024 edition
    gh#PyO3/maturin#2850
  * Upgrade goblin to 0.10
    gh#PyO3/maturin#2853
  * Set entry type when adding to the tar file
    gh#PyO3/maturin#2859
  * Split up module_writer.rs code for code organization
    gh#PyO3/maturin#2857
  * Update environment variables for Android cross-compilation
    support
    gh#PyO3/maturin#2825
  * Upgrade some
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants