def list_versions(self, symbol=None, snapshot=None, latest_only=False):
        """
        Return a list of versions filtered by the passed in parameters.

        Parameters
        ----------
        symbol : `str`
            Symbol to return versions for.  If None returns versions across all
            symbols in the library.
        snapshot : `str`
            Return the versions contained in the named snapshot
        latest_only : `bool`
            Only include the latest version for a specific symbol

        Returns
        -------
        List of dictionaries describing the discovered versions in the library
        """
        if symbol is None:
            symbols = self.list_symbols(snapshot=snapshot)
        else:
            symbols = [symbol]

        query = {}

        if snapshot is not None:
            try:
                query['parent'] = self._snapshots.find_one({'name': snapshot})['_id']
            except TypeError:
                raise NoDataFoundException('No snapshot %s in library %s' % (snapshot, self._arctic_lib.get_name()))

        versions = []
        snapshots = {ss.get('_id'): ss.get('name') for ss in self._snapshots.find()}
        for symbol in symbols:
            query['symbol'] = symbol
            seen_symbols = set()
            for version in self._versions.find(query, projection=['symbol', 'version', 'parent', 'metadata.deleted'], sort=[('version', -1)]):
                if latest_only and version['symbol'] in seen_symbols:
                    continue
                seen_symbols.add(version['symbol'])
                meta = version.get('metadata')
                versions.append({'symbol': version['symbol'], 'version': version['version'],
                                 'deleted': meta.get('deleted', False) if meta else False,
                                 # We return offset-aware datetimes in Local Time.
                                 'date': ms_to_datetime(datetime_to_ms(version['_id'].generation_time)),
                                 'snapshots': [snapshots[s] for s in version.get('parent', []) if s in snapshots]})
        return versions
def list_versions ( self , symbol = None , snapshot = None , latest_only = False ) : if symbol is None : symbols = self . list_symbols ( snapshot = snapshot ) else : symbols = [ symbol ] query = { } if snapshot is not None : try : query [ 'parent' ] = self . _snapshots . find_one ( { 'name' : snapshot } ) [ '_id' ] except TypeError : raise NoDataFoundException ( 'No snapshot %s in library %s' % ( snapshot , self . _arctic_lib . get_name ( ) ) ) versions = [ ] snapshots = { ss . get ( '_id' ) : ss . get ( 'name' ) for ss in self . _snapshots . find ( ) } for symbol in symbols : query [ 'symbol' ] = symbol seen_symbols = set ( ) for version in self . _versions . find ( query , projection = [ 'symbol' , 'version' , 'parent' , 'metadata.deleted' ] , sort = [ ( 'version' , - 1 ) ] ) : if latest_only and version [ 'symbol' ] in seen_symbols : continue seen_symbols . add ( version [ 'symbol' ] ) meta = version . get ( 'metadata' ) versions . append ( { 'symbol' : version [ 'symbol' ] , 'version' : version [ 'version' ] , 'deleted' : meta . get ( 'deleted' , False ) if meta else False , 'date' : ms_to_datetime ( datetime_to_ms ( version [ '_id' ] . generation_time ) ) , 'snapshots' : [ snapshots [ s ] for s in version . get ( 'parent' , [ ] ) if s in snapshots ] } ) return versions
Return a list of versions filtered by the passed in parameters.

        Parameters
        ----------
        symbol : `str`
            Symbol to return versions for.  If None returns versions across all
            symbols in the library.
        snapshot : `str`
            Return the versions contained in the named snapshot
        latest_only : `bool`
            Only include the latest version for a specific symbol

        Returns
        -------
        List of dictionaries describing the discovered versions in the library