Added __slots__ to all classes.
authorFrédéric Jolliton <git@frederic.jolliton.com>
Wed, 25 Oct 2006 12:55:03 +0000 (12:55 +0000)
committerFrédéric Jolliton <git@frederic.jolliton.com>
Wed, 25 Oct 2006 12:55:03 +0000 (12:55 +0000)
rsbac/_flags.py
rsbac/acl.py
rsbac/module.py
rsbac/objects.py
rsbac/rc.py
rsbac/transaction.py
rsbac/um.py

index 68a1a8a..56d79a6 100644 (file)
@@ -22,7 +22,7 @@ import operator
 def buildFlagsClass( className , bases , bits ) :
     dbits = dict( bits )
     rdbits = dict( map( reversed , bits ) )
-    attrs = {}
+    attrs = { '__slots__' : ( 'value' , ) }
     def add( fun ) :
         attrs[ fun.__name__ ] = fun
         return fun
index 68d8d1e..e5ec318 100644 (file)
@@ -354,6 +354,7 @@ def getAclTargetList( target ) :
         return getAclTargetListById( target )
 
 class AclBase( object ) :
+    __slots__ = ( 'target' , )
     def __init__( self , target ) :
         object.__init__( self )
         self.target = target
@@ -371,6 +372,7 @@ class AclBase( object ) :
         return [ ( e[ 0 ] , ( e[ 1 ] , e[ 2 ] ) ) for e in self._list() ]
 
 class AclById( AclBase ) :
+    __slots__ = ()
     def _list( self ) :
         return getAclTargetListById( self.target )
     def __getitem__( self , subject ) :
@@ -398,6 +400,7 @@ class AclById( AclBase ) :
             removeAclById( self.target )
 
 class AclByName( AclBase ) :
+    __slots__ = ()
     def _list( self ) :
         return getAclTargetListByName( self.target )
     def __iter__( self ) :
@@ -633,6 +636,7 @@ def getGroupMembers( id ) :
     return [ ( int( a ) , intToTtl( b ) ) for a , b in zip( *arrs ) ]
 
 class AclGroupMembersTtlDictProxy( object ) :
+    __slots__ = ( '__group' , )
     def __init__( self , id ) :
         self.__group = id
     def __getitem__( self , user ) :
@@ -665,6 +669,7 @@ class AclGroupMembersTtlDictProxy( object ) :
 # FIXME: Add a note about settings (not settable individually
 # normally)
 class Group( object ) :
+    __slots__ = ( '_id' , 'members' )
     def __init__( self , id ) :
         self._id = id
         self.members = AclGroupMembersTtlDictProxy( id )
@@ -681,10 +686,6 @@ class Group( object ) :
             desc = 'undefined'
         return '<ACL Group [%d] %s>' % ( self._id , desc )
     #
-    # members
-    #
-    members = None
-    #
     # owner
     #
     def getOwner( self ) :
@@ -720,6 +721,7 @@ class Group( object ) :
     name = property( getName , setName )
 
 class GroupDict( object ) :
+    __slots__ = ()
     def __iter__( self ) :
         return ( item[ 0 ] for item in getGroupList( True ) )
     def __getitem__( self , id ) :
index c2bc6e3..72da68a 100644 (file)
@@ -45,6 +45,7 @@ def getSwitch( module ) :
     return state.value , control.value
 
 class Module( object ) :
+    __slots__ = ( '_id' , '_name' )
     def __new__( cls , id , *args , **kwargs ) :
         instance = _g_modules.get( id )
         if instance is None :
@@ -56,7 +57,6 @@ class Module( object ) :
         super( Module , self ).__init__()
         self._id = moduleId
         self._name = name
-        self._available = None
     def __int__( self ) :
         return int( self._id )
     def __long__( self ) :
index b2e8729..85662f6 100644 (file)
@@ -56,7 +56,7 @@ def buildObjectClass( className , parents , target , byName ) :
         target , realTarget = target
     else :
         target , realTarget = target , target
-    attrs = {}
+    attrs = { '__slots__' : () }
     if byName :
         fget = lib.rsbac_get_attr_n
         fset = lib.rsbac_set_attr_n
@@ -311,12 +311,13 @@ class Object( object ) :
     """Base class for all RSBAC objects.
 
     """
