Skip to content

Commit

Permalink
Merge pull request #437 from eli-schwartz/plugin-defer
Browse files Browse the repository at this point in the history
Delay imports of non-stdlib dependencies until time of use
  • Loading branch information
davidhewitt authored Jun 11, 2024
2 parents d7868df + c46d355 commit 34c5f16
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 5 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## Unreleased
### Changed
- Use the base interpreter path when running inside a virtual environment to avoid recompilation when switching between virtual environments. [#429](https://github.com/PyO3/setuptools-rust/pull/429)
- Delay import of dependencies until use to avoid import errors during a partially complete install when multiple packages are installing at once. [#437](https://github.com/PyO3/setuptools-rust/pull/437)

## 1.9.0 (2024-02-24)
### Changed
Expand Down
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ classifiers = [
dependencies = [
"setuptools>=62.4",
"semantic_version>=2.8.2,<3",
'tomli>=1.2.1; python_version<"3.11"'
]

[project.entry-points."distutils.commands"]
Expand Down
8 changes: 7 additions & 1 deletion setuptools_rust/extension.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from __future__ import annotations

import json
import os
import re
Expand All @@ -14,11 +16,13 @@
NewType,
Optional,
Sequence,
TYPE_CHECKING,
Union,
cast,
)

from semantic_version import SimpleSpec
if TYPE_CHECKING:
from semantic_version import SimpleSpec

from ._utils import format_called_process_error

Expand Down Expand Up @@ -185,6 +189,8 @@ def get_rust_version(self) -> Optional[SimpleSpec]: # type: ignore[no-any-unimp
if self.rust_version is None:
return None
try:
from semantic_version import SimpleSpec

return SimpleSpec(self.rust_version)
except ValueError:
raise SetupError(
Expand Down
9 changes: 7 additions & 2 deletions setuptools_rust/rustc_info.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
from __future__ import annotations

import subprocess
from setuptools.errors import PlatformError
from functools import lru_cache
from typing import Dict, List, NewType, Optional
from typing import Dict, List, NewType, Optional, TYPE_CHECKING

from semantic_version import Version
if TYPE_CHECKING:
from semantic_version import Version


def get_rust_version() -> Optional[Version]: # type: ignore[no-any-unimported]
try:
# first line of rustc -Vv is something like
# rustc 1.61.0 (fe5b13d68 2022-05-18)
from semantic_version import Version

return Version(_rust_version().split(" ")[1])
except (subprocess.CalledProcessError, OSError):
return None
Expand Down
5 changes: 4 additions & 1 deletion setuptools_rust/setuptools_ext.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,10 @@
if sys.version_info[:2] >= (3, 11):
from tomllib import load as toml_load
else:
from tomli import load as toml_load
try:
from tomli import load as toml_load
except ImportError:
from setuptools.extern.tomli import load as toml_load


logger = logging.getLogger(__name__)
Expand Down

0 comments on commit 34c5f16

Please sign in to comment.