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

ipyleaflet example linked in the Readme does not work #88

Open
bhugueney opened this issue Feb 18, 2023 · 1 comment
Open

ipyleaflet example linked in the Readme does not work #88

bhugueney opened this issue Feb 18, 2023 · 1 comment
Labels
bug Something isn't working

Comments

@bhugueney
Copy link

bhugueney commented Feb 18, 2023

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 bhugueney added the bug Something isn't working label Feb 18, 2023
@jtpio
Copy link
Member

jtpio commented Mar 13, 2023

Thanks @bhugueney for the report.

This is likely an issue with the JupyterLite setup on the ipyleaflet repo. I think one of these two PRs is related and should fix the issue:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants