Skip to content

Commit 977ec56

Browse files
committed
refactor: set default formats for includes in Factory
1 parent 4e47388 commit 977ec56

File tree

3 files changed

+34
-28
lines changed

3 files changed

+34
-28
lines changed

src/poetry/core/factory.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from pathlib import Path
88
from typing import TYPE_CHECKING
99
from typing import Any
10+
from typing import Literal
1011
from typing import Union
1112

1213
from packaging.utils import canonicalize_name
@@ -357,6 +358,22 @@ def _configure_package_dependencies(
357358

358359
package.extras = package_extras
359360

361+
@classmethod
362+
def _prepare_formats(
363+
cls,
364+
items: list[dict[str, Any]],
365+
default_formats: list[Literal["sdist", "wheel"]],
366+
) -> list[dict[str, Any]]:
367+
items_ = []
368+
for item in items:
369+
formats = item.get("format", default_formats)
370+
if not isinstance(formats, list):
371+
formats = [formats]
372+
373+
items_.append({**item, "format": formats})
374+
375+
return items_
376+
360377
@classmethod
361378
def _configure_package_poetry_specifics(
362379
cls, package: ProjectPackage, tool_poetry: dict[str, Any]
@@ -367,24 +384,20 @@ def _configure_package_poetry_specifics(
367384
package.build_config = build or {}
368385

369386
if includes := tool_poetry.get("include"):
370-
package.include = [
387+
includes_ = [
371388
include if isinstance(include, dict) else {"path": include}
372389
for include in includes
373390
]
374391

392+
package.include = cls._prepare_formats(includes_, default_formats=["sdist"])
393+
375394
if exclude := tool_poetry.get("exclude"):
376395
package.exclude = exclude
377396

378397
if packages := tool_poetry.get("packages"):
379-
packages_ = []
380-
for p in packages:
381-
formats = p.get("format", ["sdist", "wheel"])
382-
if not isinstance(formats, list):
383-
formats = [formats]
384-
385-
packages_.append({**p, "format": formats})
386-
387-
package.packages = packages_
398+
package.packages = cls._prepare_formats(
399+
packages, default_formats=["sdist", "wheel"]
400+
)
388401

389402
@classmethod
390403
def create_dependency(

src/poetry/core/masonry/builders/builder.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,16 @@ def __init__(self, poetry: Poetry, executable: Path | None = None) -> None:
4646
def _module(self) -> Module:
4747
from poetry.core.masonry.utils.module import Module
4848

49-
packages: list[dict[str, str | dict[str, str]]] = []
50-
includes: list[dict[str, str | dict[str, str]]] = []
51-
for source_list, target_list, default in [
52-
(self._package.packages, packages, ["sdist", "wheel"]),
53-
(self._package.include, includes, ["sdist"]),
54-
]:
55-
for item in source_list:
56-
# Default to including in both sdist & wheel
57-
# if the `format` key is not provided.
58-
formats = item.get("format", default)
59-
if not isinstance(formats, list):
60-
formats = [formats]
61-
62-
if self.format and self.format not in formats:
63-
continue
64-
65-
target_list.append({**item, "format": formats})
49+
packages: list[dict[str, str | dict[str, str]]] = [
50+
{**item}
51+
for item in self._package.packages
52+
if not self.format or self.format in item["format"]
53+
]
54+
includes: list[dict[str, str | dict[str, str]]] = [
55+
{**item}
56+
for item in self._package.include
57+
if not self.format or self.format in item["format"]
58+
]
6659

6760
return Module(
6861
self._package.name,

tests/test_factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ def test_create_poetry_with_packages_and_includes() -> None:
376376

377377
assert package.include == [
378378
{"path": "extra_dir/vcs_excluded.py", "format": ["sdist", "wheel"]},
379-
{"path": "notes.txt"},
379+
{"path": "notes.txt", "format": ["sdist"]},
380380
]
381381

382382

0 commit comments

Comments
 (0)