Skip to content

Multiple errors from code example in Datasets doc page #79

@drscotthawley

Description

@drscotthawley

Hi. I'm excited to try this but having trouble with the instructions. Taking the code from the page: https://salu133445.github.io/muspy/datasets/index.html

Even just the top part:

import muspy

# Download and extract the dataset
nes = muspy.NESMusicDatabase("data/nes/", download_and_extract=True)

Results in the error:

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
[<ipython-input-3-8aca46b7f8b4>](https://localhost:8080/#) in <cell line: 4>()
      2 
      3 # Download and extract the dataset
----> 4 nes = muspy.NESMusicDatabase("data/nes/", download_and_extract=True)
      5 
      6 # Convert the dataset to MusPy Music objects

2 frames
[/usr/local/lib/python3.10/dist-packages/muspy/datasets/base.py](https://localhost:8080/#) in __init__(self, root, download_and_extract, overwrite, cleanup, convert, kind, n_jobs, ignore_exceptions, use_converted, verbose)
   1113         verbose: bool = True,
   1114     ):
-> 1115         RemoteDataset.__init__(
   1116             self,
   1117             root,

[/usr/local/lib/python3.10/dist-packages/muspy/datasets/base.py](https://localhost:8080/#) in __init__(self, root, download_and_extract, overwrite, cleanup, verbose)
    572         super().__init__()
    573         self.root = Path(root).expanduser().resolve()
--> 574         self.root.mkdir(exist_ok=True)
    575 
    576         if download_and_extract:

[/usr/lib/python3.10/pathlib.py](https://localhost:8080/#) in mkdir(self, mode, parents, exist_ok)
   1173         """
   1174         try:
-> 1175             self._accessor.mkdir(self, mode)
   1176         except FileNotFoundError:
   1177             if not parents or self.parent == self:

FileNotFoundError: [Errno 2] No such file or directory: '/content/data/nes'

Apparently it's not creating the directory it needs, however that's not the only issue. If I manually create the directory via

mkdir -p /content/data/nes

and then re-run that code, then we get a new errors:

Downloading source : http://deepyeti.ucsd.edu/cdonahue/nesmdb/nesmdb_midi.tar.gz ...
---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
[<ipython-input-6-523fa1721f76>](https://localhost:8080/#) in <cell line: 4>()
      2 
      3 # Download and extract the dataset
----> 4 nes = muspy.NESMusicDatabase("data/nes/", download_and_extract=True)

11 frames
[/usr/local/lib/python3.10/dist-packages/muspy/datasets/base.py](https://localhost:8080/#) in __init__(self, root, download_and_extract, overwrite, cleanup, convert, kind, n_jobs, ignore_exceptions, use_converted, verbose)
   1113         verbose: bool = True,
   1114     ):
-> 1115         RemoteDataset.__init__(
   1116             self,
   1117             root,

[/usr/local/lib/python3.10/dist-packages/muspy/datasets/base.py](https://localhost:8080/#) in __init__(self, root, download_and_extract, overwrite, cleanup, verbose)
    575 
    576         if download_and_extract:
--> 577             self.download_and_extract(
    578                 overwrite=overwrite, cleanup=cleanup, verbose=verbose
    579             )

[/usr/local/lib/python3.10/dist-packages/muspy/datasets/base.py](https://localhost:8080/#) in download_and_extract(self, overwrite, cleanup, verbose)
    705 
    706         """
--> 707         return self.download(overwrite=overwrite, verbose=verbose).extract(
    708             cleanup=cleanup, verbose=verbose
    709         )

[/usr/local/lib/python3.10/dist-packages/muspy/datasets/base.py](https://localhost:8080/#) in download(self, overwrite, verbose)
    641 
    642         for source in self._sources.values():
--> 643             download_url(
    644                 source["url"],
    645                 self.root / source["filename"],

[/usr/local/lib/python3.10/dist-packages/muspy/datasets/utils.py](https://localhost:8080/#) in download_url(url, path, overwrite, size, md5, sha256, verbose)
    171     if verbose:
    172         print(f"Downloading source : {url} ...")
--> 173         urlretrieve(url, path, reporthook=_ProgressBar())
    174         print(f"Successfully downloaded source : {path} .")
    175     else:

[/usr/lib/python3.10/urllib/request.py](https://localhost:8080/#) in urlretrieve(url, filename, reporthook, data)
    239     url_type, path = _splittype(url)
    240 
--> 241     with contextlib.closing(urlopen(url, data)) as fp:
    242         headers = fp.info()
    243 

[/usr/lib/python3.10/urllib/request.py](https://localhost:8080/#) in urlopen(url, data, timeout, cafile, capath, cadefault, context)
    214     else:
    215         opener = _opener
--> 216     return opener.open(url, data, timeout)
    217 
    218 def install_opener(opener):

[/usr/lib/python3.10/urllib/request.py](https://localhost:8080/#) in open(self, fullurl, data, timeout)
    523         for processor in self.process_response.get(protocol, []):
    524             meth = getattr(processor, meth_name)
--> 525             response = meth(req, response)
    526 
    527         return response

[/usr/lib/python3.10/urllib/request.py](https://localhost:8080/#) in http_response(self, request, response)
    632         # request was successfully received, understood, and accepted.
    633         if not (200 <= code < 300):
--> 634             response = self.parent.error(
    635                 'http', request, response, code, msg, hdrs)
    636 

[/usr/lib/python3.10/urllib/request.py](https://localhost:8080/#) in error(self, proto, *args)
    561         if http_err:
    562             args = (dict, 'default', 'http_error_default') + orig_args
--> 563             return self._call_chain(*args)
    564 
    565 # XXX probably also want an abstract factory that knows when it makes

[/usr/lib/python3.10/urllib/request.py](https://localhost:8080/#) in _call_chain(self, chain, kind, meth_name, *args)
    494         for handler in handlers:
    495             func = getattr(handler, meth_name)
--> 496             result = func(*args)
    497             if result is not None:
    498                 return result

[/usr/lib/python3.10/urllib/request.py](https://localhost:8080/#) in http_error_default(self, req, fp, code, msg, hdrs)
    641 class HTTPDefaultErrorHandler(BaseHandler):
    642     def http_error_default(self, req, fp, code, msg, hdrs):
--> 643         raise HTTPError(req.full_url, code, msg, hdrs, fp)
    644 
    645 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 308: Permanent Redirect

Steps to reproduce:

  1. pip install muspy
  2. Copy & past above code.

Here's a link to a Colab notebook where this is implemented:
https://colab.research.google.com/drive/1dGwwqoJ1fa53zeKQCNdL9jvce_qEUF3B?usp=sharing

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions