def get_sd_files(sdRootFolder):
        
    fileInfo = dict()
    
    # Create temporary extract folder
    extractFolder = tempfile.mkdtemp()
    
    # Search for all .sd files contained with specified folder
    sdFilePaths = listFiles(sdRootFolder, sdFilePattern)
    
    # Create collection containing only the latest "version" of each .sd file
    for sdFile in sdFilePaths:

        # Extract service configuration json file from compressed .sd file
        extractFile = 'serviceconfiguration.json'
        jsonFile = os.path.join(extractFolder, extractFile)
        extractFromSDFile(sdFile, extractFolder, extractFile)
        
        # Extract service information from the service config json file
        os.chdir(extractFolder)
        serviceConfig = json.load(open(extractFile))
        folderName = serviceConfig['folderName']
        serviceName = serviceConfig['service']['serviceName']
        serviceType = serviceConfig['service']['type']
        
        # Create dictionary key (syntax: Folder//ServerName.ServiceType)
        fileKey = serviceName + '.' + serviceType
        if folderName:
            fileKey = folderName + '//' + fileKey
            
        # Get file creation/modified times (values in epoch time)
        # TODO: decide if we need to use creation or modified time (or compare the two)
        #  dates and use newest date to use as comparsion
        # Think we should use modfied time, because I've seen cases where you copy the file and the
        # creation time will reflect when you have copied the file and modified time reflected
        # the original creation date.
        creationTime = os.path.getctime(sdFile)
        modifiedTime = os.path.getmtime(sdFile)
        compareTime = modifiedTime # set which time to compare here; downstream code uses 'compareTime' variable.
        
        if fileKey in fileInfo:
            # Compare time of file that exists in collection and replace with
            # current file if timestamp is newer
            fileTime = fileInfo[fileKey]['timestamp']
            if compareTime > fileTime:
                fileInfo[fileKey] = {'path': sdFile, 'timestamp': compareTime}
        else:
            fileInfo[fileKey] = {'path': sdFile, 'timestamp': compareTime}
    
    if debug:
        print '\nwithin the get_sd_files function...'
        print 'fileInfo variable...'
        for i in fileInfo:
            print i + ': ' + fileInfo[i]['path'] + ': ' + str(fileInfo[i]['timestamp'])
    
    # Delete temporary extract folder
    # TODO: see if I can fix the error that is thrown when running the following code:
    # 'WindowsError: [Error 32] The process cannot access the file because it is being used
    # by another process'
    #if os.path.exists(extractFolder):
    #    rmtree(extractFolder)
    
    return fileInfo
Place Arcball, e.g. when window size changes.
dataset/ETHPy150Open Esri/ops-server-config/SupportFiles/GetSDFiles.py/get_sd_files--crossover with--dataset/ETHPy150Open IEEERobotics/bot/bot/hardware/complex_hardware/transformations.py/Arcball.place