@@ -268,8 +268,9 @@ def __init__(self, src: dict[str] | None = None):
268268
269269 def __lt__ (self , other ):
270270 if isinstance (other , self .__class__ ):
271- if (self .absoluteVersion is not None and other .absoluteVersion is not None and
272- version .parse (self .absoluteVersion ) < version .parse (other .absoluteVersion )): return True
271+ if self .absoluteVersion is not None and other .absoluteVersion is not None :
272+ if version .parse (self .absoluteVersion ) < version .parse (other .absoluteVersion ): return True
273+ else : return False
273274
274275 if (version .parse (self .version ) < version .parse (other .version )): return True
275276
@@ -330,20 +331,42 @@ def calculate_sha256(self, ipa_path: Path | None):
330331 if ipa_path is not None :
331332 self .sha256 = extract_sha256 (ipa_path )
332333
334+ ### Unofficial property ###
335+ @property
336+ def absoluteVersion (self ) -> str :
337+ return self ._src .get ("absoluteVersion" )
338+ @absoluteVersion .setter
339+ def absoluteVersion (self , value : str ):
340+ self ._src ["absoluteVersion" ] = value
341+
333342 @property
334343 def version (self ) -> str :
335344 return self ._src .get ("version" )
336345 @version .setter
337346 def version (self , value : str ):
338347 self ._src ["version" ] = value
339348
349+ @property
350+ def buildVersion (self ) -> str :
351+ return self ._src .get ("buildVersion" )
352+ @buildVersion .setter
353+ def buildVersion (self , value : str ):
354+ self ._src ["buildVersion" ] = value
355+
340356 @property
341357 def date (self ) -> str :
342358 return self ._src .get ("date" )
343359 @date .setter
344360 def date (self , value : str ):
345361 self ._src ["date" ] = value
346362
363+ @property
364+ def localizedDescription (self ) -> str :
365+ return self ._src .get ("localizedDescription" )
366+ @localizedDescription .setter
367+ def localizedDescription (self , value : str ):
368+ self ._src ["localizedDescription" ] = value
369+
347370 @property
348371 def downloadURL (self ) -> str :
349372 return self ._src .get ("downloadURL" )
@@ -352,10 +375,10 @@ def downloadURL(self, value: str):
352375 self ._src ["downloadURL" ] = value
353376
354377 @property
355- def size (self ) -> str :
378+ def size (self ) -> int :
356379 return self ._src .get ("size" )
357380 @size .setter
358- def size (self , value : str ):
381+ def size (self , value : int ):
359382 self ._src ["size" ] = value
360383
361384 @property
@@ -366,27 +389,19 @@ def sha256(self, value: str):
366389 self ._src ["sha256" ] = value
367390
368391 @property
369- def localizedDescription (self ) -> str :
370- return self ._src .get ("localizedDescription" )
371- @localizedDescription .setter
372- def localizedDescription (self , value : str ):
373- self ._src ["localizedDescription" ] = value
374-
375- # Start unofficial AltSource properties
376-
392+ def minOSVersion (self ) -> str :
393+ return self ._src .get ("minOSVersion" )
394+ @minOSVersion .setter
395+ def minOSVersion (self , value : str ):
396+ self ._src ["minOSVersion" ] = value
397+
377398 @property
378- def buildVersion (self ) -> str :
379- return self ._src .get ("buildVersion " )
380- @buildVersion .setter
381- def buildVersion (self , value : str ):
382- self ._src ["buildVersion " ] = value
399+ def maxOSVersion (self ) -> str :
400+ return self ._src .get ("maxOSVersion " )
401+ @maxOSVersion .setter
402+ def maxOSVersion (self , value : str ):
403+ self ._src ["maxOSVersion " ] = value
383404
384- @property
385- def absoluteVersion (self ) -> str :
386- return self ._src .get ("absoluteVersion" )
387- @absoluteVersion .setter
388- def absoluteVersion (self , value : str ):
389- self ._src ["absoluteVersion" ] = value
390405 # End class Version
391406
392407 _required_keys = ["name" , "bundleIdentifier" , "developerName" , "versions" , "localizedDescription" , "iconURL" ]
@@ -474,7 +489,7 @@ def latest_version(self, use_dates: bool = False) -> Version:
474489 def add_version (self , ver : Version ):
475490 versions_list = [(ver .version ,ver .buildVersion ) for ver in self .versions ]
476491 if (ver .version ,ver .buildVersion ) in versions_list :
477- logging .warning ("Version already exists in AltSource . Automatically replaced with new one." )
492+ logging .warning (f "Version already exists in { self . name } . Automatically replaced with new one." )
478493 self .versions [versions_list .index ((ver .version ,ver .buildVersion ))] = ver
479494 else :
480495 self .versions .insert (0 ,ver )
@@ -519,15 +534,6 @@ def subtitle(self) -> str:
519534 def subtitle (self , value : str ):
520535 self ._src ["subtitle" ] = value
521536
522- @property
523- def versions (self ) -> list [Version ]:
524- return self ._src .get ("versions" ,[])
525- @versions .setter
526- def versions (self , value : list [Version ]):
527- if self .versions is not None :
528- logging .warning (f"Entire `versions` section has been replaced for { self .name } ." )
529- self ._src ["versions" ] = value
530-
531537 @property
532538 def localizedDescription (self ) -> str :
533539 return self ._src .get ("localizedDescription" )
@@ -549,19 +555,21 @@ def tintColor(self) -> str:
549555 def tintColor (self , value : str ):
550556 self ._src ["tintColor" ] = value
551557
552- @property
553- def beta (self ) -> bool :
554- return self ._src .get ("beta" )
555- @beta .setter
556- def beta (self , value : bool ):
557- self ._src ["beta" ] = value
558-
559558 @property
560559 def screenshotURLs (self ) -> list [str ]:
561560 return self ._src .get ("screenshotURLs" )
562561 @screenshotURLs .setter
563562 def screenshotURLs (self , value : list [str ]):
564563 self ._src ["screenshotURLs" ] = value
564+
565+ @property
566+ def versions (self ) -> list [Version ]:
567+ return self ._src .get ("versions" ,[])
568+ @versions .setter
569+ def versions (self , value : list [Version ]):
570+ if self .versions is not None :
571+ logging .warning (f"Entire `versions` section has been replaced for { self .name } ." )
572+ self ._src ["versions" ] = value
565573
566574 @property
567575 def appPermissions (self ) -> Permissions :
@@ -570,6 +578,13 @@ def appPermissions(self) -> Permissions:
570578 def appPermissions (self , value : Permissions ):
571579 self ._src ["appPermissions" ] = value
572580
581+ @property
582+ def beta (self ) -> bool :
583+ return self ._src .get ("beta" )
584+ @beta .setter
585+ def beta (self , value : bool ):
586+ self ._src ["beta" ] = value
587+
573588 ### Deprecated properties ###
574589
575590 @property
@@ -688,13 +703,6 @@ def title(self) -> str:
688703 def title (self , value : str ):
689704 self ._src ["title" ] = value
690705
691- @property
692- def name (self ) -> str :
693- return self ._src .get ("name" )
694- @name .setter
695- def name (self , value : str ):
696- self ._src ["name" ] = value
697-
698706 @property
699707 def identifier (self ) -> str :
700708 return self ._src .get ("identifier" )
@@ -710,6 +718,13 @@ def caption(self) -> str:
710718 def caption (self , value : str ):
711719 self ._src ["caption" ] = value
712720
721+ @property
722+ def date (self ) -> str :
723+ return self ._src .get ("date" )
724+ @date .setter
725+ def date (self , value : str ):
726+ self ._src ["date" ] = value
727+
713728 @property
714729 def tintColor (self ) -> str :
715730 return self ._src .get ("tintColor" )
@@ -724,20 +739,6 @@ def imageURL(self) -> str:
724739 def imageURL (self , value : str ):
725740 self ._src ["imageURL" ] = value
726741
727- @property
728- def appID (self ) -> str :
729- return self ._src .get ("appID" )
730- @appID .setter
731- def appID (self , value : str ):
732- self ._src ["appID" ] = value
733-
734- @property
735- def date (self ) -> str :
736- return self ._src .get ("date" )
737- @date .setter
738- def date (self , value : str ):
739- self ._src ["date" ] = value
740-
741742 @property
742743 def notify (self ) -> bool :
743744 return self ._src .get ("notify" )
@@ -751,6 +752,13 @@ def url(self) -> str:
751752 @url .setter
752753 def url (self , value : str ):
753754 self ._src ["url" ] = value
755+
756+ @property
757+ def appID (self ) -> str :
758+ return self ._src .get ("appID" )
759+ @appID .setter
760+ def appID (self , value : str ):
761+ self ._src ["appID" ] = value
754762 # End class Article
755763
756764 _required_keys = ["name" , "identifier" , "apps" ]
@@ -768,7 +776,7 @@ def __init__(self, src: dict | None = None, path: str | Path | None = None):
768776 self ._src ["apps" ] = [self .App (app ) for app in src .get ("apps" , [])]
769777 if "news" in self ._src .keys ():
770778 self ._src ["news" ] = [self .Article (art ) for art in src ["news" ]]
771- self .version = 2 # set current API version
779+ self .apiVersion = "v2" # set current API version
772780
773781 missing_keys = self .missing_keys ()
774782 if missing_keys :
@@ -830,6 +838,15 @@ def identifier(self) -> str:
830838 def identifier (self , value : str ):
831839 logging .warning (f"Source `identifier` changed from { self ._src ['identifier' ]} to { value } ." )
832840 self ._src ["identifier" ] = value
841+
842+ ### Unofficial AltSource property ###
843+ @property
844+ def apiVersion (self ) -> str :
845+ """Used to declare the AltSource API version."""
846+ return self ._src .get ("apiVersion" )
847+ @apiVersion .setter
848+ def apiVersion (self , value : str ):
849+ self ._src ["apiVersion" ] = value
833850
834851 @property
835852 def subtitle (self ) -> str :
@@ -844,20 +861,20 @@ def description(self) -> str:
844861 @description .setter
845862 def description (self , value : str ):
846863 self ._src ["description" ] = value
847-
848- @property
849- def headerURL (self ) -> str :
850- return self ._src .get ("headerURL" )
851- @headerURL .setter
852- def headerURL (self , value : str ):
853- self ._src ["headerURL" ] = value
854864
855865 @property
856866 def iconURL (self ) -> str :
857867 return self ._src .get ("iconURL" )
858868 @iconURL .setter
859869 def iconURL (self , value : str ):
860870 self ._src ["iconURL" ] = value
871+
872+ @property
873+ def headerURL (self ) -> str :
874+ return self ._src .get ("headerURL" )
875+ @headerURL .setter
876+ def headerURL (self , value : str ):
877+ self ._src ["headerURL" ] = value
861878
862879 @property
863880 def website (self ) -> str :
@@ -903,24 +920,6 @@ def userinfo(self) -> dict:
903920 @userinfo .setter
904921 def userinfo (self , value : dict ):
905922 self ._src ["userinfo" ] = value
906-
907- # Start unofficial AltSource attributes.
908-
909- @property
910- def sourceURL (self ) -> str :
911- return self ._src .get ("sourceURL" )
912- @sourceURL .setter
913- def sourceURL (self , value : str ):
914- self ._src ["sourceURL" ] = value
915-
916- @property
917- def version (self ) -> str :
918- """Used to declare the AltSource API version.
919- """
920- return self ._src .get ("version" )
921- @version .setter
922- def version (self , value : str ):
923- self ._src ["version" ] = value
924923# End class AltSource
925924
926925def altsource_from_file (filepath : Path | str ) -> AltSource :
0 commit comments