You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Several things came to my attention during the development of py2store, whose prior knowledge would have probably made me make different choices. There is a need to comb through the code and find where these better choices should be made.
(1) I didn't know about __missing__, which can probably be used advantageously.
(2) If a class has a __getitem__, but not a __iter__, it still uses __getitem__ on integers to possibly create iterable. This seems to be a not-so-great legacy from the past. But it's still there. I wouldn't want to create code that relies on it, but probably better to make sure we disable iteration when there's not an explicit __iter__, to avoid bugs or confusing behavior. I got one already when doing list(misc_objs) and got:
TypeError: expected str, bytes or os.PathLike object, not int
(3) python docs says: Note for loops expect that an IndexError will be raised for illegal indexes to allow proper detection of the end of the sequence. Sometimes I decided to raise the "local" error (such as FileNotFound, etc.). This is also useful because the user IndexError alone would hide the real origin from the user or handling code. Perhaps the right error to raise should be a type('Specific', (FileNotFound, IndexError), {})?
The text was updated successfully, but these errors were encountered:
Several things came to my attention during the development of py2store, whose prior knowledge would have probably made me make different choices. There is a need to comb through the code and find where these better choices should be made.
(1) I didn't know about
__missing__
, which can probably be used advantageously.(2) If a class has a
__getitem__
, but not a__iter__
, it still uses__getitem__
on integers to possibly create iterable. This seems to be a not-so-great legacy from the past. But it's still there. I wouldn't want to create code that relies on it, but probably better to make sure we disable iteration when there's not an explicit__iter__
, to avoid bugs or confusing behavior. I got one already when doinglist(misc_objs)
and got:See:
(3) python docs says: Note for loops expect that an IndexError will be raised for illegal indexes to allow proper detection of the end of the sequence. Sometimes I decided to raise the "local" error (such as
FileNotFound
, etc.). This is also useful because the userIndexError
alone would hide the real origin from the user or handling code. Perhaps the right error to raise should be atype('Specific', (FileNotFound, IndexError), {})
?The text was updated successfully, but these errors were encountered: