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

AOT always installed to site-package folder not the module folder #4739

Closed
wzhtc opened this issue Oct 24, 2019 · 20 comments · Fixed by #5174
Closed

AOT always installed to site-package folder not the module folder #4739

wzhtc opened this issue Oct 24, 2019 · 20 comments · Fixed by #5174
Assignees
Labels

Comments

@wzhtc
Copy link

@wzhtc wzhtc commented Oct 24, 2019

I created a AOT module with the following folder structure:

-test_numba
  -test_numba
    -__init__.py
    -source_module.py
-setup.py

The source_module.py and setup.py has same functions as in the introduction
in the 'init.py' file, I simple import the functions from module.

from .my_module import *

When I run pip install, the my_module.cpython-37m-darwin.so is always installed to the site-package folder, instead of the site-packages/test_numba/ folder.

Here is the message on the install:

Created temporary directory: /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-ephem-wheel-cache-hmnzdc3q
Created temporary directory: /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-tracker-dtmbq7jy
Created requirements tracker '/private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-tracker-dtmbq7jy'
Created temporary directory: /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-install-p3nwsdna
Processing /Users/xxx/test_numba
  Created temporary directory: /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-build-4aq7o_p1
  Added file:///Users/xxx/test_numba to build tracker '/private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-tracker-dtmbq7jy'
    Running setup.py (path:/private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-build-4aq7o_p1/setup.py) egg_info for package from file:///Users/xxx/test_numba
    Running command python setup.py egg_info
    running egg_info
    creating pip-egg-info/test_numba.egg-info
    writing pip-egg-info/test_numba.egg-info/PKG-INFO
    writing dependency_links to pip-egg-info/test_numba.egg-info/dependency_links.txt
    writing top-level names to pip-egg-info/test_numba.egg-info/top_level.txt
    writing manifest file 'pip-egg-info/test_numba.egg-info/SOURCES.txt'
    reading manifest file 'pip-egg-info/test_numba.egg-info/SOURCES.txt'
    writing manifest file 'pip-egg-info/test_numba.egg-info/SOURCES.txt'
  Source in /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-build-4aq7o_p1 has version 0.0.1, which satisfies requirement test-numba==0.0.1 from file:///Users/xxx/test_numba
  Removed test-numba==0.0.1 from file:///Users/xxx/test_numba from build tracker '/private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-tracker-dtmbq7jy'
Building wheels for collected packages: test-numba
  Created temporary directory: /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-wheel-w7xwl19y
  Building wheel for test-numba (setup.py) ...   Destination directory: /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-wheel-w7xwl19y
  Running command /Users/xxx/miniconda3/envs/py/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-build-4aq7o_p1/setup.py'"'"'; __file__='"'"'/private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-build-4aq7o_p1/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-wheel-w7xwl19y --python-tag cp37
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.macosx-10.9-x86_64-3.7
  creating build/lib.macosx-10.9-x86_64-3.7/test_numba
  copying test_numba/source_module.py -> build/lib.macosx-10.9-x86_64-3.7/test_numba
  copying test_numba/__init__.py -> build/lib.macosx-10.9-x86_64-3.7/test_numba
  running build_ext
  creating build/temp.macosx-10.9-x86_64-3.7
  generating LLVM code for 'my_module' into build/temp.macosx-10.9-x86_64-3.7/my_module.cpython-37m-darwin.o
  building 'my_module' extension
  C compiler: gcc -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/Users/xxx/miniconda3/envs/py/include -arch x86_64 -I/Users/xxx/miniconda3/envs/py/include -arch x86_64

  creating build/temp.macosx-10.9-x86_64-3.7/Users
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/pycc
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/cext
  creating build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/runtime
  compile options: '-DPYCC_MODULE_NAME=my_module -DPYCC_USE_NRT=1 -I/Users/xxx/miniconda3/envs/py/include/python3.7m -I/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numpy/core/include -I/Users/xxx/miniconda3/envs/py/include/python3.7m -c'
  gcc: /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/pycc/modulemixin.cgcc: /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/pycc/../_math_c99.c
  gcc: /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/cext/listobject.c
  gcc: /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/cext/utils.c
  gcc: /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/cext/dictobject.c
  gcc: /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/pycc/../runtime/nrt.c

  gcc -bundle -undefined dynamic_lookup -L/Users/xxx/miniconda3/envs/py/lib -arch x86_64 -L/Users/xxx/miniconda3/envs/py/lib -arch x86_64 -arch x86_64 build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/pycc/modulemixin.o build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/_math_c99.o build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/cext/listobject.o build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/cext/utils.o build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/cext/dictobject.o build/temp.macosx-10.9-x86_64-3.7/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numba/runtime/nrt.o build/temp.macosx-10.9-x86_64-3.7/my_module.cpython-37m-darwin.o -L/Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/numpy/core/lib -lnpymath -o build/lib.macosx-10.9-x86_64-3.7/my_module.cpython-37m-darwin.so
  installing to build/bdist.macosx-10.9-x86_64/wheel
  running install
  running install_lib
  creating build/bdist.macosx-10.9-x86_64
  creating build/bdist.macosx-10.9-x86_64/wheel
  copying build/lib.macosx-10.9-x86_64-3.7/my_module.cpython-37m-darwin.so -> build/bdist.macosx-10.9-x86_64/wheel
  creating build/bdist.macosx-10.9-x86_64/wheel/test_numba
  copying build/lib.macosx-10.9-x86_64-3.7/test_numba/source_module.py -> build/bdist.macosx-10.9-x86_64/wheel/test_numba
  copying build/lib.macosx-10.9-x86_64-3.7/test_numba/__init__.py -> build/bdist.macosx-10.9-x86_64/wheel/test_numba
  running install_egg_info
  running egg_info
  creating test_numba.egg-info
  writing test_numba.egg-info/PKG-INFO
  writing dependency_links to test_numba.egg-info/dependency_links.txt
  writing top-level names to test_numba.egg-info/top_level.txt
  writing manifest file 'test_numba.egg-info/SOURCES.txt'
  reading manifest file 'test_numba.egg-info/SOURCES.txt'
  writing manifest file 'test_numba.egg-info/SOURCES.txt'
  Copying test_numba.egg-info to build/bdist.macosx-10.9-x86_64/wheel/test_numba-0.0.1-py3.7.egg-info
  running install_scripts
  creating build/bdist.macosx-10.9-x86_64/wheel/test_numba-0.0.1.dist-info/WHEEL
  creating '/private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-wheel-w7xwl19y/test_numba-0.0.1-cp37-cp37m-macosx_10_9_x86_64.whl' and adding 'build/bdist.macosx-10.9-x86_64/wheel' to it
  adding 'my_module.cpython-37m-darwin.so'
  adding 'test_numba/__init__.py'
  adding 'test_numba/source_module.py'
  adding 'test_numba-0.0.1.dist-info/METADATA'
  adding 'test_numba-0.0.1.dist-info/WHEEL'
  adding 'test_numba-0.0.1.dist-info/top_level.txt'
  adding 'test_numba-0.0.1.dist-info/RECORD'
  removing build/bdist.macosx-10.9-x86_64/wheel