-    pass
+    __slots__ = ()
 
 class ObjectWithAttributes( Object ) :
     """Base class for objects with RSBAC attributes.
 
     """
+    __slots__ = ()
     def getAllAttributes( self ) :
         r = {}
         for name in self.attributes :
@@ -334,6 +335,7 @@ class FDBase( ObjectWithAttributes ) :
     """Base class for FD hierarchy.
 
     """
+    __slots__ = ( '_id' , 'acl' )
     type = headers.T_FD
     def __new__( cls , id ) :
         if id is None :
@@ -389,9 +391,11 @@ UnixSocket = \
 #--[ Device ]-----------------------------------------------------------------
 
 class DeviceBase( ObjectWithAttributes ) :
+    __slots__ = ()
     type = headers.T_DEV # Needed for RcTypeDict
 
 class BlockDeviceBase( DeviceBase ) :
+    __slots__ = ( '_dev' , '_id' , 'acl' )
     def __init__( self , major , minor = None ) :
         super( BlockDeviceBase , self ).__init__()
         self._dev = ( major , minor )
@@ -420,6 +424,7 @@ BlockDevice = buildObjectClass( 'BlockDevice' ,
                                 headers.T_DEV , False )
 
 class CharacterDeviceBase( DeviceBase ) :
+    __slots__ = ( '_dev' , '_id' , 'acl' )
     def __init__( self , major , minor = None ) :
         super( CharacterDeviceBase , self ).__init__()
         self._dev = ( major , minor )
@@ -465,6 +470,7 @@ _g_pseudoUsers = {
     }
 
 class UserBase( ObjectWithAttributes ) :
+    __slots__ = ( 'uid' , '_id' , 'acl' )
     def __new__( cls , user ) :
         user = _nuser( user )
         if user < 0 :
@@ -526,6 +532,7 @@ _g_pseudoGroups = {
     }
 
 class GroupBase( ObjectWithAttributes ) :
+    __slots__ = ( 'gid' , '_id' , 'acl' )
     def __new__( cls , group ) :
         group = _ngroup( group )
         if group < 0 :
@@ -570,6 +577,7 @@ Group = buildObjectClass( 'Group' , ( GroupBase , ) , headers.T_GROUP , False )
 #--[ Process ]----------------------------------------------------------------
 
 class ProcessBase( ObjectWithAttributes ) :
+    __slots__ = ( 'pid' , '_id' , 'acl' )
     def __init__( self , process ) :
         super( ProcessBase , self ).__init__()
         id = headers.rsbac_target_id_t()
