Index: trunk/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/batch/virtual_test_sheriff.py	(revision 79092)
@@ -50,7 +50,7 @@
 
 if sys.version_info[0] >= 3:
-    from io       import StringIO as StringIO;      # pylint: disable=import-error,no-name-in-module
+    from io       import StringIO as StringIO;      # pylint: disable=import-error,no-name-in-module,useless-import-alias
 else:
-    from StringIO import StringIO as StringIO;      # pylint: disable=import-error,no-name-in-module
+    from StringIO import StringIO as StringIO;      # pylint: disable=import-error,no-name-in-module,useless-import-alias
 from optparse import OptionParser;                  # pylint: disable=deprecated-module
 from PIL import Image;                              # pylint: disable=import-error
@@ -1027,5 +1027,5 @@
         # (  Whether to stop on hit, reason tuple, needle text. )
         ( True,  ktReason_Panic_HugeMemory,                         'mm/huge_memory.c:1988' ),
-        ( True,  ktReason_Panic_IOAPICDoesntWork,                   'IO-APIC + timer doesn''t work' ),
+        ( True,  ktReason_Panic_IOAPICDoesntWork,                   'IO-APIC + timer doesn\'t work' ),
         ( True,  ktReason_Panic_TxUnitHang,                         'Detected Tx Unit Hang' ),
         ( True,  ktReason_GuestBug_CompizVBoxQt,                    'error 4 in libQt5CoreVBox' ),
Index: trunk/src/VBox/ValidationKit/testmanager/cgi/logout.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/cgi/logout.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/cgi/logout.py	(revision 79092)
@@ -50,5 +50,5 @@
     oSrvGlue = WebServerGlueCgi(g_ksValidationKitDir, fHtmlOutput = True)
     sUser = oSrvGlue.getLoginName()
-    if sUser != oSrvGlue.ksUnknownUser and sUser != 'logout':
+    if sUser not in (oSrvGlue.ksUnknownUser, 'logout'):
         oSrvGlue.write('<p>Broken apache config!\n'
                        'The logout.py script should be configured with .htaccess-logout and require user logout!</p>')
Index: trunk/src/VBox/ValidationKit/testmanager/core/build.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/build.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/build.py	(revision 79092)
@@ -725,5 +725,5 @@
 
         for aoRow in aaoRows:
-            oBuildExRet = BuildDataEx().initFromDbRow(self, aoRow);
+            oBuildExRet = BuildDataEx().initFromDbRow(aoRow);
             if not self.isBuildBlacklisted(oBuildExRet):
                 return oBuildExRet;
Index: trunk/src/VBox/ValidationKit/testmanager/core/buildblacklist.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/buildblacklist.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/buildblacklist.py	(revision 79092)
@@ -53,10 +53,10 @@
     ksParam_iLastRevision   = 'BuildBlacklist_iLastRevision'
 
-    kasAllowNullAttributes    = [ 'idBlacklisting',
-                                  'tsEffective',
-                                  'tsExpire',
-                                  'uidAuthor',
-                                  'asTypes',
-                                  'asOsArches' ];
+    kasAllowNullAttributes  = [ 'idBlacklisting',
+                                'tsEffective',
+                                'tsExpire',
+                                'uidAuthor',
+                                'asTypes',
+                                'asOsArches' ];
 
     def __init__(self):
Index: trunk/src/VBox/ValidationKit/testmanager/core/buildsource.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/buildsource.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/buildsource.py	(revision 79092)
@@ -128,5 +128,5 @@
                                                                              aoNilValues, fAllowNull, oDb);
             if sError is None:
-                if len(self.asTypes) <= 0:
+                if not self.asTypes:
                     oNewValue = None;
                 else:
Index: trunk/src/VBox/ValidationKit/testmanager/core/db.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/db.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/db.py	(revision 79092)
@@ -66,5 +66,5 @@
         ## @todo detect strings as well.
         return False;
-    return getattr(oValue, 'pydatetime', None) != None;
+    return getattr(oValue, 'pydatetime', None) is not None;
 
 def dbTimestampToDatetime(oValue):
