@ -58,8 +58,11 @@ class Hasher:
def _eval_key_component ( self , obj , component_path ) :
res = obj
for path_component in component_path :
res = res [ path_component ]
try :
for path_component in component_path :
res = res [ path_component ]
except ( KeyError , IndexError ) :
return b ' '
return str ( res ) . encode ( ' utf-8 ' )
def hash_object ( self , obj ) :
@ -147,14 +150,53 @@ class BaseChannel(ABC):
class GFEClientChannel ( BaseChannel ) :
def __init__ ( self , name , * * kwargs ) :
def __init__ ( self , name , notebook = False ,
x86_64 = True ,
os_version = " 10.0 " ,
os_build = " 17763 " ,
language = 1033 ,
beta = False ,
dch = False ,
crd = False ,
timeout = 10 ) :
self . name = name
self . _kwargs = kwargs
self . _notebook = notebook
self . _x86_64 = x86_64
self . _os_version = os_version
self . _os_build = os_build
self . _language = language
self . _beta = beta
self . _dch = dch
self . _crd = crd
self . _timeout = timeout
gfe_get_driver = importlib . import_module ( ' gfe_get_driver ' )
self . _get_latest_driver = gfe_get_driver . get_latest_geforce_driver
def get_latest_driver ( self ) :
return self . _get_latest_driver ( * * self . _kwargs )
res = self . _get_latest_driver ( notebook = self . _notebook ,
x86_64 = self . _x86_64 ,
os_version = self . _os_version ,
os_build = self . _os_build ,
language = self . _language ,
beta = self . _beta ,
dch = self . _dch ,
crd = self . _crd ,
timeout = self . _timeout )
res . update ( {
' ChannelAttributes ' : {
' Name ' : self . name ,
' Type ' : self . __class__ . __name__ ,
' OS ' : ' Windows %d _ %d ' % ( float ( self . _os_version ) ,
64 if self . _x86_64 else 32 ) ,
' OSBuild ' : self . _os_build ,
' Language ' : self . _language ,
' Beta ' : self . _beta ,
' DCH ' : self . _dch ,
' CRD ' : self . _crd ,
' Mobile ' : self . _notebook ,
}
} )
return res
class NvidiaDownloadsChannel ( BaseChannel ) :
@ -193,6 +235,16 @@ class NvidiaDownloadsChannel(BaseChannel):
' Version ' : latest [ ' version ' ] ,
' Name ' : latest [ ' name ' ] ,
' NameLocalized ' : latest [ ' name ' ] ,
} ,
' ChannelAttributes ' : {
' Name ' : self . name ,
' Type ' : self . __class__ . __name__ ,
' OS ' : self . _os . name ,
' Product ' : self . _product . name ,
' CertLevel ' : self . _certlevel . name ,
' DriverType ' : self . _driver_type . name ,
' Lang ' : self . _lang . name ,
' CudaVer ' : self . _cuda_ver . name ,
}
}