Skip to content

Commit 7e6d977

Browse files
committed
pylock: tune dataclasses
1 parent 950ea16 commit 7e6d977

File tree

2 files changed

+44
-57
lines changed

2 files changed

+44
-57
lines changed

src/pip/_internal/models/pylock.py

Lines changed: 44 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,13 @@ class PylockUnsupportedVersionError(PylockValidationError):
258258

259259
@dataclass
260260
class PackageVcs:
261+
_: dataclasses.KW_ONLY
261262
type: str
262-
url: Optional[str]
263-
path: Optional[str]
264-
requested_revision: Optional[str]
263+
url: Optional[str] = None
264+
path: Optional[str] = None
265+
requested_revision: Optional[str] = None
265266
commit_id: str
266-
subdirectory: Optional[str]
267+
subdirectory: Optional[str] = None
267268

268269
def __post_init__(self) -> None:
269270
_validate_path_url(self.path, self.url)
@@ -282,9 +283,10 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
282283

283284
@dataclass
284285
class PackageDirectory:
286+
_: dataclasses.KW_ONLY
285287
path: str
286-
editable: Optional[bool]
287-
subdirectory: Optional[str]
288+
editable: Optional[bool] = None
289+
subdirectory: Optional[str] = None
288290

289291
@classmethod
290292
def from_dict(cls, d: Dict[str, Any]) -> "Self":
@@ -297,12 +299,13 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
297299

298300
@dataclass
299301
class PackageArchive:
300-
url: Optional[str]
301-
path: Optional[str]
302-
size: Optional[int]
303-
upload_time: Optional[datetime]
302+
_: dataclasses.KW_ONLY
303+
url: Optional[str] = None
304+
path: Optional[str] = None
305+
size: Optional[int] = None
306+
upload_time: Optional[datetime] = None
304307
hashes: Dict[str, str]
305-
subdirectory: Optional[str]
308+
subdirectory: Optional[str] = None
306309

307310
def __post_init__(self) -> None:
308311
_validate_path_url(self.path, self.url)
@@ -322,11 +325,12 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
322325

323326
@dataclass
324327
class PackageSdist:
328+
_: dataclasses.KW_ONLY
325329
name: str
326-
upload_time: Optional[datetime]
327-
url: Optional[str]
328-
path: Optional[str]
329-
size: Optional[int]
330+
upload_time: Optional[datetime] = None
331+
url: Optional[str] = None
332+
path: Optional[str] = None
333+
size: Optional[int] = None
330334
hashes: Dict[str, str]
331335

332336
def __post_init__(self) -> None:
@@ -347,11 +351,12 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
347351

348352
@dataclass
349353
class PackageWheel:
354+
_: dataclasses.KW_ONLY
350355
name: str
351-
upload_time: Optional[datetime]
352-
url: Optional[str]
353-
path: Optional[str]
354-
size: Optional[int]
356+
upload_time: Optional[datetime] = None
357+
url: Optional[str] = None
358+
path: Optional[str] = None
359+
size: Optional[int] = None
355360
hashes: Dict[str, str]
356361

357362
def __post_init__(self) -> None:
@@ -373,19 +378,20 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
373378

374379
@dataclass
375380
class Package:
381+
_: dataclasses.KW_ONLY
376382
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]]
383+
version: Optional[Version] = None
384+
marker: Optional[Marker] = None
385+
requires_python: Optional[SpecifierSet] = None
386+
dependencies: Optional[List[Dict[str, Any]]] = None
387+
vcs: Optional[PackageVcs] = None
388+
directory: Optional[PackageDirectory] = None
389+
archive: Optional[PackageArchive] = None
390+
index: Optional[str] = None
391+
sdist: Optional[PackageSdist] = None
392+
wheels: Optional[List[PackageWheel]] = None
393+
attestation_identities: Optional[List[Dict[str, Any]]] = None
394+
tool: Optional[Dict[str, Any]] = None
389395

390396
def __post_init__(self) -> None:
391397
if self.sdist or self.wheels:
@@ -424,15 +430,16 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
424430

425431
@dataclass
426432
class Pylock:
433+
_: dataclasses.KW_ONLY
427434
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]
435+
environments: Optional[List[Marker]] = None
436+
requires_python: Optional[SpecifierSet] = None
437+
extras: List[str] = dataclasses.field(default_factory=list)
438+
dependency_groups: List[str] = dataclasses.field(default_factory=list)
439+
default_groups: List[str] = dataclasses.field(default_factory=list)
433440
created_by: str
434441
packages: List[Package]
435-
tool: Optional[Dict[str, Any]]
442+
tool: Optional[Dict[str, Any]] = None
436443

437444
def __post_init__(self) -> None:
438445
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)