def stage_objectmode_backend(self): """ Lowering for object mode """ lowerfn = self.backend_object_mode self._backend(lowerfn, objectmode=True) # Warn, deprecated behaviour, code compiled in objmode without # force_pyobject indicates fallback from nopython mode if not self.flags.force_pyobject: # first warn about object mode and yes/no to lifted loops if len(self.lifted) > 0: warn_msg = ('Function "%s" was compiled in object mode without' ' forceobj=True, but has lifted loops.' % (self.func_id.func_name,)) else: warn_msg = ('Function "%s" was compiled in object mode without' ' forceobj=True.' % (self.func_id.func_name,)) warnings.warn(errors.NumbaWarning(warn_msg, self.func_ir.loc)) url = ("http://numba.pydata.org/numba-doc/latest/reference/" "deprecation.html#deprecation-of-object-mode-fall-" "back-behaviour-when-using-jit") msg = ("\nFall-back from the nopython compilation path to the " "object mode compilation path has been detected, this is " "deprecated behaviour.\n\nFor more information visit %s" % url) warnings.warn(errors.NumbaDeprecationWarning(msg, self.func_ir.loc)) if self.flags.release_gil: warn_msg = ("Code running in object mode won't allow parallel" " execution despite nogil=True.") warnings.warn_explicit(warn_msg, errors.NumbaWarning, self.func_id.filename, self.func_id.firstlineno)
def get_numbapro_envvar(envvar, default=None): # use vanilla get here so as to use `None` as a signal for not-set value = os.environ.get(envvar) if value is not None: url = ( "http://numba.pydata.org/numba-doc/latest/reference/" "deprecation.html#deprecation-of-numbapro-environment-variables") msg = ("\nEnvironment variables with the 'NUMBAPRO' prefix are " "deprecated, found use of %s=%s.\n\nFor more information visit " "%s" % (envvar, value, url)) warnings.warn(errors.NumbaDeprecationWarning(msg)) return value else: return default
def test_warnings_fixer(self): # For some context, see #4083 wfix = errors.WarningsFixer(errors.NumbaWarning) with wfix.catch_warnings('foo', 10): warnings.warn(errors.NumbaWarning('same')) warnings.warn(errors.NumbaDeprecationWarning('same')) with warnings.catch_warnings(record=True) as w: warnings.simplefilter('always') wfix.flush() self.assertEqual(len(w), 2) # the order of these will be backwards to the above, the # WarningsFixer flush method sorts with a key based on str # comparison self.assertEqual(w[0].category, NumbaDeprecationWarning) self.assertEqual(w[1].category, NumbaWarning) self.assertIn('same', str(w[0].message)) self.assertIn('same', str(w[1].message))