Package: python3-pynndescent Version: 0.5.7-1 Severity: serious
Dear Debian Python Team, in the python3 or ipython3 interpreter, the Python statement import pynndescent.sparse as sparse fails and the output in ipython3 is ``` --------------------------------------------------------------------------- TypingError Traceback (most recent call last) Cell In [1], line 1 ----> 1 import pynndescent.sparse as sparse File /usr/lib/python3/dist-packages/pynndescent/__init__.py:3 1 import pkg_resources 2 import numba ----> 3 from .pynndescent_ import NNDescent, PyNNDescentTransformer 5 # Workaround: https://github.com/numba/numba/issues/3341 6 if numba.config.THREADING_LAYER == "omp": File /usr/lib/python3/dist-packages/pynndescent/pynndescent_.py:16 12 from scipy.sparse import csr_matrix, coo_matrix, isspmatrix_csr, vstack as sparse_vstack, issparse 14 import heapq ---> 16 import pynndescent.sparse as sparse 17 import pynndescent.sparse_nndescent as sparse_nnd 18 import pynndescent.distances as pynnd_dist File /usr/lib/python3/dist-packages/pynndescent/sparse.py:381 377 result += aux_data[i] ** 2 378 return np.sqrt(result) --> 381 @numba.njit( 382 [ 383 "f4(i4[::1],f4[::1],i4[::1],f4[::1])", 384 numba.types.float32( 385 numba.types.Array(numba.types.int32, 1, "C", readonly=True), 386 numba.types.Array(numba.types.float32, 1, "C", readonly=True), 387 numba.types.Array(numba.types.int32, 1, "C", readonly=True), 388 numba.types.Array(numba.types.float32, 1, "C", readonly=True), 389 ), 390 ], 391 fastmath=True, 392 locals={ 393 "aux_data": numba.types.float32[::1], 394 "result": numba.types.float32, 395 "diff": numba.types.float32, 396 "dim": numba.types.intp, 397 "i": numba.types.uint16, 398 }, 399 ) 400 def sparse_squared_euclidean(ind1, data1, ind2, data2): 401 _, aux_data = sparse_diff(ind1, data1, ind2, data2) 402 result = 0.0 File /usr/lib/python3/dist-packages/numba/core/decorators.py:219, in _jit.<locals>.wrapper(func) 217 with typeinfer.register_dispatcher(disp): 218 for sig in sigs: --> 219 disp.compile(sig) 220 disp.disable_compile() 221 return disp File /usr/lib/python3/dist-packages/numba/core/dispatcher.py:965, in Dispatcher.compile(self, sig) 963 with ev.trigger_event("numba:compile", data=ev_details): 964 try: --> 965 cres = self._compiler.compile(args, return_type) 966 except errors.ForceLiteralArg as e: 967 def folded(args, kws): File /usr/lib/python3/dist-packages/numba/core/dispatcher.py:129, in _FunctionCompiler.compile(self, args, return_type) 127 return retval 128 else: --> 129 raise retval File /usr/lib/python3/dist-packages/numba/core/dispatcher.py:139, in _FunctionCompiler._compile_cached(self, args, return_type) 136 pass 138 try: --> 139 retval = self._compile_core(args, return_type) 140 except errors.TypingError as e: 141 self._failed_cache[key] = e File /usr/lib/python3/dist-packages/numba/core/dispatcher.py:152, in _FunctionCompiler._compile_core(self, args, return_type) 149 flags = self._customize_flags(flags) 151 impl = self._get_implementation(args, {}) --> 152 cres = compiler.compile_extra(self.targetdescr.typing_context, 153 self.targetdescr.target_context, 154 impl, 155 args=args, return_type=return_type, 156 flags=flags, locals=self.locals, 157 pipeline_class=self.pipeline_class) 158 # Check typing error if object mode is used 159 if cres.typing_error is not None and not flags.enable_pyobject: File /usr/lib/python3/dist-packages/numba/core/compiler.py:716, in compile_extra(typingctx, targetctx, func, args, return_type, flags, locals, library, pipeline_class) 692 """Compiler entry point 693 694 Parameter (...) 712 compiler pipeline 713 """ 714 pipeline = pipeline_class(typingctx, targetctx, library, 715 args, return_type, flags, locals) --> 716 return pipeline.compile_extra(func) File /usr/lib/python3/dist-packages/numba/core/compiler.py:452, in CompilerBase.compile_extra(self, func) 450 self.state.lifted = () 451 self.state.lifted_from = None --> 452 return self._compile_bytecode() File /usr/lib/python3/dist-packages/numba/core/compiler.py:520, in CompilerBase._compile_bytecode(self) 516 """ 517 Populate and run pipeline for bytecode input 518 """ 519 assert self.state.func_ir is None --> 520 return self._compile_core() File /usr/lib/python3/dist-packages/numba/core/compiler.py:499, in CompilerBase._compile_core(self) 497 self.state.status.fail_reason = e 498 if is_final_pipeline: --> 499 raise e 500 else: 501 raise CompilerError("All available pipelines exhausted") File /usr/lib/python3/dist-packages/numba/core/compiler.py:486, in CompilerBase._compile_core(self) 484 res = None 485 try: --> 486 pm.run(self.state) 487 if self.state.cr is not None: 488 break File /usr/lib/python3/dist-packages/numba/core/compiler_machinery.py:368, in PassManager.run(self, state) 365 msg = "Failed in %s mode pipeline (step: %s)" % \ 366 (self.pipeline_name, pass_desc) 367 patched_exception = self._patch_error(msg, e) --> 368 raise patched_exception File /usr/lib/python3/dist-packages/numba/core/compiler_machinery.py:356, in PassManager.run(self, state) 354 pass_inst = _pass_registry.get(pss).pass_inst 355 if isinstance(pass_inst, CompilerPass): --> 356 self._runPass(idx, pass_inst, state) 357 else: 358 raise BaseException("Legacy pass in use") File /usr/lib/python3/dist-packages/numba/core/compiler_lock.py:35, in _CompilerLock.__call__.<locals>._acquire_compile_lock(*args, **kwargs) 32 @functools.wraps(func) 33 def _acquire_compile_lock(*args, **kwargs): 34 with self: ---> 35 return func(*args, **kwargs) File /usr/lib/python3/dist-packages/numba/core/compiler_machinery.py:311, in PassManager._runPass(self, index, pss, internal_state) 309 mutated |= check(pss.run_initialization, internal_state) 310 with SimpleTimer() as pass_time: --> 311 mutated |= check(pss.run_pass, internal_state) 312 with SimpleTimer() as finalize_time: 313 mutated |= check(pss.run_finalizer, internal_state) File /usr/lib/python3/dist-packages/numba/core/compiler_machinery.py:273, in PassManager._runPass.<locals>.check(func, compiler_state) 272 def check(func, compiler_state): --> 273 mangled = func(compiler_state) 274 if mangled not in (True, False): 275 msg = ("CompilerPass implementations should return True/False. " 276 "CompilerPass with name '%s' did not.") File /usr/lib/python3/dist-packages/numba/core/typed_passes.py:105, in BaseTypeInference.run_pass(self, state) 99 """ 100 Type inference and legalization 101 """ 102 with fallback_context(state, 'Function "%s" failed type inference' 103 % (state.func_id.func_name,)): 104 # Type inference --> 105 typemap, return_type, calltypes, errs = type_inference_stage( 106 state.typingctx, 107 state.targetctx, 108 state.func_ir, 109 state.args, 110 state.return_type, 111 state.locals, 112 raise_errors=self._raise_errors) 113 state.typemap = typemap 114 # save errors in case of partial typing File /usr/lib/python3/dist-packages/numba/core/typed_passes.py:83, in type_inference_stage(typingctx, targetctx, interp, args, return_type, locals, raise_errors) 81 infer.build_constraint() 82 # return errors in case of partial typing ---> 83 errs = infer.propagate(raise_errors=raise_errors) 84 typemap, restype, calltypes = infer.unify(raise_errors=raise_errors) 86 # Output all Numba warnings File /usr/lib/python3/dist-packages/numba/core/typeinfer.py:1086, in TypeInferer.propagate(self, raise_errors) 1083 force_lit_args = [e for e in errors 1084 if isinstance(e, ForceLiteralArg)] 1085 if not force_lit_args: -> 1086 raise errors[0] 1087 else: 1088 raise reduce(operator.or_, force_lit_args) TypingError: Failed in nopython mode pipeline (step: nopython frontend) Internal error at <numba.core.typeinfer.CallConstraint object at 0x7fa880d3f550>. Failed in nopython mode pipeline (step: native lowering) AST node line range (200, 1) is not valid File "../../usr/lib/python3/dist-packages/pynndescent/sparse.py", line 202: def sparse_diff(ind1, data1, ind2, data2): return sparse_sum(ind1, data1, ind2, -data2) ^ During: lowering "$24unary_negative.6 = arrayexpr(expr=(<built-in function neg>, [Var(data2, sparse.py:200)]), ty=array(float32, 1d, C))" at /usr/lib/python3/dist-packages/pynndescent/sparse.py (202) During: resolving callee type: type(CPUDispatcher(<function sparse_diff at 0x7fa881010680>)) During: typing of call at /usr/lib/python3/dist-packages/pynndescent/sparse.py (401) Enable logging at debug level for details. File "../../usr/lib/python3/dist-packages/pynndescent/sparse.py", line 401: def sparse_squared_euclidean(ind1, data1, ind2, data2): _, aux_data = sparse_diff(ind1, data1, ind2, data2) ^ ``` I'm not sure if the failure is due to this package or the package python3-numba. Or is this just a Python 3.11 transition outfall? Any help appreciated. Regards, Jörg. -- System Information: Debian Release: bookworm/sid APT prefers testing APT policy: (600, 'testing'), (500, 'unstable'), (5, 'experimental') Architecture: amd64 (x86_64) Kernel: Linux 6.1.4 (SMP w/16 CPU threads; PREEMPT) Locale: LANG=C.utf8, LC_CTYPE=C.utf8 (charmap=UTF-8), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: sysvinit (via /sbin/init) Versions of packages python3-pynndescent depends on: ii python3 3.11.1-1 ii python3-joblib 1.2.0-4 ii python3-llvmlite 0.39.1-2 ii python3-numba 0.56.4+dfsg-1 ii python3-scipy 1.8.1-20 ii python3-sklearn 1.1.2+dfsg-92 python3-pynndescent recommends no packages. python3-pynndescent suggests no packages. -- no debconf information