diff --git a/pyproject.toml b/pyproject.toml index 095e9cf8..7c55dbc9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,11 @@ readme = {file = "README.rst", content-type = "text/x-rst"} tests = ["pytest>=3.2.1,!=3.3.0"] typecheck = ["mypy"] +[[tool.setuptools-rust.ext-modules]] +target = "bcrypt._bcrypt" +path = "src/_bcrypt/Cargo.toml" +py-limited-api = "auto" +rust-version = ">=1.64.0" [tool.ruff] line-length = 79 diff --git a/setup.py b/setup.py deleted file mode 100644 index 13694c48..00000000 --- a/setup.py +++ /dev/null @@ -1,101 +0,0 @@ -import os -import platform -import re -import shutil -import subprocess -import sys - -from setuptools import setup - -try: - from setuptools_rust import RustExtension -except ImportError: - print( - """ - =============================DEBUG ASSISTANCE========================== - If you are seeing an error here please try the following to - successfully install bcrypt: - - Upgrade to the latest pip and try again. This will fix errors for most - users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip - =============================DEBUG ASSISTANCE========================== - """ - ) - raise - -if platform.python_implementation() == "PyPy": - if sys.pypy_version_info < (2, 6): - raise RuntimeError( - "bcrypt is not compatible with PyPy < 2.6. Please upgrade PyPy to " - "use this library." - ) - - -try: - setup( - rust_extensions=[ - RustExtension( - "bcrypt._bcrypt", - "src/_bcrypt/Cargo.toml", - py_limited_api="auto", - rust_version=( - ">=1.64.0" - if os.environ.get("BCRYPT_ALLOW_RUST_163", "0") != "0" - else ">=1.63.0" - ), - ), - ], - ) -except: - # Note: This is a bare exception that re-raises so that we don't interfere - # with anything the installation machinery might want to do. Because we - # print this for any exception this msg can appear (e.g. in verbose logs) - # even if there's no failure. For example, SetupRequirementsError is raised - # during PEP517 building and prints this text. setuptools raises SystemExit - # when compilation fails right now, but it's possible this isn't stable - # or a public API commitment so we'll remain ultra conservative. - - import pkg_resources - - print( - """ - =============================DEBUG ASSISTANCE============================= - If you are seeing a compilation error please try the following steps to - successfully install bcrypt: - 1) Upgrade to the latest pip and try again. This will fix errors for most - users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip - 2) Ensure you have a recent Rust toolchain installed. bcrypt requires - rustc >= 1.64.0. (1.63 may be used by setting the BCRYPT_ALLOW_RUST_163 - environment variable) - """ - ) - print(f" Python: {'.'.join(str(v) for v in sys.version_info[:3])}") - print(f" platform: {platform.platform()}") - for dist in ["pip", "setuptools", "setuptools_rust"]: - try: - version = pkg_resources.get_distribution(dist).version - except pkg_resources.DistributionNotFound: - version = "n/a" - print(f" {dist}: {version}") - version = "n/a" - if shutil.which("rustc") is not None: - try: - # If for any reason `rustc --version` fails, silently ignore it - rustc_output = subprocess.run( - ["rustc", "--version"], - capture_output=True, - timeout=0.5, - encoding="utf8", - check=True, - ).stdout - version = re.sub("^rustc ", "", rustc_output.strip()) - except subprocess.SubprocessError: - pass - print(f" rustc: {version}") - - print( - """\ - =============================DEBUG ASSISTANCE============================= - """ - ) - raise