@@ -127,5 +127,5 @@
     Otherwise, we won't be able to log the issue.
     """
-    pass;
+    pass;                               # pylint: disable=unnecessary-pass
 
 
Index: trunk/src/VBox/ValidationKit/testmanager/core/schedulerbase.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/schedulerbase.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/schedulerbase.py	(revision 79092)
@@ -787,5 +787,7 @@
         oTestSet      = TestSetData().initFromDbWithId(oDb, idTestSet);
         oTestBox      = TestBoxData().initFromDbWithGenId(oDb, oTestSet.idGenTestBox);
-        oTestEx       = TestCaseArgsDataEx().initFromDbWithGenId(oDb, oTestSet.idGenTestCaseArgs);
+        oTestEx       = TestCaseArgsDataEx().initFromDbWithGenIdEx(oDb, oTestSet.idGenTestCaseArgs,
+                                                                   tsConfigEff = oTestSet.tsConfig,
+                                                                   tsRsrcEff = oTestSet.tsConfig);
         oBuild        = BuildDataEx().initFromDbWithId(oDb, oTestSet.idBuild);
         oValidationKitBuild = None;
@@ -1478,6 +1480,7 @@
                             , (oTestSetData.idTestSetGangLeader,) );
                 oTask = SchedQueueData().initFromDbRow(oDb.fetchOne());
-                oTestEx = TestCaseArgsDataEx().initFromDbWithGenId(oDb, oTask.idGenTestCaseArgs);
-
+                oTestEx = TestCaseArgsDataEx().initFromDbWithGenIdEx(oDb, oTask.idGenTestCaseArgs,
+                                                                     tsConfigEff = oTask.tsConfig,
+                                                                     tsRsrcEff = oTask.tsConfig);
                 oDb.execute('UPDATE SchedQueues\n'
                             '   SET idItem = NEXTVAL(\'SchedQueueItemIdSeq\'),\n'
@@ -1490,5 +1493,5 @@
                 return True;
 
-            elif oStatusData.enmState == TestBoxStatusData.ksTestBoxState_GangGatheringTimedOut:
+            if oStatusData.enmState == TestBoxStatusData.ksTestBoxState_GangGatheringTimedOut:
                 oDb.rollback();
                 return True;
Index: trunk/src/VBox/ValidationKit/testmanager/core/testcaseargs.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/testcaseargs.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/testcaseargs.py	(revision 79092)
@@ -351,5 +351,5 @@
     def addTestCaseArgs(self, oTestCaseArgsData):
         """Add Test Case Args record into DB"""
-        pass
+        pass;                               # pylint: disable=unnecessary-pass
 
     def cachedLookup(self, idTestCaseArgs):
Index: trunk/src/VBox/ValidationKit/testmanager/core/testresults.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/testresults.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/testresults.py	(revision 79092)
@@ -671,5 +671,5 @@
 class TestResultHangingOffence(TMExceptionBase):
     """Hanging offence committed by test case."""
-    pass;
+    pass;                               # pylint: disable=unnecessary-pass
 
 
@@ -2728,5 +2728,5 @@
 
         elif sName == 'PopHint':
-            if len(aaiHints) < 1:
+            if not aaiHints:
                 return 'No hint to pop.'
 
Index: trunk/src/VBox/ValidationKit/testmanager/core/webservergluebase.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/core/webservergluebase.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/core/webservergluebase.py	(revision 79092)
@@ -45,5 +45,5 @@
     For exceptions raised by glue code.
     """
-    pass;
+    pass;                               # pylint: disable=unnecessary-pass
 
 
@@ -153,5 +153,5 @@
         Note! This includes both a leading an trailing slash.
         """
-        sPath = self.getUrlPath();
+        sPath = self.getUrlPath();      # virtual method # pylint: disable=assignment-from-no-return
         iLastSlash = sPath.rfind('/');
         if iLastSlash >= 0:
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuibase.py	(revision 79092)
@@ -53,5 +53,5 @@
     For exceptions raised by Web UI code.
     """
-    pass;
+    pass;                               # pylint: disable=unnecessary-pass
 
 
@@ -410,5 +410,5 @@
         # HACK: Checkboxes doesn't return a value when unchecked, so we always
         #       provide a default when dealing with boolean parameters.
