Skip to content

Commit 643f66f

Browse files
committed
pylock: tune dataclasses
1 parent 950ea16 commit 643f66f

File tree

2 files changed

+44
-64
lines changed

2 files changed

+44
-64
lines changed

src/pip/_internal/models/pylock.py

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -256,14 +256,14 @@ class PylockUnsupportedVersionError(PylockValidationError):
256256
pass
257257

258258

259-
@dataclass
259+
@dataclass(kw_only=True)
260260
class PackageVcs:
261261
type: str
262-
url: Optional[str]
263-
path: Optional[str]
264-
requested_revision: Optional[str]
262+
url: Optional[str] = None
263+
path: Optional[str] = None
264+
requested_revision: Optional[str] = None
265265
commit_id: str
266-
subdirectory: Optional[str]
266+
subdirectory: Optional[str] = None
267267

268268
def __post_init__(self) -> None:
269269
_validate_path_url(self.path, self.url)
@@ -280,11 +280,11 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
280280
)
281281

282282

283-
@dataclass
283+
@dataclass(kw_only=True)
284284
class PackageDirectory:
285285
path: str
286-
editable: Optional[bool]
287-
subdirectory: Optional[str]
286+
editable: Optional[bool] = None
287+
subdirectory: Optional[str] = None
288288

289289
@classmethod
290290
def from_dict(cls, d: Dict[str, Any]) -> "Self":
@@ -295,14 +295,14 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
295295
)
296296

297297

298-
@dataclass
298+
@dataclass(kw_only=True)
299299
class PackageArchive:
300-
url: Optional[str]
301-
path: Optional[str]
302-
size: Optional[int]
303-
upload_time: Optional[datetime]
300+
url: Optional[str] = None
301+
path: Optional[str] = None
302+
size: Optional[int] = None
303+
upload_time: Optional[datetime] = None
304304
hashes: Dict[str, str]
305-
subdirectory: Optional[str]
305+
subdirectory: Optional[str] = None
306306

307307
def __post_init__(self) -> None:
308308
_validate_path_url(self.path, self.url)
@@ -320,13 +320,13 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
320320
)
321321

322322

323-
@dataclass
323+
@dataclass(kw_only=True)
324324
class PackageSdist:
325325
name: str
326-
upload_time: Optional[datetime]
327-
url: Optional[str]
328-
path: Optional[str]
329-
size: Optional[int]
326+
upload_time: Optional[datetime] = None
327+
url: Optional[str] = None
328+
path: Optional[str] = None
329+
size: Optional[int] = None
330330
hashes: Dict[str, str]
331331

332332
def __post_init__(self) -> None:
@@ -345,13 +345,13 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
345345
)
346346

347347

348-
@dataclass
348+
@dataclass(kw_only=True)
349349
class PackageWheel:
350350
name: str
351-
upload_time: Optional[datetime]
352-
url: Optional[str]
353-
path: Optional[str]
354-
size: Optional[int]
351+
upload_time: Optional[datetime] = None
352+
url: Optional[str] = None
353+
path: Optional[str] = None
354+
size: Optional[int] = None
355355
hashes: Dict[str, str]
356356

357357
def __post_init__(self) -> None:
@@ -371,21 +371,21 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
371371
return wheel
372372

373373

374-
@dataclass
374+
@dataclass(kw_only=True)
375375
class Package:
376376
name: str
377-
version: Optional[Version]
378-
marker: Optional[Marker]
379-
requires_python: Optional[SpecifierSet]
380-
dependencies: Optional[List[Dict[str, Any]]]
381-
vcs: Optional[PackageVcs]
382-
directory: Optional[PackageDirectory]
383-
archive: Optional[PackageArchive]
384-
index: Optional[str]
385-
sdist: Optional[PackageSdist]
386-
wheels: Optional[List[PackageWheel]]
387-
attestation_identities: Optional[List[Dict[str, Any]]]
388-
tool: Optional[Dict[str, Any]]
377+
version: Optional[Version] = None
378+
marker: Optional[Marker] = None
379+
requires_python: Optional[SpecifierSet] = None
380+
dependencies: Optional[List[Dict[str, Any]]] = None
381+
vcs: Optional[PackageVcs] = None
382+
directory: Optional[PackageDirectory] = None
383+
archive: Optional[PackageArchive] = None
384+
index: Optional[str] = None
385+
sdist: Optional[PackageSdist] = None
386+
wheels: Optional[List[PackageWheel]] = None
387+
attestation_identities: Optional[List[Dict[str, Any]]] = None
388+
tool: Optional[Dict[str, Any]] = None
389389

