Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Re: dbf.py API question concerning Index.index_search()

Reply
Thread Tools

Re: dbf.py API question concerning Index.index_search()

 
 
Ethan Furman
Guest
Posts: n/a
 
      08-16-2012
Tim Chase wrote:
> On 08/15/12 18:26, Ethan Furman wrote:
>> .index_search(
>> match,
>> start=None,
>> stop=None,
>> nearest=False,
>> partial=False )
>>
>> The defaults are to search the entire index for exact matches and raise
>> NotFoundError if it can't find anything.
>>
>> The question is what should the return value be?
>>
>> I don't like the usual pattern of -1 meaning not found (as in
>> 'nothere'.find('a')), so I thought a fun and interesting way would be to
>> subclass long and override the __nonzero__ method to return True/False
>> based on whether the (partial) match was found. The main problems I see
>> here is that the special return value reverts to a normal int/long if
>> anything is done to it (adding, subtracting, etc), and the found status
>> is lost.
>>
>> The other option is returning a (number, bool) tuple -- safer, yet more
>> boring...

>
> I'm not quite sure I follow...you start off by saying that it will
> "raise NotFoundError" if it can't find anything. So if it finds
> something, just return it. Because if it found the item, it gives
> it to you; if it didn't find the item, it raised an error. That
> sounds like a good (easy to understand) interface, similar to how
> string.index() works.



Indeed, it's even less clear without the part you snipped. Which
wasn't very.

The well-hidden clue was this line:

nearest returns where the match should be instead of raising an error

And my question should have been:

What should the return value be when nearest == True?

My bit of fun was this class:

class IndexLocation(long):
"""used by Index.index_search -- represents the index where the
match criteria is if True, or would be if False"""
def __new__(cls, value, found):
"value is the number, found is True/False"
result = long.__new__(cls, value)
result.found = found
return result
def __nonzero__(self):
return self.found

~Ethan~
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
dbf.py API question concerning Index.index_search() Ethan Furman Python 7 08-16-2012 05:46 PM
Re: dbf.py API question concerning Index.index_search() MRAB Python 0 08-16-2012 02:20 AM
Re: dbf.py API question concerning Index.index_search() Tim Chase Python 0 08-16-2012 12:28 AM
Re: dbf.py API question concerning Index.index_search() Tim Chase Python 0 08-15-2012 11:38 PM
Re: Question concerning Timer Control Kevin Spencer ASP .Net 2 09-21-2004 08:36 PM



Advertisments