I'm using my own implementation of the memoize by shelve module. In the attachment, there are 2 simple test cases which pass but the console there are a lot of messages like that:
Exception ignored in: <function Shelf.__del__ at 0x0000023202F363A0>
Traceback (most recent call last):
File "C:\Miniconda2\envs\38_common\lib\shelve.py", line 162, in __del__
self.close()
File "C:\Miniconda2\envs\38_common\lib\shelve.py", line 144, in close
self.sync()
File "C:\Miniconda2\envs\38_common\lib\shelve.py", line 172, in sync
self.dict.sync()
File "C:\Miniconda2\envs\38_common\lib\dbm\dumb.py", line 129, in _commit
with self._io.open(self._dirfile, 'w', encoding="Latin-1") as f:
PermissionError: [Errno 13] Permission denied: 'C:\\project\\tests\\test_memoize_tmp_t5tai08p\\memoize_test_file.dat.dir'
Exception ignored in: <function _Database.close at 0x0000023202EF9040>
Traceback (most recent call last):
File "C:\Miniconda2\envs\38_common\lib\dbm\dumb.py", line 274, in close
self._commit()
File "C:\Miniconda2\envs\38_common\lib\dbm\dumb.py", line 129, in _commit
with self._io.open(self._dirfile, 'w', encoding="Latin-1") as f:
PermissionError: [Errno 13] Permission denied: 'C:\\project\\tests\\test_memoize_tmp_t5tai08p\\memoize_test_file.dat.dir'
Basically, the main issue can be explained like that - Python dbm.dumb._Database should maintain self._modified the attribute in the right way(set it to False) after the _commit method.
Later I will try to make changes in the dbm.dumb module and run Python internal tests for that modification to see any regression, if not will add PR here.
|