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

AttributeError: 'EntryPoints' object has no attribute 'get' #2146

Open
parmentelat opened this issue May 1, 2024 · 3 comments
Open

AttributeError: 'EntryPoints' object has no attribute 'get' #2146

parmentelat opened this issue May 1, 2024 · 3 comments
Labels
bug Something isn't working

Comments

@parmentelat
Copy link

Describe the bug

context
When I do

jupyter book toc migrate _toc.yml
# but also
jupyter book --help

bug
I am consistently getting a stack dump ending with

  File "/some/path/lib/python3.12/site-packages/click/core.py", line 1325, in get_help
    self.format_help(ctx, formatter)
  File "/some/path/lib/python3.12/site-packages/click/core.py", line 1358, in format_help
    self.format_options(ctx, formatter)
  File "/some/path/lib/python3.12/site-packages/click/core.py", line 1564, in format_options
    self.format_commands(ctx, formatter)
  File "/some/path/lib/python3.12/site-packages/click/core.py", line 1616, in format_commands
    for subcommand in self.list_commands(ctx):
                      ^^^^^^^^^^^^^^^^^^^^^^^
  File "/some/path/lib/python3.12/site-packages/jupyter_book/cli/pluggable.py", line 38, in list_commands
    subcommands.extend(get_entry_point_names(self._entry_point_group))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/some/path/lib/python3.12/site-packages/jupyter_book/cli/pluggable.py", line 13, in get_entry_point_names
    return [ep.name for ep in metadata.entry_points().get(group, [])]
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'EntryPoints' object has no attribute 'get'

problem
obviously the command is having problems displaying its own help...?

note that running a valid command like jupyter book build . works fine

Reproduce the bug

just run the above commands

List your environment

this is on MacOS sonoma 14.4.1

$ jupyter book --version
Jupyter Book      : 1.0.0
External ToC      : 1.0.1
MyST-Parser       : 3.0.1
MyST-NB           : 1.1.0
Sphinx Book Theme : 1.1.2
Jupyter-Cache     : 1.0.0
NbClient          : 0.10.0

$ python --version
Python 3.12.3
@parmentelat parmentelat added the bug Something isn't working label May 1, 2024
@mango-matt
Copy link

I have a similar problem. Not sure what the root cause is but downgrading to python3.11 provided a temporary workaround

@iso2013
Copy link

iso2013 commented May 10, 2024

I have the same issue, running the same configuration except with MyST-Parser version 2.0.0.

@iso2013
Copy link

iso2013 commented May 12, 2024

This appears to be because the SelectableGroups class, which implemented a dictionary-like interface for the result of entry_points is deprecated and was removed in Python 3.12.

Here's the class in Python 3.11., and here's the file in 3.12.

The removal of this class means that the function entry_points() in 3.12 can no longer return a dictionary-like object like it did in 3.11.

Unfortunately I think these API changes are to be expected between 3.8 and 3.12, since importlib's metadata functionality was new in 3.8 and only considered to be provisional.

I would suggest either checking to see first if entry_points(group=group) gives an error, and if it does, fall back to the current implementation.
I can open a PR soon, although I'm not sure if the suggested fix would be to add this sort of edge case handling, or instead just update the whole project to 3.12 - it seems like from these lines there's some kind of handling of multiple versions.

Edit: From what I can tell, import importlib.metadata would only throw an error before Python 3.8, so those lines can probably be removed outright, since the project seems to require at least 3.9.

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

3 participants