2727from packaging .version import Version
2828
2929import ansys .dpf .core as dpf
30+ from ansys .dpf .core .server_types import AnyServerType
3031
3132
3233class Changelog :
@@ -42,7 +43,7 @@ class Changelog:
4243 The server to create the changelog on. Defaults to the current global server.
4344 """
4445
45- def __init__ (self , gdc : dpf .GenericDataContainer = None , server = None ):
46+ def __init__ (self , gdc : dpf .GenericDataContainer = None , server : AnyServerType = None ):
4647 if gdc is None :
4748 gdc = dpf .GenericDataContainer (server = server )
4849 versions_sf = dpf .StringField (server = server )
@@ -166,10 +167,22 @@ def versions(self) -> [Version]:
166167 )
167168 return [Version (version ) for version in versions_sf .data_as_list ]
168169
169- def __getitem__ (self , item : Version ) -> str :
170- """Return changes description for a specific version in the changelog."""
170+ def __getitem__ (self , item : Version | int ) -> str | [Version , str ]:
171+ """Return item at the given index or changes description for the given version."""
172+ if isinstance (item , int ):
173+ if item > len (self ) - 1 :
174+ raise IndexError (f"Index { item } out of range for changelog of size { len (self )} ." )
175+ return self .versions [item ], self .changes_for_version (self .versions [item ])
171176 return self .changes_for_version (item )
172177
178+ def __len__ (self ):
179+ """Return the number of items in the changelog."""
180+ return len (self .versions )
181+
182+ def __contains__ (self , item : Version ):
183+ """Check if version is in the changelog."""
184+ return item in self .versions
185+
173186 def changes_for_version (self , version : Version ) -> str :
174187 """Return changes description for a specific version in the changelog."""
175188 versions_sf : dpf .StringField = self .gdc .get_property (
0 commit comments