@@ -256,16 +256,33 @@ class PylockUnsupportedVersionError(PylockValidationError):
256
256
pass
257
257
258
258
259
- @dataclass (kw_only = True )
259
+ @dataclass (frozen = True )
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
+ object .__setattr__ (self , "type" , type )
280
+ object .__setattr__ (self , "url" , url )
281
+ object .__setattr__ (self , "path" , path )
282
+ object .__setattr__ (self , "requested_revision" , requested_revision )
283
+ object .__setattr__ (self , "commit_id" , commit_id )
284
+ object .__setattr__ (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 (frozen = True )
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
+ object .__setattr__ (self , "path" , path )
315
+ object .__setattr__ (self , "editable" , editable )
316
+ object .__setattr__ (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 (frozen = True )
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
+ object .__setattr__ (self , "url" , url )
348
+ object .__setattr__ (self , "path" , path )
349
+ object .__setattr__ (self , "size" , size )
350
+ object .__setattr__ (self , "upload_time" , upload_time )
351
+ object .__setattr__ (self , "hashes" , hashes )
352
+ object .__setattr__ (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 (frozen = True )
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
+ object .__setattr__ (self , "name" , name )
390
+ object .__setattr__ (self , "upload_time" , upload_time )
391
+ object .__setattr__ (self , "url" , url )
392
+ object .__setattr__ (self , "path" , path )
393
+ object .__setattr__ (self , "size" , size )
394
+ object .__setattr__ (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 (frozen = True )
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
+ object .__setattr__ (self , "name" , name )
432
+ object .__setattr__ (self , "upload_time" , upload_time )
433
+ object .__setattr__ (self , "url" , url )
434
+ object .__setattr__ (self , "path" , path )
435
+ object .__setattr__ (self , "size" , size )
436
+ object .__setattr__ (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 (frozen = True )
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
+ object .__setattr__ (self , "name" , name )
489
+ object .__setattr__ (self , "version" , version )
490
+ object .__setattr__ (self , "marker" , marker )
491
+ object .__setattr__ (self , "requires_python" , requires_python )
492
+ object .__setattr__ (self , "dependencies" , dependencies )
493
+ object .__setattr__ (self , "vcs" , vcs )
494
+ object .__setattr__ (self , "directory" , directory )
495
+ object .__setattr__ (self , "archive" , archive )
496
+ object .__setattr__ (self , "index" , index )
497
+ object .__setattr__ (self , "sdist" , sdist )
498
+ object .__setattr__ (self , "wheels" , wheels )
499
+ object .__setattr__ (self , "attestation_identities" , attestation_identities )
500
+ object .__setattr__ (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 (frozen = True )
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
+ object .__setattr__ (self , "lock_version" , lock_version )
563
+ object .__setattr__ (self , "environments" , environments )
564
+ object .__setattr__ (self , "requires_python" , requires_python )
565
+ object .__setattr__ (self , "extras" , extras or [])
566
+ object .__setattr__ (self , "dependency_groups" , dependency_groups or [])
567
+ object .__setattr__ (self , "default_groups" , default_groups or [])
568
+ object .__setattr__ (self , "created_by" , created_by )
569
+ object .__setattr__ (self , "packages" , packages )
570
+ object .__setattr__ (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