|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
3 | | -import sys |
4 | | - |
5 | | -from typing import Iterable |
6 | | - |
7 | | -import tomlkit |
8 | | - |
9 | | -from pdm import termui |
10 | | -from pdm._types import Source |
11 | 3 | from pdm.cli.actions import resolve_candidates_from_lockfile |
12 | 4 | from pdm.cli.commands.base import BaseCommand |
13 | | -from pdm.cli.utils import ( |
14 | | - fetch_hashes, |
15 | | - format_lockfile, |
16 | | - format_resolution_impossible, |
17 | | - translate_groups, |
| 5 | +from pdm.cli.filters import GroupSelection |
| 6 | +from pdm.cli.options import ( |
| 7 | + clean_group, |
| 8 | + dry_run_option, |
| 9 | + groups_group, |
| 10 | + install_group, |
| 11 | + lockfile_option, |
| 12 | + skip_option, |
| 13 | + venv_option, |
18 | 14 | ) |
19 | 15 | from pdm.core import Core |
20 | 16 | from pdm.models.caches import SafeFileCache |
21 | | -from pdm.models.candidates import Candidate, _find_best_match_link |
22 | | -from pdm.models.repositories import BaseRepository, LockedRepository |
23 | | -from pdm.models.requirements import Requirement, parse_requirement |
24 | | -from pdm.models.specifiers import get_specifier |
25 | | -from pdm.project import Project |
26 | | -from pdm.project.config import ConfigItem |
27 | | -from pdm.resolver import resolve |
28 | | -from pdm.resolver.providers import BaseProvider |
29 | | -from pdm.termui import Verbosity |
30 | | -from pdm.utils import atomic_open_for_write |
31 | | -from resolvelib.reporters import BaseReporter |
32 | | -from resolvelib.resolvers import ResolutionImpossible, ResolutionTooDeep, Resolver |
| 17 | +from pdm.models.candidates import _find_best_match_link |
33 | 18 |
|
34 | 19 |
|
35 | 20 | class FetcherCommand(BaseCommand): |
36 | 21 | """Generate a lockfile for torch specifically.""" |
37 | 22 |
|
38 | | - def add_arguments(self, parser): |
39 | | - parser.add_argument( |
40 | | - "-G", |
41 | | - "--group", |
42 | | - dest="groups", |
43 | | - metavar="GROUP", |
44 | | - action="append", |
45 | | - help="Select group of optional-dependencies " |
46 | | - "or dev-dependencies(with -d). Can be supplied multiple times, " |
47 | | - 'use ":all" to include all groups under the same species.', |
48 | | - default=[], |
49 | | - ) |
| 23 | + arguments = ( |
| 24 | + *BaseCommand.arguments, |
| 25 | + groups_group, |
| 26 | + dry_run_option, |
| 27 | + lockfile_option, |
| 28 | + skip_option, |
| 29 | + clean_group, |
| 30 | + install_group, |
| 31 | + venv_option, |
| 32 | + ) |
50 | 33 |
|
51 | 34 | def handle(self, project, options): |
52 | | - groups = translate_groups(project, True, True, options.groups) |
53 | | - |
| 35 | + selection = GroupSelection.from_options(project, options) |
54 | 36 | requirements = [] |
55 | | - for group in groups: |
| 37 | + for group in selection: |
56 | 38 | requirements.extend(project.get_dependencies(group).values()) |
57 | 39 | candidates = resolve_candidates_from_lockfile(project, requirements) |
58 | 40 |
|
|
0 commit comments