390390
def __post_init__(self) -> None:
391391
if self.sdist or self.wheels:
@@ -422,17 +422,17 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
422422
return package
423423

424424

425-
@dataclass
425+
@dataclass(kw_only=True)
426426
class Pylock:
427427
lock_version: Version
428-
environments: Optional[List[Marker]]
429-
requires_python: Optional[SpecifierSet]
430-
extras: List[str]
431-
dependency_groups: List[str]
432-
default_groups: List[str]
428+
environments: Optional[List[Marker]] = None
429+
requires_python: Optional[SpecifierSet] = None
430+
extras: List[str] = dataclasses.field(default_factory=list)
431+
dependency_groups: List[str] = dataclasses.field(default_factory=list)
432+
default_groups: List[str] = dataclasses.field(default_factory=list)
433433
created_by: str
434434
packages: List[Package]
435-
tool: Optional[Dict[str, Any]]
435+
tool: Optional[Dict[str, Any]] = None
436436

437437
def __post_init__(self) -> None:
438438
if self.lock_version < Version("1") or self.lock_version >= Version("2"):

src/pip/_internal/utils/pylock.py

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ def _pylock_package_from_install_requirement(
6161
package_archive = PackageArchive(
6262
url=download_info.url,
6363
path=None,
64-
size=None, # not supported
65-
upload_time=None, # not supported
6664
hashes=download_info.info.hashes,
6765
subdirectory=download_info.subdirectory,
6866
)
@@ -79,20 +77,14 @@ def _pylock_package_from_install_requirement(
7977
package_wheels = [
8078
PackageWheel(
8179
name=link.filename,
82-
upload_time=None, # not supported
8380
url=download_info.url,
84-
path=None,
85-
size=None, # not supported
8681
hashes=download_info.info.hashes,
8782
)
8883
]
8984
else:
9085
package_sdist = PackageSdist(
9186
name=link.filename,
92-
upload_time=None, # not supported
9387
url=download_info.url,
94-
path=None,
95-
size=None, # not supported
9688
hashes=download_info.info.hashes,
9789
)
9890
else:
@@ -101,17 +93,11 @@ def _pylock_package_from_install_requirement(
10193
return Package(
10294
name=dist.canonical_name,
10395
version=package_version,
104-
marker=None, # not supported
105-
requires_python=None, # not supported
106-
dependencies=None, # not supported
10796
vcs=package_vcs,
10897
directory=package_directory,
10998
archive=package_archive,
110-
index=None, # not supported
11199
sdist=package_sdist,
112100
wheels=package_wheels,
113-
attestation_identities=None, # not supported
114-
tool=None,
115101
)
116102

117103

@@ -120,11 +106,6 @@ def pylock_from_install_requirements(
120106
) -> Pylock:
121107
return Pylock(
122108
lock_version=Version("1.0"),
123-
environments=None, # not supported
124-
requires_python=None, # not supported
125-
extras=[], # not supported
126-
dependency_groups=[], # not supported
127-
default_groups=[], # not supported
128109
created_by="pip",
129110
packages=sorted(
130111
(
@@ -133,7 +114,6 @@ def pylock_from_install_requirements(
133114
),
134115
key=lambda p: p.name,
135116
),
136-
tool=None,
137117
)
138118

139119

0 commit comments

Comments
 (0)