@@ -595,6 +603,7 @@ Process = buildObjectClass( 'Process' , ( ProcessBase , ) , headers.T_PROCESS ,
 #--[ IPC ]--------------------------------------------------------------------
 
 class IpcBase( ObjectWithAttributes ) :
+    __slots__ = ( '_id' , 'id' , 'acl' )
     ipc = headers.I_none
     def __init__( self , ipcId ) :
         super( IpcBase , self ).__init__()
@@ -617,21 +626,27 @@ class IpcBase( ObjectWithAttributes ) :
 Ipc = buildObjectClass( 'Ipc' , ( IpcBase , ) , headers.T_IPC , False )
 
 class IpcSem( Ipc ) :
+    __slots__ = ()
     ipc = headers.I_sem
 
 class IpcMsg( Ipc ) :
+    __slots__ = ()
     ipc = headers.I_msg
 
 class IpcShm( Ipc ) :
+    __slots__ = ()
     ipc = headers.I_shm
 
 class IpcAnonPipe( Ipc ) :
+    __slots__ = ()
     ipc = headers.I_anonpipe
 
 class IpcMqueue( Ipc ) :
+    __slots__ = ()
     ipc = headers.I_mqueue
 
 class IpcAnonUnix( Ipc ) :
+    __slots__ = ()
     ipc = headers.I_anonunix
 
 #--[ SCD ]--------------------------------------------------------------------
@@ -639,6 +654,7 @@ class IpcAnonUnix( Ipc ) :
 g_scd = {}
 
 class Scd( Object ) :
+    __slots__ = ( '_id' , 'id' , 'name' , 'acl' )
     type = headers.T_SCD
     def __new__( cls , target , *args , **kwargs ) :
         instance = g_scd.get( target )
@@ -669,6 +685,7 @@ class Scd( Object ) :
 _g_networkObject = None
 
 class NetworkObject( Object ) :
+    __slots__ = ( '_id' , 'acl' )
     type = headers.T_NETOBJ
     def __new__( cls ) :
         global _g_networkObject
@@ -698,6 +715,7 @@ def getAllNetworkDevice() :
     return sorted( map( byteArrayToString , arr ) )
 
 class NetworkDeviceBase( ObjectWithAttributes ) :
+    __slots__ = ( '_name' , '_id' , 'acl' )
     def __init__( self , name ) :
         super( NetworkDeviceBase , self ).__init__()
         id = headers.rsbac_target_id_t()
@@ -822,6 +840,7 @@ def copyNetworkTemplate( source , dest ) :
     return NetworkTemplate( dest )
 
 class _NetworkTemplateSelf( object ) :
+    __slots__ = ( '_id' , 'nt' , 'acl' )
     type = headers.T_NETTEMP_NT
     def __init__( self , nt ) :
         id = headers.rsbac_target_id_t()
@@ -833,6 +852,7 @@ class _NetworkTemplateSelf( object ) :
         return '<NetworkTemplate[Self] %d>' % self.nt
 
 class NetworkTemplateBase( ObjectWithAttributes ) :
+    __slots__ = ( '_id' , 'nt' , 'acl' , 'selfAcl' )
     def __init__( self , nt ) :
         super( NetworkTemplateBase , self ).__init__()
         id = headers.rsbac_target_id_t()
@@ -1014,6 +1034,7 @@ def getAllNetworkTemplate() :
     return sorted( map( int , arr ) )
 
 class NetworkTemplateDict( object ) :
+    __slots__ = ()
     def __repr__( self ) :
         return '{' + ', '.join( [ ': '.join( map( str , item ) ) for item in self.items() ] ) + '}'
     def __getitem__( self , nt ) :
index 9bac348..f891269 100644 (file)
@@ -688,6 +688,7 @@ makeGetSetRoles( 'RoleAssignRole' , headers.RI_assign_roles ,
 
 # FIXME: dict interface!
 class RoleTtlDictProxy( object ) :
+    __slots__ = ( '__name' , '__role' , '__get' , '__set' , '__list' )
     def __init__( self , name , role , get , set , list ) :
         self.__name = name
         self.__role = role
@@ -743,6 +744,7 @@ class RoleTtlDictProxy( object ) :
             self.__set( self.__role , role , False )
 
 class RoleTypeCompatibility( object ) :
+    __slots__ = ( 'role' , )
     def __init__( self , role ) :
         self.role = role
     def __getitem__( self , type ) :
@@ -753,6 +755,7 @@ class RoleTypeCompatibility( object ) :
         return '<RoleTypeCompatibility with RC role %d>' % ( self.role , )
 
 class DefaultIndividualFdCreateType( object ) :
+    __slots__ = ( 'role' , )
     def __init__( self , role ) :
         self.role = role
     def __getitem__( self , type ) :
@@ -769,6 +772,7 @@ class DefaultIndividualFdCreateType( object ) :
         self.role.delDefaultIndividualFdCreateType( type )
 
 class DefaultTypes( object ) :
+    __slots__ = ( 'role' , )
     def __init__( self , role ) :
         self.role = role
     def __getitem__( self , action ) :
@@ -786,7 +790,9 @@ def _type( t ) :
         return t
                 
 class RoleBase( object ) :
-    __slots__ = [ '_role' , '_id' ]
+    __slots__ = ( '_role' , '_id' ,
+                  'compatibility' , 'adminRoles' , 'assignRoles' ,
+                  'typeCompatibility' , 'defaultIndividualFdCreateType' )
     def __new__( cls , role ) :
         role = _nrole( role )
         instance = _g_roles.get( role )
@@ -862,7 +868,6 @@ class RoleBase( object ) :
         return getRoleRoleCompatibility( self._role , role )
     def setRoleCompatibility( self , role , value ) :
         return setRoleRoleCompatibility( self._role , role , value )
-    compatibility = None
     #
     # admin_roles
     #
@@ -870,7 +875,6 @@ class RoleBase( object ) :
         return getRoleAdminRole( self._role , role )
     def setAdminRole( self , role , value ) :
         return setRoleAdminRole( self._role , role , value )
-    adminRoles = None
     #
     # assign_roles
     #
@@ -929,7 +933,7 @@ class RoleBase( object ) :
         removeRole( self._role )
 
 def createRoleClass() :
-    attrs = {}
+    attrs = { '__slots__' : () }
     def addAttribute( target , name ) :
         pname = 'default' + ''.join( [ s.capitalize() for s in name.split( '_' ) ] ) + 'Type'
         cpname = pname[ 0 ].upper() + pname[ 1 : ]
@@ -1055,6 +1059,7 @@ def removeType( type ) :
                                          None , 0 ) )
 
 class Type( object ) :
