Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

p2ch10_explore_data.ipynp import errors for the util.disk #22

Closed
alphahmed opened this issue Sep 20, 2020 · 3 comments
Closed

p2ch10_explore_data.ipynp import errors for the util.disk #22

alphahmed opened this issue Sep 20, 2020 · 3 comments

Comments

@alphahmed
Copy link

alphahmed commented Sep 20, 2020

It seems that BytesType and BytesIO are no longer included in the diskcashe 5.0.3 module

ImportError                               Traceback (most recent call last)
<ipython-input-2-6816886bb81a> in <module>
----> 1 from p2ch10.dsets_edited import getCandidateInfoList, getCt, LunaDataset
      2 candidateInfo_list = getCandidateInfoList(requireOnDisk_bool=False)
      3 positiveInfo_list = [x for x in candidateInfo_list if x[0]]
      4 diameter_list = [x[1] for x in positiveInfo_list]

~/PyTorchBook/dlwpt-code/p2ch10/dsets_edited.py in <module>
     14 from torch.utils.data import Dataset
     15 
---> 16 from util.disk import getCache
     17 from util.util import XyzTuple, xyz2irc
     18 from util.logconf import logging

~/PyTorchBook/dlwpt-code/util/disk.py in <module>
      2 
      3 from diskcache import FanoutCache, Disk
----> 4 from diskcache.core import BytesType, MODE_BINARY, BytesIO
      5 
      6 from util.logconf import logging

ImportError: cannot import name 'BytesType' from 'diskcache.core'
@alphahmed
Copy link
Author

alphahmed commented Sep 20, 2020

A name error results when BytesType is called in the GzipDisk class in disk.py due to the BytesType removal

NameError                                 Traceback (most recent call last)
<ipython-input-8-71970eef6fb4> in <module>
      1 series_uid = positiveSample_list[11][2]
----> 2 showCandidate(series_uid)

~/PyTorchBook/dlwpt-code/p2ch10/vis_edited.py in showCandidate(series_uid, batch_ndx, **kwargs)
     35 
     36     ct = Ct(series_uid)
---> 37     ct_t, pos_t, series_uid, center_irc = ds[batch_ndx]
     38     ct_a = ct_t[0].numpy()
     39 

~/PyTorchBook/dlwpt-code/p2ch10/dsets_edited.py in __getitem__(self, ndx)
    181         width_irc = (32, 48, 48)
    182 
--> 183         candidate_a, center_irc = getCtRawCandidate(
    184             candidateInfo_tup.series_uid,
    185             candidateInfo_tup.center_xyz,

~/anaconda3/lib/python3.8/site-packages/diskcache/core.py in wrapper(*args, **kwargs)
   1859                     result = func(*args, **kwargs)
   1860                     if expire is None or expire > 0:
-> 1861                         self.set(key, result, expire, tag=tag, retry=True)
   1862 
   1863                 return result

~/anaconda3/lib/python3.8/site-packages/diskcache/fanout.py in set(self, key, value, expire, read, tag, retry)
     84         shard = self._shards[index]
     85         try:
---> 86             return shard.set(key, value, expire, read, tag, retry)
     87         except Timeout:
     88             return False

~/anaconda3/lib/python3.8/site-packages/diskcache/core.py in set(self, key, value, expire, read, tag, retry)
    770         db_key, raw = self._disk.put(key)
    771         expire_time = None if expire is None else now + expire
--> 772         size, mode, filename, db_value = self._disk.store(value, read, key=key)
    773         columns = (expire_time, tag, size, mode, filename, db_value)
    774 

~/PyTorchBook/dlwpt-code/util/disk_edited.py in store(self, value, read, key)
     27         """
     28         # pylint: disable=unidiomatic-typecheck
---> 29         if type(value) is BytesType:
     30             if read:
     31                 value = value.read()

NameError: name 'BytesType' is not defined

Changing the line if type(value) is BytesType: into if isinstance(value, bytes) seems to work, and the following str_io = BytesIO() seems to work fine with importing the BytesIO from io module.

@Dongfang-Liu
Copy link

BytesIO() is also removed from the 'diskcache.core'. In disk.py, import io, and replace str_io = BytesIO() with str_io = io.BytesIO()

@alphahmed
Copy link
Author

My suggestions of importing BytesIO from the io module, and replacing if type(value) is BytesType: with if isinstance(value, bytes) seem to be working fine, therefore, This issue can be closed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants