@@ -256,7 +256,7 @@ class PylockUnsupportedVersionError(PylockValidationError):
256256    pass 
257257
258258
259- @dataclass  
259+ @dataclass ( frozen = True )  
260260class  PackageVcs :
261261    type : str 
262262    url : Optional [str ]  # = None 
@@ -276,12 +276,12 @@ def __init__(
276276        subdirectory : Optional [str ] =  None ,
277277    ) ->  None :
278278        # 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 
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 ) 
285285        # __post_init__ in Python 3.10+ 
286286        _validate_path_url (self .path , self .url )
287287
@@ -297,7 +297,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
297297        )
298298
299299
300- @dataclass  
300+ @dataclass ( frozen = True )  
301301class  PackageDirectory :
302302    path : str 
303303    editable : Optional [bool ] =  None 
@@ -311,9 +311,9 @@ def __init__(
311311        subdirectory : Optional [str ] =  None ,
312312    ) ->  None :
313313        # In Python 3.10+ make dataclass kw_only=True and remove __init__ 
314-         self . path   =   path 
315-         self . editable   =   editable 
316-         self . subdirectory   =   subdirectory 
314+         object . __setattr__ ( self ,  " path" ,  path ) 
315+         object . __setattr__ ( self ,  " editable" ,  editable ) 
316+         object . __setattr__ ( self ,  " subdirectory" ,  subdirectory ) 
317317
318318    @classmethod  
319319    def  from_dict (cls , d : Dict [str , Any ]) ->  "Self" :
@@ -324,7 +324,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
324324        )
325325
326326
327- @dataclass  
327+ @dataclass ( frozen = True )  
328328class  PackageArchive :
329329    url : Optional [str ]  # = None 
330330    path : Optional [str ]  # = None 
@@ -344,12 +344,12 @@ def __init__(
344344        subdirectory : Optional [str ] =  None ,
345345    ) ->  None :
346346        # 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 
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 ) 
353353        # __post_init__ in Python 3.10+ 
354354        _validate_path_url (self .path , self .url )
355355        _validate_hashes (self .hashes )
@@ -366,7 +366,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
366366        )
367367
368368
369- @dataclass  
369+ @dataclass ( frozen = True )  
370370class  PackageSdist :
371371    name : str 
372372    upload_time : Optional [datetime ]  # = None 
@@ -386,12 +386,12 @@ def __init__(
386386        size : Optional [int ] =  None ,
387387    ) ->  None :
388388        # 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 
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 ) 
395395        # __post_init__ in Python 3.10+ 
396396        _validate_path_url (self .path , self .url )
397397        _validate_hashes (self .hashes )
@@ -408,7 +408,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
408408        )
409409
410410
411- @dataclass  
411+ @dataclass ( frozen = True )  
412412class  PackageWheel :
413413    name : str 
414414    upload_time : Optional [datetime ]  # = None 
@@ -428,12 +428,12 @@ def __init__(
428428        size : Optional [int ] =  None ,
429429    ) ->  None :
430430        # 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 
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 ) 
437437        # __post_init__ in Python 3.10+ 
438438        _validate_path_url (self .path , self .url )
439439        _validate_hashes (self .hashes )
@@ -451,7 +451,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
451451        return  wheel 
452452
453453
454- @dataclass  
454+ @dataclass ( frozen = True )  
455455class  Package :
456456    name : str 
457457    version : Optional [Version ] =  None 
@@ -485,19 +485,19 @@ def __init__(
485485        tool : Optional [Dict [str , Any ]] =  None ,
486486    ) ->  None :
487487        # 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 
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 ) 
501501        # __post_init__ in Python 3.10+ 
502502        if  self .sdist  or  self .wheels :
503503            if  any ([self .vcs , self .directory , self .archive ]):
@@ -533,7 +533,7 @@ def from_dict(cls, d: Dict[str, Any]) -> "Self":
533533        return  package 
534534
535535
536- @dataclass  
536+ @dataclass ( frozen = True )  
537537class  Pylock :
538538    lock_version : Version 
539539    environments : Optional [List [Marker ]]  # = None 
@@ -559,15 +559,15 @@ def __init__(
559559        tool : Optional [Dict [str , Any ]] =  None ,
560560    ) ->  None :
561561        # 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 
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 ) 
571571        # __post_init__ in Python 3.10+ 
572572        if  self .lock_version  <  Version ("1" ) or  self .lock_version  >=  Version ("2" ):
573573            raise  PylockUnsupportedVersionError (
0 commit comments