Skip to content
New issue

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

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

Already on GitHub? # to your account

bug: setuptools editable install finder with ast.AnnAssign leads to unfound modules #273

Closed
machow opened this issue May 23, 2024 · 3 comments
Assignees
Labels
bug Something isn't working

Comments

@machow
Copy link
Contributor

machow commented May 23, 2024

Hey, thanks for your work on griffe! It's been working really great, so I haven't had much to raise here 😁, but I stumbled on an issue that might be related to setuptools putting annotations in its editable install artifacts.

Description of the bug

Recently, while debugging a doc build for py-shiny, I noticed that the editable finder code was using ast.AnnAssign, while griffe looks for ast.Assign. As best I can tell, this led to griffe not finding the editable shiny install. It appears that griffe looks for an ast.Assign node, which is not a parent of ast.AnnAssign 😢 .

Below are the relevant lines of site-packages/__editable___shiny_0_9_0_9000_finder.py:

from __future__ import annotations
import sys
from importlib.machinery import ModuleSpec, PathFinder
from importlib.machinery import all_suffixes as module_suffixes
from importlib.util import spec_from_file_location
from itertools import chain
from pathlib import Path

# NOTE THE ANNOTATION BELOW ----
MAPPING: dict[str, str] = {'shiny': '/Users/machow/repos/py-shiny/shiny'}
NAMESPACES: dict[str, list[str]] = {'shiny.api-examples': ['/Users/machow/repos/py-shiny/shiny/api-examples'], 'shiny.www': ['/Users/machow/repos/py-shiny/shiny/www'], 'shiny.templates': ['/Users/machow/repos/py-shiny/shiny/templates'], 'shiny.experimental.api-examples': ['/Users/machow/repos/py-shiny/shiny/experimental/api-examples'], 'shiny.experimental.api-examples.card_image': ['/Users/machow/repos/py-shiny/shiny/experimental/api-examples/card_image'], 'shiny.experimental.api-examples.card_title': ['/Users/machow/repos/py-shiny/shiny/experimental/api-examples/card_title'], 'shiny.express.display_decorator': ['/Users/machow/repos/py-shiny/shiny/express/display_decorator'], 'shiny.api-examples.as_fillable_container': ['/Users/machow/repos/py-shiny/shiny/api-examples/as_fillable_container'], 'shiny.api-examples.sidebar': ['/Users/machow/repos/py-shiny/shiny/api-examples/sidebar'], 'shiny.api-examples.input_selectize': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_selectize'], 'shiny.api-examples.insert_ui': ['/Users/machow/repos/py-shiny/shiny/api-examples/insert_ui'], 'shiny.api-examples.notification_show': ['/Users/machow/repos/py-shiny/shiny/api-examples/notification_show'], 'shiny.api-examples.invalidate_later': ['/Users/machow/repos/py-shiny/shiny/api-examples/invalidate_later'], 'shiny.api-examples.Renderer': ['/Users/machow/repos/py-shiny/shiny/api-examples/Renderer'], 'shiny.api-examples.tooltip': ['/Users/machow/repos/py-shiny/shiny/api-examples/tooltip'], 'shiny.api-examples.card_body': ['/Users/machow/repos/py-shiny/shiny/api-examples/card_body'], 'shiny.api-examples.input_password': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_password'], 'shiny.api-examples.SilentException': ['/Users/machow/repos/py-shiny/shiny/api-examples/SilentException'], 'shiny.api-examples.card': ['/Users/machow/repos/py-shiny/shiny/api-examples/card'], 'shiny.api-examples.update_checkbox_group': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_checkbox_group'], 'shiny.api-examples.close': ['/Users/machow/repos/py-shiny/shiny/api-examples/close'], 'shiny.api-examples.output_image': ['/Users/machow/repos/py-shiny/shiny/api-examples/output_image'], 'shiny.api-examples.Progress': ['/Users/machow/repos/py-shiny/shiny/api-examples/Progress'], 'shiny.api-examples.input_text_area': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_text_area'], 'shiny.api-examples.input_radio_buttons': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_radio_buttons'], 'shiny.api-examples.layout_columns': ['/Users/machow/repos/py-shiny/shiny/api-examples/layout_columns'], 'shiny.api-examples.download_link': ['/Users/machow/repos/py-shiny/shiny/api-examples/download_link'], 'shiny.api-examples.input_dark_mode': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_dark_mode'], 'shiny.api-examples.on_flushed': ['/Users/machow/repos/py-shiny/shiny/api-examples/on_flushed'], 'shiny.api-examples.input_date_range': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_date_range'], 'shiny.api-examples.isolate': ['/Users/machow/repos/py-shiny/shiny/api-examples/isolate'], 'shiny.api-examples.input_action_button': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_action_button'], 'shiny.api-examples.navset_hidden': ['/Users/machow/repos/py-shiny/shiny/api-examples/navset_hidden'], 'shiny.api-examples.SilentCancelOutputException': ['/Users/machow/repos/py-shiny/shiny/api-examples/SilentCancelOutputException'], 'shiny.api-examples.showcase_left_center': ['/Users/machow/repos/py-shiny/shiny/api-examples/showcase_left_center'], 'shiny.api-examples.accordion': ['/Users/machow/repos/py-shiny/shiny/api-examples/accordion'], 'shiny.api-examples.markdown': ['/Users/machow/repos/py-shiny/shiny/api-examples/markdown'], 'shiny.api-examples.update_navs': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_navs'], 'shiny.api-examples.update_numeric': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_numeric'], 'shiny.api-examples.Module': ['/Users/machow/repos/py-shiny/shiny/api-examples/Module'], 'shiny.api-examples.card_footer': ['/Users/machow/repos/py-shiny/shiny/api-examples/card_footer'], 'shiny.api-examples.todo_list': ['/Users/machow/repos/py-shiny/shiny/api-examples/todo_list'], 'shiny.api-examples.data_frame': ['/Users/machow/repos/py-shiny/shiny/api-examples/data_frame'], 'shiny.api-examples.output_ui': ['/Users/machow/repos/py-shiny/shiny/api-examples/output_ui'], 'shiny.api-examples.update_popover': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_popover'], 'shiny.api-examples.include_js': ['/Users/machow/repos/py-shiny/shiny/api-examples/include_js'], 'shiny.api-examples.panel_absolute': ['/Users/machow/repos/py-shiny/shiny/api-examples/panel_absolute'], 'shiny.api-examples.input_checkbox': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_checkbox'], 'shiny.api-examples.Value': ['/Users/machow/repos/py-shiny/shiny/api-examples/Value'], 'shiny.api-examples.template': ['/Users/machow/repos/py-shiny/shiny/api-examples/template'], 'shiny.api-examples.input_text': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_text'], 'shiny.api-examples.dynamic_route': ['/Users/machow/repos/py-shiny/shiny/api-examples/dynamic_route'], 'shiny.api-examples.effect': ['/Users/machow/repos/py-shiny/shiny/api-examples/effect'], 'shiny.api-examples.panel_title': ['/Users/machow/repos/py-shiny/shiny/api-examples/panel_title'], 'shiny.api-examples.update_date': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_date'], 'shiny.api-examples.remove_accordion_panel': ['/Users/machow/repos/py-shiny/shiny/api-examples/remove_accordion_panel'], 'shiny.api-examples.input_slider': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_slider'], 'shiny.api-examples.output_text': ['/Users/machow/repos/py-shiny/shiny/api-examples/output_text'], 'shiny.api-examples.page_fixed': ['/Users/machow/repos/py-shiny/shiny/api-examples/page_fixed'], 'shiny.api-examples.update_select': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_select'], 'shiny.api-examples.update_accordion_panel': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_accordion_panel'], 'shiny.api-examples.update_checkbox': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_checkbox'], 'shiny.api-examples.layout_column_wrap': ['/Users/machow/repos/py-shiny/shiny/api-examples/layout_column_wrap'], 'shiny.api-examples.showcase_top_right': ['/Users/machow/repos/py-shiny/shiny/api-examples/showcase_top_right'], 'shiny.api-examples.extended_task': ['/Users/machow/repos/py-shiny/shiny/api-examples/extended_task'], 'shiny.api-examples.calc': ['/Users/machow/repos/py-shiny/shiny/api-examples/calc'], 'shiny.api-examples.popover': ['/Users/machow/repos/py-shiny/shiny/api-examples/popover'], 'shiny.api-examples.req': ['/Users/machow/repos/py-shiny/shiny/api-examples/req'], 'shiny.api-examples.insert_accordion_panel': ['/Users/machow/repos/py-shiny/shiny/api-examples/insert_accordion_panel'], 'shiny.api-examples.download_button': ['/Users/machow/repos/py-shiny/shiny/api-examples/download_button'], 'shiny.api-examples.row': ['/Users/machow/repos/py-shiny/shiny/api-examples/row'], 'shiny.api-examples.output_plot': ['/Users/machow/repos/py-shiny/shiny/api-examples/output_plot'], 'shiny.api-examples.accordion_panel': ['/Users/machow/repos/py-shiny/shiny/api-examples/accordion_panel'], 'shiny.api-examples.SafeException': ['/Users/machow/repos/py-shiny/shiny/api-examples/SafeException'], 'shiny.api-examples.include_css': ['/Users/machow/repos/py-shiny/shiny/api-examples/include_css'], 'shiny.api-examples.render_express': ['/Users/machow/repos/py-shiny/shiny/api-examples/render_express'], 'shiny.api-examples.input_file': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_file'], 'shiny.api-examples.nav_panel': ['/Users/machow/repos/py-shiny/shiny/api-examples/nav_panel'], 'shiny.api-examples.data_frame_data_view': ['/Users/machow/repos/py-shiny/shiny/api-examples/data_frame_data_view'], 'shiny.api-examples.page_fluid': ['/Users/machow/repos/py-shiny/shiny/api-examples/page_fluid'], 'shiny.api-examples.theme': ['/Users/machow/repos/py-shiny/shiny/api-examples/theme'], 'shiny.api-examples.download': ['/Users/machow/repos/py-shiny/shiny/api-examples/download'], 'shiny.api-examples.output_transformer': ['/Users/machow/repos/py-shiny/shiny/api-examples/output_transformer'], 'shiny.api-examples.as_fill_item': ['/Users/machow/repos/py-shiny/shiny/api-examples/as_fill_item'], 'shiny.api-examples.update_action_button': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_action_button'], 'shiny.api-examples.data_frame_set_patches': ['/Users/machow/repos/py-shiny/shiny/api-examples/data_frame_set_patches'], 'shiny.api-examples.on_flush': ['/Users/machow/repos/py-shiny/shiny/api-examples/on_flush'], 'shiny.api-examples.input_switch': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_switch'], 'shiny.api-examples.card_header': ['/Users/machow/repos/py-shiny/shiny/api-examples/card_header'], 'shiny.api-examples.update_selectize': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_selectize'], 'shiny.api-examples.input_numeric': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_numeric'], 'shiny.api-examples.render_image': ['/Users/machow/repos/py-shiny/shiny/api-examples/render_image'], 'shiny.api-examples.input_action_link': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_action_link'], 'shiny.api-examples.update_tooltip': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_tooltip'], 'shiny.api-examples.output_table': ['/Users/machow/repos/py-shiny/shiny/api-examples/output_table'], 'shiny.api-examples.page_opts': ['/Users/machow/repos/py-shiny/shiny/api-examples/page_opts'], 'shiny.api-examples.update_slider': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_slider'], 'shiny.api-examples.on_ended': ['/Users/machow/repos/py-shiny/shiny/api-examples/on_ended'], 'shiny.api-examples.input_select': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_select'], 'shiny.api-examples.update_radio_buttons': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_radio_buttons'], 'shiny.api-examples.update_sidebar': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_sidebar'], 'shiny.api-examples.modal': ['/Users/machow/repos/py-shiny/shiny/api-examples/modal'], 'shiny.api-examples.input_checkbox_group': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_checkbox_group'], 'shiny.api-examples.value_box': ['/Users/machow/repos/py-shiny/shiny/api-examples/value_box'], 'shiny.api-examples.busy_indicators': ['/Users/machow/repos/py-shiny/shiny/api-examples/busy_indicators'], 'shiny.api-examples.www_dir': ['/Users/machow/repos/py-shiny/shiny/api-examples/www_dir'], 'shiny.api-examples.page_sidebar': ['/Users/machow/repos/py-shiny/shiny/api-examples/page_sidebar'], 'shiny.api-examples.panel_conditional': ['/Users/machow/repos/py-shiny/shiny/api-examples/panel_conditional'], 'shiny.api-examples.event': ['/Users/machow/repos/py-shiny/shiny/api-examples/event'], 'shiny.api-examples.showcase_bottom': ['/Users/machow/repos/py-shiny/shiny/api-examples/showcase_bottom'], 'shiny.api-examples.file_reader': ['/Users/machow/repos/py-shiny/shiny/api-examples/file_reader'], 'shiny.api-examples.update_text': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_text'], 'shiny.api-examples.poll': ['/Users/machow/repos/py-shiny/shiny/api-examples/poll'], 'shiny.api-examples.send_custom_message': ['/Users/machow/repos/py-shiny/shiny/api-examples/send_custom_message'], 'shiny.api-examples.remove_ui': ['/Users/machow/repos/py-shiny/shiny/api-examples/remove_ui'], 'shiny.api-examples.input_date': ['/Users/machow/repos/py-shiny/shiny/api-examples/input_date'], 'shiny.api-examples.update_accordion': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_accordion'], 'shiny.api-examples.update_date_range': ['/Users/machow/repos/py-shiny/shiny/api-examples/update_date_range'], 'shiny.api-examples.layout_sidebar': ['/Users/machow/repos/py-shiny/shiny/api-examples/layout_sidebar'], 'shiny.api-examples.include_js.js': ['/Users/machow/repos/py-shiny/shiny/api-examples/include_js/js'], 'shiny.api-examples.include_css.css': ['/Users/machow/repos/py-shiny/shiny/api-examples/include_css/css'], 'shiny.api-examples.theme.css': ['/Users/machow/repos/py-shiny/shiny/api-examples/theme/css'], 'shiny.api-examples.www_dir.www': ['/Users/machow/repos/py-shiny/shiny/api-examples/www_dir/www'], 'shiny.api-examples.www_dir.www.css': ['/Users/machow/repos/py-shiny/shiny/api-examples/www_dir/www/css'], 'shiny.api-examples.www_dir.www.js': ['/Users/machow/repos/py-shiny/shiny/api-examples/www_dir/www/js'], 'shiny.www.shared': ['/Users/machow/repos/py-shiny/shiny/www/shared'], 'shiny.www.shared.selectize': ['/Users/machow/repos/py-shiny/shiny/www/shared/selectize'], 'shiny.www.shared.jqueryui': ['/Users/machow/repos/py-shiny/shiny/www/shared/jqueryui'], 'shiny.www.shared.htmltools': ['/Users/machow/repos/py-shiny/shiny/www/shared/htmltools'], 'shiny.www.shared.bootstrap': ['/Users/machow/repos/py-shiny/shiny/www/shared/bootstrap'], 'shiny.www.shared.highlight': ['/Users/machow/repos/py-shiny/shiny/www/shared/highlight'], 'shiny.www.shared.bslib': ['/Users/machow/repos/py-shiny/shiny/www/shared/bslib'], 'shiny.www.shared.strftime': ['/Users/machow/repos/py-shiny/shiny/www/shared/strftime'], 'shiny.www.shared.datepicker': ['/Users/machow/repos/py-shiny/shiny/www/shared/datepicker'], 'shiny.www.shared.jquery': ['/Users/machow/repos/py-shiny/shiny/www/shared/jquery'], 'shiny.www.shared.requirejs': ['/Users/machow/repos/py-shiny/shiny/www/shared/requirejs'], 'shiny.www.shared.ionrangeslider': ['/Users/machow/repos/py-shiny/shiny/www/shared/ionrangeslider'], 'shiny.www.shared.py-shiny': ['/Users/machow/repos/py-shiny/shiny/www/shared/py-shiny'], 'shiny.www.shared.showdown': ['/Users/machow/repos/py-shiny/shiny/www/shared/showdown'], 'shiny.www.shared.busy-indicators': ['/Users/machow/repos/py-shiny/shiny/www/shared/busy-indicators'], 'shiny.www.shared.selectize.css': ['/Users/machow/repos/py-shiny/shiny/www/shared/selectize/css'], 'shiny.www.shared.selectize.js': ['/Users/machow/repos/py-shiny/shiny/www/shared/selectize/js'], 'shiny.www.shared.selectize.scss': ['/Users/machow/repos/py-shiny/shiny/www/shared/selectize/scss'], 'shiny.www.shared.selectize.accessibility': ['/Users/machow/repos/py-shiny/shiny/www/shared/selectize/accessibility'], 'shiny.www.shared.selectize.scss.plugins': ['/Users/machow/repos/py-shiny/shiny/www/shared/selectize/scss/plugins'], 'shiny.www.shared.selectize.accessibility.js': ['/Users/machow/repos/py-shiny/shiny/www/shared/selectize/accessibility/js'], 'shiny.www.shared.jqueryui.images': ['/Users/machow/repos/py-shiny/shiny/www/shared/jqueryui/images'], 'shiny.www.shared.htmltools.fill': ['/Users/machow/repos/py-shiny/shiny/www/shared/htmltools/fill'], 'shiny.www.shared.bootstrap.fonts': ['/Users/machow/repos/py-shiny/shiny/www/shared/bootstrap/fonts'], 'shiny.www.shared.bootstrap.fonts.bootstrap': ['/Users/machow/repos/py-shiny/shiny/www/shared/bootstrap/fonts/bootstrap'], 'shiny.www.shared.bslib.components': ['/Users/machow/repos/py-shiny/shiny/www/shared/bslib/components'], 'shiny.www.shared.bslib.components.webComponents': ['/Users/machow/repos/py-shiny/shiny/www/shared/bslib/components/webComponents'], 'shiny.www.shared.datepicker.css': ['/Users/machow/repos/py-shiny/shiny/www/shared/datepicker/css'], 'shiny.www.shared.datepicker.js': ['/Users/machow/repos/py-shiny/shiny/www/shared/datepicker/js'], 'shiny.www.shared.datepicker.js.locales': ['/Users/machow/repos/py-shiny/shiny/www/shared/datepicker/js/locales'], 'shiny.www.shared.ionrangeslider.css': ['/Users/machow/repos/py-shiny/shiny/www/shared/ionrangeslider/css'], 'shiny.www.shared.ionrangeslider.js': ['/Users/machow/repos/py-shiny/shiny/www/shared/ionrangeslider/js'], 'shiny.www.shared.py-shiny.data-frame': ['/Users/machow/repos/py-shiny/shiny/www/shared/py-shiny/data-frame'], 'shiny.www.shared.py-shiny.page-output': ['/Users/machow/repos/py-shiny/shiny/www/shared/py-shiny/page-output'], 'shiny.www.shared.py-shiny.text-area': ['/Users/machow/repos/py-shiny/shiny/www/shared/py-shiny/text-area'], 'shiny.www.shared.py-shiny.spin': ['/Users/machow/repos/py-shiny/shiny/www/shared/py-shiny/spin'], 'shiny.www.shared.showdown.compressed': ['/Users/machow/repos/py-shiny/shiny/www/shared/showdown/compressed'], 'shiny.www.shared.showdown.src': ['/Users/machow/repos/py-shiny/shiny/www/shared/showdown/src'], 'shiny.www.shared.busy-indicators.spinners': ['/Users/machow/repos/py-shiny/shiny/www/shared/busy-indicators/spinners'], 'shiny.templates.package-templates': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates'], 'shiny.templates.app-templates': ['/Users/machow/repos/py-shiny/shiny/templates/app-templates'], 'shiny.templates.package-templates.js-output': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-output'], 'shiny.templates.package-templates.js-input': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-input'], 'shiny.templates.package-templates.js-react': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-react'], 'shiny.templates.package-templates.js-output.example-app': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-output/example-app'], 'shiny.templates.package-templates.js-output.srcts': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-output/srcts'], 'shiny.templates.package-templates.js-input.example-app': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-input/example-app'], 'shiny.templates.package-templates.js-input.srcts': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-input/srcts'], 'shiny.templates.package-templates.js-input.custom_component.distjs': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-input/custom_component/distjs'], 'shiny.templates.package-templates.js-react.example-app': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-react/example-app'], 'shiny.templates.package-templates.js-react.srcts': ['/Users/machow/repos/py-shiny/shiny/templates/package-templates/js-react/srcts'], 'shiny.templates.app-templates.basic-app': ['/Users/machow/repos/py-shiny/shiny/templates/app-templates/basic-app'], 'shiny.templates.app-templates.basic-navigation': ['/Users/machow/repos/py-shiny/shiny/templates/app-templates/basic-navigation'], 'shiny.templates.app-templates.dashboard': ['/Users/machow/repos/py-shiny/shiny/templates/app-templates/dashboard'], 'shiny.templates.app-templates.dashboard-tips': ['/Users/machow/repos/py-shiny/shiny/templates/app-templates/dashboard-tips'], 'shiny.templates.app-templates.basic-sidebar': ['/Users/machow/repos/py-shiny/shiny/templates/app-templates/basic-sidebar']}
PATH_PLACEHOLDER = '__editable__.shiny-0.9.0.9000.finder' + ".__path_hook__"