-        return sValue == 'True' or sValue == 'true' or sValue == '1';
+        return sValue in ('True', 'true', '1',);
 
     def getIntParam(self, sName, iMin = None, iMax = None, iDefault = None):
@@ -547,5 +547,5 @@
             oListEntryTestCaseArgs = []
             for idTestCaseArgs in aiAllTestCaseArgs:
-                fArgsChecked   = True if idTestCaseArgs in aiCheckedTestCaseArgs else False
+                fArgsChecked   = idTestCaseArgs in aiCheckedTestCaseArgs;
 
                 # Dry run
@@ -562,9 +562,10 @@
             sTestCaseName = self.getStringParam('%s[%d][sName]' % (sName, idTestCase), sDefault='')
 
-            oListEntryTestCase = \
-                (idTestCase,
-                 True if idTestCase in aiSelectedTestCaseIds else False,
-                 sTestCaseName,
-                 oListEntryTestCaseArgs)
+            oListEntryTestCase = (
+                idTestCase,
+                idTestCase in aiSelectedTestCaseIds,
+                sTestCaseName,
+                oListEntryTestCaseArgs
+            );
 
             aoListOfTestCases.append(oListEntryTestCase)
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuicontentbase.py	(revision 79092)
@@ -54,5 +54,5 @@
     def __init__(self):
         """Dummy init to shut up pylint."""
-        pass;
+        pass;                               # pylint: disable=unnecessary-pass
 
     def toHtml(self):
@@ -732,5 +732,5 @@
         aoRet = []
         for sListItem in asListItems:
-            fEnabled = True if sListItem in asSelectedItems else False
+            fEnabled = sListItem in asSelectedItems;
             aoRet.append((sListItem, fEnabled, sListItem))
         return aoRet
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuigraphwiz.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuigraphwiz.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuigraphwiz.py	(revision 79092)
@@ -205,5 +205,5 @@
         # Must be at least two series for something to be splittable.
         if len(aoSeries) <= 1:
-            if len(aoSeries) < 1:
+            if not aoSeries:
                 return [];
             return [aoSeries,];
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphgooglechart.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphgooglechart.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphgooglechart.py	(revision 79092)
@@ -42,5 +42,5 @@
 class WuiHlpGraphGoogleChartsBase(WuiHlpGraphBase):
     """ Base class for the Google Charts graphs. """
-    pass;
+    pass;                               # pylint: disable=unnecessary-pass
 
 
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphmatplotlib.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphmatplotlib.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphmatplotlib.py	(revision 79092)
@@ -33,7 +33,7 @@
 import sys;
 if sys.version_info[0] >= 3:
-    from io       import StringIO as StringIO;  # pylint: disable=import-error,no-name-in-module
+    from io       import StringIO as StringIO;  # pylint: disable=import-error,no-name-in-module,useless-import-alias
 else:
