|
1 | 1 | import configparser |
2 | 2 | import itertools |
| 3 | +import logging |
3 | 4 | import re |
4 | 5 | import setuptools |
5 | 6 | import sys |
|
13 | 14 | from typing import Dict, List, Optional, Set, Tuple, TypeVar, Union |
14 | 15 |
|
15 | 16 |
|
| 17 | +_logger = logging.getLogger("setuptools_pyproject_migration") |
| 18 | + |
| 19 | + |
16 | 20 | def _parse_entry_point(entry_point: str) -> Tuple[str, str]: |
17 | 21 | """ |
18 | 22 | Extract the entry point and name from the string. |
@@ -343,24 +347,39 @@ def _generate(self) -> Pyproject: |
343 | 347 | # version constraint string, which is exactly what we want here |
344 | 348 | pyproject["project"]["requires-python"] = str(python_specifiers) |
345 | 349 |
|
346 | | - # NB: ensure a consistent alphabetical ordering of dependencies |
347 | | - dependencies = sorted(set(dist.install_requires)) |
348 | | - if dependencies: |
349 | | - pyproject["project"]["dependencies"] = dependencies |
| 350 | + _logger.debug("dist.install_requires: %r", dist.install_requires) |
| 351 | + dependencies = set(dist.install_requires) |
350 | 352 |
|
| 353 | + _logger.debug("dist.extras_require: %r", dist.extras_require) |
351 | 354 | optional_dependencies: Dict[str, Set[str]] = {} |
352 | 355 | for extra_dep_key, deps in dist.extras_require.items(): |
353 | 356 | extra, _, constraint = extra_dep_key.partition(":") |
354 | | - optional_dependencies.setdefault(extra, set()) |
| 357 | + _logger.debug("Handling extra=%r, constraint=%r", extra, constraint) |
| 358 | + target: Set[str] |
| 359 | + if extra: |
| 360 | + _logger.debug("Adding to optional_dependencies[%r]", extra) |
| 361 | + target = optional_dependencies.setdefault(extra, set()) |
| 362 | + else: |
| 363 | + _logger.debug("Adding to dependencies") |
| 364 | + target = dependencies |
355 | 365 | for dep in deps: |
356 | 366 | if constraint: |
357 | | - optional_dependencies[extra].add(f"{dep}; {constraint}") |
| 367 | + _logger.debug("Adding dependency %s with constraint %r", dep, constraint) |
| 368 | + target.add(f"{dep}; {constraint}") |
358 | 369 | else: |
359 | | - optional_dependencies[extra].add(dep) |
| 370 | + _logger.debug("Adding dependency %s with no constraint", dep) |
| 371 | + target.add(dep) |
| 372 | + |
| 373 | + if dependencies: |
| 374 | + # NB: ensure a consistent alphabetical ordering of dependencies |
| 375 | + sorted_dependencies = sorted(dependencies) |
| 376 | + _logger.debug("Setting project.dependencies to: %r", sorted_dependencies) |
| 377 | + pyproject["project"]["dependencies"] = sorted_dependencies |
| 378 | + |
360 | 379 | if optional_dependencies: |
361 | | - pyproject["project"]["optional-dependencies"] = { |
362 | | - extra: sorted(deps) for extra, deps in optional_dependencies.items() |
363 | | - } |
| 380 | + sorted_optional_dependencies = {extra: sorted(deps) for extra, deps in optional_dependencies.items()} |
| 381 | + _logger.debug("Setting project.optional_dependencies to: %r", sorted_optional_dependencies) |
| 382 | + pyproject["project"]["optional-dependencies"] = sorted_optional_dependencies |
364 | 383 |
|
365 | 384 | entry_points = _generate_entry_points(dist.entry_points) |
366 | 385 |
|
|
0 commit comments