Changeset 1330

Show
Ignore:
Timestamp:
07/24/09 09:30:49 (12 months ago)
Author:
hobu
Message:

clean up Rtree and Index constructors

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Rtree/trunk/rtree/index.py

    r1327 r1330  
    2020 
    2121class Index(object): 
    22     def __init__(self,  filename=None,  
    23                         properties=None,  
    24                         owned = True,  
    25                         pagesize = None): 
    26         if properties: 
    27             self.properties = properties 
     22    def __init__(self,  *args, **kwargs): 
     23 
     24        try: 
     25            self.properties = kwargs['properties'] 
     26        except KeyError: 
     27            self.properties = Property() 
     28             
     29        if args: 
     30            basename = args[0] 
    2831        else: 
    29             self.properties = Property() 
    30              
    31         if filename: 
    32             self.properties.filename = filename 
     32            basename = None 
     33             
     34        if basename: 
     35            self.properties.storage = RT_Disk 
     36            self.properties.filename = basename 
     37             
     38            # check we can read the file 
     39            p = os.path.abspath(basename) 
     40            d = os.path.dirname(p) 
     41            if not os.access(d, os.W_OK): 
     42                message = "Unable to open file '%s' for index storage"%basename 
     43                raise IOError(message) 
    3344        else: 
    3445            self.properties.storage = RT_Memory 
    35         if pagesize: 
    36             self.properties.pagesize = pagesize 
     46             
     47        if basename: 
     48            self.properties.filename = basename 
     49        else: 
     50            self.properties.storage = RT_Memory 
     51 
     52        try: 
     53            self.properties.pagesize = int(kwargs['pagesize']) 
     54        except KeyError: 
     55            pass 
     56             
     57        try: 
     58            self.properties.overwrite = bool(kwargs['overwrite']) 
     59        except KeyError: 
     60            pass 
    3761         
    3862        self.handle = core.rt.Index_Create(self.properties.handle) 
     
    268292    def __init__(self, *args, **kwargs): 
    269293         
    270         if args: 
    271             basename = args[0] 
    272         else: 
    273             basename = None 
    274              
    275         self.properties = Property() 
    276          
    277         if basename: 
    278             self.properties.storage = RT_Disk 
    279             self.properties.filename = basename 
    280              
    281             # check we can read the file 
    282             p = os.path.abspath(basename) 
    283             d = os.path.dirname(p) 
    284             if not os.access(d, os.W_OK): 
    285                 message = "Unable to open file '%s' for index storage"%basename 
    286                 raise IOError(message) 
    287              
    288         else: 
    289             self.properties.storage = RT_Memory 
    290          
    291         try: 
    292             self.properties.pagesize = int(kwargs['pagesize']) 
    293         except KeyError: 
    294             pass 
    295              
    296         try: 
    297             self.properties.overwrite = bool(kwargs['overwrite']) 
    298         except KeyError: 
    299             pass 
    300          
    301          
    302         self.handle = core.rt.Index_Create(self.properties.handle) 
    303         self.owned = True 
     294        super(Rtree, self).__init__(*args, **kwargs) 
     295 
    304296 
    305297class Item(object):