Skip to content

Commit 80d9e81

Browse files
authored
fix: Tune heavy py-rattler imports + lazy import networkx (#1901)
1 parent 335bed5 commit 80d9e81

File tree

4 files changed

+15
-15
lines changed

4 files changed

+15
-15
lines changed

py-rattler/rattler/repo_data/gateway.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
from dataclasses import dataclass
55
from typing import Iterable, List, Optional
66

7-
from rattler.channel import Channel
8-
from rattler.match_spec import MatchSpec
9-
from rattler.networking import CacheAction, Client
7+
from rattler.channel.channel import Channel
8+
from rattler.match_spec.match_spec import MatchSpec
9+
from rattler.networking.client import Client
10+
from rattler.networking.fetch_repo_data import CacheAction
1011
from rattler.package.package_name import PackageName
11-
from rattler.platform import Platform, PlatformLiteral
12+
from rattler.platform.platform import Platform, PlatformLiteral
1213
from rattler.rattler import PyGateway, PyMatchSpec, PySourceConfig
1314
from rattler.repo_data.record import RepoDataRecord
1415

py-rattler/rattler/repo_data/package_record.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,6 @@
1212

1313
if TYPE_CHECKING:
1414
import networkx as nx
15-
else:
16-
try:
17-
import networkx as nx
18-
except ImportError:
19-
nx = None
2015

2116

2217
class PackageRecord:
@@ -122,8 +117,10 @@ def to_graph(records: List[PackageRecord]) -> nx.DiGraph: # type: ignore[type-a
122117
123118
Note: Virtual packages (starting with `__`) are skipped.
124119
"""
125-
if nx is None:
126-
raise ImportError("networkx is not installed")
120+
try:
121+
import networkx as nx
122+
except ImportError:
123+
raise ImportError("networkx is not installed") from None
127124

128125
names_to_records = {record.name: record for record in records}
129126

py-rattler/rattler/repo_data/record.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from __future__ import annotations
22

33
from rattler.rattler import PyRecord
4-
from rattler.repo_data import PackageRecord
4+
from rattler.repo_data.package_record import PackageRecord
55

66

77
class RepoDataRecord(PackageRecord):

py-rattler/rattler/solver/solver.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,16 @@
33
import datetime
44
from typing import List, Literal, Optional, Sequence
55

6-
from rattler import Channel, Platform, SparseRepoData, VirtualPackage
7-
from rattler.channel import ChannelPriority
6+
from rattler.channel.channel import Channel
7+
from rattler.channel.channel_priority import ChannelPriority
88
from rattler.match_spec.match_spec import MatchSpec
9-
from rattler.platform.platform import PlatformLiteral
9+
from rattler.platform.platform import Platform, PlatformLiteral
1010
from rattler.rattler import PyMatchSpec, PyPackageFormatSelection, py_solve, py_solve_with_sparse_repodata
1111
from rattler.repo_data.gateway import Gateway
1212
from rattler.repo_data.record import RepoDataRecord
13+
from rattler.repo_data.sparse import SparseRepoData
1314
from rattler.virtual_package.generic import GenericVirtualPackage
15+
from rattler.virtual_package.virtual_package import VirtualPackage
1416

1517
SolveStrategy = Literal["highest", "lowest", "lowest-direct"]
1618
"""Defines the strategy to use when multiple versions of a package are available during solving."""

0 commit comments

Comments
 (0)