pytorch_geometric icon indicating copy to clipboard operation
pytorch_geometric copied to clipboard

`get_ppr` with `numba>=0.60.0` fails due to `AttributeError: 'tuple' object has no attribute 'name'`

Open bryceForrest opened this issue 1 year ago • 6 comments

🐛 Describe the bug

I'm trying to use get_ppr, and I thought I was just using it wrong, but I get this error, even when running the provided test function (sorry it's so long):

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[41], [line 30](vscode-notebook-cell:?execution_count=41&line=30)
     [27](vscode-notebook-cell:?execution_count=41&line=27)     assert edge_index[1].min() >= 0 and edge_index[1].max() < data.num_nodes
     [28](vscode-notebook-cell:?execution_count=41&line=28)     assert edge_weight.min() >= 0.0 and edge_weight.max() <= 1.0
---> [30](vscode-notebook-cell:?execution_count=41&line=30) test_get_ppr(torch.tensor([0, 4, 5, 6]))

Cell In[41], [line 14](vscode-notebook-cell:?execution_count=41&line=14)
      [9](vscode-notebook-cell:?execution_count=41&line=9) @withPackage('numba')
     [10](vscode-notebook-cell:?execution_count=41&line=10) @pytest.mark.parametrize('target', [None, torch.tensor([0, 4, 5, 6])])
     [11](vscode-notebook-cell:?execution_count=41&line=11) def test_get_ppr(target):
     [12](vscode-notebook-cell:?execution_count=41&line=12)     data = KarateClub()[0]
---> [14](vscode-notebook-cell:?execution_count=41&line=14)     edge_index, edge_weight = get_ppr(
     [15](vscode-notebook-cell:?execution_count=41&line=15)         data.edge_index,
     [16](vscode-notebook-cell:?execution_count=41&line=16)         alpha=0.1,
     [17](vscode-notebook-cell:?execution_count=41&line=17)         eps=1e-5,
     [18](vscode-notebook-cell:?execution_count=41&line=18)         target=target,
     [19](vscode-notebook-cell:?execution_count=41&line=19)     )
     [21](vscode-notebook-cell:?execution_count=41&line=21)     assert edge_index.size(0) == 2
     [22](vscode-notebook-cell:?execution_count=41&line=22)     assert edge_index.size(1) == edge_weight.numel()

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:113, in get_ppr(edge_index, alpha, eps, target, num_nodes)
    [110](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:110) edge_index = edge_index.sort_by('row')[0]
    [111](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:111) (rowptr, col), _ = edge_index.get_csr()
--> [113](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:113) cols, weights = _get_ppr_numba(
    [114](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:114)     rowptr.cpu().numpy(),
    [115](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:115)     col.cpu().numpy(),
    [116](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:116)     alpha,
    [117](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:117)     eps,
    [118](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:118)     None if target is None else target.cpu().numpy(),
    [119](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:119) )
    [121](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:121) device = edge_index.device
    [122](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/torch_geometric/utils/ppr.py:122) col = torch.tensor(list(chain.from_iterable(cols)), device=device)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:442, in _DispatcherBase._compile_for_args(self, *args, **kws)
    [440](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:440)             e.patch_message('\n'.join((str(e).rstrip(), help_msg)))
    [441](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:441)     # ignore the FULL_TRACEBACKS config, this needs reporting!
--> [442](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:442)     raise e
    [443](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:443) finally:
    [444](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:444)     self._types_active_call = []

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:375, in _DispatcherBase._compile_for_args(self, *args, **kws)
    [373](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:373) return_val = None
    [374](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:374) try:
--> [375](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:375)     return_val = self.compile(tuple(argtypes))
    [376](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:376) except errors.ForceLiteralArg as e:
    [377](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:377)     # Received request for compiler re-entry with the list of arguments
    [378](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:378)     # indicated by e.requested_args.
    [379](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:379)     # First, check if any of these args are already Literal-ized
    [380](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:380)     already_lit_pos = [i for i in e.requested_args
    [381](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:381)                        if isinstance(args[i], types.Literal)]

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:905, in Dispatcher.compile(self, sig)
    [903](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:903) with ev.trigger_event("numba:compile", data=ev_details):
    [904](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:904)     try:
--> [905](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:905)         cres = self._compiler.compile(args, return_type)
    [906](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:906)     except errors.ForceLiteralArg as e:
    [907](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:907)         def folded(args, kws):

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:80, in _FunctionCompiler.compile(self, args, return_type)
     [79](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:79) def compile(self, args, return_type):
---> [80](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:80)     status, retval = self._compile_cached(args, return_type)
     [81](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:81)     if status:
     [82](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:82)         return retval

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:94, in _FunctionCompiler._compile_cached(self, args, return_type)
     [91](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:91)     pass
     [93](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:93) try:
---> [94](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:94)     retval = self._compile_core(args, return_type)
     [95](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:95) except errors.TypingError as e:
     [96](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:96)     self._failed_cache[key] = e

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:107, in _FunctionCompiler._compile_core(self, args, return_type)
    [104](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:104) flags = self._customize_flags(flags)
    [106](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:106) impl = self._get_implementation(args, {})
--> [107](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:107) cres = compiler.compile_extra(self.targetdescr.typing_context,
    [108](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:108)                               self.targetdescr.target_context,
    [109](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:109)                               impl,
    [110](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:110)                               args=args, return_type=return_type,
    [111](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:111)                               flags=flags, locals=self.locals,
    [112](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:112)                               pipeline_class=self.pipeline_class)
    [113](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:113) # Check typing error if object mode is used
    [114](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/dispatcher.py:114) if cres.typing_error is not None and not flags.enable_pyobject:

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:744, in compile_extra(typingctx, targetctx, func, args, return_type, flags, locals, library, pipeline_class)
    [720](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:720) """Compiler entry point
    [721](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:721) 
    [722](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:722) Parameter
   (...)
    [740](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:740)     compiler pipeline
    [741](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:741) """
    [742](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:742) pipeline = pipeline_class(typingctx, targetctx, library,
    [743](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:743)                           args, return_type, flags, locals)
--> [744](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:744) return pipeline.compile_extra(func)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:438, in CompilerBase.compile_extra(self, func)
    [436](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:436) self.state.lifted = ()
    [437](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:437) self.state.lifted_from = None
--> [438](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:438) return self._compile_bytecode()

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:506, in CompilerBase._compile_bytecode(self)
    [502](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:502) """
    [503](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:503) Populate and run pipeline for bytecode input
    [504](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:504) """
    [505](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:505) assert self.state.func_ir is None
--> [506](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:506) return self._compile_core()

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:481, in CompilerBase._compile_core(self)
    [478](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:478) except Exception as e:
    [479](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:479)     if (utils.use_new_style_errors() and not
    [480](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:480)             isinstance(e, errors.NumbaError)):
--> [481](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:481)         raise e
    [483](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:483)     self.state.status.fail_reason = e
    [484](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:484)     if is_final_pipeline:

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:472, in CompilerBase._compile_core(self)
    [470](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:470) res = None
    [471](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:471) try:
--> [472](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:472)     pm.run(self.state)
    [473](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:473)     if self.state.cr is not None:
    [474](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler.py:474)         break

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:364, in PassManager.run(self, state)
    [361](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:361) except Exception as e:
    [362](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:362)     if (utils.use_new_style_errors() and not
    [363](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:363)             isinstance(e, errors.NumbaError)):
--> [364](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:364)         raise e
    [365](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:365)     msg = "Failed in %s mode pipeline (step: %s)" % \
    [366](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:366)         (self.pipeline_name, pass_desc)
    [367](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:367)     patched_exception = self._patch_error(msg, e)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:356, in PassManager.run(self, state)
    [354](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:354) pass_inst = _pass_registry.get(pss).pass_inst
    [355](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:355) if isinstance(pass_inst, CompilerPass):
--> [356](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:356)     self._runPass(idx, pass_inst, state)
    [357](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:357) else:
    [358](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:358)     raise BaseException("Legacy pass in use")

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_lock.py:35, in _CompilerLock.__call__.<locals>._acquire_compile_lock(*args, **kwargs)
     [32](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_lock.py:32) @functools.wraps(func)
     [33](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_lock.py:33) def _acquire_compile_lock(*args, **kwargs):
     [34](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_lock.py:34)     with self:
---> [35](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_lock.py:35)         return func(*args, **kwargs)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:311, in PassManager._runPass(self, index, pss, internal_state)
    [309](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:309)     mutated |= check(pss.run_initialization, internal_state)
    [310](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:310) with SimpleTimer() as pass_time:
--> [311](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:311)     mutated |= check(pss.run_pass, internal_state)
    [312](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:312) with SimpleTimer() as finalize_time:
    [313](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:313)     mutated |= check(pss.run_finalizer, internal_state)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:273, in PassManager._runPass.<locals>.check(func, compiler_state)
    [272](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:272) def check(func, compiler_state):
--> [273](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:273)     mangled = func(compiler_state)
    [274](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:274)     if mangled not in (True, False):
    [275](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:275)         msg = ("CompilerPass implementations should return True/False. "
    [276](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/compiler_machinery.py:276)                "CompilerPass with name '%s' did not.")

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/typed_passes.py:468, in BaseNativeLowering.run_pass(self, state)
    [465](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/typed_passes.py:465) with targetctx.push_code_library(library):
    [466](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/typed_passes.py:466)     lower = self.lowering_class(targetctx, library, fndesc, interp,
    [467](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/typed_passes.py:467)                                 metadata=metadata)
