jupyterlite-sphinx icon indicating copy to clipboard operation
jupyterlite-sphinx copied to clipboard

ipyleaflet example linked in the Readme does not work

Open bhugueney opened this issue 1 year ago • 1 comments

Hi, Thank you for this amazing project ! I'm not sure if this is the best place to report the bug in ipyleaflet documentation, forgive me if I'm mistaken. If this cannot be fixed on your side, I thought it would be nice to edit the Readme to link to a working example, hence this report here.

Description

When following the ipyleaflet link in the Readme, to try the jupyterlite widget, I get

-------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[1], line 2
      1 import piplite
----> 2 await piplite.install('ipyleaflet')

File /lib/python3.9/asyncio/futures.py:284, in Future.__await__(self)
    282 if not self.done():
    283     self._asyncio_future_blocking = True
--> 284     yield self  # This tells Task to wait for completion.
    285 if not self.done():
    286     raise RuntimeError("await wasn't used with future")

File /lib/python3.9/asyncio/tasks.py:328, in Task.__wakeup(self, future)
    326 def __wakeup(self, future):
    327     try:
--> 328         future.result()
    329     except BaseException as exc:
    330         # This may also be a cancellation.
    331         self.__step(exc)

File /lib/python3.9/asyncio/futures.py:201, in Future.result(self)
    199 self.__log_traceback = False
    200 if self._exception is not None:
--> 201     raise self._exception
    202 return self._result

File /lib/python3.9/asyncio/tasks.py:258, in Task.__step(***failed resolving arguments***)
    256         result = coro.send(None)
    257     else:
--> 258         result = coro.throw(exc)
    259 except StopIteration as exc:
    260     if self._must_cancel:
    261         # Task is cancelled right before coro stops.

File /lib/python3.9/site-packages/piplite/piplite.py:80, in _PackageManager.install(self, requirements, ctx, keep_going)
     76 async def install(
     77     self, requirements: Union[str, List[str]], ctx=None, keep_going: bool = False
     78 ):
     79     with patch("micropip._micropip._get_pypi_json", _get_pypi_json):
---> 80         return await _MP_PACKAGE_MANAGER.install(requirements, ctx, keep_going)

File /lib/python3.9/site-packages/micropip/_micropip.py:185, in _PackageManager.install(self, requirements, ctx, keep_going)
    182     await install_func
    183     done_callback()
--> 185 transaction = await self.gather_requirements(requirements, ctx, keep_going)
    187 if transaction["failed"]:
    188     failed_requirements = ", ".join(
    189         [f"'{req}'" for req in transaction["failed"]]
    190     )

File /lib/python3.9/site-packages/micropip/_micropip.py:175, in _PackageManager.gather_requirements(self, requirements, ctx, keep_going)
    170 for requirement in requirements:
    171     requirement_promises.append(
    172         self.add_requirement(requirement, ctx, transaction)
    173     )
--> 175 await gather(*requirement_promises)
    176 return transaction

File /lib/python3.9/asyncio/futures.py:284, in Future.__await__(self)
    282 if not self.done():
    283     self._asyncio_future_blocking = True
--> 284     yield self  # This tells Task to wait for completion.
    285 if not self.done():
    286     raise RuntimeError("await wasn't used with future")

File /lib/python3.9/asyncio/tasks.py:328, in Task.__wakeup(self, future)
    326 def __wakeup(self, future):
    327     try:
--> 328         future.result()
    329     except BaseException as exc:
    330         # This may also be a cancellation.
    331         self.__step(exc)

File /lib/python3.9/asyncio/futures.py:201, in Future.result(self)
    199 self.__log_traceback = False
    200 if self._exception is not None:
--> 201     raise self._exception
    202 return self._result

File /lib/python3.9/asyncio/tasks.py:256, in Task.__step(***failed resolving arguments***)
    252 try:
    253     if exc is None:
    254         # We use the `send` method directly, because coroutines
    255         # don't have `__iter__` and `__next__` methods.
--> 256         result = coro.send(None)
    257     else:
    258         result = coro.throw(exc)

File /lib/python3.9/site-packages/micropip/_micropip.py:295, in _PackageManager.add_requirement(self, requirement, ctx, transaction)
    290         raise ValueError(
    291             f"Couldn't find a pure Python 3 wheel for '{req}'. "
    292             "You can use `micropip.install(..., keep_going=True)` to get a list of all packages with missing wheels."
    293         )
    294 else:
--> 295     await self.add_wheel(req.name, wheel, ver, req.extras, ctx, transaction)

File /lib/python3.9/site-packages/micropip/_micropip.py:305, in _PackageManager.add_wheel(self, name, wheel, version, extras, ctx, transaction)
    303     dist = pkg_resources_distribution_for_wheel(zip_file, name, "???")
    304 for recurs_req in dist.requires(extras):
--> 305     await self.add_requirement(recurs_req, ctx, transaction)
    307 transaction["wheels"].append((name, wheel, version))

File /lib/python3.9/site-packages/micropip/_micropip.py:295, in _PackageManager.add_requirement(self, requirement, ctx, transaction)
    290         raise ValueError(
    291             f"Couldn't find a pure Python 3 wheel for '{req}'. "
    292             "You can use `micropip.install(..., keep_going=True)` to get a list of all packages with missing wheels."
    293         )
    294 else:
--> 295     await self.add_wheel(req.name, wheel, ver, req.extras, ctx, transaction)

File /lib/python3.9/site-packages/micropip/_micropip.py:305, in _PackageManager.add_wheel(self, name, wheel, version, extras, ctx, transaction)
    303     dist = pkg_resources_distribution_for_wheel(zip_file, name, "???")
    304 for recurs_req in dist.requires(extras):
--> 305     await self.add_requirement(recurs_req, ctx, transaction)
    307 transaction["wheels"].append((name, wheel, version))

File /lib/python3.9/site-packages/micropip/_micropip.py:290, in _PackageManager.add_requirement(self, requirement, ctx, transaction)
    288         transaction["failed"].append(req)
    289     else:
--> 290         raise ValueError(
    291             f"Couldn't find a pure Python 3 wheel for '{req}'. "
    292             "You can use `micropip.install(..., keep_going=True)` to get a list of all packages with missing wheels."
    293         )
    294 else:
    295     await self.add_wheel(req.name, wheel, ver, req.extras, ctx, transaction)

ValueError: Couldn't find a pure Python 3 wheel for 'widgetsnbextension~=4.0'. You can use `micropip.install(..., keep_going=True)` to get a list of all packages with missing wheels.

Reproduce

  1. On the Readme of jupyterlite-sphinx
  2. Click on ipyleaflet
  3. Click on "Run"→"Run All Cells"
  4. See error above

Expected behavior

I expected the embedded jupyterlite notebook to be able to import the module and run.

Context

  • JupyterLite version: Version: 0.1.0-beta.4
  • Operating System and version: Debian 6.1.4-1 (2023-01-07) x86_64 GNU/Linux
  • Browser and version: firefox 102.7.0esr (64-bit)

bhugueney avatar Feb 18 '23 12:02 bhugueney