[Python-checkins] CVS: python/dist/src/Lib/plat-win winreg.py,1.3,1.4

Paul Prescod python-dev@python.org
Fri, 21 Jul 2000 14:43:11 -0700


Update of /cvsroot/python/python/dist/src/Lib/plat-win
In directory slayer.i.sourceforge.net:/tmp/cvs-serv23894

Modified Files:
	winreg.py 
Log Message:
Added docstrings


Index: winreg.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/plat-win/winreg.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** winreg.py	2000/07/01 20:57:03	1.3
--- winreg.py	2000/07/21 21:43:09	1.4
***************
*** 1,2 ****
--- 1,33 ----
+ """
+ Windows registry support.
+ 
+ openKey( keyname ) 
+     open existing key object
+ 
+ >>> key=openKey( r"HKLM\HARDWARE\DESCRIPTION\System" )
+ 
+ createKey( keyname ) 
+     create a key if it doesn't already exist
+ 
+ >>> key=createKey( r"HKLM\SOFTWARE\Python\Test" )
+ 
+ deleteKey( keyname ) 
+     delete a key if it exists
+     Note: deleteKey may not be recursive on all platforms.
+ 
+ >>> key=createKey( r"HKLM\SOFTWARE\Python\Test" )
+ 
+ RemoteKey( machine, top_level_key ): 
+     open a key on another machine.
+     You can use the returned key as a basis for opens, creates and deletes
+     on the other machine.
+ 
+ >>> key=RemoteKey( "somemachine", "HKLM" )
+ 
+ For information on the key API, open a key and look at its docstring.
+ 
+ 
+ """
+ 
  import _winreg
  import sys
***************
*** 7,10 ****
--- 38,42 ----
  
  class RegType:
+     "Represents one of the types that can go into the registry"
      def __init__( self, msname, friendlyname ):
          self.msname=msname
***************
*** 13,16 ****
--- 45,49 ----
  
      def __repr__( self ):
+         "Return a useful representation of the type object"
          return "<RegType %d: %s %s>" % \
                          (self.intval, self.msname, self.friendlyname )
***************
*** 50,61 ****
--- 83,97 ----
  
  class _DictBase:
+     "Base class for dictionary-type objects"
      def __init__( self, key ):
          self.key=key
  
      def clear( self ):
+         "Clear the list of keys/data values, as in dictionaries"
          keys=list( self.keys() )
          map( self.__delitem__, keys )
  
      def get( self, item, defaultVal=None ):
+         "Get a key/value by name or index"
          try:
              return self.__getitem__( item )
***************
*** 64,67 ****
--- 100,104 ----
  
      def has_key( self, item ):
+         "Check if a key/data value with a particular name exists"
          try:
              self.__getitem__( item )
***************
*** 71,74 ****
--- 108,112 ----
  
      def keys( self ):
+         "Get a list of key/data value names"
          keys=[] 
          try:
***************
*** 81,84 ****
--- 119,123 ----
  
      def values( self ):
+         "Get a list of key objects or data values"
          values=[]  # map() doesn't use the IndexError semantics...
          for i in self:
***************
*** 87,90 ****
--- 126,130 ----
  
      def items( self ):
+         "Get pairs of keyname/key object or valuename/value data"
          return map( None, self.keys(), self.values() )
  
***************
*** 93,96 ****
--- 133,137 ----
  
  def _getName( item, nameFromNum ):
+     "Helper function -- don't use it directly"
      if type( item ) == IntType:
          try:
***************
*** 108,111 ****
--- 149,153 ----
  
  class RegValuesDict( _DictBase ):
+     "A dictionary of registry data values"
      def _nameFromNum( self, i ):
          return self.key._nameFromNum( i )
***************
*** 125,131 ****
          valname=_getName( item, self._nameFromNum )
          self.key.deleteValue( valname )
- 
      
  class RegKeysDict( _DictBase ):
      def _nameFromNum( self, item ):
          return _winreg.EnumKey( self.key.handle, item )
--- 167,173 ----
          valname=_getName( item, self._nameFromNum )
          self.key.deleteValue( valname )
      
  class RegKeysDict( _DictBase ):
+     "A dictionary of registry keys"
      def _nameFromNum( self, item ):
          return _winreg.EnumKey( self.key.handle, item )
***************
*** 140,143 ****
--- 182,186 ----
  
  def openKey( keyname, samFlags=None ):