done
  Created wheel for test-numba: filename=test_numba-0.0.1-cp37-cp37m-macosx_10_9_x86_64.whl size=68204 sha256=43dc63501bbcd6c2e74561d80d455d1276d8f48a07b9b2f6c47154166cedc65b
  Stored in directory: /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-ephem-wheel-cache-hmnzdc3q/wheels/11/07/1a/d515f6ebdf72b2a43b314b68c788d93fc6c0cf2168c8d2538a
  Removing source in /private/var/folders/2t/kh60843d47x17gkkqg0q3gc80000gn/T/pip-req-build-4aq7o_p1
Successfully built test-numba
Installing collected packages: test-numba

And it shows the packages are installed in the following location:

Uninstalling test-numba-0.0.1:
  Would remove:
    /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/my_module.cpython-37m-darwin.so
    /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/test_numba-0.0.1.dist-info/*
    /Users/xxx/miniconda3/envs/py/lib/python3.7/site-packages/test_numba/*

Then if I try to import test_numba, I will get an error saying test_numba.my_module doesn't exist.

Reporting a bug

@esc esc added the needtriage label Oct 24, 2019
@esc
Copy link
Member

@esc esc commented Oct 24, 2019

@wzhtc thanks for reporting this and helping to improve Numba. Would it be possible to attach the source code for your project so that I can attempt to reproduce the issue you are having on my computer? For example your could try to 'zip' the directory and attach it to this issue.

@wzhtc
Copy link
Author

@wzhtc wzhtc commented Oct 24, 2019

@esc thanks for taking a look at this. Attached is the zip files.
test_numba.zip

@esc
Copy link
Member

@esc esc commented Oct 25, 2019

@wzhtc thank you for that, please could you also post the commands that you are using the build the extension? Thanks.

@wzhtc
Copy link
Author

@wzhtc wzhtc commented Oct 25, 2019

@esc I used “pip install . “ At the parent folder to install. The pip version I have is 19

@esc
Copy link
Member

@esc esc commented Oct 25, 2019

Interesting, when I try to run that, I get:

    ERROR: Command errored out with exit status 1:
     command: /Users/vhaenel/miniconda3/envs/new-numba/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/jk/s59wn3zx5g92kvk6t9k74fzr0000gn/T/pip-req-build-l8qhqd6c/setup.py'"'"'; __file__='"'"'/private/var/folders/jk/s59wn3zx5g92kvk6t9k74fzr0000gn/T/pip-req-build-l8qhqd6c/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base pip-egg-info
         cwd: /private/var/folders/jk/s59wn3zx5g92kvk6t9k74fzr0000gn/T/pip-req-build-l8qhqd6c/
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/jk/s59wn3zx5g92kvk6t9k74fzr0000gn/T/pip-req-build-l8qhqd6c/setup.py", line 2, in <module>
        from test_numba.source_module import cc
      File "/private/var/folders/jk/s59wn3zx5g92kvk6t9k74fzr0000gn/T/pip-req-build-l8qhqd6c/test_numba/__init__.py", line 1, in <module>
        from .my_module import *
    ModuleNotFoundError: No module named 'test_numba.my_module'
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

@esc
Copy link
Member

@esc esc commented Oct 25, 2019

Commenting out the following however, allows me to compile:

diff --git i/test_numba/__init__.py w/test_numba/__init__.py
index c51799952d..bf9098714e 100644
--- i/test_numba/__init__.py
+++ w/test_numba/__init__.py
@@ -1,2 +1,2 @@
-from .my_module import *
+#from .my_module import *

@esc
Copy link
Member

@esc esc commented Oct 25, 2019

And in that case, I can observe the same behaviour you listed, so it is reproducible. I wonder if there is something you need to set to place the my_module in the test_numba package..

@esc esc added bug and removed needtriage labels Oct 25, 2019
@wzhtc
Copy link
Author

@wzhtc wzhtc commented Oct 25, 2019

@esc I tried to set the output_dir of the cc extension. It is not working. Do you have any suggested method to install as desired structure?

@esc
Copy link
Member

@esc esc commented Oct 25, 2019

@wzhtc no I don't have any suggestions at this time, I have been digging but to no avail yet. My thinking however was also to use the kwargs of distutils_extension.

@wzhtc
Copy link
Author

@wzhtc wzhtc commented Oct 25, 2019

@esc I also looked at the disturbing.extendion.Extension class which is the return of the cc extension. unfortunately, it seems not accepting file location parameter.

@esc
Copy link
Member

@esc esc commented Oct 28, 2019

Yeah, this is probably a genuine bug: I patched Numba like so:

diff --git i/numba/pycc/cc.py w/numba/pycc/cc.py
index ee635eb5fc..80623e762d 100644
--- i/numba/pycc/cc.py
+++ w/numba/pycc/cc.py
@@ -235,6 +235,7 @@ class CC(object):
         Create a distutils extension object that can be used in your
         setup.py.
         """
+        python_package_path = kwargs.pop('python_package_path', "")
         macros = kwargs.pop('macros', []) + self._get_mixin_defines()
         depends = kwargs.pop('depends', []) + [self._source_path]
         extra_compile_args = (kwargs.pop('extra_compile_args', [])
@@ -248,7 +249,7 @@ class CC(object):
         library_dirs = (kwargs.pop('library_dirs', [])
                         + self._toolchain.get_python_library_dirs())

-        ext = _CCExtension(name=self._basename,
+        ext = _CCExtension(name=python_package_path + self._basename,
                            sources=self._get_mixin_sources(),
                            depends=depends,
                            define_macros=macros,

I.e. allowing to prepend the package name to the name of Extension. I could then do:

        ext_modules=[cc.distutils_extension(python_package_path="test_numba.")]

And the compiled Python module will be placed in the correct package. Probably, some code needs to get written for the CC class to get (maybe exists already) and use that name.

@esc
Copy link
Member

@esc esc commented Oct 28, 2019

Actually, the information is somewhat already gathered, using this different patch should also fix it:

diff --git i/numba/pycc/cc.py w/numba/pycc/cc.py
index ee635eb5fc..985e613a35 100644
--- i/numba/pycc/cc.py
+++ w/numba/pycc/cc.py
@@ -64,6 +64,7 @@ class CC(object):

         self._source_path = dct.get('__file__', '')
         self._source_module = source_module
+        self._package_path = source_module[:source_module.rfind(".") + 1]
         self._toolchain = Toolchain()
         self._verbose = False
         # By default, output in directory of caller module
@@ -248,7 +249,7 @@ class CC(object):
         library_dirs = (kwargs.pop('library_dirs', [])
                         + self._toolchain.get_python_library_dirs())

-        ext = _CCExtension(name=self._basename,
+        ext = _CCExtension(name=".".join((self._package_path, self._basename)),
                            sources=self._get_mixin_sources(),
                            depends=depends,
                            define_macros=macros,

@wzhtc can you confirm? In case it is good, @stuartarchibald should I make a PR then?

@esc
Copy link
Member

@esc esc commented Oct 28, 2019

The patch should fix the overall issue of using CC from within a (nested) module in a package.

@esc esc self-assigned this Oct 28, 2019
@stuartarchibald
Copy link
Contributor

@stuartarchibald stuartarchibald commented Oct 28, 2019

@wzhtc can you confirm? In case it is good, @stuartarchibald should I make a PR then?

@esc yes please, with test to demonstrate if possible. Thanks.

@wzhtc
Copy link
Author

@wzhtc wzhtc commented Oct 29, 2019

@stuartarchibald The patch works. Thanks!

@tolysz
Copy link
Contributor

@tolysz tolysz commented Jan 30, 2020

Any chance to make this PR?

tolysz added a commit to tolysz/numba that referenced this issue Jan 30, 2020
@esc
Copy link
Member

@esc esc commented Jan 30, 2020

@tolysz yes! feel free to submit one! It needs some sort of test-case though.

tolysz added a commit to tolysz/numba that referenced this issue Jan 31, 2020
@tolysz
Copy link
Contributor

@tolysz tolysz commented Jan 31, 2020

As per commit description, the actual changes are slightly different. But the good news it works!

@esc
Copy link
Member

@esc esc commented Jan 31, 2020

🎉

tolysz added a commit to tolysz/numba that referenced this issue Jan 31, 2020
tolysz added a commit to tolysz/numba that referenced this issue Jan 31, 2020
Nothing fancy, do not allow dots.
tolysz added a commit to tolysz/numba that referenced this issue Jan 31, 2020
Nothing fancy, do not allow dots.
tolysz added a commit to tolysz/numba that referenced this issue Jan 31, 2020
Nothing fancy, do not allow dots.
@tolysz
Copy link
Contributor

@tolysz tolysz commented Jan 31, 2020

:) I tried to be smart, but at the end it is almost what you have here, the only change is that I had to mkdir some extra directories.

@esc esc closed this as completed in #5174 Feb 3, 2020
esc added a commit that referenced this issue Feb 3, 2020
clrpackages pushed a commit to clearlinux-pkgs/numba that referenced this issue Apr 17, 2020
…49.0

1844144 (1):
      numba/misc/dump_style.py: lexer docstring

ARF1 (2):
      fix test discovery for unittest
      fix error messages in test_array_reductions

Aaron Meurer (92):
      Add get_num_threads and set_num_threads functions to tbbpool.cpp
      Add get_num_threads and set_num_threads to omppool.cpp and workqueue.c
      Add a basic API to mask the number of threads used by parfor
      Some work in progress on masking threads in the reduction phase
      Correct the code for calling get_num_threads in the parfor reduction phase
      Some more work on using get_num_threads in the reduction phase
      Remove WIP get_thread_count stuff from the parfor reduction phase
      Remove unused variable
      Make num_threads thread local in the tbb backend
      Fix flake8 issues
      Make sure threads are launched when calling set_num_threads()
      Add a jitted version of set_num_threads for testing purposes
      Don't allow set_num_threads(0)
      Make set_num_threads() return the old number of threads
      Add some documentation for thread masking
      Add get_num_threads function to Python
      Improved the documentation for thread masking
      Fix flake8 errors
      Move get_num_threads and set_num_threads to their own C module
      Remove the return value from set_num_threads
      Fix a typo
      Make get_num_threads and set_num_threads work in a jitted function
      Remove _set_num_threads_jit
      Add get_num_threads and set_num_threads to __init__.py
      Remove an unused import
      Update the documentation on set_num_threads and friends
      Fix flake8 issues
      Start writing tests for get_num_threads and set_num_threads
      Use numpy.testing.assert_equal instead of self.assertEqual(np.all(...))
      Make set_num_threads() affect guvectorized functions
      Skip tests that deadlock in workqueue
      Use the correct mechanism for skipping a test in unittest
      Also skip test_nested_parallelism_2 with the workqueue backend
      Fix thread requirement for test_nested_parallelism_3
      Remove unused variables
      Skip nested parallelism tests if there are fewer than 4 cores
      Add some test_num_threads for guvectorize
      Make sure threads are launched when calling get_thread_num()
      Fix the guvectorize tests to properly test parallelism
      Rename get_thread_num() to get_thread_id()
      Rename get_thread_id() to _get_thread_id()
      Don't assume that set_num_threads inside a jitted function will propogate outside of it
      Generalize the nested parallelism tests to work with any number of cores
      Make test_nested_parallelism_1 test nesting from a guvectorized function as well
      Test guvectorize combinations in test_nested_parallelism_2
      Add guvectorize to test_nested_parallelism_3
      Remove raises tests for set_num_threads inside of a jitted function
      Add get_num_threads and set_num_threads to numba.__all__
      Run the num_threads tests in all backends
      Parameterize the num_threads tests over NUMBA_NUM_THREADS
      Propagate the skip message from the subprocess in the num_threads tests
      Tag the num_threads tests as long running
      Raise an exception if get_num_threads() returns 0
      Remove debug printf
      Add thread mask tests to test_parallel_backend
      Somewhat improved the error messages if get_num_threads() gets an invalid value
      Use fewer masks in the parallel_backend tests
      Add thread mask tests to test_parallel_backend
      Somewhat improved the error messages if get_num_threads() gets an invalid value
      Use fewer masks in the parallel_backend tests
      Remove duplicated class
      Allow numpy integers in set_num_threads()
      Fix flake8
      Add an example of thread masking to the documentation
      Add an example of thread masking to the documentation
      Allow numpy integers in set_num_threads()
      Guard against get_num_threads being -1 as well
      Add a short docstring to _get_thread_id()
      Add some stuff to the threading implementation documentation
      Clarify some bits about OpenMP in the threading implementation docs
      Fix docs build errors
      Small fix in the threading implementation docs
      Guard against get_num_threads being -1 as well
      Add a short docstring to _get_thread_id()
      Add some stuff to the threading implementation documentation
      Clarify some bits about OpenMP in the threading implementation docs
      Fix docs build errors
      Small fix in the threading implementation docs
      Apply suggestions to the threading implementation docs from code review
      Some modifications to the threading implementation docs from review
      Apply suggestions to threading docs from @gmarkall code review
      Use the same tbb version format as conda
      Note the relevant files in the threading implementation documentation
      Update docs/source/user/threading-layer.rst
      Don't allow reloading NUMBA_NUM_THREADS if threads have already been launched
      Fix flake8
      Fix the parallel env variable test to reset the env correctly
      Reset the num threads to the env variable, not the default
      Reset the num threads to the env variable, not the default
      Update numba/core/config.py
      Fix flake8
      Use set_num_threads instead of NUMBA_NUM_THREADS in TestParforsVectorizer

Antonio Russo (1):
      Trivially fix SyntaxWarning

Eric Wieser (5):
      Fix compiler warnings due to missing (void)
      Add support for iterating over 2D arrays
      Improve the error message for iterating over 0d arrays
      Add support for inferring the types of object arrays
      Let arrays take precedence in ufunc type inference

Gabriel Majeri (2):
      Add SciPy 2019 talks to docs
      Move video to talks and add new tutorial

Graham Markall (81):
      Add notes on overwriting gufunc inputs to docs
      Document the use of Memcheck and add suppressions
      Fix various issues in CUDA documentation
      Remove the autotuner
      Tests: ensure all kernel calls are configured
      Normalize kernel dimensions in CUDAKernel.__call__
      Raise ValueError in simulator if kernel not configured
      Add tests for unconfigured kernel error
      Fix flake8 errors in errors.py
      Add SerialMixin to TestJitErrors
      Rewrap viewed arrays for use with simulator
      Fix #5073: Slices of dynamic shared memory all alias
      Documentation fixes based on PR #5059 review
      Use subTest and assert_array_equal in test_devicearray_view_ok
      Swap numerator and denominator in view() dtype size check
      Use assert_array_equal in test_devicearray_view_ok_not_c_contig
      Fix test_devicearray_view_ok_not_c_contig
      Apply suggestions from code review
      gufunc input data section: Talk about passing data rather than pointers
      Update docs/source/user/vectorize.rst
      Remove accidentally-committed suppressions file
      CUDA: Add a way to get the default stream
      Add documentation for the default stream
      Describe motivation for testing that the default stream is True-ish
      Fix #4875: Make #2655 test with debug expect to pass
      Add description to test_raise_causing_warp_diverge_debug
      Document lifetime semantics of CUDA Array Interface
      Add external memory management plugin interface
      Docs: use sphinx_rtd_theme
      Modifications based on PR suggestions
      Override modernizr.min.js to prevent reflows
      Begin documenting EMM Plugin interface
      Fix missing kwarg
      Rename _context to context
      Complete EMM Plugin documentation
      Add NBEP 7 document
      Attempt to fix duplicate explicit target name in docs
      Fix grammar in EMM Plugin docs
      Make content width max 1200 pixels
      Remove test_raise_causing_warp_diverge_debug
      Docs: Make collapse_navigation False
      Add some EMM Plugin tests
      Clarify that EMM Plugin only for mem allocs
      Correct grammar in get_memory_info description
      Fix typo
      Clarify how to construct the base parameter for IpcHandle()
      Rename NBEP 7 title to include CUDA
      Correct "versus" abbreviation is "vs.", not "v.s."
      Grammar correction
      Correctly quote numba.cuda
      Fix RMM URL
      Add permanent link to rmm.py
      Fix error in RMM example: Rename bytesize to size
      Add note on not guarding numba imports in RMM example
      Fix implementation of get_memory_info in RMM example
      RMM Example: explicitly import set_memory_manager
      NBEP 7 proposal: UniqueDict now in numba.core.utils
      Remove blank line
      Fix link to CuPy plugin implementation
      Fix grammar
      NBEP 7: Fix env var for testing with CuPy mempool
      Fix grammar in reset() docstring
      Fix interface_version docstring
      Fix spacing in HostOnlyCUDAMemoryManager docstring
      Fix grammar in _attempt_allocation docstring
      External memory docs: fix grammar
      Address NBEP 7 PR feedback
      Guard against cudasim in EMM Plugin test
      Fix flake8 errors
      Make paths generic in NBEP 7 proposal example output
      Fix accidental inversion of skip condition for TestIpcNotSupported
      test_ipc: Simplify double negative in skip condition
      Make test_vectorize a normal test with SerialMixin
      Don't sort tests by mtime anymore
      Rename CUDATestCase to ContextResettingTestCase
      Create CUDATestCase, for tests using a device
      Fix the TestVectorizeDecor CUDA test
      Add back test sorting by mtime, except for CUDA
      Minor tidy-up in cuda_sensitive_mtime
      Fix docstring typo in numba/cuda/testing.py
      Docs: assert in CUDA only enabled for debug

Greg Jennings (4):
      Fixes numba#3888.
      updating assignment into out array
      handling case where incoming size is a tuple
      combining use of np.random.permutation with original approach using an iterator over the output array in order to account for alternate shapes of the `size` argument

Guilherme Leobas (7):
      [wip] np.isnat
      add np.isnat ufunc
      Update npdatetime.py
      Add more tests
      Update arraymath.py
      add bit endian nat constant
      Remove non-native endianness tests

Henry Schreiner (1):
      More explicit llvmlite requirement

Jim Pivarski (2):
      Added some hints for debugging entry points.
      Line wrap to 80 characters.

John Kirkham (17):
      Raise `ValueError` when `view`ing bad `dtype`
      Relax the error to allow for type casting
      Compute the `shape` when `itemsize` changes
      Test `DeviceNDArray`'s `view`
      Check error message matches
      Rename test to clarify error checked
      Ensure array is C-contiguous when itemsize changes
      Test itemsize change on non-contiguous array fail
      Test itemsize preserving changes allowed
      Test with the device array
      Only move contiguous data to device
      Update `strides` based on the changed `itemsize`
      Minor style fix
      Reuse NumPy's error messages for `view`
      Coerce `dtype` to `numpy.dtype`
      Test `device_array` creation with `str` as `dtype`
      Note other dtype coercible objects allowed

Leo Fang (6):
      document participating libs
      add cuSignal
      apply reviews
      Apply suggestions from code review
      Add JAX
      Apply suggestions from code review

Mads R. B. Kristensen (6):
      __cuda_array_interface__ not requiring context
      Implemented is_contiguous()
      is_contiguous(): ignoring broadcated dimensions
      Update numba/cuda/cudadrv/devicearray.py
      Added test of is_contiguous()
      Added is_contiguous() to the simulator

Marcin Tolysz (2):
      patch for numba/numba#4739
      improving readability

Mike Williams (16):
      Attempt to fix cuda spoof on complex types.
      Now very serviceable, if also very slow.
      Eliminate six, removed now.
      Missed a setter, and reordered for clarity
      UT and fix for .size
      Fix a few special cases.
      Need a len fn...
      Another test fixed
      a minor oops.
      Record is primitive too
      Capture malignant cases rather than protecting benign.
      add comment
      Remove unneeded __dict__ calls
      Docstring, rename...
      Address review comments
      Revert some work I had been doing with shared memory, not yet ready. Is a TODO though.

Pearu Peterson (30):
      First-class type function support: cfunc and jit-decorated functions.
      Disable Python 3.8 feature of using formatted strings
      Add test_constant_functions.
      Fallback to default Dispatcher type when not a first-class function
      Compile first-class arguments on-demand.
      Fail gracefully when defining generators as first-class function types in nopython mode
      Update docs. Support mixing cfunc and njit-decorated functions in sequences.
      Catch calling same finalizer multiple times: may happen when overloading first-class functions in object-mode.
      Major revision: resolves 1st cls support for jit-decorated functions. WIP: needs a clean up.
      Rename function.py to function_type.py. Started cleanup.
      Major clean up
      More cleanup
      Fix test_unroll_function_tuple. Implemented const lowering of WrapperAddressProtocol instances.
      More clean up. Enable test_in/ns_overload tests.
      test_dispatcher_can_return_to_python
      Enable gil when calling get_wrapper_address
      Make UndefinedFunctionType immutable.
      Fail gracefully on value dependent polymorhism
      Fix cfunc test issue.
      Interpret certain dispatcher instances as having precise function type.
      Fix a bug
      Disable making cfunc wrappers when using non-cpu compilers
      Update docs: remove firstclass and explain when the first-class function support is enabled.
      Acquire GIL when calling lower_get_wrapper_address from lower_cast.
      Remove unused code (Dispatcher instances cannot be lowered to constant first-class function objects)
      Undo last commit to fix TestMore.test_unroll_function_tuple failure
      Add test_zero_address to execute the address recovery path in __get_function_pointer in lowering.py
      Expose CompileResultWAP. Clean up.
      Correct res.is_precise() to assert statement.
      First-class function documentation fixes.

Ravi Teja Gutta (5):
      [WIP] initial commit for numpy's flip functionalty
      input to fliplr must be >= 2-d
      add tests for fliplr, flipud and flip
      add in docs that flip doesn't support axis argument
      convert any iterable into numpy array

Rohit Sanjay (24):
      fix `.strip()` by including all whitespace types
      added tests for whitespace strip
      use `_PyUnicode_IsSpace` to account for all whitespace characters
      added test cases
      added support for `np.asarray` to be used with `numba.typed.List`
      added a test case
      made it concise
      added property `dtype` to `numba.typed.List`
      fixed error
      added `dtype` attribute for List to be used in `njit`
      fix flake8 issues
      made the tests more concise
      changed `dtype` to `_dtype`
      fix loop typo
      fix flake8 error
      added `yield_type` property to UnicodeType iterator
      Revert "added `yield_type` property to UnicodeType iterator"
      implemented based on suggestion
      add tests
      moved test to test_typedlist.py
      remove the test from test_listobject.py
      fix flake8
      Update numba/tests/test_typedlist.py
      added singleton element in test case

Siu Kwan Lam (153):
      Attempt to fix #5087
      Make State sortable for easier debugging
      Avoid duplicating work in every iteration
      Add reproducer for #5087
      Fix
      Empty commit for 0.49.0 dev cycle
      Start to work on (un)boxing to jitcode callconv converter
      Small fix
      Merge pull request #5146 from sklam/misc/update0.48_iss5087
      Add tests for call_jit_code
      Fix test on 32-bit
      Fix README formatting
      Add CI check of README.rst
      Fix test on 32-bit
      Better test name
      Adapt set hasher to use pyapi.call_jit_code
      Add doc string
      More docstrings
      More docs/comments
      Normalize kws going into fold_arguments.
      Add unittest for fold_arguments
      Fix CI failure due to missing files when installed
      Fix dictimpl import
      Fix up array_analysis
      Fix import
      Fix build script entry point
      Fix package data
      Add test for #5215
      Fix #5215
      Make sure the signatures matches the expectation
      Revert "Fix README formatting"
      Revert "Revert "Fix README formatting""
      Add test that matches the #5215 problem
      Fix import
      Fix missing skip
      Make pytest happy
      Split into ConvertSetItemPass
      Split out ConvertNumpyPass
      Split up ConvertReducePass
      Fix up test on 32bit
      Split up ConvertLoopPass
      Improving coverage
      Improving coverage
      Add test for PreParforPass
      Rename file
      Apply suggestions from code review
      Add docstrings
      Move disabled_test
      Use numba.core.errors Exceptions
      Fix up tests due to new exception
      Fix up array_analysis to use better exception.
      Fix missing import and test
      Split ArrayAnalysis.run()
      Make Signature class immutable
      Linting. `is None` and `is not None`
      Flake8 fixes.
      Better function name
      Add ArrayAnalysis.copy to help isolate states mutation in recursive ArrayAnalysis.run.
      Apply suggestions from review
      Remove py2 specific __builtin__
      Remove refcount pruning pass
      Apply suggestions from code review
      Disable leak check in tests that raises exception
      Fix doc build
      Refactor parfor_lowering into common utils
      Refactor parfor_lowering into common utils
      Move the inplace assignment
      Fix formatting suggested in code review
      Apply suggestions from code review
      Apply suggestions from code review
      Apply suggestions from code review
      Implement DF based SSA reconstruction
      Adapt typeinfer and lowering for SSA
      Fix problems with Arguments and local block assignments selection
      Add phis stripping pass before IRLegalisation
      Make ReconstructSSA pass
      Fix problem with first assignment being renamed away
      Fix uninitialized variable when used with SSA
      Add SSA tests
      Fix SSA falling into infinite loop because it can't find definition
      Try to test setup.py version spec
      Use iterated domfronts
      Fix searching for phi node locally
      Add test for problems in phi propagation
      Fix forgotten handling for assign var to var
      Cannot use assignlist because the IR is being mutated
      Fix SSA complaining about undefined variable
      Array-analysis should use StarArgTuple for vararg
      Cleanup
      Fix missing symbol problem
      Cleanup
      Fix most of generators
      Run postproc after SSA reconstruction and stripping
      Make sure parfor tests are using SSA as in the default pipeline
      Phi stripping pass should place exporter in the earliest location.
      Fix undefined var
      Test now works because SSA would fix the overwrite of parallel loop index
      Track variable redefinitions in scope to patch up locals type annotations
      Fix error due to missing state.locals
      Strip print
      Fix variable redefinition
      Undo changes to interpreter.py
      Undo changes to the test
      Fix unbound local error due to incorrect branch
      Permit undefined variable in SSA reconstructor.
      Fix missing loc
      Fix test due to changes in names
      Move important commit message into comment
      Use unversioned name to guard instruction inclusion
      Fixes
      Handle error because redvar name not defined in scope
      Strip phi nodes at fallback into objectmode
      Check if the fix work
      PEP8
      Fix test that should not have worked.
      Move npm specific patch away from BaseLowerer
      Key of Generator type should include the .state_types
      Rebuild generator type
      Ensure typemap is not None
      Disable SSA in liftedloop
      Adds docstrings
      Apply suggestions from code review
      Docstrings, deadcode, comments and cleanup
      Add environment variable to control whether uninitialized variable are always warned
      Remove unnecessary import from numba/__init__.py
      Move function_type.py into numba/experimental
      Add experimental feature warning
      Test warning being shown in first-class function uses
      Fix invalid warning on first-class function feature
      Update docs/source/reference/types.rst
      Update docs/source/reference/types.rst
      Remove undefined variable
      Set build label to main
      Merge pull request #5423 from gmarkall/grm-issue-5421
      Merge pull request #5450 from luk-f-a/no-number-toc
      Merge pull request #5453 from ARF1/wip/fix_windows_docs_build
      Merge pull request #5454 from EPronovost/epronovost/jitclass-move-warning
      Merge pull request #5480 from stuartarchibald/fix/5477
      Merge pull request #5485 from eric-wieser/fix-deprecation
      Merge pull request #5488 from eric-wieser/config-shim
      Merge pull request #5489 from ARF1/patch-2
      Merge pull request #5495 from sklam/fix/iss5482
      Merge pull request #5498 from eric-wieser/better-shims
      Merge pull request #5527 from stuartarchibald/fix/5518
      Merge pull request #5529 from stuartarchibald/pr_5473_continued
      Merge pull request #5538 from stuartarchibald/wip/change_log_049rc2
      Merge pull request #5459 from Quansight/pearu/issue5448
      Merge pull request #5555 from sklam/fix/iss5515
      Merge pull request #5557 from Quansight/pearu/5540
      Merge pull request #5567 from stuartarchibald/wip/change_log_049_final
      Pin down llvmlite requirement
      Merge pull request #5569 from sklam/fix/iss5565
      Merge pull request #5574 from stuartarchibald/wip/changelog_0.49_3

Stuart Archibald (339):
      Fix issues in #4615 (thread masking).
      Fix problematic test design.
      Rename TLS var
      Sync TLS slot on main thread with launch default
      Fix up flake8
      Work around TBB scheduler not guaranteeing full mask use.
      Add OpenMP vendor string to numba -s
      Fix up OMP vendor ordering and test.
      Update forksafe definition site
      TMP: Add conda-forge TBB for windows
      Get test type in feedback message
      Extend TBB flexible testing to other tests
      Add numba -s to azure
      Debug output
      Fix up guvectorize race condition.
      Fix another race condition
      Trying out nested parallelism prevention in workqueue
      Add test for sigterm on nested workqueue use
      Update signal
      Update signal for windows
      Fix flake8
      Move to SIGABRT as all OS have that?!
      Stop checking signal value
      Cast pthread_self() to int.
      fix flake8
      Fix issue in masked testing when cores=1
      refactor snt checker
      Prevent CUDA kernel launch without a specified launch config.
      Assert int type in set_num_threads
      Initial draft of developer docs for the thread masking impl.
      Add fork test
      Add TBB version checks at compile time.
      Add runtime check on TBB version.
      Make wrong TBB a warning and disable
      Change library spelling on windows
      Add version check to tests using TBB.
      Update to translate to ImportError
      flake8
      Implement ord()/chr()
      Remove redundant tests
      Remove redundant guard
      wip remove six
      canonicalise six.add_metaclass
      move out six
      Fix up failing tests
      Fix up utils
      remove PY3 guards
      remove other py3 spellings
      Fix up HAS_MATMUL_OPERATOR
      Remove PYVERSION uses
      Remove future imports
      fix bad refactor
      Remove missed singledispatch
      wip rm six/python_utils
      Fix up bug
      remove six move
      Fix up repo map
      Fix refactor scope error
      rm 34
      rm 35
      win32 py27 restriction fix
      fix up stencils
      remove staticmethod
      more parfors unsupported
      even more parfors unsupported
      sys.version_info pattern removal
      sys.version_info pattern removal 2
      sys.version_info pattern removal 3
      sys.version_info pattern removal 4
      sys.version_info pattern removal 5
      Fix failing tests
      Fix @needs_matmul
      remove py2 file stripper
      more sys.version_info removing 1
      more sys.version_info removing 2
      more sys.version_info removing 3
      more sys.version_info removing 4
      more sys.version_info removing 5
      Fix up C code
      Fix missing import
      Fix missing import 2
      Fix missing truediv impl
      Flake8
      remove missing ref in docs
      fix CUDA
      sort out BLAS/LAPACK
      Enfore critical dep versions
      Remove np <115
      Remove fixup from removals 1
      Remove more np removals 1
      Remove more np removals 2
      Remove more np removals 3
      Remove more np removals 4
      Remove more np removals 5
      Remove more np removals 6
      Remove @tag('important')
      Remove @tag('important') 2
      flake8
      Remove dead functions
      Remove custom maths functions
      Fix has_blas import errr
      Fix up docs
      remove removed symbol
      Moved linalg, created np and misc
      massive churn, some stuff working
      fix errors imports
      tmp
      Fix c++
      fix a load more tests
      fix with sed 1
      fix with sed 2
      2% working
      6% working
      Fix up loads more imports
      Move npdatetime
      move dataflow.py
      move controlflow.py
      abs imports
      abs imports 2
      move byteflow.py
      move interpreter.py
      move datamodel
      move compiler_lock.py
      fix more imports
      fix more imports 2
      fix more imports 3
      move ir.py
      move dispatcher.py
      move bytecode.py
      move numba/annotations
      move appdirs
      Make numba/parfors submodule
      Move array_analysis to numba/parfors
      Move analysis to numba/core
      Create cpython submodule
      Move slicing.py to numba/cpython
      Move targets/tupleobj.py to numba/cpython
      Move targets/setobj.py to numba/cpython
      Move targets/charseq.py to numba/cpython
      Move targets/builtins.py to numba/cpython
      Move targets/cmathimpl.py to numba/cpython
      Move targets/enumimpl.py to numba/cpython
      Move targets/hashing.py to numba/cpython
      Move targets/heapq.py to numba/cpython
      Move targets/iterators.py to numba/cpython
      Move targets/listobj.py to numba/cpython
      Move targets/mathimpl.py to numba/cpython
      Move targets/numbers.py to numba/cpython
      Move targets/printimpl.py to numba/cpython
      Move targets/randomimpl.py to numba/cpython
      Move targets/rangeobj.py to numba/cpython
      Move unicode.py to numba/cpython
      Move unicode_support.py to numba/cpython
      Add cpython/unsafe dir
      Move unsafe/numbers.py to numba/cpython/unsafe
      Move unsafe/tuple.py to numba/cpython/unsafe
      Move numba/_runtests.py to numba/testing
      Move numba/caching.py to numba/core
      Move numba/callwrapper.py to numba/core
      Move numba/ccallback.py to numba/core
      Move numba/consts.py to numba/core
      Move numba/debuginfo.py to numba/core
      Move numba/entrypoints.py to numba/core
      Move numba/funcdesc.py to numba/core
      Move numba/generators.py to numba/core
      Move numba/itanium_mangler.py to numba/core
      Move numba/object_mode_passes.py to numba/core
      Move numba/postproc.py to numba/core
      Move numba/pretty_annotate.py to numba/core/annotations
      Move numba/rewrites to numba/core
      Move numba/pythonapi.py to numba/core
      Move numba/serialize.py to numba/core
      Move numba/untyped_passes.py to numba/core
      Move numba/typed_passes.py to numba/core
      Move numba/typeinfer.py to numba/core
      Move numba/tracing.py to numba/core
      Move numba/withcontexts.py to numba/core
      Move numba/inline_closurecall.py to numba/core
      Move targets/compiler_machinery.py to numba/cpython
      Move targets/config.py to numba/cpython
      Move numba/compiler.py to numba/cpython
      Move numba/lowering.py to numba/cpython
      Move numba/pylowering.py to numba/cpython
      Move numba/sigutils.py to numba/cpython
      Create numba.stencil
      remove numba/stencil, move numba/ir_utils to numba/core
      Move numba/cgutils.py to numba/core
      Move numba/targets/callconv.py to numba/core
      Move numba/targets/boxing.py to numba/core
      Move numba/targets/codegen.py to numba/core
      Move numba/targets/descriptors.py to numba/core
      Move numba/targets/cpu.py to numba/core
      Move numba/targets/cpu_options.py to numba/core
      Move numba/decorators.py to numba/core
      Move numba/jitclass to numba/experimental/jitclass
      Move numba/targets/base.py to numba/core
      Move numba/targets/optional.py to numba/core
      Move numba/targets/externals.py to numba/core
      Move numba/targets/fastmathpass.py to numba/core
      Move numba/targets/intrinsics.py to numba/core
      Move numba/targets/options.py to numba/core
      Move numba/targets/imputils.py to numba/core
      Move numba/targets/removerefctpass.py to numba/core
      Move numba/transforms.py to numba/core
      Add numba.core.unsafe submodule
      Move numba/unsafe/bytes.py to numba/core/unsafe
      Move numba/unsafe/eh.py to numba/core/unsafe
      Move numba/unsafe/nrt.py to numba/core/unsafe
      Move numba/unsafe/refcount.py to numba/core/unsafe
      Move numba/dummyarray.py to numba/misc
      Move numba/findlib.py to numba/misc
      Fix cuda refactor bug
      Move numba/help to numba/misc
      Move numba/numba_entry.py to numba/misc
      Move numba/targets/gdb_hook.py to numba/misc
      Move numba/tests/timsort.py to numba/misc
      Move numba/targets/literal.py to numba/misc
      Move numba/targets/dictimpl.py to numba/typed
      Move numba/targets/polynomial.py to numba/np
      Move numba/typedobjectutils.py to numba/typed
      Move numba/dictobject.py to numba/typed
      Move numba/listobject.py to numba/typed
      Add numba.np.unsafe submodule
      Move numba/unsafe/ndarray.py to numba/np/unsafe
      Move numba/unittest_support.py to numba/testing
      Create numba.np.ufunc
      Move numba/npyufunc to numba/np/ufunc
      Move numba/servicelib to numba/roc
      Move numba/targets/arraymath.py to numba/np
      Move numba/targets/cffiimpl.py to numba/misc
      Move numba/targets/npyfuncs.py to numba/np
      Move numba/targets/ufunc_db.py to numba/np
      Move numba/targets/npyimpl.py to numba/np
      Move numba/numpy_support.py to numba/np
      Move numba/np/npdatetime.py to numba/np/npdatetime_helpers.py
      Move numba/targets/npdatetime.py to numba/np/
      Move numba/targets/registry.py to numba/core/
      Remove numba.unsafe
      Remove numba.targets
      Move numba/stencil.py to numba/stencils
      Move numba/stencilparfor.py to numba/stencils
      Move numba/special.py to numba/misc
      Move numba/parfor.py to numba/parfors
      Rename numba.np.ufunc.parfor -> numba.np.ufunc.parfor_lowering
      Move numba/np/ufunc/parfor_lowering.py to numba/parfors
      Remove numba.macro
      Remove numba.cffi_utils
      Move numba.extending to numba.core.extending and then re-export
      Move numba.numpy_extensions to numba.np.extensions
      Add back in extension API
      Fix up numba_entry
      Add missing experimental/__init__.py
      Remove now-dead unittest_support file
      Move numba.runtime to numba.core.runtime
      Fix pycc
      Fix error handling
      Fix help.inspector
      Fix up test_import
      Fix up test_jit_module
      Fix test_comprehension
      Fix test_inlining
      Fix test_indexing
      Fix issue with nested stencil calls
      Fix issue unsafe empty_inferred
      Fix flake8 file
      Fix flake8 violations
      Fix up docs, re-export numba.types
      Remove AUTHORS list
      Remove reference to file in docs
      Add missing stencils/__init__.py
      Add test for upper/lower bounds in chr()
      Add comment about code appearing a bit different to CPython.
      Prvent use of TBB if the interface is of too low version
      Add in TBB from defaults
      tmp patch for debug
      Make debug work in python code
      Add test case for #5098
      Undo debug code
      Disable TBB on linux x86
      Remove dead code in gufunc asm test
      Add in changes from #5114
      Add in test for changes proposed in #5114
      Make IR ir.Del free until legalized.
      Simple changes from review feedback.
      Add tests for IR del enforcement
      Fix up test relying on ir.Del presence
      Fix typo
      Add branch pruning based on raw predicates.
      Update docs with intro to {g,}ufuncs.
      Respond to feedback.
      Provide `numba.extending.is_jitted`
      Flake8
      Flake8++
      Remove more unsupported Python versions from build tooling.
      Add test
      Remove more files/code for Py2.7
      Remove dead references in docs
      Fix up and add tests
      Remove AUTHORS file reference from MANIFEST.in
      Update the image used in Azure CI for OSX.
      Adds support for viewing the CFG of the ELF disassembly.
      Lazy approach, needs work on SVG out
      Move tooling to numba.misc.inspection
      Add docstring
      Remove extra spaces
      Respond to feedback
      Make user facing error string use abs path not rel.
      Add in windows drive pattern match.
      Let literal_unroll accept types.Named*Tuple
      Update installation docs with OpenMP requirements.
      Add warning if FNV hashing is found as the default for CPython.
      Fix mistake for Python 3.8
      Disable test failing due to removed pass.
      Remove Travis CI badge.
      Add deps to docs. Move import path.
      Remove reference to Python 2.7 in install check output
      Make test ordering more consistent across feature availability
      Update CI scripts to show test discovery
      Add docs to reference section
      Fix int hashing alg.
      Fix defn scope problem in unicode strip
      Fix multiple definition issue for unroller
      Add SSA versioning info to ir.Var and fix up parfors reductions
      Fix 32bit platform int hashing
      Fix matrix_power/general issue with variable init
      Fix failing test.
      Fix type annotations
      Add in tests from SSA label
      Add skips for PPC64LE Invalid PPC CTR loop bug
      Add tolerance to numba extension module entrypoints.
      Fix code causing compiler warnings.
      Add shim to accommodate refactoring.
      Add tests from user cases for parfors tuple handling
      Add shim and deprecation for numba.jitclass location
      Update docs with isnat
      Update package deps for doc building.
      Bump deprecation notices.
      Update CHANGE_LOG for 0.49
      Remove 0.50 dev and fix date string

Todd A. Anderson (17):
      copy function definitions in _arrayexpr_tree_to_ir to prevent IR aliasing.  When copying a definition to a block so that it can be inlined in a parfor to prevent having to pass a function type to a gufunc, rename the function definition var so that typing won't try a recursive lock on a global var.  Then, do renaming in the effected block.
      Add test for issue4903.
      Update numba/parfor.py
      Update numba/parfor.py
      Extract common code to an inner function.
      Better debugging messages.
      Don't consider variables of type Module to be parfor races since push_call_vars() in the parfor pass copies such variables to later parfors if they are used there.
      Add prange variant to has_no_side_effect.
      Add test for prange side effect.
      Line length.
      Support for tuples passed to parfors.
      Update numba/parfors/parfor.py
      Code review updates.
      Simplify the setting of globls for gufunc eval related to named tuples.  Works now the same way for Globals and FreeVars.
      Re-constructing parfor tuples for empty tuple doesn't add extra comma.  Add support for namedtuples passed as args and getting parfor gufunc globl from BaseNamedTuples.
      Get rid of default_rng() causing test error.  Wasn't necessary, could just use existing random generator.  Also, I think the test had a potential divide by 0 error so changed minimum random value to prevent that.  Disabled test_issue4846 which has some issue that seems to be related to the testing infrastructure because when the test is run in its own file it works.
      Raise CompilerError if named tuple definition cannot be found.

VP5785 (1):
      initial commit

Valentin Haenel (57):
      implement None-typed typed-list
      add missing dtype interface
      disable extend
      disable tests from future
      fix failed rebase
      explain what inlining at Numba IR level will do
      remove tests that depend on _disable_reflected_list
      remove reminder comment
      fix version spec for llvmlite
      pass 'inline' explicitly to overload
      extract code-gen utilities from closures
      flake8: too many blank lines
      remove duplicate 'test' in comment
      adding test
      ping dev versions correctly
      implement is_mutable member
      guard all mutation functions
      implement Python test for C
      implement the compiler part for immutable typed-lists
      interpreter-level immutable typed-lists
      fix target path for See also
      fix typo in inlining docs
      check the exception content
      fix 'see also' in typeddict docs
      implement allocated parameter in njit
      basic ability to initialize typed-list from iter
      expand tests to cover njit use-case also
      fix `redirect_type_ctor`
      patch up starargs as tuple
      fixup typer for the single argument use-case
      enable construction from iterable
      add test to generate from range
      refactor test and make use of code-generation
      add tuple case to test
      reject non-iterables
      a better hack for converting starargs
      enable creating a typed-list from a unicode (string)
      implement creating a list from dict
      rename test and add the set type
      cleanup TypingErrors and test them
      test inhomogeneous tuples too
      docstring for @type_callable(ListType)
      docstring and comments for @overload(numba_typeref_ctor)
      fixup imports and cleanup
      extract dtype guessing
      implement rejecting illegal args in interpreter
      more stararg fixes
      raise type error for _dtype on untyped list
      change TypeError to be a RuntimeError
      fix failed rebase
      revert stararg hack
      pin the signature
      fix the ctor args
      extend tests
      fix NumPy array handling
      add support and test for types.Boolean
      Merge pull request #5455 from stuartarchibald/wip/update_llvmlite_032

as (2):
      added test for issue #3229
      fix #3229

c200chromebook (6):
      Update numba/cuda/simulator/cudadrv/devicearray.py
      Update numba/cuda/simulator/kernel.py
      Update numba/cuda/simulator/cudadrv/devicearray.py
      Update test_cudasim_issues.py
      Update test_cudasim_issues.py
      Update numba/cuda/simulator/cudadrv/devicearray.py

hdf (5):
      boundscheck fix
      added test for #5257
      fix extension for #5257
      fix lack of attention
      adding requested comment

jakirkham (2):
      Update numba/cuda/cudadrv/devicearray.py
      Use `self.assertEqual` for comparison tests

luk-f-a (20):
      added after-inference rewrite and typing of getitem
      updates docstring
      added tests
      added support for global tuples
      extended docs for struct scalars
      flake8 fixes
      doc improvement
      added tests for global and freevar typing and literal unrolling
      restricted literal typing of global tuples to Unicode and Integer cases
      added FreeVar as acceptable input to literal_unroll
      one test on float tuple global
      flake8 fix
      clean up
      changes after review
      added test for unrolling of functions
      flake8 fix
      avoiding UnionType
      adding test for content of error being raised
      minor consistency fix on tests
      flake8 fix

stuartarchibald (8):
      Apply suggestions from code review
      Merge pull request #5532 from sklam/enh/shim
      Merge pull request #5436 from gmarkall/grm-issue-5408
      Merge pull request #5457 from esc/typed-list/repr_for_untyped
      Merge pull request #5505 from EPronovost/epronovost/jitclass-init-check
      Merge pull request #5519 from gmarkall/grm-cuda-test-fixes
      Merge pull request #5542 from sklam/fix/49rc2
      Merge pull request #5548 from jagaudin/Fix#5537

vl (13):
      Add: highlight Numba IR dump
      Fix for <expression>
      Moved to misc.dump_style
      Changed no_color style. Changed lowering/codegen dump style according to COLOR_SCHEME
      Flake fix
      misc.dump_style: doc fix, import fix
      Fix: incorrect < highlight
      Small fix to have llvm and asm highlighted properly
      Fix: core/codegen dump lang is required
      typo
      Fix: _intern for DictIteratorType
      Add: test for DictIterator
      Cosmetic changes
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants