Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade maturin #6

Merged
merged 1 commit into from
Jun 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/maturin_import_hook/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ class MaturinDevelopSettings(MaturinSettings):
"""settings for `maturin develop`."""

extras: Optional[list[str]] = None
uv: bool = False
skip_install: bool = False

@staticmethod
Expand All @@ -132,6 +133,8 @@ def to_args(self) -> list[str]:
if self.extras is not None:
args.append("--extras")
args.append(",".join(self.extras))
if self.uv:
args.append("--uv")
if self.skip_install:
args.append("--skip-install")
args.extend(super().to_args())
Expand Down
2 changes: 2 additions & 0 deletions tests/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ To update maturin:
- update the submodule to the maturin commit you want to update to
- re-run the `package_resolver` to update `resolved.json` (see `package_resolver/README.md` for instructions)
- update `requirements.txt` to match the packages and versions used by the maturin ci (`.github/workflows.test.yml`)
- check the `uniffi` package version listed in the `Cargo.toml` of any of the `uniffi-*`
test crates and update `uniffi-bindgen` in `requirements.txt` to match.
- check that no crates have been added to `test-crates` that should be excluded from the import hook tests.
If so, add them to `IGNORED_TEST_CRATES` in `common.py`
- update the version check in the import hook to ensure it allows using the new version
Expand Down
2 changes: 1 addition & 1 deletion tests/maturin
Submodule maturin updated 121 files
18 changes: 9 additions & 9 deletions tests/package_resolver/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions tests/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
-e ..
uv
maturin==1.5.0
maturin==1.6.0
pytest
junit2html
uniffi-bindgen==0.26.0
uniffi-bindgen==0.27.0
cffi

# required for pyo3-mixed
Expand Down
2 changes: 1 addition & 1 deletion tests/resolved.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"commit": "7d711f0c4a7c052608dc2e16d5c6721b9666d076",
"commit": "894231c644c2d7a9a31349c86b3f3c431b74d615",
"crates": {
"cffi-mixed": {
"cargo_manifest_path": "Cargo.toml",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use pyo3::prelude::*;
fn get_num() -> usize { 10 }

#[pymodule]
fn my_script(_py: Python, m: &PyModule) -> PyResult<()> {
fn my_script(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!(get_num))?;
Ok(())
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ fn get_num() -> usize { 20 }
fn get_other_num() -> usize { 100 }

#[pymodule]
fn my_script(_py: Python, m: &PyModule) -> PyResult<()> {
fn my_script(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!(get_num))?;
m.add_wrapped(wrap_pyfunction!(get_other_num))?;
Ok(())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ fn get_num() -> usize {
}

#[pymodule]
fn my_script(_py: Python, m: &PyModule) -> PyResult<()> {
fn my_script(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!(get_num))?;
Ok(())
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
use pyo3::prelude::*;
use pyo3::wrap_pyfunction;

#[pyfunction]
pub fn do_something(a: usize, b: usize) -> PyResult<usize> {
Ok(a + b)
}

#[pymodule]
pub fn my_rust_module(_py: Python, m: &PyModule) -> PyResult<()> {
pub fn my_rust_module(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!(do_something))?;
Ok(())
}
18 changes: 9 additions & 9 deletions tests/test_import_hook/file_importer_helpers/reload_template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl Integer {
}

fn __richcmp__(&self, other: &Self, op: CompareOp, py: Python<'_>) -> PyResult<bool> {
let logging = PyModule::import(py, "logging")?;
let logging = PyModule::import_bound(py, "logging")?;
let message = format!(
"comparing Integer instances {} and {}",
self.name, other.name
Expand All @@ -66,7 +66,7 @@ impl PicklableInteger {
}

fn __richcmp__(&self, other: &Self, op: CompareOp, py: Python<'_>) -> PyResult<bool> {
let logging = PyModule::import(py, "logging")?;
let logging = PyModule::import_bound(py, "logging")?;
let message = format!(
"comparing PicklableInteger instances {} and {}",
self.name, other.name
Expand All @@ -88,15 +88,15 @@ fn get_str() -> String {
string
}

fn register_child_module(py: Python<'_>, parent_module: &PyModule) -> PyResult<()> {
let child_module = PyModule::new(py, "child")?;
fn register_child_module(py: Python<'_>, parent_module: &Bound<'_, PyModule>) -> PyResult<()> {
let child_module = PyModule::new_bound(py, "child")?;
child_module.add_wrapped(wrap_pyfunction!(get_str))?;
parent_module.add_submodule(child_module)?;
parent_module.add_submodule(&child_module)?;
Ok(())
}

#[pymodule]
fn my_module(py: Python, m: &PyModule) -> PyResult<()> {
fn my_module(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!(get_num))?;
m.add_wrapped(wrap_pyfunction!(get_global_num))?;
m.add_wrapped(wrap_pyfunction!(set_global_num))?;
Expand All @@ -105,19 +105,19 @@ fn my_module(py: Python, m: &PyModule) -> PyResult<()> {

register_child_module(py, m)?;

let data = PyDict::new(py);
let data = PyDict::new_bound(py);
data.set_item("foo", 123)?;
m.add("data", data)?;

if !m.hasattr("data_init_once")? {
let data = PyDict::new(py);
let data = PyDict::new_bound(py);
data.set_item("foo", 123)?;
m.add("data_init_once", data)?;
}

m.add("data_str", "foo")?;

let logging = PyModule::import(py, "logging")?;
let logging = PyModule::import_bound(py, "logging")?;
logging
.getattr("info")?
.call1(("my_module extension module initialised",))?;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ edition = "2021"
description = ""

[dependencies]
pyo3 = { version = "0.20.2", features = ["extension-module"] }
pyo3 = { version = "0.21.2", features = ["extension-module"] }

[lib]
crate-type = ["cdylib"]
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use pyo3::prelude::*;

#[pymodule]
fn blank_project(_py: Python, _m: &PyModule) -> PyResult<()> {
fn blank_project(_m: &Bound<'_, PyModule>) -> PyResult<()> {
Ok(())
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fn get_num() -> usize {
}

#[pymodule]
fn my_project(_py: Python, m: &PyModule) -> PyResult<()> {
fn my_project(m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!(get_num))?;
Ok(())
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl Integer {
}

fn __richcmp__(&self, other: &Self, op: CompareOp, py: Python<'_>) -> PyResult<bool> {
let logging = PyModule::import(py, "logging")?;
let logging = PyModule::import_bound(py, "logging")?;
let message = format!(
"comparing Integer instances {} and {}",
self.name, other.name
Expand All @@ -66,7 +66,7 @@ impl PicklableInteger {
}

fn __richcmp__(&self, other: &Self, op: CompareOp, py: Python<'_>) -> PyResult<bool> {
let logging = PyModule::import(py, "logging")?;
let logging = PyModule::import_bound(py, "logging")?;
let message = format!(
"comparing PicklableInteger instances {} and {}",
self.name, other.name
Expand All @@ -88,15 +88,15 @@ fn get_str() -> String {
string
}

fn register_child_module(py: Python<'_>, parent_module: &PyModule) -> PyResult<()> {
let child_module = PyModule::new(py, "child")?;
fn register_child_module(py: Python<'_>, parent_module: &Bound<'_, PyModule>) -> PyResult<()> {
let child_module = PyModule::new_bound(py, "child")?;
child_module.add_wrapped(wrap_pyfunction!(get_str))?;
parent_module.add_submodule(child_module)?;
parent_module.add_submodule(&child_module)?;
Ok(())
}

#[pymodule]
fn my_project(py: Python, m: &PyModule) -> PyResult<()> {
fn my_project(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
m.add_wrapped(wrap_pyfunction!(get_num))?;
m.add_wrapped(wrap_pyfunction!(get_global_num))?;
m.add_wrapped(wrap_pyfunction!(set_global_num))?;
Expand All @@ -105,19 +105,19 @@ fn my_project(py: Python, m: &PyModule) -> PyResult<()> {

register_child_module(py, m)?;

let data = PyDict::new(py);
let data = PyDict::new_bound(py);
data.set_item("foo", 123)?;
m.add("data", data)?;

if !m.hasattr("data_init_once")? {
let data = PyDict::new(py);
let data = PyDict::new_bound(py);
data.set_item("foo", 123)?;
m.add("data_init_once", data)?;
}

m.add("data_str", "foo")?;

let logging = PyModule::import(py, "logging")?;
let logging = PyModule::import_bound(py, "logging")?;
logging
.getattr("info")?
.call1(("my_project extension module initialised",))?;
Expand Down
2 changes: 1 addition & 1 deletion tests/test_import_hook/test_project_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1395,7 +1395,7 @@ def _install_editable(project_dir: Path) -> None:
assert maturin_path is not None
env = os.environ.copy()
env["VIRTUAL_ENV"] = sys.exec_prefix
subprocess.check_call([maturin_path, "develop"], cwd=project_dir, env=env)
subprocess.check_call([maturin_path, "develop", "--uv"], cwd=project_dir, env=env)


def _install_non_editable(project_dir: Path) -> None:
Expand Down
Loading
Loading