--> [468](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/typed_passes.py:468)     lower.lower()
    [469](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/typed_passes.py:469)     if not flags.no_cpython_wrapper:
    [470](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/typed_passes.py:470)         lower.create_cpython_wrapper(flags.release_gil)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:187, in BaseLower.lower(self)
    [185](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:185) if self.generator_info is None:
    [186](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:186)     self.genlower = None
--> [187](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:187)     self.lower_normal_function(self.fndesc)
    [188](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:188) else:
    [189](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:189)     self.genlower = self.GeneratorLower(self)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:226, in BaseLower.lower_normal_function(self, fndesc)
    [224](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:224) # Init argument values
    [225](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:225) self.extract_function_arguments()
--> [226](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:226) entry_block_tail = self.lower_function_body()
    [228](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:228) # Close tail of entry block, do not emit debug metadata else the
    [229](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:229) # unconditional jump gets associated with the metadata from the function
    [230](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:230) # body end.
    [231](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:231) with debuginfo.suspend_emission(self.builder):

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:256, in BaseLower.lower_function_body(self)
    [254](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:254)     self.builder.position_at_end(bb)
    [255](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:255)     self.debug_print(f"# lower block: {offset}")
--> [256](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:256)     self.lower_block(block)
    [257](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:257) self.post_lower()
    [258](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:258) return entry_block_tail

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:270, in BaseLower.lower_block(self, block)
    [267](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:267)     defaulterrcls = partial(LoweringError, loc=self.loc)
    [268](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:268)     with new_error_context('lowering "{inst}" at {loc}', inst=inst,
    [269](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:269)                            loc=self.loc, errcls_=defaulterrcls):
--> [270](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:270)         self.lower_inst(inst)
    [271](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/core/lowering.py:271) self.post_block(block)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:51, in ParforLower.lower_inst(self, inst)
     [49](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:49) def lower_inst(self, inst):
     [50](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:50)     if isinstance(inst, parfor.Parfor):
---> [51](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:51)         _lower_parfor_parallel(self, inst)
     [52](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:52)     else:
     [53](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:53)         super().lower_inst(inst)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:67, in _lower_parfor_parallel(lowerer, parfor)
     [65](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:65) def _lower_parfor_parallel(lowerer, parfor):
     [66](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:66)     if parfor.lowerer is None:
---> [67](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:67)         return _lower_parfor_parallel_std(lowerer, parfor)
     [68](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:68)     else:
     [69](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:69)         return parfor.lowerer(lowerer, parfor)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:349, in _lower_parfor_parallel_std(lowerer, parfor)
    [343](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:343) numba.parfors.parfor.sequential_parfor_lowering = True
    [344](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:344) try:
    [345](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:345)     (func,
    [346](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:346)      func_args,
    [347](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:347)      func_sig,
    [348](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:348)      func_arg_types,
--> [349](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:349)      exp_name_to_tuple_var) = _create_gufunc_for_parfor_body(
    [350](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:350)         lowerer, parfor, typemap, typingctx, targetctx, flags, {},
    [351](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:351)         bool(alias_map), index_var_typ, parfor.races)
    [352](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:352) finally:
    [353](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:353)     numba.parfors.parfor.sequential_parfor_lowering = False

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:1500, in _create_gufunc_for_parfor_body(lowerer, parfor, typemap, typingctx, targetctx, flags, locals, has_aliases, index_var_typ, races)
   [1497](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:1497)     _print_body(loop_body)
   [1499](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:1499) wrapped_blocks = wrap_loop_body(loop_body)
-> [1500](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:1500) hoisted, not_hoisted = hoist(parfor_params, loop_body, typemap, wrapped_blocks)
   [1501](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:1501) start_block = gufunc_ir.blocks[min(gufunc_ir.blocks.keys())]
   [1502](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:1502) start_block.body = start_block.body[:-1] + hoisted + [start_block.body[-1]]

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:975, in hoist(parfor_params, loop_body, typemap, wrapped_blocks)
    [973](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:973) setitems = set()
    [974](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:974) itemsset = set()
--> [975](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:975) find_setitems_body(setitems, itemsset, loop_body, typemap)
    [976](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:976) dep_on_param = list(set(dep_on_param).difference(setitems))
    [977](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:977) if config.DEBUG_ARRAY_OPT >= 1:

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:950, in find_setitems_body(setitems, itemsset, loop_body, typemap)
    [944](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:944) """
    [945](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:945)   Find the arrays that are written into (goes into setitems) and the
    [946](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:946)   mutable objects (mostly arrays) that are written into other arrays
    [947](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:947)   (goes into itemsset).
    [948](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:948) """
    [949](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:949) for label, block in loop_body.items():