+    __slots__ = ( '__id' , )
     def __new__( cls , target , type ) :
         if hasattr( target , 'type' ) :
             target = target.type
@@ -1135,6 +1140,7 @@ for k , v in _g_pseudoTypes.items() :
     setattr( pseudoTypes , v , Type( None , k ) )
 
 class RcRoleDict( object ) :
+    __slots__ = ()
     def keys( self ) :
         return getRoles()
     def items( self ) :
@@ -1168,6 +1174,7 @@ def newType( target , name , start = 0 ) :
         i += 1
 
 class RcTypeDict( object ) :
+    __slots__ = ()
     def __init__( self , target ) :
         self.target = target
     def keys( self ) :
index e41d8a9..763a3a1 100644 (file)
@@ -47,6 +47,7 @@ _t = 0
 #         BLOCK
 #     ...
 class CurrentTransaction( object ) :
+    __slots__ = ( '_t' , '_old' )
     def __init__( self , transaction ) :
         self._t = transaction
         self._old = None
@@ -101,6 +102,7 @@ def forget( transaction , password = None ) :
     raiseIfError( lib.rsbac_list_ta_forget( transaction , password ) )
 
 class Transaction( object ) :
+    __slots__ = ( 'id' , 'password' )
     def __init__( self , id , password = None ) :
         self.id = id
         self.password = password
index ecf4b9e..9723a80 100644 (file)
@@ -634,6 +634,7 @@ def setGroupTtl( gid , ttl ) :
 
 
 class UserGroups( object ) :
+    __slots__ = ( '_uid' , )
     def __init__( self , uid ) :
         self._uid = uid
     def __iter__( self ) :
@@ -648,6 +649,7 @@ class UserGroups( object ) :
         map( self.discard , self )
 
 class UserBase( object ) :
+    __slots__ = ( 'id' , 'groups' )
     def __init__( self , uid ) :
         self.id = uid
         self.groups = UserGroups( self.id )
@@ -742,10 +744,6 @@ class UserBase( object ) :
         return setUserTtl( self.id , ttlToInt( ttl ) )
     ttl = property( getTtl , setTtl )
     #
-    # groups
-    #
-    groups = None
-    #
     # exists
     #
     def getExists( self ) :
@@ -760,7 +758,7 @@ class UserBase( object ) :
         removeUser( self.id )
 
 def buildUserClass() :
-    attrs = {}
+    attrs = { '__slots__' : () }
     def addDaysField( name ) :
         cname = name[ 0 ].upper() + name[ 1 : ]
         item = getattr( headers , 'UM_' + name.lower() )
@@ -784,6 +782,7 @@ def buildUserClass() :
 User = buildUserClass()
 
 class Group( object ) :
+    __slots__ = ( 'id' , )
     def __init__( self , gid ) :
         self.id = gid
     def __int__( self ) :
@@ -866,6 +865,7 @@ class Group( object ) :
         removeGroup( self.id )
 
 class UmUserDict( object ) :
+    __slots__ = ()
     def __iter__( self ) :
         return iter( getUserList() )
     def __delitem__( self , uid ) :
@@ -886,6 +886,7 @@ class UmUserDict( object ) :
 users = UmUserDict()
 
 class UmGroupDict( object ) :
+    __slots__ = ()
     def __iter__( self ) :
         return iter( getGroupList() )
     def __delitem__( self , gid ) :