Skip to main content

A pymsbuild extension for compiling native modules written in Rust.

Project description

pymsbuild-rust

This is a pymsbuild extension for compiling native modules written in Rust.

Quick Start

In your _msbuild.py, import RustPydFile and Cargo from pymsbuild_rust (using import * is okay).

While Cargo is used to run the build, all files need to be specified from your _msbuild.py file to be collected when building an sdist, and to handle incremental builds correctly.

from pymsbuild import *
from pymsbuild_rust import *

METADATA = {...}

PACKAGE = Package(
    'package',
    PyFile("__init__.py"),
    RustPydFile(
        "native",
        Cargo("Cargo.toml"),
        SourceFile("src/lib.rs"),
        source="native"
    ),
)

The Cargo element refers to your Cargo.toml, which should specify that a cdylib is to be built. The name of the lib should match the name provided to RustPydFile, which will also be the resulting extension module's name.

[lib]
name = "native"
crate-type = ["cdylib"]

Other than this, the module may build in any way it likes. Most likely, you will use PyO3, and so should follow their documentation for instructions on setting up the rest of your project (ignoring the parts that refer to other build backends such as Maturin).

Other files listed in the RustPydFile will be included in your sdist, and will be used to determine whether the module needs to be recompiled.

Theoretically, multiple Cargo elements will trigger multiple builds. However, as they will all be directed into the same directory, this may not do what you hope. Advanced users may find some value regardless.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymsbuild_rust-0.1.8.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

pymsbuild_rust-0.1.8-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file pymsbuild_rust-0.1.8.tar.gz.

File metadata

  • Download URL: pymsbuild_rust-0.1.8.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for pymsbuild_rust-0.1.8.tar.gz
Algorithm Hash digest
SHA256 747644c66bdf89354c3bda72b7df7533c7c2eac6012425ec444d44603f959e1e
MD5 49a5582b8c6922d115bf529fa77db20f
BLAKE2b-256 e8a2e0788745160eb2d170aba954b28fe78e340507ad40849d07c714ab6e63c3

See more details on using hashes here.

File details

Details for the file pymsbuild_rust-0.1.8-py3-none-any.whl.

File metadata

File hashes

Hashes for pymsbuild_rust-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 3428fdb37add7256f992f7b47292706987b783c6e1fa06c761fcbb8aa830209d
MD5 b2cae48a72c9b2a31eadf3af8ff500d5
BLAKE2b-256 70524923e7e4561e0ca7dfe4db935481403f54710aac38b1b4b351d5e1a4fc7c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page