+     "Open a key by name"
      lst=string.split( keyname, "\\", 1 )
      if len( lst )==2:
***************
*** 162,170 ****
--- 205,221 ----
  
  class RegKey:
+     "A registry key object"
+ 
+     def __init__( self, name, handle=None ):
+         self.name=name
+         self.handle=handle
+ 
      def _nameFromNum( self, item ):
+         "internal"
          (name,data,datatype)=_winreg.EnumValue( self.handle, item )
          return name
  
      def __nonzero__(self):
+         "Is the key open?"
          if self.handle:
              return 1
***************
*** 173,176 ****
--- 224,228 ----
  
      def __cmp__ (self, other ):
+         "Compare two keys for equality"
          if hasattr( other, "handle" ) and hasattr( other, "name" ):
              return cmp( self.name, other.name )
***************
*** 178,208 ****
              return cmp( self.handle, other )
  
-     def __init__( self, name, handle=None ):
-         self.name=name
-         self.handle=handle
- 
      def __repr__( self ):
          return "<Windows RegKey: %s>"% self.name
  
      def close(self ):
          return _winreg.CloseKey( self.handle )
  
      def getSubkeyNames( self ):
          return self.getSubkeys().keys()
  
      def getValueNames( self ):
          return self.getValues().keys()
  
      def deleteSubkey( self, subkey ):
          return _winreg.DeleteKey( self.handle, subkey )
          
      def deleteValue( self, valname ):
          return _winreg.DeleteValue( self.handle, valname )
  
      def createSubkey( self, keyname ):
          handle=_winreg.CreateKey( self.handle, keyname )
          return RegKey( self.name+"\\"+keyname, handle)
  
      def openSubkey( self, keyname, samFlags=None ):
          if samFlags:
              handle=_winreg.OpenKey( self.handle, keyname, 0, samFlags )
--- 230,263 ----
              return cmp( self.handle, other )
  
      def __repr__( self ):
          return "<Windows RegKey: %s>"% self.name
  
      def close(self ):
+         "Close the key"
          return _winreg.CloseKey( self.handle )
  
      def getSubkeyNames( self ):
+         "Get a list of subkey names"
          return self.getSubkeys().keys()
  
      def getValueNames( self ):
+         "Get a list of value names"
          return self.getValues().keys()
  
      def deleteSubkey( self, subkey ):
+         "Delete a subkey by name"
          return _winreg.DeleteKey( self.handle, subkey )
          
      def deleteValue( self, valname ):
+         "Delete a value by name"
          return _winreg.DeleteValue( self.handle, valname )
  
      def createSubkey( self, keyname ):
+         "Create a subkey by name"
          handle=_winreg.CreateKey( self.handle, keyname )
          return RegKey( self.name+"\\"+keyname, handle)
  
      def openSubkey( self, keyname, samFlags=None ):
+         "Open a named subkey"
          if samFlags:
              handle=_winreg.OpenKey( self.handle, keyname, 0, samFlags )
***************
*** 212,221 ****
--- 267,279 ----
  
      def getSubkeys( self ):
+         "Get a dictionary-like mapping of subkeys"
          return RegKeysDict( self )
  
      def getValues( self ):
+         "Get a dictionary-like mapping of data values"
          return RegValuesDict( self )
  
      def getValueNameDataAndType( self, valname ):
+         "Get a data value's name, data and type all at one time"
          try:
              if type( valname )==IntType:
***************
*** 234,241 ****
--- 292,301 ----
  
      def getValueData( self, valname ):
+         "Get a data value's data."
          name, data, type=self.getValueNameDataAndType( valname )
          return data
  
      def setValue( self, valname, data, regtype=None ):
+         "Set a data value's data (and optionally type)"
          if regtype:
              typeint=regtype.intval
***************
*** 251,264 ****
--- 311,330 ----
  
      def flush(self ):
+         "Make sure that all changes are written to the registry. "
+         "Only use this if you know what you are doing. "
+         "It isn't usually needed."
          _winreg.FlushKey( self.keyobbj )
  
      def save( self, filename ):
+         "Save a key to a filename"
          _winreg.SaveKey( self.keyobj, filename )
  
      def load( self, subkey, filename ):
+         "Load a key from a filename"
          return _winreg.RegLoadKey( self.handle, subkey, filename )
  
  
  class RemoteKey( RegKey ):
+     "Open a key on a remote machine"
      def __init__( self, machine, topLevelKey ):
          assert topLevelKey in _hivenames