-    from StringIO import StringIO as StringIO;  # pylint: disable=import-error,no-name-in-module
+    from StringIO import StringIO as StringIO;  # pylint: disable=import-error,no-name-in-module,useless-import-alias
 
 import matplotlib;                              # pylint: disable=import-error
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphsimple.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphsimple.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuihlpgraphsimple.py	(revision 79092)
@@ -148,4 +148,4 @@
     """
 
-    pass;
+    pass;                               # pylint: disable=unnecessary-pass
 
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuimain.py	(revision 79092)
@@ -759,8 +759,7 @@
         oTrLogic = TestResultLogic(self._oDb);
         sAltSelectorAction = None;
-        if   enmResultsGroupingType == TestResultLogic.ksResultsGroupingTypeNone \
-          or enmResultsGroupingType == TestResultLogic.ksResultsGroupingTypeTestBox:
+        if enmResultsGroupingType in (TestResultLogic.ksResultsGroupingTypeNone, TestResultLogic.ksResultsGroupingTypeTestBox,):
             aoTmp = oTrLogic.getTestBoxes(tsNow = tsEffective, sPeriod = sCurPeriod)
-            aoGroupMembers = sorted(list(set([ (x.idTestBox, '%s (%s)' % (x.sName, str(x.ip))) for x in aoTmp ])),
+            aoGroupMembers = sorted(list({(x.idTestBox, '%s (%s)' % (x.sName, str(x.ip))) for x in aoTmp }),
                                     reverse = False, key = lambda asData: asData[1])
 
@@ -774,5 +773,5 @@
         elif enmResultsGroupingType == TestResultLogic.ksResultsGroupingTypeTestGroup:
             aoTmp = oTrLogic.getTestGroups(tsNow = tsEffective, sPeriod = sCurPeriod);
-            aoGroupMembers = sorted(list(set([ (x.idTestGroup, x.sName ) for x in aoTmp ])),
+            aoGroupMembers = sorted(list({ (x.idTestGroup, x.sName ) for x in aoTmp }),
                                     reverse = False, key = lambda asData: asData[1])
             self._sPageTitle = 'Grouped by Test Group'
@@ -780,5 +779,5 @@
         elif enmResultsGroupingType == TestResultLogic.ksResultsGroupingTypeBuildRev:
             aoTmp = oTrLogic.getBuilds(tsNow = tsEffective, sPeriod = sCurPeriod)
-            aoGroupMembers = sorted(list(set([ (x.iRevision, '%s.%d' % (x.oCat.sBranch, x.iRevision)) for x in aoTmp ])),
+            aoGroupMembers = sorted(list({ (x.iRevision, '%s.%d' % (x.oCat.sBranch, x.iRevision)) for x in aoTmp }),
                                     reverse = True, key = lambda asData: asData[0])
             self._sPageTitle = 'Grouped by Build'
@@ -786,7 +785,7 @@
         elif enmResultsGroupingType == TestResultLogic.ksResultsGroupingTypeBuildCat:
             aoTmp = oTrLogic.getBuildCategories(tsNow = tsEffective, sPeriod = sCurPeriod)
-            aoGroupMembers = sorted(list(set([ ( x.idBuildCategory, '%s / %s / %s / %s'
-                                                 % ( x.sProduct, x.sBranch, ', '.join(x.asOsArches), x.sType) )
-                                               for x in aoTmp ])),
+            aoGroupMembers = sorted(list({ (x.idBuildCategory,
+                                            '%s / %s / %s / %s' % ( x.sProduct, x.sBranch, ', '.join(x.asOsArches), x.sType) )
+                                           for x in aoTmp }),
                                     reverse = True, key = lambda asData: asData[1]);
             self._sPageTitle = 'Grouped by Build Category'
@@ -794,5 +793,5 @@
         elif enmResultsGroupingType == TestResultLogic.ksResultsGroupingTypeTestCase:
             aoTmp = oTrLogic.getTestCases(tsNow = tsEffective, sPeriod = sCurPeriod)
-            aoGroupMembers = sorted(list(set([ (x.idTestCase, '%s' % x.sName) for x in aoTmp ])),
+            aoGroupMembers = sorted(list({ (x.idTestCase, '%s' % x.sName) for x in aoTmp }),
                                     reverse = False, key = lambda asData: asData[1])
             self._sPageTitle = 'Grouped by Test Case'
@@ -810,5 +809,5 @@
         elif enmResultsGroupingType == TestResultLogic.ksResultsGroupingTypeSchedGroup:
             aoTmp = oTrLogic.getSchedGroups(tsNow = tsEffective, sPeriod = sCurPeriod)
-            aoGroupMembers = sorted(list(set([ (x.idSchedGroup, '%s' % x.sName) for x in aoTmp ])),
+            aoGroupMembers = sorted(list({ (x.idSchedGroup, '%s' % x.sName) for x in aoTmp }),
                                     reverse = False, key = lambda asData: asData[1])
             self._sPageTitle = 'Grouped by Scheduling Group'
Index: trunk/src/VBox/ValidationKit/testmanager/webui/wuireport.py
===================================================================
--- trunk/src/VBox/ValidationKit/testmanager/webui/wuireport.py	(revision 79087)
+++ trunk/src/VBox/ValidationKit/testmanager/webui/wuireport.py	(revision 79092)
@@ -91,5 +91,5 @@
         Returns HTML.
         """
-        assert sWhere == 'top' or sWhere == 'bottom';
+        assert sWhere in ('top', 'bottom',);
 
         return '';