--> [950](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:950)     find_setitems_block(setitems, itemsset, block, typemap)

File ~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:936, in find_setitems_block(setitems, itemsset, block, typemap)
    [934](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:934) if rhs.op in ["build_tuple", "build_list", "build_set", "build_map"]:
    [935](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:935)     for item in rhs.items:
--> [936](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:936)         if getattr(typemap[item.name], "mutable", False):
    [937](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:937)             itemsset.add(item.name)
    [938](https://file+.vscode-resource.vscode-cdn.net/Users/bryceforrest/Documents/analysis/~/miniforge3/envs/ml/lib/python3.11/site-packages/numba/parfors/parfor_lowering.py:938) elif rhs.op == "call":

AttributeError: 'tuple' object has no attribute 'name'

Versions

Collecting environment information...
PyTorch version: 2.3.1
Is debug build: False
CUDA used to build PyTorch: None
ROCM used to build PyTorch: N/A

OS: macOS 14.5 (arm64)
GCC version: Could not collect
Clang version: 15.0.0 (clang-1500.3.9.4)
CMake version: Could not collect
Libc version: N/A

Python version: 3.11.9 | packaged by conda-forge | (main, Apr 19 2024, 18:34:54) [Clang 16.0.6 ] (64-bit runtime)
Python platform: macOS-14.5-arm64-arm-64bit
Is CUDA available: False
CUDA runtime version: No CUDA
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: No CUDA
Nvidia driver version: No CUDA
cuDNN version: No CUDA
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Apple M3

Versions of relevant libraries:
[pip3] numpy==1.26.4
[pip3] torch==2.3.1
[pip3] torch_cluster==1.6.3
[pip3] torch_geometric==2.5.3
[pip3] torch_scatter==2.1.2
[pip3] torch_sparse==0.6.18
[pip3] torchaudio==2.3.1
[pip3] torchmetrics==1.4.0.post0
[pip3] torchvision==0.18.1
[conda] cpuonly                   2.0                           0    pytorch
[conda] libtorch                  2.3.1           cpu_generic_hac4f340_1    conda-forge
[conda] nomkl                     1.0                  h5ca1d4c_0    conda-forge
[conda] numpy                     1.26.4          py311h7125741_0    conda-forge
[conda] pytorch                   2.3.1           cpu_generic_py311h82099cb_1    conda-forge
[conda] pytorch-mutex             1.0                         cpu    pytorch
[conda] pytorch_cluster           1.6.3           py311h7f9f594_4    conda-forge
[conda] pytorch_geometric         2.5.3              pyhd8ed1ab_0    conda-forge
[conda] pytorch_scatter           2.1.2           cpu_py311h7f9f594_6    conda-forge
[conda] pytorch_sparse            0.6.18          py311h1736223_2    conda-forge
[conda] torchaudio                2.3.1                 py311_cpu    pytorch
[conda] torchmetrics              1.4.0.post0        pyhd8ed1ab_0    conda-forge
[conda] torchvision               0.18.1                py311_cpu    pytorch

bryceForrest avatar Jul 15 '24 21:07 bryceForrest

Hi @bryceForrest

This looks like an issue of numba, what is your numba version?

EdisonLeeeee avatar Jul 16 '24 04:07 EdisonLeeeee

@EdisonLeeeee I agree! Using numba version 0.60.0

bryceForrest avatar Jul 16 '24 16:07 bryceForrest

It works fine on my end with numba==0.55.2 but collapses in 0.60.0. Perhaps you should downgrad your numba.

EdisonLeeeee avatar Jul 17 '24 10:07 EdisonLeeeee

I opted for 0.59.1 so that I wouldn't have to downgrade Python, which would inevitably lead me into dependency hell. I now get this warning, OMP: Info #276: omp_set_nested routine deprecated, please use omp_set_max_active_levels instead. but get_ppr happily returns results, so I will make like a good programmer and disregard all warnings :)

Thanks for your help. Should I close this, or is the warning still potentially considered a "bug" of interest?

bryceForrest avatar Jul 17 '24 18:07 bryceForrest

Let's leave the issue and we shall fix it later. :) Thanks for spotting.

EdisonLeeeee avatar Jul 18 '24 15:07 EdisonLeeeee

For me, I was getting a llvm-config error with numba < 0.60.0. Patching pyproject.toml to numba >=0.60.0 fixed it for me (allowed me to run uv pip install -e ".[dev,full]")

michaelfortunato avatar May 16 '25 19:05 michaelfortunato