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

PanicError when duplicate layers are passed #241

Open
fraser-langton opened this issue Oct 22, 2024 · 2 comments
Open

PanicError when duplicate layers are passed #241

fraser-langton opened this issue Oct 22, 2024 · 2 comments

Comments

@fraser-langton
Copy link

.importlinter

[importlinter]
root_packages=
    blueprinter
    blueprinting
    database
    design
    interfaces
    legacy
    mail
    mapbox
    render_api
    respawned_models
    utils
    worker
    worker_handlers
include_external_packages = False
exclude_type_checking_imports = True

[importlinter:contract:import-order]
name = import order
type = layers
layers =
    interfaces

    # the trash
    utils : blueprinter : blueprinting : database : design : interfaces : legacy : mail : mapbox : render_api : respawned_models : utils : worker : worker_handlers

output

\common> lint-imports
=============
Import Linter
=============

thread '<unnamed>' panicked at src\importgraph.rs:144:63:
no entry found for key
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Traceback (most recent call last):
  File "C:\Users\fraser\AppData\Roaming\uv\python\cpython-3.8.20-windows-x86_64-none\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\fraser\AppData\Roaming\uv\python\cpython-3.8.20-windows-x86_64-none\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\fraser\Render\render-services\.venv\Scripts\lint-imports.exe\__main__.py", line 7, in <module>
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\click\core.py", line 1120, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\click\core.py", line 1041, in main
    rv = self.invoke(ctx)
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\click\core.py", line 1395, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\click\core.py", line 750, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\importlinter\cli.py", line 52, in lint_imports_command
    exit_code = lint_imports(
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\importlinter\cli.py", line 99, in lint_imports
    passed = use_cases.lint_imports(
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\importlinter\application\use_cases.py", line 54, in lint_imports
    report = create_report(user_options, limit_to_contracts, cache_dir, show_timings, verbose)
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\importlinter\application\use_cases.py", line 122, in create_report
    return _build_report(
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\importlinter\application\use_cases.py", line 195, in _build_report
    check = contract.check(copy_of_graph, verbose=verbose)
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\importlinter\contracts\layers.py", line 147, in check
    dependencies = graph.find_illegal_dependencies_for_layers(
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\grimp\adaptors\graph.py", line 356, in find_illegal_dependencies_for_layers
    return _layers.find_illegal_dependencies(graph=self, layers=layers, containers=containers or set())
  File "C:\Users\fraser\Render\render-services\.venv\lib\site-packages\grimp\adaptors\_layers.py", line 46, in find_illegal_dependencies
    rust_package_dependency_tuple = rust.find_illegal_dependencies(
pyo3_runtime.PanicException: no entry found for key
@fraser-langton
Copy link
Author

So I think it's just from defining a module name twice in the layers

@seddonym seddonym changed the title pyo3_runtime.PanicException: no entry found for key PanicError when duplicate layers are passed Oct 22, 2024
@seddonym
Copy link
Owner

Thanks for the bug report! You're right, it looks like it's because of the duplicate layers.

I've created a bug report in the underlying library Grimp too: seddonym/grimp#165

But really the contract should be treated as invalid if has duplicate layers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants