@@ -256,16 +256,33 @@ class PylockUnsupportedVersionError(PylockValidationError):
256256 pass
257257
258258
259- @dataclass ( kw_only = True )
259+ @dataclass
260260class PackageVcs :
261261 type : str
262- url : Optional [str ] = None
263- path : Optional [str ] = None
264- requested_revision : Optional [str ] = None
262+ url : Optional [str ] # = None
263+ path : Optional [str ] # = None
264+ requested_revision : Optional [str ] # = None
265265 commit_id : str
266266 subdirectory : Optional [str ] = None
267267
268- def __post_init__ (self ) -> None :
268+ def __init__ (
269+ self ,
270+ * ,
271+ type : str ,
272+ commit_id : str ,
273+ url : Optional [str ] = None ,
274+ path : Optional [str ] = None ,
275+ requested_revision : Optional [str ] = None ,
276+ subdirectory : Optional [str ] = None ,
277+ ) -> None :
278+ # In Python 3.10+ make dataclass kw_only=True and remove __init__
279+ self .type = type
280+ self .url = url
281+ self .path = path
282+ self .requested_revision = requested_revision
283+ self .commit_id = commit_id
284+ self .subdirectory = subdirectory
285+ # __post_init__ in Python 3.10+
269286 _validate_path_url (self .path , self .url )
270287
271288 @classmethod
@@ -280,12 +297,24 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
280297 )
281298
282299
283- @dataclass ( kw_only = True )
300+ @dataclass
284301class PackageDirectory :
285302 path : str
286303 editable : Optional [bool ] = None
287304 subdirectory : Optional [str ] = None
288305
306+ def __init__ (
307+ self ,
308+ * ,
309+ path : str ,
310+ editable : Optional [bool ] = None ,
311+ subdirectory : Optional [str ] = None ,
312+ ) -> None :
313+ # In Python 3.10+ make dataclass kw_only=True and remove __init__
314+ self .path = path
315+ self .editable = editable
316+ self .subdirectory = subdirectory
317+
289318 @classmethod
290319 def from_dict (cls , d : Dict [str , Any ]) -> "Self" :
291320 return cls (
@@ -295,16 +324,33 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
295324 )
296325
297326
298- @dataclass ( kw_only = True )
327+ @dataclass
299328class PackageArchive :
300- url : Optional [str ] = None
301- path : Optional [str ] = None
302- size : Optional [int ] = None
303- upload_time : Optional [datetime ] = None
329+ url : Optional [str ] # = None
330+ path : Optional [str ] # = None
331+ size : Optional [int ] # = None
332+ upload_time : Optional [datetime ] # = None
304333 hashes : Dict [str , str ]
305334 subdirectory : Optional [str ] = None
306335
307- def __post_init__ (self ) -> None :
336+ def __init__ (
337+ self ,
338+ * ,
339+ hashes : Dict [str , str ],
340+ url : Optional [str ] = None ,
341+ path : Optional [str ] = None ,
342+ size : Optional [int ] = None ,
343+ upload_time : Optional [datetime ] = None ,
344+ subdirectory : Optional [str ] = None ,
345+ ) -> None :
346+ # In Python 3.10+ make dataclass kw_only=True and remove __init__
347+ self .url = url
348+ self .path = path
349+ self .size = size
350+ self .upload_time = upload_time
351+ self .hashes = hashes
352+ self .subdirectory = subdirectory
353+ # __post_init__ in Python 3.10+
308354 _validate_path_url (self .path , self .url )
309355 _validate_hashes (self .hashes )
310356
@@ -320,16 +366,33 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
320366 )
321367
322368
323- @dataclass ( kw_only = True )
369+ @dataclass
324370class PackageSdist :
325371 name : str
326- upload_time : Optional [datetime ] = None
327- url : Optional [str ] = None
328- path : Optional [str ] = None
329- size : Optional [int ] = None
372+ upload_time : Optional [datetime ] # = None
373+ url : Optional [str ] # = None
374+ path : Optional [str ] # = None
375+ size : Optional [int ] # = None
330376 hashes : Dict [str , str ]
331377
332- def __post_init__ (self ) -> None :
378+ def __init__ (
379+ self ,
380+ * ,
381+ name : str ,
382+ hashes : Dict [str , str ],
383+ upload_time : Optional [datetime ] = None ,
384+ url : Optional [str ] = None ,
385+ path : Optional [str ] = None ,
386+ size : Optional [int ] = None ,
387+ ) -> None :
388+ # In Python 3.10+ make dataclass kw_only=True and remove __init__
389+ self .name = name
390+ self .upload_time = upload_time
391+ self .url = url
392+ self .path = path
393+ self .size = size
394+ self .hashes = hashes
395+ # __post_init__ in Python 3.10+
333396 _validate_path_url (self .path , self .url )
334397 _validate_hashes (self .hashes )
335398
@@ -345,16 +408,33 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
345408 )
346409
347410
348- @dataclass ( kw_only = True )
411+ @dataclass
349412class PackageWheel :
350413 name : str
351- upload_time : Optional [datetime ] = None
352- url : Optional [str ] = None
353- path : Optional [str ] = None
354- size : Optional [int ] = None
414+ upload_time : Optional [datetime ] # = None
415+ url : Optional [str ] # = None
416+ path : Optional [str ] # = None
417+ size : Optional [int ] # = None
355418 hashes : Dict [str , str ]
356419
357- def __post_init__ (self ) -> None :
420+ def __init__ (
421+ self ,
422+ * ,
423+ name : str ,
424+ hashes : Dict [str , str ],
425+ upload_time : Optional [datetime ] = None ,
426+ url : Optional [str ] = None ,
427+ path : Optional [str ] = None ,
428+ size : Optional [int ] = None ,
429+ ) -> None :
430+ # In Python 3.10+ make dataclass kw_only=True and remove __init__
431+ self .name = name
432+ self .upload_time = upload_time
433+ self .url = url
434+ self .path = path
435+ self .size = size
436+ self .hashes = hashes
437+ # __post_init__ in Python 3.10+
358438 _validate_path_url (self .path , self .url )
359439 _validate_hashes (self .hashes )
360440
@@ -371,7 +451,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
371451 return wheel
372452
373453
374- @dataclass ( kw_only = True )
454+ @dataclass
375455class Package :
376456 name : str
377457 version : Optional [Version ] = None
@@ -387,7 +467,38 @@ class Package:
387467 attestation_identities : Optional [List [Dict [str , Any ]]] = None
388468 tool : Optional [Dict [str , Any ]] = None
389469
390- def __post_init__ (self ) -> None :
470+ def __init__ (
471+ self ,
472+ * ,
473+ name : str ,
474+ version : Optional [Version ] = None ,
475+ marker : Optional [Marker ] = None ,
476+ requires_python : Optional [SpecifierSet ] = None ,
477+ dependencies : Optional [List [Dict [str , Any ]]] = None ,
478+ vcs : Optional [PackageVcs ] = None ,
479+ directory : Optional [PackageDirectory ] = None ,
480+ archive : Optional [PackageArchive ] = None ,
481+ index : Optional [str ] = None ,
482+ sdist : Optional [PackageSdist ] = None ,
483+ wheels : Optional [List [PackageWheel ]] = None ,
484+ attestation_identities : Optional [List [Dict [str , Any ]]] = None ,
485+ tool : Optional [Dict [str , Any ]] = None ,
486+ ) -> None :
487+ # In Python 3.10+ make dataclass kw_only=True and remove __init__
488+ self .name = name
489+ self .version = version
490+ self .marker = marker
491+ self .requires_python = requires_python
492+ self .dependencies = dependencies
493+ self .vcs = vcs
494+ self .directory = directory
495+ self .archive = archive
496+ self .index = index
497+ self .sdist = sdist
498+ self .wheels = wheels
499+ self .attestation_identities = attestation_identities
500+ self .tool = tool
501+ # __post_init__ in Python 3.10+
391502 if self .sdist or self .wheels :
392503 if any ([self .vcs , self .directory , self .archive ]):
393504 raise PylockValidationError (
@@ -422,19 +533,42 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
422533 return package
423534
424535
425- @dataclass ( kw_only = True )
536+ @dataclass
426537class Pylock :
427538 lock_version : Version
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 )
539+ environments : Optional [List [Marker ]] # = None
540+ requires_python : Optional [SpecifierSet ] # = None
541+ extras : List [str ] # = dataclasses.field(default_factory=list)
542+ dependency_groups : List [str ] # = dataclasses.field(default_factory=list)
543+ default_groups : List [str ] # = dataclasses.field(default_factory=list)
433544 created_by : str
434545 packages : List [Package ]
435546 tool : Optional [Dict [str , Any ]] = None
436547
437- def __post_init__ (self ) -> None :
548+ def __init__ (
549+ self ,
550+ * ,
551+ lock_version : Version ,
552+ created_by : str ,
553+ packages : List [Package ],
554+ environments : Optional [List [Marker ]] = None ,
555+ requires_python : Optional [SpecifierSet ] = None ,
556+ extras : Optional [List [str ]] = None ,
557+ dependency_groups : Optional [List [str ]] = None ,
558+ default_groups : Optional [List [str ]] = None ,
559+ tool : Optional [Dict [str , Any ]] = None ,
560+ ) -> None :
561+ # In Python 3.10+ make dataclass kw_only=True and remove __init__
562+ self .lock_version = lock_version
563+ self .environments = environments
564+ self .requires_python = requires_python
565+ self .extras = extras or []
566+ self .dependency_groups = dependency_groups or []
567+ self .default_groups = default_groups or []
568+ self .created_by = created_by
569+ self .packages = packages
570+ self .tool = tool
571+ # __post_init__ in Python 3.10+
438572 if self .lock_version < Version ("1" ) or self .lock_version >= Version ("2" ):
439573 raise PylockUnsupportedVersionError (
440574 f"pylock version { self .lock_version } is not supported"
0 commit comments