To Reproduce

  • install python 3.12 with the latest version of setuptools (v70.0.0)
  • pip install something as editable
  • if you want to recreate with shiny...

Full traceback

No error was printed, but griffe found the shiny binary, as that was first on sys.path.

Expected behavior

The shiny module is found from the editable install.

@machow machow added the unconfirmed This bug was not reproduced yet label May 23, 2024
@pawamoy pawamoy added bug Something isn't working and removed unconfirmed This bug was not reproduced yet labels May 23, 2024
@pawamoy
Copy link
Member

pawamoy commented May 23, 2024

Crystal clear report, I don't think I even need to reproduce to confirm the issue 😄 Thanks!

Working on a fix right now 🙂

@machow
Copy link
Contributor Author

machow commented May 23, 2024

Yo, thanks! It helps that the griffe finder documents every nuts thing that might happen during various editable installs in one place!

@pawamoy
Copy link
Member

pawamoy commented May 23, 2024

Fixed in 0.45.2 🙂

@pawamoy pawamoy closed this as completed May 23, 2024
clrpackages pushed a commit to clearlinux-pkgs/pypi-griffe that referenced this issue May 28, 2024
…ion 0.45.2

commit 58b17425bace2072664fb654ba1077fb404b92dd
Author: Timothée Mazzucotelli <dev@pawamoy.fr>
Date:   Thu May 23 22:01:41 2024 +0200

    chore: Prepare release 0.45.2

commit 14d45e83d4a48c67b2347965351145cc78d7abe9
Author: Timothée Mazzucotelli <dev@pawamoy.fr>
Date:   Thu May 23 22:01:30 2024 +0200

    fix: Support setuptools' new editable modules using type annotations

    Issue-273: mkdocstrings/griffe#273
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants