@@ -256,16 +256,33 @@ class PylockUnsupportedVersionError(PylockValidationError):
256
256
pass
257
257
258
258
259
- @dataclass ( kw_only = True )
259
+ @dataclass
260
260
class PackageVcs :
261
261
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
265
265
commit_id : str
266
266
subdirectory : Optional [str ] = None
267
267
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+
269
286
_validate_path_url (self .path , self .url )
270
287
271
288
@classmethod
@@ -280,12 +297,24 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
280
297
)
281
298
282
299
283
- @dataclass ( kw_only = True )
300
+ @dataclass
284
301
class PackageDirectory :
285
302
path : str
286
303
editable : Optional [bool ] = None
287
304
subdirectory : Optional [str ] = None
288
305
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
+
289
318
@classmethod
290
319
def from_dict (cls , d : Dict [str , Any ]) -> "Self" :
291
320
return cls (
@@ -295,16 +324,33 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
295
324
)
296
325
297
326
298
- @dataclass ( kw_only = True )
327
+ @dataclass
299
328
class 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
304
333
hashes : Dict [str , str ]
305
334
subdirectory : Optional [str ] = None
306
335
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+
308
354
_validate_path_url (self .path , self .url )
309
355
_validate_hashes (self .hashes )
310
356
@@ -320,16 +366,33 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
320
366
)
321
367
322
368
323
- @dataclass ( kw_only = True )
369
+ @dataclass
324
370
class PackageSdist :
325
371
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
330
376
hashes : Dict [str , str ]
331
377
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+
333
396
_validate_path_url (self .path , self .url )
334
397
_validate_hashes (self .hashes )
335
398
@@ -345,16 +408,33 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
345
408
)
346
409
347
410
348
- @dataclass ( kw_only = True )
411
+ @dataclass
349
412
class PackageWheel :
350
413
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
355
418
hashes : Dict [str , str ]
356
419
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+
358
438
_validate_path_url (self .path , self .url )
359
439
_validate_hashes (self .hashes )
360
440
@@ -371,7 +451,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
371
451
return wheel
372
452
373
453
374
- @dataclass ( kw_only = True )
454
+ @dataclass
375
455
class Package :
376
456
name : str
377
457
version : Optional [Version ] = None
@@ -387,7 +467,38 @@ class Package:
387
467
attestation_identities : Optional [List [Dict [str , Any ]]] = None
388
468
tool : Optional [Dict [str , Any ]] = None
389
469
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+
391
502
if self .sdist or self .wheels :
392
503
if any ([self .vcs , self .directory , self .archive ]):
393
504
raise PylockValidationError (
@@ -422,19 +533,42 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
422
533
return package
423
534
424
535
425
- @dataclass ( kw_only = True )
536
+ @dataclass
426
537
class Pylock :
427
538
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)
433
544
created_by : str
434
545
packages : List [Package ]
435
546
tool : Optional [Dict [str , Any ]] = None
436
547
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+
438
572
if self .lock_version < Version ("1" ) or self .lock_version >= Version ("2" ):
439
573
raise PylockUnsupportedVersionError (
440
574
f"pylock version { self .lock_version } is not supported"
0 commit comments