import os
import shlex
import shutil
try:
import tomllib
except ModuleNotFoundError:
import tomli as tomllib
from setuptools import setup
from setuptools_rust import RustBin
try:
from wheel.bdist_wheel import bdist_wheel as _bdist_wheel
class bdist_wheel(_bdist_wheel):
def finalize_options(self):
_bdist_wheel.finalize_options(self)
self.root_is_pure = False
except ImportError:
bdist_wheel = None
with open("Cargo.toml", "rb") as fp:
version = tomllib.load(fp)["package"]["version"]
cargo_args = ["--no-default-features"]
if os.getenv("MATURIN_SETUP_ARGS"):
cargo_args = shlex.split(os.getenv("MATURIN_SETUP_ARGS", ""))
if not os.environ.get("MATURIN_NO_INSTALL_RUST") and not shutil.which("cargo"):
from puccinialin import setup_rust
print("Rust not found, installing into a temporary directory")
extra_env = setup_rust()
env = {**os.environ, **extra_env}
else:
env = None
setup(
version=version,
cmdclass={"bdist_wheel": bdist_wheel},
rust_extensions=[RustBin("maturin", args=cargo_args, cargo_manifest_args=["--locked"], env=env)],
zip_safe=False,
)