Copy disabled (too large)
Download .txt
Showing preview only (13,268K chars total). Download the full file to get everything.
Repository: numba/numba
Branch: main
Commit: 4613eaf4ea5d
Files: 1007
Total size: 12.5 MB
Directory structure:
gitextract_jo8w_g1q/
├── .coveragerc
├── .flake8
├── .gitattributes
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── Bug_report.md
│ │ ├── Feature_request.md
│ │ ├── config.yml
│ │ ├── first_rc_checklist.md
│ │ └── sub_rc_checklist.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── conda_workflow_matrix.json
│ ├── numba_linux-64_conda_builder.yml
│ ├── numba_linux-64_wheel_builder.yml
│ ├── numba_linux-aarch64_conda_builder.yml
│ ├── numba_linux-aarch64_wheel_builder.yml
│ ├── numba_osx-arm64_conda_builder.yml
│ ├── numba_osx-arm64_wheel_builder.yml
│ ├── numba_win-64_conda_builder.yml
│ ├── numba_win-64_wheel_builder.yml
│ ├── stale.yml
│ ├── towncrier.yml
│ ├── upload_packages.yml
│ └── wheel_workflow_matrix.json
├── .gitignore
├── .readthedocs.yml
├── CHANGE_LOG
├── CONTRIBUTING.md
├── LICENSE
├── LICENSES.third-party
├── MANIFEST.in
├── README.rst
├── SECURITY.md
├── azure-pipelines.yml
├── bin/
│ └── numba
├── buildscripts/
│ ├── azure/
│ │ ├── azure-linux-macos.yml
│ │ └── azure-windows.yml
│ ├── condarecipe.local/
│ │ ├── bld.bat
│ │ ├── build.sh
│ │ ├── conda_build_config.yaml
│ │ ├── license.txt
│ │ ├── meta.yaml
│ │ ├── run_test.bat
│ │ └── run_test.sh
│ ├── github/
│ │ ├── build_wheel_linux.sh
│ │ ├── download_artifacts.py
│ │ ├── find_workflow_runs.py
│ │ ├── patch_wheel_dylib.py
│ │ ├── repair_wheel_linux.sh
│ │ └── workflow_groups.json
│ ├── gpuci/
│ │ ├── axis.yaml
│ │ └── build.sh
│ └── incremental/
│ ├── MacOSX10.10.sdk.checksum
│ ├── after_success.sh
│ ├── build.cmd
│ ├── build.sh
│ ├── install_miniconda.sh
│ ├── setup_conda_environment.cmd
│ ├── setup_conda_environment.sh
│ └── test.sh
├── codecov.yml
├── contrib/
│ └── valgrind-numba.supp
├── docs/
│ ├── Makefile
│ ├── _static/
│ │ └── rtd-overrides.css
│ ├── _templates/
│ │ └── EMPTY
│ ├── dagmap/
│ │ ├── README.md
│ │ ├── dagmap.yaml
│ │ ├── jquery.graphviz.svg.js
│ │ ├── render.py
│ │ └── template.html
│ ├── environment.yml
│ ├── make.bat
│ ├── source/
│ │ ├── _ext/
│ │ │ └── ghfiles.py
│ │ ├── conf.py
│ │ ├── cuda/
│ │ │ ├── bindings.rst
│ │ │ ├── caching.rst
│ │ │ ├── cooperative_groups.rst
│ │ │ ├── cuda_array_interface.rst
│ │ │ ├── cuda_compilation.rst
│ │ │ ├── cuda_ffi.rst
│ │ │ ├── cudapysupported.rst
│ │ │ ├── device-functions.rst
│ │ │ ├── device-management.rst
│ │ │ ├── examples.rst
│ │ │ ├── external-memory.rst
│ │ │ ├── faq.rst
│ │ │ ├── fastmath.rst
│ │ │ ├── index.rst
│ │ │ ├── intrinsics.rst
│ │ │ ├── ipc.rst
│ │ │ ├── kernels.rst
│ │ │ ├── memory.rst
│ │ │ ├── minor_version_compatibility.rst
│ │ │ ├── overview.rst
│ │ │ ├── random.rst
│ │ │ ├── reduction.rst
│ │ │ ├── simulator.rst
│ │ │ └── ufunc.rst
│ │ ├── cuda-reference/
│ │ │ ├── host.rst
│ │ │ ├── index.rst
│ │ │ ├── kernel.rst
│ │ │ ├── libdevice.rst
│ │ │ ├── memory.rst
│ │ │ └── types.rst
│ │ ├── developer/
│ │ │ ├── architecture.rst
│ │ │ ├── bytecode.rst
│ │ │ ├── caching.rst
│ │ │ ├── compiler_pass_example.py
│ │ │ ├── contributing.rst
│ │ │ ├── custom_pipeline.rst
│ │ │ ├── debugging.rst
│ │ │ ├── dispatching.rst
│ │ │ ├── environment.rst
│ │ │ ├── event_api.rst
│ │ │ ├── generators.rst
│ │ │ ├── hashing.rst
│ │ │ ├── index.rst
│ │ │ ├── inline_example.py
│ │ │ ├── inline_overload_example.py
│ │ │ ├── inlining.rst
│ │ │ ├── listings.rst
│ │ │ ├── literal.rst
│ │ │ ├── live_variable_analysis.rst
│ │ │ ├── llvm_timings.rst
│ │ │ ├── mission.rst
│ │ │ ├── numba-runtime.rst
│ │ │ ├── release.rst
│ │ │ ├── repomap.rst
│ │ │ ├── rewrites.rst
│ │ │ ├── stencil.rst
│ │ │ ├── sys_monitoring.rst
│ │ │ ├── target_extension.rst
│ │ │ └── threading_implementation.rst
│ │ ├── extending/
│ │ │ ├── entrypoints.rst
│ │ │ ├── high-level.rst
│ │ │ ├── index.rst
│ │ │ ├── interval-example.rst
│ │ │ ├── low-level.rst
│ │ │ ├── mynorm.py
│ │ │ ├── overloading-guide.rst
│ │ │ └── template.py
│ │ ├── glossary.rst
│ │ ├── index.rst
│ │ ├── proposals/
│ │ │ ├── cfunc.rst
│ │ │ ├── extension-points.rst
│ │ │ ├── external-memory-management.rst
│ │ │ ├── index.rst
│ │ │ ├── integer-typing.rst
│ │ │ ├── jit-classes.rst
│ │ │ ├── np-where-override.py
│ │ │ ├── type-inference.rst
│ │ │ └── typing_recursion.rst
│ │ ├── reference/
│ │ │ ├── aot-compilation.rst
│ │ │ ├── deprecation.rst
│ │ │ ├── envvars.rst
│ │ │ ├── fpsemantics.rst
│ │ │ ├── index.rst
│ │ │ ├── jit-compilation.rst
│ │ │ ├── numpysupported.rst
│ │ │ ├── pysemantics.rst
│ │ │ ├── pysupported.rst
│ │ │ ├── support_tiers.rst
│ │ │ ├── types.rst
│ │ │ └── utils.rst
│ │ ├── release/
│ │ │ ├── 0.58.0-notes.rst
│ │ │ ├── 0.58.1-notes.rst
│ │ │ ├── 0.59.0-notes.rst
│ │ │ ├── 0.59.1-notes.rst
│ │ │ ├── 0.60.0-notes.rst
│ │ │ ├── 0.61.0-notes.rst
│ │ │ ├── 0.61.1-notes.rst
│ │ │ ├── 0.61.2-notes.rst
│ │ │ ├── 0.62.0-notes.rst
│ │ │ ├── 0.62.1-notes.rst
│ │ │ ├── 0.63.0-notes.rst
│ │ │ ├── 0.63.1-notes.rst
│ │ │ ├── 0.64.0-notes.rst
│ │ │ └── 0.65.0-notes.rst
│ │ ├── release-notes-overview.rst
│ │ ├── release-notes.rst
│ │ └── user/
│ │ ├── 5minguide.rst
│ │ ├── cfunc.rst
│ │ ├── cli.rst
│ │ ├── code_coverage.rst
│ │ ├── examples.rst
│ │ ├── faq.rst
│ │ ├── index.rst
│ │ ├── installing.rst
│ │ ├── jit-module.rst
│ │ ├── jit.rst
│ │ ├── jitclass.rst
│ │ ├── overview.rst
│ │ ├── parallel.rst
│ │ ├── performance-tips.rst
│ │ ├── pycc.rst
│ │ ├── stencil.rst
│ │ ├── talks.rst
│ │ ├── threading-layer.rst
│ │ ├── troubleshoot.rst
│ │ ├── vectorize.rst
│ │ └── withobjmode.rst
│ └── upcoming_changes/
│ ├── 10418.bug_fix.rst
│ ├── README.rst
│ └── template.rst
├── maint/
│ ├── git-copy.py
│ ├── github_weekly_meeting.py
│ ├── gitlog2changelog.py
│ ├── towncrier_checker.py
│ └── towncrier_rst_validator.py
├── mypy.ini
├── numba/
│ ├── __init__.py
│ ├── __main__.py
│ ├── _arraystruct.h
│ ├── _devicearray.cpp
│ ├── _devicearray.h
│ ├── _dispatcher.cpp
│ ├── _dynfunc.c
│ ├── _dynfuncmod.c
│ ├── _hashtable.cpp
│ ├── _hashtable.h
│ ├── _helperlib.c
│ ├── _helperlib.pyi
│ ├── _helpermod.c
│ ├── _lapack.c
│ ├── _numba_common.h
│ ├── _pymodule.h
│ ├── _random.c
│ ├── _typeof.cpp
│ ├── _typeof.h
│ ├── _unicodetype_db.h
│ ├── _version.py
│ ├── cext/
│ │ ├── __init__.py
│ │ ├── cext.h
│ │ ├── dictobject.c
│ │ ├── dictobject.h
│ │ ├── listobject.c
│ │ ├── listobject.h
│ │ └── utils.c
│ ├── cloudpickle/
│ │ ├── __init__.py
│ │ ├── cloudpickle.py
│ │ └── cloudpickle_fast.py
│ ├── core/
│ │ ├── __init__.py
│ │ ├── analysis.py
│ │ ├── annotations/
│ │ │ ├── __init__.py
│ │ │ ├── pretty_annotate.py
│ │ │ ├── template.html
│ │ │ └── type_annotations.py
│ │ ├── base.py
│ │ ├── boxing.py
│ │ ├── bytecode.py
│ │ ├── byteflow.py
│ │ ├── caching.py
│ │ ├── callconv.py
│ │ ├── callwrapper.py
│ │ ├── ccallback.py
│ │ ├── cgutils.py
│ │ ├── codegen.py
│ │ ├── compiler.py
│ │ ├── compiler_lock.py
│ │ ├── compiler_machinery.py
│ │ ├── config.py
│ │ ├── consts.py
│ │ ├── controlflow.py
│ │ ├── cpu.py
│ │ ├── cpu_options.py
│ │ ├── datamodel/
│ │ │ ├── __init__.py
│ │ │ ├── manager.py
│ │ │ ├── models.py
│ │ │ ├── packer.py
│ │ │ ├── registry.py
│ │ │ └── testing.py
│ │ ├── debuginfo.py
│ │ ├── decorators.py
│ │ ├── descriptors.py
│ │ ├── dispatcher.py
│ │ ├── entrypoints.py
│ │ ├── environment.py
│ │ ├── errors.py
│ │ ├── event.py
│ │ ├── extending.py
│ │ ├── extending.pyi
│ │ ├── externals.py
│ │ ├── fastmathpass.py
│ │ ├── funcdesc.py
│ │ ├── generators.py
│ │ ├── imputils.py
│ │ ├── inline_closurecall.py
│ │ ├── interpreter.py
│ │ ├── intrinsics.py
│ │ ├── ir.py
│ │ ├── ir_utils.py
│ │ ├── itanium_mangler.py
│ │ ├── llvm_bindings.py
│ │ ├── lowering.py
│ │ ├── object_mode_passes.py
│ │ ├── optional.py
│ │ ├── options.py
│ │ ├── postproc.py
│ │ ├── pylowering.py
│ │ ├── pythonapi.py
│ │ ├── registry.py
│ │ ├── removerefctpass.py
│ │ ├── rewrites/
│ │ │ ├── __init__.py
│ │ │ ├── ir_print.py
│ │ │ ├── registry.py
│ │ │ ├── static_binop.py
│ │ │ ├── static_getitem.py
│ │ │ └── static_raise.py
│ │ ├── runtime/
│ │ │ ├── __init__.py
│ │ │ ├── _nrt_python.c
│ │ │ ├── _nrt_pythonmod.c
│ │ │ ├── context.py
│ │ │ ├── nrt.cpp
│ │ │ ├── nrt.h
│ │ │ ├── nrt.py
│ │ │ ├── nrt_external.h
│ │ │ ├── nrtdynmod.py
│ │ │ └── nrtopt.py
│ │ ├── serialize.py
│ │ ├── sigutils.py
│ │ ├── ssa.py
│ │ ├── target_extension.py
│ │ ├── targetconfig.py
│ │ ├── tracing.py
│ │ ├── transforms.py
│ │ ├── typeconv/
│ │ │ ├── __init__.py
│ │ │ ├── _typeconv.cpp
│ │ │ ├── castgraph.py
│ │ │ ├── rules.py
│ │ │ ├── test.cpp
│ │ │ ├── typeconv.cpp
│ │ │ ├── typeconv.hpp
│ │ │ └── typeconv.py
│ │ ├── typed_passes.py
│ │ ├── typeinfer.py
│ │ ├── types/
│ │ │ ├── __init__.py
│ │ │ ├── __init__.pyi
│ │ │ ├── abstract.py
│ │ │ ├── common.py
│ │ │ ├── containers.py
│ │ │ ├── function_type.py
│ │ │ ├── functions.py
│ │ │ ├── iterators.py
│ │ │ ├── misc.py
│ │ │ ├── npytypes.py
│ │ │ └── scalars.py
│ │ ├── typing/
│ │ │ ├── __init__.py
│ │ │ ├── arraydecl.py
│ │ │ ├── asnumbatype.py
│ │ │ ├── bufproto.py
│ │ │ ├── builtins.py
│ │ │ ├── cffi_utils.py
│ │ │ ├── cmathdecl.py
│ │ │ ├── collections.py
│ │ │ ├── context.py
│ │ │ ├── ctypes_utils.py
│ │ │ ├── dictdecl.py
│ │ │ ├── enumdecl.py
│ │ │ ├── listdecl.py
│ │ │ ├── mathdecl.py
│ │ │ ├── npdatetime.py
│ │ │ ├── npydecl.py
│ │ │ ├── setdecl.py
│ │ │ ├── templates.py
│ │ │ └── typeof.py
│ │ ├── unsafe/
│ │ │ ├── __init__.py
│ │ │ ├── bytes.py
│ │ │ ├── eh.py
│ │ │ ├── nrt.py
│ │ │ └── refcount.py
│ │ ├── untyped_passes.py
│ │ ├── utils.py
│ │ └── withcontexts.py
│ ├── cpython/
│ │ ├── __init__.py
│ │ ├── builtins.py
│ │ ├── charseq.py
│ │ ├── cmathimpl.py
│ │ ├── enumimpl.py
│ │ ├── hashing.py
│ │ ├── heapq.py
│ │ ├── iterators.py
│ │ ├── listobj.py
│ │ ├── mathimpl.py
│ │ ├── numbers.py
│ │ ├── printimpl.py
│ │ ├── randomimpl.py
│ │ ├── rangeobj.py
│ │ ├── setobj.py
│ │ ├── slicing.py
│ │ ├── tupleobj.py
│ │ ├── unicode.py
│ │ ├── unicode_support.py
│ │ └── unsafe/
│ │ ├── __init__.py
│ │ ├── numbers.py
│ │ └── tuple.py
│ ├── cuda/
│ │ ├── __init__.py
│ │ ├── api.py
│ │ ├── api_util.py
│ │ ├── args.py
│ │ ├── cg.py
│ │ ├── codegen.py
│ │ ├── compiler.py
│ │ ├── cpp_function_wrappers.cu
│ │ ├── cuda_fp16.h
│ │ ├── cuda_fp16.hpp
│ │ ├── cuda_paths.py
│ │ ├── cudadecl.py
│ │ ├── cudadrv/
│ │ │ ├── __init__.py
│ │ │ ├── _extras.c
│ │ │ ├── devicearray.py
│ │ │ ├── devices.py
│ │ │ ├── driver.py
│ │ │ ├── drvapi.py
│ │ │ ├── dummyarray.py
│ │ │ ├── enums.py
│ │ │ ├── error.py
│ │ │ ├── libs.py
│ │ │ ├── ndarray.py
│ │ │ ├── nvrtc.py
│ │ │ ├── nvvm.py
│ │ │ ├── rtapi.py
│ │ │ └── runtime.py
│ │ ├── cudaimpl.py
│ │ ├── cudamath.py
│ │ ├── decorators.py
│ │ ├── descriptor.py
│ │ ├── device_init.py
│ │ ├── deviceufunc.py
│ │ ├── dispatcher.py
│ │ ├── errors.py
│ │ ├── extending.py
│ │ ├── initialize.py
│ │ ├── intrinsic_wrapper.py
│ │ ├── intrinsics.py
│ │ ├── kernels/
│ │ │ ├── __init__.py
│ │ │ ├── reduction.py
│ │ │ └── transpose.py
│ │ ├── libdevice.py
│ │ ├── libdevicedecl.py
│ │ ├── libdevicefuncs.py
│ │ ├── libdeviceimpl.py
│ │ ├── mathimpl.py
│ │ ├── models.py
│ │ ├── nvvmutils.py
│ │ ├── printimpl.py
│ │ ├── random.py
│ │ ├── simulator/
│ │ │ ├── __init__.py
│ │ │ ├── api.py
│ │ │ ├── compiler.py
│ │ │ ├── cudadrv/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── devicearray.py
│ │ │ │ ├── devices.py
│ │ │ │ ├── driver.py
│ │ │ │ ├── drvapi.py
│ │ │ │ ├── dummyarray.py
│ │ │ │ ├── error.py
│ │ │ │ ├── libs.py
│ │ │ │ ├── nvvm.py
│ │ │ │ └── runtime.py
│ │ │ ├── kernel.py
│ │ │ ├── kernelapi.py
│ │ │ ├── reduction.py
│ │ │ └── vector_types.py
│ │ ├── simulator_init.py
│ │ ├── stubs.py
│ │ ├── target.py
│ │ ├── testing.py
│ │ ├── tests/
│ │ │ ├── __init__.py
│ │ │ ├── cudadrv/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_array_attr.py
│ │ │ │ ├── test_context_stack.py
│ │ │ │ ├── test_cuda_array_slicing.py
│ │ │ │ ├── test_cuda_auto_context.py
│ │ │ │ ├── test_cuda_devicerecord.py
│ │ │ │ ├── test_cuda_driver.py
│ │ │ │ ├── test_cuda_libraries.py
│ │ │ │ ├── test_cuda_memory.py
│ │ │ │ ├── test_cuda_ndarray.py
│ │ │ │ ├── test_deallocations.py
│ │ │ │ ├── test_detect.py
│ │ │ │ ├── test_emm_plugins.py
│ │ │ │ ├── test_events.py
│ │ │ │ ├── test_host_alloc.py
│ │ │ │ ├── test_init.py
│ │ │ │ ├── test_inline_ptx.py
│ │ │ │ ├── test_is_fp16.py
│ │ │ │ ├── test_linker.py
│ │ │ │ ├── test_managed_alloc.py
│ │ │ │ ├── test_mvc.py
│ │ │ │ ├── test_nvvm_driver.py
│ │ │ │ ├── test_pinned.py
│ │ │ │ ├── test_profiler.py
│ │ │ │ ├── test_ptds.py
│ │ │ │ ├── test_reset_device.py
│ │ │ │ ├── test_runtime.py
│ │ │ │ ├── test_select_device.py
│ │ │ │ └── test_streams.py
│ │ │ ├── cudapy/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── cache_usecases.py
│ │ │ │ ├── cache_with_cpu_usecases.py
│ │ │ │ ├── extensions_usecases.py
│ │ │ │ ├── jitlink.ptx
│ │ │ │ ├── recursion_usecases.py
│ │ │ │ ├── test_alignment.py
│ │ │ │ ├── test_array.py
│ │ │ │ ├── test_array_args.py
│ │ │ │ ├── test_array_methods.py
│ │ │ │ ├── test_atomics.py
│ │ │ │ ├── test_blackscholes.py
│ │ │ │ ├── test_boolean.py
│ │ │ │ ├── test_caching.py
│ │ │ │ ├── test_casting.py
│ │ │ │ ├── test_cffi.py
│ │ │ │ ├── test_compiler.py
│ │ │ │ ├── test_complex.py
│ │ │ │ ├── test_complex_kernel.py
│ │ │ │ ├── test_const_string.py
│ │ │ │ ├── test_constmem.py
│ │ │ │ ├── test_cooperative_groups.py
│ │ │ │ ├── test_cuda_array_interface.py
│ │ │ │ ├── test_cuda_jit_no_types.py
│ │ │ │ ├── test_datetime.py
│ │ │ │ ├── test_debug.py
│ │ │ │ ├── test_debuginfo.py
│ │ │ │ ├── test_device_func.py
│ │ │ │ ├── test_dispatcher.py
│ │ │ │ ├── test_enums.py
│ │ │ │ ├── test_errors.py
│ │ │ │ ├── test_exception.py
│ │ │ │ ├── test_extending.py
│ │ │ │ ├── test_fastmath.py
│ │ │ │ ├── test_forall.py
│ │ │ │ ├── test_freevar.py
│ │ │ │ ├── test_frexp_ldexp.py
│ │ │ │ ├── test_globals.py
│ │ │ │ ├── test_gufunc.py
│ │ │ │ ├── test_gufunc_scalar.py
│ │ │ │ ├── test_gufunc_scheduling.py
│ │ │ │ ├── test_idiv.py
│ │ │ │ ├── test_inspect.py
│ │ │ │ ├── test_intrinsics.py
│ │ │ │ ├── test_ipc.py
│ │ │ │ ├── test_iterators.py
│ │ │ │ ├── test_lang.py
│ │ │ │ ├── test_laplace.py
│ │ │ │ ├── test_libdevice.py
│ │ │ │ ├── test_lineinfo.py
│ │ │ │ ├── test_localmem.py
│ │ │ │ ├── test_mandel.py
│ │ │ │ ├── test_math.py
│ │ │ │ ├── test_matmul.py
│ │ │ │ ├── test_minmax.py
│ │ │ │ ├── test_montecarlo.py
│ │ │ │ ├── test_multigpu.py
│ │ │ │ ├── test_multiprocessing.py
│ │ │ │ ├── test_multithreads.py
│ │ │ │ ├── test_nondet.py
│ │ │ │ ├── test_operator.py
│ │ │ │ ├── test_optimization.py
│ │ │ │ ├── test_overload.py
│ │ │ │ ├── test_powi.py
│ │ │ │ ├── test_print.py
│ │ │ │ ├── test_py2_div_issue.py
│ │ │ │ ├── test_random.py
│ │ │ │ ├── test_record_dtype.py
│ │ │ │ ├── test_recursion.py
│ │ │ │ ├── test_reduction.py
│ │ │ │ ├── test_retrieve_autoconverted_arrays.py
│ │ │ │ ├── test_serialize.py
│ │ │ │ ├── test_slicing.py
│ │ │ │ ├── test_sm.py
│ │ │ │ ├── test_sm_creation.py
│ │ │ │ ├── test_sync.py
│ │ │ │ ├── test_transpose.py
│ │ │ │ ├── test_ufuncs.py
│ │ │ │ ├── test_userexc.py
│ │ │ │ ├── test_vector_type.py
│ │ │ │ ├── test_vectorize.py
│ │ │ │ ├── test_vectorize_complex.py
│ │ │ │ ├── test_vectorize_decor.py
│ │ │ │ ├── test_vectorize_device.py
│ │ │ │ ├── test_vectorize_scalar_arg.py
│ │ │ │ ├── test_warning.py
│ │ │ │ └── test_warp_ops.py
│ │ │ ├── cudasim/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── support.py
│ │ │ │ └── test_cudasim_issues.py
│ │ │ ├── data/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── cuda_include.cu
│ │ │ │ ├── error.cu
│ │ │ │ ├── jitlink.cu
│ │ │ │ ├── jitlink.ptx
│ │ │ │ └── warn.cu
│ │ │ ├── doc_examples/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── ffi/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ └── functions.cu
│ │ │ │ ├── test_cg.py
│ │ │ │ ├── test_cpu_gpu_compat.py
│ │ │ │ ├── test_ffi.py
│ │ │ │ ├── test_laplace.py
│ │ │ │ ├── test_matmul.py
│ │ │ │ ├── test_montecarlo.py
│ │ │ │ ├── test_random.py
│ │ │ │ ├── test_reduction.py
│ │ │ │ ├── test_sessionize.py
│ │ │ │ ├── test_ufunc.py
│ │ │ │ └── test_vecadd.py
│ │ │ └── nocuda/
│ │ │ ├── __init__.py
│ │ │ ├── test_dummyarray.py
│ │ │ ├── test_function_resolution.py
│ │ │ ├── test_import.py
│ │ │ ├── test_library_lookup.py
│ │ │ └── test_nvvm.py
│ │ ├── types.py
│ │ ├── ufuncs.py
│ │ ├── vector_types.py
│ │ └── vectorizers.py
│ ├── experimental/
│ │ ├── __init__.py
│ │ ├── function_type.py
│ │ ├── jitclass/
│ │ │ ├── __init__.py
│ │ │ ├── _box.c
│ │ │ ├── base.py
│ │ │ ├── boxing.py
│ │ │ ├── decorators.py
│ │ │ └── overloads.py
│ │ └── structref.py
│ ├── extending.py
│ ├── mathnames.h
│ ├── misc/
│ │ ├── POST.py
│ │ ├── __init__.py
│ │ ├── appdirs.py
│ │ ├── cffiimpl.py
│ │ ├── cmdlang.gdb
│ │ ├── coverage_support.py
│ │ ├── dump_style.py
│ │ ├── findlib.py
│ │ ├── firstlinefinder.py
│ │ ├── gdb_hook.py
│ │ ├── gdb_print_extension.py
│ │ ├── help/
│ │ │ ├── __init__.py
│ │ │ └── inspector.py
│ │ ├── init_utils.py
│ │ ├── inspection.py
│ │ ├── literal.py
│ │ ├── llvm_pass_timings.py
│ │ ├── memoryutils.py
│ │ ├── mergesort.py
│ │ ├── numba_entry.py
│ │ ├── numba_gdbinfo.py
│ │ ├── numba_sysinfo.py
│ │ ├── quicksort.py
│ │ ├── special.py
│ │ └── timsort.py
│ ├── mviewbuf.c
│ ├── np/
│ │ ├── __init__.py
│ │ ├── arraymath.py
│ │ ├── arrayobj.py
│ │ ├── extensions.py
│ │ ├── linalg.py
│ │ ├── math/
│ │ │ ├── __init__.py
│ │ │ ├── cmathimpl.py
│ │ │ ├── mathimpl.py
│ │ │ └── numbers.py
│ │ ├── npdatetime.py
│ │ ├── npdatetime_helpers.py
│ │ ├── npyfuncs.py
│ │ ├── npyimpl.py
│ │ ├── numpy_support.py
│ │ ├── polynomial/
│ │ │ ├── __init__.py
│ │ │ ├── polynomial_core.py
│ │ │ └── polynomial_functions.py
│ │ ├── random/
│ │ │ ├── __init__.py
│ │ │ ├── _constants.py
│ │ │ ├── distributions.py
│ │ │ ├── generator_core.py
│ │ │ ├── generator_methods.py
│ │ │ └── random_methods.py
│ │ ├── ufunc/
│ │ │ ├── __init__.py
│ │ │ ├── _internal.c
│ │ │ ├── _internal.h
│ │ │ ├── _num_threads.c
│ │ │ ├── _ufunc.c
│ │ │ ├── array_exprs.py
│ │ │ ├── decorators.py
│ │ │ ├── dufunc.py
│ │ │ ├── gufunc.py
│ │ │ ├── gufunc_scheduler.cpp
│ │ │ ├── gufunc_scheduler.h
│ │ │ ├── omppool.cpp
│ │ │ ├── parallel.py
│ │ │ ├── sigparse.py
│ │ │ ├── tbbpool.cpp
│ │ │ ├── ufunc_base.py
│ │ │ ├── ufuncbuilder.py
│ │ │ ├── workqueue.c
│ │ │ ├── workqueue.h
│ │ │ └── wrappers.py
│ │ ├── ufunc_db.py
│ │ └── unsafe/
│ │ ├── __init__.py
│ │ └── ndarray.py
│ ├── parfors/
│ │ ├── __init__.py
│ │ ├── array_analysis.py
│ │ ├── parfor.py
│ │ ├── parfor_lowering.py
│ │ └── parfor_lowering_utils.py
│ ├── pycc/
│ │ ├── __init__.py
│ │ ├── cc.py
│ │ ├── compiler.py
│ │ ├── decorators.py
│ │ ├── llvm_types.py
│ │ ├── modulemixin.c
│ │ └── platform.py
│ ├── pythoncapi_compat.h
│ ├── runtests.py
│ ├── scripts/
│ │ ├── __init__.py
│ │ └── generate_lower_listing.py
│ ├── stencils/
│ │ ├── __init__.py
│ │ ├── stencil.py
│ │ └── stencilparfor.py
│ ├── testing/
│ │ ├── __init__.py
│ │ ├── __main__.py
│ │ ├── _runtests.py
│ │ ├── loader.py
│ │ ├── main.py
│ │ └── notebook.py
│ ├── tests/
│ │ ├── __init__.py
│ │ ├── annotation_usecases.py
│ │ ├── cache_usecases.py
│ │ ├── cffi_usecases.py
│ │ ├── cfunc_cache_usecases.py
│ │ ├── chained_assign_usecases.py
│ │ ├── cloudpickle_main_class.py
│ │ ├── compile_with_pycc.py
│ │ ├── complex_usecases.py
│ │ ├── ctypes_usecases.py
│ │ ├── doc_examples/
│ │ │ ├── __init__.py
│ │ │ ├── test_examples.py
│ │ │ ├── test_interval_example.py
│ │ │ ├── test_jitclass.py
│ │ │ ├── test_literal_container_usage.py
│ │ │ ├── test_literally_usage.py
│ │ │ ├── test_llvm_pass_timings.py
│ │ │ ├── test_numpy_generators.py
│ │ │ ├── test_parallel_chunksize.py
│ │ │ ├── test_rec_array.py
│ │ │ ├── test_structref_usage.py
│ │ │ ├── test_typed_dict_usage.py
│ │ │ └── test_typed_list_usage.py
│ │ ├── doctest_usecase.py
│ │ ├── dummy_module.py
│ │ ├── enum_usecases.py
│ │ ├── error_usecases.py
│ │ ├── errorhandling_usecases.py
│ │ ├── gdb/
│ │ │ ├── __init__.py
│ │ │ ├── test_array_arg.py
│ │ │ ├── test_basic.py
│ │ │ ├── test_break_on_symbol.py
│ │ │ ├── test_break_on_symbol_version.py
│ │ │ ├── test_conditional_breakpoint.py
│ │ │ └── test_pretty_print.py
│ │ ├── gdb_support.py
│ │ ├── inlining_usecases.py
│ │ ├── matmul_usecase.py
│ │ ├── npyufunc/
│ │ │ ├── __init__.py
│ │ │ ├── cache_usecases.py
│ │ │ ├── test_caching.py
│ │ │ ├── test_dufunc.py
│ │ │ ├── test_errors.py
│ │ │ ├── test_gufunc.py
│ │ │ ├── test_parallel_env_variable.py
│ │ │ ├── test_parallel_low_work.py
│ │ │ ├── test_parallel_ufunc_issues.py
│ │ │ ├── test_ufunc.py
│ │ │ ├── test_ufuncbuilding.py
│ │ │ ├── test_update_inplace.py
│ │ │ ├── test_vectorize_decor.py
│ │ │ └── ufuncbuilding_usecases.py
│ │ ├── orphaned_semaphore_usecase.py
│ │ ├── overload_usecases.py
│ │ ├── parfor_iss9490_usecase.py
│ │ ├── parfors_cache_usecases.py
│ │ ├── pdlike_usecase.py
│ │ ├── pycc_distutils_usecase/
│ │ │ ├── __init__.py
│ │ │ ├── nested/
│ │ │ │ ├── __init__.py
│ │ │ │ └── source_module.py
│ │ │ ├── setup_distutils.py
│ │ │ ├── setup_distutils_nested.py
│ │ │ ├── setup_setuptools.py
│ │ │ ├── setup_setuptools_nested.py
│ │ │ └── source_module.py
│ │ ├── recursion_usecases.py
│ │ ├── serialize_usecases.py
│ │ ├── support.py
│ │ ├── test_alignment.py
│ │ ├── test_analysis.py
│ │ ├── test_annotations.py
│ │ ├── test_api.py
│ │ ├── test_array_analysis.py
│ │ ├── test_array_attr.py
│ │ ├── test_array_constants.py
│ │ ├── test_array_exprs.py
│ │ ├── test_array_iterators.py
│ │ ├── test_array_manipulation.py
│ │ ├── test_array_methods.py
│ │ ├── test_array_reductions.py
│ │ ├── test_array_return.py
│ │ ├── test_asnumbatype.py
│ │ ├── test_auto_constants.py
│ │ ├── test_blackscholes.py
│ │ ├── test_boundscheck.py
│ │ ├── test_buffer_protocol.py
│ │ ├── test_builtins.py
│ │ ├── test_byteflow.py
│ │ ├── test_caching.py
│ │ ├── test_casting.py
│ │ ├── test_cffi.py
│ │ ├── test_cfunc.py
│ │ ├── test_cgutils.py
│ │ ├── test_chained_assign.py
│ │ ├── test_chrome_trace.py
│ │ ├── test_cli.py
│ │ ├── test_closure.py
│ │ ├── test_codegen.py
│ │ ├── test_compile_cache.py
│ │ ├── test_compiler_flags.py
│ │ ├── test_compiler_lock.py
│ │ ├── test_complex.py
│ │ ├── test_comprehension.py
│ │ ├── test_conditions_as_predicates.py
│ │ ├── test_config.py
│ │ ├── test_conversion.py
│ │ ├── test_copy_propagate.py
│ │ ├── test_ctypes.py
│ │ ├── test_dataflow.py
│ │ ├── test_datamodel.py
│ │ ├── test_debug.py
│ │ ├── test_debuginfo.py
│ │ ├── test_deprecations.py
│ │ ├── test_dictimpl.py
│ │ ├── test_dictobject.py
│ │ ├── test_dicts.py
│ │ ├── test_dispatcher.py
│ │ ├── test_doctest.py
│ │ ├── test_dyn_array.py
│ │ ├── test_dyn_func.py
│ │ ├── test_entrypoints.py
│ │ ├── test_enums.py
│ │ ├── test_errorhandling.py
│ │ ├── test_errormodels.py
│ │ ├── test_event.py
│ │ ├── test_exceptions.py
│ │ ├── test_extended_arg.py
│ │ ├── test_extending.py
│ │ ├── test_extending_types.py
│ │ ├── test_fancy_indexing.py
│ │ ├── test_fastmath.py
│ │ ├── test_findlib.py
│ │ ├── test_firstlinefinder.py
│ │ ├── test_flow_control.py
│ │ ├── test_func_interface.py
│ │ ├── test_func_lifetime.py
│ │ ├── test_funcdesc.py
│ │ ├── test_function_type.py
│ │ ├── test_gdb_bindings.py
│ │ ├── test_gdb_dwarf.py
│ │ ├── test_generators.py
│ │ ├── test_getitem_on_types.py
│ │ ├── test_gil.py
│ │ ├── test_globals.py
│ │ ├── test_hashing.py
│ │ ├── test_heapq.py
│ │ ├── test_help.py
│ │ ├── test_import.py
│ │ ├── test_indexing.py
│ │ ├── test_init_utils.py
│ │ ├── test_inlining.py
│ │ ├── test_interpreter.py
│ │ ├── test_interproc.py
│ │ ├── test_intwidth.py
│ │ ├── test_ir.py
│ │ ├── test_ir_inlining.py
│ │ ├── test_ir_utils.py
│ │ ├── test_itanium_mangler.py
│ │ ├── test_iteration.py
│ │ ├── test_jit_module.py
│ │ ├── test_jitclasses.py
│ │ ├── test_jitmethod.py
│ │ ├── test_linalg.py
│ │ ├── test_listimpl.py
│ │ ├── test_listobject.py
│ │ ├── test_lists.py
│ │ ├── test_literal_dispatch.py
│ │ ├── test_llvm_pass_timings.py
│ │ ├── test_llvm_version_check.py
│ │ ├── test_locals.py
│ │ ├── test_looplifting.py
│ │ ├── test_make_function_to_jit_function.py
│ │ ├── test_mandelbrot.py
│ │ ├── test_mangling.py
│ │ ├── test_map_filter_reduce.py
│ │ ├── test_mathlib.py
│ │ ├── test_maxmin.py
│ │ ├── test_misc_coverage_support.py
│ │ ├── test_mixed_tuple_unroller.py
│ │ ├── test_moved_modules.py
│ │ ├── test_multi3.py
│ │ ├── test_nan.py
│ │ ├── test_ndarray_subclasses.py
│ │ ├── test_nested_calls.py
│ │ ├── test_np_functions.py
│ │ ├── test_np_randomgen.py
│ │ ├── test_npdatetime.py
│ │ ├── test_nrt.py
│ │ ├── test_nrt_refct.py
│ │ ├── test_num_threads.py
│ │ ├── test_numberctor.py
│ │ ├── test_numbers.py
│ │ ├── test_numconv.py
│ │ ├── test_numpy_support.py
│ │ ├── test_numpyadapt.py
│ │ ├── test_obj_lifetime.py
│ │ ├── test_object_mode.py
│ │ ├── test_objects.py
│ │ ├── test_operators.py
│ │ ├── test_optimisation_pipelines.py
│ │ ├── test_optional.py
│ │ ├── test_overlap.py
│ │ ├── test_parallel_backend.py
│ │ ├── test_parfors.py
│ │ ├── test_parfors_caching.py
│ │ ├── test_parfors_passes.py
│ │ ├── test_pipeline.py
│ │ ├── test_polynomial.py
│ │ ├── test_practical_lowering_issues.py
│ │ ├── test_print.py
│ │ ├── test_profiler.py
│ │ ├── test_pycc.py
│ │ ├── test_python_int.py
│ │ ├── test_pythonapi.py
│ │ ├── test_random.py
│ │ ├── test_range.py
│ │ ├── test_recarray_usecases.py
│ │ ├── test_record_dtype.py
│ │ ├── test_recursion.py
│ │ ├── test_refop_pruning.py
│ │ ├── test_remove_dead.py
│ │ ├── test_repr.py
│ │ ├── test_return_values.py
│ │ ├── test_runtests.py
│ │ ├── test_serialize.py
│ │ ├── test_sets.py
│ │ ├── test_slices.py
│ │ ├── test_sort.py
│ │ ├── test_ssa.py
│ │ ├── test_stencils.py
│ │ ├── test_storeslice.py
│ │ ├── test_struct_ref.py
│ │ ├── test_support.py
│ │ ├── test_svml.py
│ │ ├── test_sys_monitoring.py
│ │ ├── test_sys_stdin_assignment.py
│ │ ├── test_sysinfo.py
│ │ ├── test_target_extension.py
│ │ ├── test_target_overloadselector.py
│ │ ├── test_threadsafety.py
│ │ ├── test_tracing.py
│ │ ├── test_try_except.py
│ │ ├── test_tuples.py
│ │ ├── test_typeconv.py
│ │ ├── test_typedlist.py
│ │ ├── test_typedobjectutils.py
│ │ ├── test_typeguard.py
│ │ ├── test_typeinfer.py
│ │ ├── test_typenames.py
│ │ ├── test_typeof.py
│ │ ├── test_types.py
│ │ ├── test_typingerror.py
│ │ ├── test_ufuncs.py
│ │ ├── test_unicode.py
│ │ ├── test_unicode_array.py
│ │ ├── test_unicode_names.py
│ │ ├── test_unpack_sequence.py
│ │ ├── test_unpickle_without_module.py
│ │ ├── test_unsafe_intrinsics.py
│ │ ├── test_usecases.py
│ │ ├── test_vectorization.py
│ │ ├── test_vectorization_type_inference.py
│ │ ├── test_warnings.py
│ │ ├── test_withlifting.py
│ │ ├── threading_backend_usecases.py
│ │ ├── typedlist_usecases.py
│ │ └── usecases.py
│ ├── typed/
│ │ ├── __init__.py
│ │ ├── dictimpl.py
│ │ ├── dictobject.py
│ │ ├── listobject.py
│ │ ├── py.typed
│ │ ├── typeddict.py
│ │ ├── typedlist.py
│ │ └── typedobjectutils.py
│ └── types/
│ └── __init__.py
├── renovate.json
├── requirements.txt
├── runtests.py
├── setup.cfg
├── setup.py
├── towncrier.toml
└── versioneer.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .coveragerc
================================================
# configuration file used by run_coverage.py
[run]
branch = True
source = numba
concurrency = multiprocessing
parallel = True
[report]
omit =
*/__main__.py
# Vendored packages
numba/misc/appdirs.py
numba/cloudpickle/__init__.py
numba/cloudpickle/cloudpickle.py
numba/cloudpickle/cloudpickle_fast.py
numba/cloudpickle/compat.py
numba/_version.py
exclude_lines =
pragma: no cover
if __name__ == .__main__.:
[html]
================================================
FILE: .flake8
================================================
[flake8]
ignore =
# Extra space in brackets
E20,
# Multiple spaces around ","
E231,E241,
# Comments
E26,
# Assigning lambda expression
E731,
# Ambiguous variable names
E741,
# line break before binary operator
W503,
# line break after binary operator
W504,
max-line-length = 80
exclude =
__pycache__
.git
*.pyc
*~
*.o
*.so
*.cpp
*.c
*.h
__init__.py
# Ignore vendored files
numba/cloudpickle/*
versioneer.py
# Grandfather in existing failing files. This list should shrink over time
numba/stencils/stencil.py
numba/core/transforms.py
numba/_version.py
numba/core/ir_utils.py
numba/core/pylowering.py
numba/python_utils.py
numba/parfors/parfor.py
numba/misc/numba_entry.py
numba/stencils/stencilparfor.py
numba/core/ir.py
numba/core/generators.py
numba/misc/appdirs.py
numba/core/caching.py
numba/core/debuginfo.py
numba/core/annotations/pretty_annotate.py
numba/core/dataflow.py
numba/core/pythonapi.py
numba/core/decorators.py
numba/core/typeconv/rules.py
numba/core/typeconv/castgraph.py
numba/core/rewrites/registry.py
numba/core/rewrites/macros.py
numba/core/rewrites/static_binop.py
numba/core/rewrites/ir_print.py
numba/core/types/abstract.py
numba/core/types/misc.py
numba/core/types/npytypes.py
numba/core/types/common.py
numba/core/types/iterators.py
numba/core/types/scalars.py
numba/core/fastmathpass.py
numba/cpython/setobj.py
numba/core/options.py
numba/cpython/printimpl.py
numba/cpython/cmathimpl.py
numba/cpython/tupleobj.py
numba/cpython/mathimpl.py
numba/core/registry.py
numba/core/imputils.py
numba/cpython/builtins.py
numba/misc/quicksort.py
numba/cpython/randomimpl.py
numba/np/npyimpl.py
numba/cpython/slicing.py
numba/cpython/numbers.py
numba/cpython/listobj.py
numba/core/removerefctpass.py
numba/core/boxing.py
numba/misc/cffiimpl.py
numba/np/linalg.py
numba/cpython/rangeobj.py
numba/np/npyfuncs.py
numba/cpython/iterators.py
numba/core/codegen.py
numba/misc/mergesort.py
numba/core/base.py
numba/np/npdatetime.py
numba/pycc/cc.py
numba/pycc/compiler.py
numba/pycc/llvm_types.py
numba/pycc/platform.py
numba/pycc/decorators.py
numba/core/runtime/nrtdynmod.py
numba/core/runtime/context.py
numba/tests/test_support.py
numba/tests/test_llvm_version_check.py
numba/tests/test_builtins.py
numba/tests/test_jitmethod.py
numba/tests/test_inlining.py
numba/tests/test_array_manipulation.py
numba/tests/test_smart_array.py
numba/tests/test_linalg.py
numba/tests/test_threadsafety.py
numba/tests/test_utils.py
numba/tests/cfunc_cache_usecases.py
numba/tests/enum_usecases.py
numba/tests/test_func_lifetime.py
numba/tests/test_typeinfer.py
numba/tests/test_return_values.py
numba/tests/test_npdatetime.py
numba/tests/test_fancy_indexing.py
numba/tests/support.py
numba/tests/test_print.py
numba/tests/test_debug.py
numba/tests/test_interproc.py
numba/tests/test_typeconv.py
numba/tests/test_tracing.py
numba/tests/usecases.py
numba/tests/test_vectorization_type_inference.py
numba/tests/matmul_usecase.py
numba/tests/complex_usecases.py
numba/tests/test_array_exprs.py
numba/tests/test_wrapper.py
numba/tests/test_obj_lifetime.py
numba/tests/test_intwidth.py
numba/tests/test_remove_dead.py
numba/tests/serialize_usecases.py
numba/tests/test_del.py
numba/tests/test_gil.py
numba/tests/cffi_usecases.py
numba/tests/test_slices.py
numba/tests/test_mandelbrot.py
numba/tests/compile_with_pycc.py
numba/tests/test_looplifting.py
numba/tests/test_storeslice.py
numba/tests/recursion_usecases.py
numba/tests/dummy_module.py
numba/tests/test_operators.py
numba/tests/test_comprehension.py
numba/tests/ctypes_usecases.py
numba/tests/test_locals.py
numba/tests/test_dicts.py
numba/tests/test_optional.py
numba/tests/test_mathlib.py
numba/tests/test_numberctor.py
numba/tests/test_globals.py
numba/tests/test_typingerror.py
numba/tests/test_copy_propagate.py
numba/tests/test_ctypes.py
numba/tests/test_typeof.py
numba/tests/test_usecases.py
numba/tests/test_auto_constants.py
numba/tests/test_cffi.py
numba/tests/test_sort.py
numba/tests/test_cfunc.py
numba/tests/test_conversion.py
numba/tests/test_indexing.py
numba/tests/test_pycc.py
numba/tests/annotation_usecases.py
numba/tests/test_alignment.py
numba/tests/test_multi3.py
numba/tests/test_overlap.py
numba/tests/test_array_attr.py
numba/tests/test_array_methods.py
numba/tests/test_enums.py
numba/tests/test_profiler.py
numba/tests/test_numpyadapt.py
numba/tests/cache_usecases.py
numba/tests/true_div_usecase.py
numba/tests/test_dataflow.py
numba/tests/test_tuples.py
numba/tests/test_svml.py
numba/tests/test_array_iterators.py
numba/tests/test_buffer_protocol.py
numba/tests/test_casting.py
numba/tests/test_lists.py
numba/tests/test_array_analysis.py
numba/tests/test_serialize.py
numba/tests/test_iteration.py
numba/tests/test_recarray_usecases.py
numba/tests/test_target_overloadselector.py
numba/tests/test_compile_cache.py
numba/tests/test_array_reductions.py
numba/tests/test_dyn_func.py
numba/tests/test_unpack_sequence.py
numba/tests/test_cgutils.py
numba/tests/test_complex.py
numba/tests/test_hashing.py
numba/tests/test_sys_stdin_assignment.py
numba/tests/pdlike_usecase.py
numba/tests/test_range.py
numba/tests/test_nrt_refct.py
numba/misc/timsort.py
numba/tests/test_nested_calls.py
numba/tests/test_chained_assign.py
numba/tests/test_withlifting.py
numba/tests/test_parfors.py
numba/tests/test_sets.py
numba/tests/test_dyn_array.py
numba/tests/test_objects.py
numba/tests/test_random.py
numba/tests/test_nan.py
numba/tests/pycc_distutils_usecase/source_module.py
numba/tests/npyufunc/test_ufuncbuilding.py
numba/tests/npyufunc/test_errors.py
numba/tests/npyufunc/test_vectorize_decor.py
numba/tests/npyufunc/test_parallel_ufunc_issues.py
numba/tests/npyufunc/test_parallel_env_variable.py
numba/tests/npyufunc/test_gufunc.py
numba/core/typing/cmathdecl.py
numba/core/typing/bufproto.py
numba/core/typing/mathdecl.py
numba/core/typing/listdecl.py
numba/core/typing/builtins.py
numba/core/typing/randomdecl.py
numba/core/typing/setdecl.py
numba/core/typing/npydecl.py
numba/core/typing/arraydecl.py
numba/core/typing/collections.py
numba/core/typing/ctypes_utils.py
numba/core/typing/enumdecl.py
numba/core/typing/cffi_utils.py
numba/core/typing/npdatetime.py
numba/core/annotations/type_annotations.py
numba/testing/ddt.py
numba/testing/loader.py
numba/testing/notebook.py
numba/testing/main.py
numba/np/unsafe/ndarray.py
numba/np/ufunc/sigparse.py
numba/parfors/parfor_lowering.py
numba/np/ufunc/array_exprs.py
numba/np/ufunc/decorators.py
numba/core/datamodel/models.py
numba/core/datamodel/packer.py
numba/core/datamodel/testing.py
numba/core/datamodel/manager.py
numba/np/math/cmathimpl.py
numba/np/math/mathimpl.py
numba/np/math/numbers.py
per-file-ignores =
# Ignore star imports, unused imports, and "may be defined by star imports"
# errors in device_init because its purpose is to bring together a lot of
# the public API to be star-imported in numba.cuda.__init__
numba/cuda/device_init.py:F401,F403,F405
# libdevice.py is an autogenerated file containing stubs for all the device
# functions. Some of the lines in docstrings are a little over-long, as they
# contain the URLs of the reference pages in the online libdevice
# documentation.
numba/cuda/libdevice.py:E501
# Ignore too-long lines in the doc examples, prioritising readability
# in the docs over line length in the example source (especially given that
# the test code is already indented by 8 spaces)
numba/cuda/tests/doc_examples/test_random.py:E501
numba/cuda/tests/doc_examples/test_cg.py:E501
numba/cuda/tests/doc_examples/test_matmul.py:E501
numba/tests/doc_examples/test_interval_example.py:E501
================================================
FILE: .gitattributes
================================================
numba/_version.py export-subst
================================================
FILE: .github/CODEOWNERS
================================================
# Numba's codeowners file is dual purpose, it:
#
# 1. Provides information to github about who should be requested to review a PR
# 2. Provides contributors/czars general information about who to contact
# first about various parts of the code base. A lot of concepts in Numba are
# necessarily spread throughout the code base, consequently some of the
# "code ownership"/first contact is concept based opposed to file/directory
# based.
#
# ------------------------------------------------------------------------------
# Information for github
# ------------------------------------------------------------------------------
# Owners of specific parts of the code, will be requested to review if a PR
# touches code in the matched pattern
/numba/cuda/ @gmarkall
/numba/parfors/ @DrTodd13
/numba/stencils/ @DrTodd13
/numba/core/byteflow.py @sklam
/numba/core/typeinfer.py @sklam
/numba/core/interpreter.py @sklam
# ------------------------------------------------------------------------------
# Information for contributors
# ------------------------------------------------------------------------------
# This section provides a rough list of who to contact first for help with
# various parts/concepts in the code base, first contact does not imply
# ownership!
#
# Parts of the code base:
#
# * Parfors/Parallel Accelerator (@DrTodd13)
# - Array Analysis (@DrTodd13)
# - Parfors transforms (@DrTodd13)
# * Stencils (@DrTodd13)
# * Experimental:
# - Jitclasses (@sklam)
# - StructRef (@sklam)
# * Typed containers:
# - Typed.List (@esc)
# - Typed.Dict (@sklam)
# * Documentation (Needs first contact/owner)
# * NumPy (Needs first contact/owner)
# - ufuncs (Needs first contact/owner)
# - linalg (@stuartarchibald)
# - Implementation of specific functions (Needs first contact/owner)
# - Parallel backends/threading layers (@stuartarchibald)
# * CPython implementation (Needs first contact/owner)
# * Extension API (Needs first contact/owner)
# * AOT (Needs first contact/owner)
# * Compiler:
# - Type inference (@sklam)
# - Bytecode analysis/CFA/DFA (@sklam)
# - Compiler Pipeline infrastructure (@stuartarchibald)
# - Compiler passes:
# - Rewrites (Needs first contact/owner)
# - Branch pruning (@stuartarchibald)
# - Literal unroll (@stuartarchibald)
# - Rewrite Semantic Constants (@stuartarchibald)
# - MakeFunction To Jit function (@stuartarchibald)
# - Overload and function inlining (@stuartarchibald)
# - With Lifting (@sklam)
# - Exception handling (@sklam)
# - Literally (@sklam)
# - SSA (@sklam)
# - lowering.py, codegen.py (@sklam)
# - Datamodels/call conventions (@sklam)
# - Inlining in general (@stuartarchibald)
#
# Additional Concepts:
#
# * Reference counting and NRT (@sklam)
# * Testing (Needs first contact/owner)
# * CI:
# - public CI (azure) (Needs first contact/owner)
# - Numba build farm (@esc)
# * Integration testing (https://github.com/numba/numba-integration-testing)
# (@esc)
# * ASV profiling (@esc)
# * Type Annotations (@luk-f-a and @EPronovost)
# * Ufunc/GUfunc (Needs first contact/owner)
# * Profiling (Needs first contact/owner (and code!))
# * Debugging:
# - DWARF (@sklam)
# - gdb support (@stuartarchibald)
# * Hardware targets:
# - The CUDA target (@gmarkall)
# - The ROCm target (@stuartarchibald)
# - ARM* (@stuartarchibald)
# - POWER (Needs first contact/owner)
# - X86* (Needs first contact/owner)
# * OS:
# - Linux (@stuartarchibald)
# - OSX
# - Windows
# - BSD (@stuartarchibald)
#
# Anything not covered by someone else... ping @sklam and @stuartarchibald
================================================
FILE: .github/ISSUE_TEMPLATE/Bug_report.md
================================================
---
name: Bug Report
about: Report a bug. Not for asking general questions - see below.
---
<!--
Thanks for opening an issue! To help the Numba team handle your information
efficiently, please first ensure that there is no other issue present that
already describes the issue you have
(search at https://github.com/numba/numba/issues?&q=is%3Aissue).
-->
## Reporting a bug
<!--
Before submitting a bug report please ensure that you can check off these boxes:
-->
- [ ] I have tried using the latest released version of Numba (most recent is
visible in the release notes
(https://numba.readthedocs.io/en/stable/release-notes-overview.html).
- [ ] I have included a self contained code sample to reproduce the problem.
i.e. it's possible to run as 'python bug.py'.
<!--
Please include details of the bug here, including, if applicable, what you
expected to happen!
-->
================================================
FILE: .github/ISSUE_TEMPLATE/Feature_request.md
================================================
---
name: Feature Request
about: Tell us about something in the Python language/NumPy you'd like Numba to support. Not for asking general questions - see below.
---
<!--
Thanks for opening an issue! To help the Numba team handle your information
efficiently, please first ensure that there is no other issue present that
already describes the issue you have
(search at https://github.com/numba/numba/issues?&q=is%3Aissue).
-->
## Feature request
<!--
Please include details of the feature you would like to see, why you would
like to see it/the use case.
-->
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: General Question
url: https://numba.discourse.group/c/numba/community-support/
about: "If you have a general question (not a bug report or feature request) then please ask on Numba's discourse instance."
- name: Quick Question/Just want to say Hi!
url: https://gitter.im/numba/numba
about: "If you have a quick question or want chat to users/developers in real time then please use gitter.im/numba/numba"
- name: Discuss an involved feature
url: https://numba.discourse.group/c/numba/development/
about: "If you would like to suggest a more involved feature like *Can a new compiler pass be added to do X* then please start a discussion on Numba's discourse instance."
- name: CUDA
url: https://github.com/NVIDIA/numba-cuda
about: "Any items related to the CUDA target should be reported in the numba-cuda repo"
================================================
FILE: .github/ISSUE_TEMPLATE/first_rc_checklist.md
================================================
---
name: First Release Candidate Checklist (maintainer only)
about: Checklist template for the first release of every series
title: Numba X.Y.Zrc1 Checklist (FIXME)
labels: task
---
## Numba X.Y.Z
* [ ] Merge to main.
- [ ] "remaining Pull-Requests from milestone".
* [ ] Check Numba's version support table documentation. Update via PR if
needed.
* [ ] Review deprecation schedule and notices. Make PRs if need be. (Note that
deprecation notices for features that have been removed are kept in the
documentation for two more releases.)
* [ ] Create changelog using instructions at: `docs/source/developer/release.rst`
* [ ] Merge change log changes.
- [ ] "PR with changelog entries".
* [ ] Create X.Y release branch.
* [ ] Create PR against the release branch to make `numba/testing/main.py`
to refer to `origin/releaseX.Y` instead of `origin/main`.
* [ ] Dependency version pinning on release branch:
* [ ] Pin llvmlite to `0.A.*`.
* [ ] Pin NumPy if needed (see previous release for details).
* [ ] `buildscripts/condarecipe.local/meta.yaml`
* [ ] `numba/__init__.py`
* [ ] `setup.py`
* [ ] `docs/environment.yml`
* [ ] Pin TBB if needed.
* [ ] Run the HEAD of the release branch through GHA and confirm:
* [ ] conda build and test has passed.
* [ ] wheel build and test has passed.
* [ ] Annotated tag `X.Y.Zrc1` on release branch (no `v` prefix).
* [ ] Upload conda packages, wheels and sdist using GHA.
* [ ] Make sure that packages arrived on PyPI and on anaconda.org on labels `numba/label/dev` and `numba/label/main`.
* [ ] Initialize and verify ReadTheDocs build.
* [ ] Post announcement to discourse group and ping the release testers group
using `@RC_Testers`.
* [ ] Post link to X and to Mastodon and...
### Post Release:
* [ ] Tag `X.Y+1.0dev0` to start new development cycle on `main`.
* [ ] Update llvmlite dependency via PR to `main`, PR includes version updates
to:
* [ ] `setup.py`
* [ ] `numba/__init__.py`
* [ ] `docs/environment.yml`
* [ ] `buildscripts/incremental/setup_conda_environment.sh`
* [ ] `buildscripts/incremental/setup_conda_environment.cmd`
* [ ] `buildscripts/condarecipe.local/meta.yaml`
* [ ] Update release checklist template with any additional bullet points that
may have arisen during the release.
* [ ] Close milestone (and then close this release issue).
================================================
FILE: .github/ISSUE_TEMPLATE/sub_rc_checklist.md
================================================
---
name: Subsequent Release Candidate Checklist (maintainer only)
about: Checklist template for all subsequent releases (RC 2-N, FINAL and PATCH) of every series
title: Numba X.Y.Z Checklist (FIXME)
labels: task
---
## numba X.Y.Z
* [ ] Cherry-pick items from the X.Y.Z milestone into a cherry-pick PR.
* [ ] Update the "version support table" in the documentation with the final
release date (FINAL ONLY) and add to cherry-pick PR.
* [ ] Update `CHANGE_LOG` on cherry-pick PR.
* [ ] Check if any dependency pinnings need an update (e.g. NumPy).
* [ ] Approve cherry-pick PR.
* [ ] Merge cherry-pick PR to X.Y release branch.
* [ ] https://github.com/numba/numba/pull/XXXX
* [ ] Run the HEAD of the release branch through GHA and confirm:
* [ ] conda build and test has passed.
* [ ] wheel build and test has passed.
* [ ] Annotated tag X.Y.Z on release branch (no `v` prefix).
`git tag -am "Version X.Y.Z" X.Y.Z`
* [ ] Build conda packages and wheels on GHA.
* [ ] Using the upload workflow, upload the conda packages and wheels and confirm they have arrived.
* [ ] Verify ReadTheDocs build.
* [ ] Create a release on Github at https://github.com/numba/numba/releases (FINAL ONLY).
* [ ] Post announcement to discourse group and ping the release testers group
using `@RC_Testers` (RC ONLY).
### Post release
* [ ] Cherry-pick change-log and version support table modifications to `main`.
* [ ] Update release checklist template with any additional bullet points that
may have arisen during the release.
* [ ] Ping Anaconda Distro team to trigger a build for `defaults` (FINAL ONLY).
* [ ] Close milestone (and then close this release issue).
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!--
Thanks for wanting to contribute to Numba :)
First, if you need some help or want to chat to the core developers, please
visit https://gitter.im/numba/numba for real time chat or post to the Numba
forum https://numba.discourse.group/.
Here's some guidelines to help the review process go smoothly.
0. Please write a description in this text box of the changes that are being
made.
1. Please ensure that you have written units tests for the changes made/features
added.
2. If you are closing an issue please use one of the automatic closing words as
noted here: https://help.github.com/articles/closing-issues-using-keywords/
3. If your pull request is not ready for review but you want to make use of the
continuous integration testing facilities here, please click the arrow besides
"Create Pull Request" and choose "Create Draft Pull Request".
When it's ready for review, you can click the button "ready to review" near
the end of the pull request
(besides "This pull request is still a work in progress".)
The maintainers will then be automatically notified to review it.
4. Once review has taken place please do not add features or make changes out of
the scope of those requested by the reviewer (doing this just add delays as
already reviewed code ends up having to be re-reviewed/it is hard to tell
what is new etc!). Further, please do not rebase your branch on main/force
push/rewrite history, doing any of these causes the context of any comments
made by reviewers to be lost. If conflicts occur against main they should
be resolved by merging main into the branch used for making the pull
request.
Many thanks in advance for your cooperation!
-->
================================================
FILE: .github/workflows/conda_workflow_matrix.json
================================================
{
"conda_build_matrix": [
{ "python-version": "3.10", "numpy_build": "2.0" },
{ "python-version": "3.11", "numpy_build": "2.0" },
{ "python-version": "3.12", "numpy_build": "2.0" },
{ "python-version": "3.13", "numpy_build": "2.1" },
{ "python-version": "3.14", "numpy_build": "2.3" }
],
"conda_test_matrix": [
{ "python-version": "3.10", "numpy_test": "1.23" },
{ "python-version": "3.10", "numpy_test": "1.24" },
{ "python-version": "3.10", "numpy_test": "1.25" },
{ "python-version": "3.11", "numpy_test": "1.26" },
{ "python-version": "3.11", "numpy_test": "2.0" },
{ "python-version": "3.11", "numpy_test": "2.2" },
{ "python-version": "3.12", "numpy_test": "1.26" },
{ "python-version": "3.12", "numpy_test": "2.0" },
{ "python-version": "3.12", "numpy_test": "2.2" },
{ "python-version": "3.13", "numpy_test": "2.2" },
{ "python-version": "3.13", "numpy_test": "2.3" },
{ "python-version": "3.14", "numpy_test": "2.4" }
]
}
================================================
FILE: .github/workflows/numba_linux-64_conda_builder.yml
================================================
name: numba_linux-64_conda_builder
on:
schedule:
- cron: '15 7 * * 6' # Saturday 7:15 AM UTC - linux-64 conda
pull_request:
paths:
- .github/workflows/numba_linux-64_conda_builder.yml
- buildscripts/condarecipe.local/**
- .github/workflows/conda_workflow_matrix.json
workflow_dispatch:
inputs:
llvmlite_run_id:
description: 'llvmlite workflow run ID (optional)'
required: false
type: string
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
CONDA_CHANNEL_NUMBA: numba/label/dev
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.parse_matrix.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.parse_matrix.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: parse_matrix
name: Parse Workflow Matrix JSON
run: |
BUILD_JSON=$(jq -c .conda_build_matrix .github/workflows/conda_workflow_matrix.json)
TEST_JSON=$(jq -c .conda_test_matrix .github/workflows/conda_workflow_matrix.json)
echo "Build Matrix JSON: $BUILD_JSON"
echo "Test Matrix JSON: $TEST_JSON"
echo "build-matrix-json=$BUILD_JSON" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_JSON" >> $GITHUB_OUTPUT
linux-64-build-conda:
name: linux-64-build-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: ubuntu-latest
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: 3.12
auto-update-conda: true
auto-activate-base: true
activate-environment: true
- name: Download llvmlite Artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install conda-build
run: conda install conda-build "conda-libmamba-solver<25.11"
- name: Build Numba conda package
run: |
CONDA_CHANNEL_DIR="conda_channel_dir"
mkdir -p $CONDA_CHANNEL_DIR
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="file://${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
conda build --debug -c "${LLVMLITE_CHANNEL}" "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--numpy=${{ matrix.numpy_build }} blas=*=openblas \
buildscripts/condarecipe.local/ \
--output-folder=$CONDA_CHANNEL_DIR \
--no-test
- name: Upload numba conda package
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_linux-64_conda_py${{ matrix.python-version }}
path: conda_channel_dir
compression-level: 0
retention-days: 7
if-no-files-found: error
linux-64-test-conda:
name: linux-64-test-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, linux-64-build-conda]
runs-on: ubuntu-latest
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: 3.12
auto-update-conda: true
auto-activate-base: true
activate-environment: true
- name: Download llvmlite artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Download numba artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_linux-64_conda_py${{ matrix.python-version }}
- name: Install conda-build
run: |
conda install conda-build "conda-libmamba-solver<25.11"
- name: Install catchsegv
run: |
sudo apt-get update
sudo apt-get install -y glibc-tools
# verify catchsegv is installed
catchsegv --version
- name: Run tests
env:
TESTS_TO_RUN: "numba.tests"
NUMBA_ENABLE_CUDASIM: 1
run: |
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="file://${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
conda build -c "${LLVMLITE_CHANNEL}" "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--extra-deps numpy=${{ matrix.numpy_test }} blas=*=openblas \
--test \
linux-64/numba*.conda
================================================
FILE: .github/workflows/numba_linux-64_wheel_builder.yml
================================================
name: numba_linux-64_wheel_builder
on:
schedule:
- cron: '30 7 * * 6' # Saturday 7:30 AM UTC - linux-64 wheel
pull_request:
paths:
- .github/workflows/numba_linux-64_wheel_builder.yml
- .github/workflows/wheel_workflow_matrix.json
- buildscripts/github/build_wheel_linux.sh
- buildscripts/github/repair_wheel_linux.sh
- setup.py
workflow_dispatch:
inputs:
llvmlite_wheel_runid:
description: 'llvmlite wheel workflow run ID (optional)'
required: false
type: string
use_tbb:
description: 'use TBB (Threading Building Blocks)'
required: false
type: boolean
default: true
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
ARTIFACT_RETENTION_DAYS: 7
WHEELS_INDEX_URL: https://pypi.anaconda.org/numba/label/dev/simple
CONDA_CHANNEL_NUMBA: numba/label/dev
# Set USE_TBB to true by default, only override if explicitly set to false
USE_TBB: ${{ github.event_name == 'workflow_dispatch' && inputs.use_tbb != false || true }}
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.load_matrix_json.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.load_matrix_json.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: load_matrix_json
name: Load Workflow Matrix JSON
run: |
BUILD_MATRIX_JSON=$(jq -c .wheel_build_matrix .github/workflows/wheel_workflow_matrix.json)
TEST_MATRIX_JSON=$(jq -c .wheel_test_matrix .github/workflows/wheel_workflow_matrix.json)
# Add canonical python versions to both matrices
BUILD_MATRIX_EXTENDED=$(echo "$BUILD_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
TEST_MATRIX_EXTENDED=$(echo "$TEST_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
echo "Build Matrix JSON: $BUILD_MATRIX_EXTENDED"
echo "Test Matrix JSON: $TEST_MATRIX_EXTENDED"
echo "build-matrix-json=$BUILD_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
linux-64-build:
name: linux-64-build-wheel (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: ubuntu-latest
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build wheel in manylinux docker container
run: |
# Construct the expected Python executable path inside the container
# For free-threaded builds (e.g. cp314t), the manylinux path is cp314-cp314t
TAG="${{ matrix.python_tag }}"
VER_TAG="${TAG%t}"
PYTHON_EXECUTABLE="/opt/python/${VER_TAG}-${TAG}/bin/python"
echo "Using Python executable: $PYTHON_EXECUTABLE"
# Prepare build environment
mkdir -p dist wheelhouse
# Run the build script inside Docker container
docker run --rm \
-v ${{ github.workspace }}:/io \
quay.io/pypa/manylinux2014_x86_64 \
bash /io/buildscripts/github/build_wheel_linux.sh \
"${PYTHON_EXECUTABLE}" \
"${USE_TBB}" \
"${{ matrix.numpy_build }}" \
"/io/llvmlite_wheels" \
"${WHEELS_INDEX_URL}"
# List built wheels
ls -la wheelhouse/
- name: Repair and patch wheel in manylinux docker container
run: |
# Construct the expected Python executable path inside the container
# For free-threaded builds (e.g. cp314t), the manylinux path is cp314-cp314t
TAG="${{ matrix.python_tag }}"
VER_TAG="${TAG%t}"
PYTHON_EXECUTABLE="/opt/python/${VER_TAG}-${TAG}/bin/python"
echo "Using Python executable: $PYTHON_EXECUTABLE"
# Run the repair script in Docker
docker run --rm \
-v ${{ github.workspace }}:/io \
quay.io/pypa/manylinux2014_x86_64 \
bash /io/buildscripts/github/repair_wheel_linux.sh \
"$PYTHON_EXECUTABLE" \
"$USE_TBB" \
"/io/wheelhouse"
# List repaired wheels
ls -la wheelhouse/
- name: Upload numba wheel
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_linux-64_wheel_py${{ matrix.python_canonical }}
path: wheelhouse/*.whl
compression-level: 0
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }}
if-no-files-found: error
linux-64-test:
name: linux-64-test (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, linux-64-build]
runs-on: ubuntu-latest
env:
USE_TBB: ${{ github.event_name == 'workflow_dispatch' && inputs.use_tbb != false || true }}
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Download Numba wheel artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_linux-64_wheel_py${{ matrix.python_canonical }}
path: dist
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Validate and test wheel
run: |
PYTHON_PATH=$(which python${{ matrix.python_canonical }})
$PYTHON_PATH -m pip install --upgrade pip twine
ls -l dist
if [ "${{ inputs.llvmlite_wheel_runid }}" != "" ]; then
$PYTHON_PATH -m pip install --no-cache-dir llvmlite_wheels/*.whl
else
$PYTHON_PATH -m pip install --no-cache-dir --pre -i $WHEELS_INDEX_URL llvmlite
fi
$PYTHON_PATH -m twine check dist/*.whl
$PYTHON_PATH -m pip install dist/numba*.whl numpy==${{ matrix.numpy_test }} setuptools
if [ "$USE_TBB" = "true" ]; then
$PYTHON_PATH -m pip install tbb
# Verify TBB threading layer
NUMBA_THREADING_LAYER=tbb $PYTHON_PATH -c "import numba; numba.get_num_threads(); print(numba.threading_layer())"
fi
# Disable NumPy dispatching to AVX512_SKX if the CPU supports it AND it's
# in NumPy's dispatch list. This avoids low accuracy SVML libm replacements.
# This is needed because only dispatched features can be disabled via NPY_DISABLE_CPU_FEATURES.
_NPY_CMD='from numba.misc import numba_sysinfo; si=numba_sysinfo.get_sysinfo();\
print(si["NumPy AVX512_SKX detected"] and "AVX512_SKX" in si.get("NumPy Supported SIMD dispatch", ()))'
DISABLE_AVX512_SKX=$($PYTHON_PATH -c "$_NPY_CMD")
echo "Disable AVX512_SKX: $DISABLE_AVX512_SKX"
if [[ "$DISABLE_AVX512_SKX" == "True" ]]; then
export NPY_DISABLE_CPU_FEATURES="AVX512_SKX"
fi
# print Numba system information
$PYTHON_PATH -m numba -s
# run tests
$PYTHON_PATH -m numba.runtests -m 4 -v
================================================
FILE: .github/workflows/numba_linux-aarch64_conda_builder.yml
================================================
name: numba_linux-aarch64_conda_builder
on:
schedule:
- cron: '10 7 * * 6' # Saturday 7:10 AM UTC - linux-aarch64 conda
pull_request:
paths:
- .github/workflows/numba_linux-aarch64_conda_builder.yml
- buildscripts/condarecipe.local/**
- .github/workflows/conda_workflow_matrix.json
workflow_dispatch:
inputs:
llvmlite_run_id:
description: 'llvmlite workflow run ID (optional)'
required: false
type: string
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
CONDA_CHANNEL_NUMBA: numba/label/dev
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.parse_matrix.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.parse_matrix.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: parse_matrix
name: Parse Workflow Matrix JSON
run: |
BUILD_JSON=$(jq -c .conda_build_matrix .github/workflows/conda_workflow_matrix.json)
TEST_JSON=$(jq -c .conda_test_matrix .github/workflows/conda_workflow_matrix.json)
echo "Build Matrix JSON: $BUILD_JSON"
echo "Test Matrix JSON: $TEST_JSON"
echo "build-matrix-json=$BUILD_JSON" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_JSON" >> $GITHUB_OUTPUT
linux-aarch64-build-conda:
name: linux-aarch64-build-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: ubuntu-24.04-arm
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: 3.12
auto-update-conda: true
auto-activate-base: true
activate-environment: true
- name: Download llvmlite Artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-aarch64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install conda-build
run: conda install conda-build "conda-libmamba-solver<25.11"
- name: Build Numba conda package
run: |
CONDA_CHANNEL_DIR="conda_channel_dir"
mkdir -p $CONDA_CHANNEL_DIR
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="file://${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
conda build --debug -c $LLVMLITE_CHANNEL "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--numpy=${{ matrix.numpy_build }} blas=*=openblas \
buildscripts/condarecipe.local/ \
--output-folder=$CONDA_CHANNEL_DIR \
--no-test
- name: Upload numba conda package
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_linux-aarch64_conda_py${{ matrix.python-version }}
path: conda_channel_dir
compression-level: 0
retention-days: 7
if-no-files-found: error
linux-aarch64-test:
name: linux-aarch64-test-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, linux-aarch64-build-conda]
runs-on: ubuntu-24.04-arm
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: 3.12
auto-update-conda: true
auto-activate-base: true
activate-environment: true
- name: Download llvmlite artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-aarch64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Download numba artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_linux-aarch64_conda_py${{ matrix.python-version }}
- name: Install conda-build
run: |
conda install conda-build "conda-libmamba-solver<25.11"
- name: Install catchsegv
run: |
sudo apt-get update
sudo apt-get install -y glibc-tools
# verify catchsegv is installed
catchsegv --version
- name: Run tests
env:
TESTS_TO_RUN: "numba.tests"
NUMBA_ENABLE_CUDASIM: 1
run: |
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="file://${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
# List directories to find the correct package path
echo "Listing downloaded artifact contents:"
find . -type f -name "numba*.conda" | sort
# Try to find the package using the correct architecture directory
NUMBA_PKG=$(find . -type f -name "numba*.conda" | head -1)
if [ -z "$NUMBA_PKG" ]; then
echo "ERROR: Could not find numba conda package"
exit 1
fi
echo "Using package: $NUMBA_PKG"
# Run the test with the found package
conda build -c $LLVMLITE_CHANNEL "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--extra-deps numpy=${{ matrix.numpy_test }} blas=*=openblas \
--test \
"$NUMBA_PKG"
================================================
FILE: .github/workflows/numba_linux-aarch64_wheel_builder.yml
================================================
name: numba_linux-aarch64_wheel_builder
on:
schedule:
- cron: '20 7 * * 6' # Saturday 7:20 AM UTC - linux-aarch64 wheel
pull_request:
paths:
- .github/workflows/numba_linux-aarch64_wheel_builder.yml
- .github/workflows/wheel_workflow_matrix.json
- buildscripts/github/build_wheel_linux.sh
- buildscripts/github/repair_wheel_linux.sh
- setup.py
workflow_dispatch:
inputs:
llvmlite_wheel_runid:
description: 'llvmlite wheel workflow run ID (optional)'
required: false
type: string
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
ARTIFACT_RETENTION_DAYS: 7
WHEELS_INDEX_URL: https://pypi.anaconda.org/numba/label/dev/simple
CONDA_CHANNEL_NUMBA: numba/label/dev
MANYLINUX_IMAGE: "manylinux_2_28_aarch64"
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.load_matrix_json.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.load_matrix_json.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: load_matrix_json
name: Load Workflow Matrix JSON
run: |
BUILD_MATRIX_JSON=$(jq -c .wheel_build_matrix .github/workflows/wheel_workflow_matrix.json)
TEST_MATRIX_JSON=$(jq -c .wheel_test_matrix .github/workflows/wheel_workflow_matrix.json)
# Add canonical python versions to both matrices
BUILD_MATRIX_EXTENDED=$(echo "$BUILD_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
TEST_MATRIX_EXTENDED=$(echo "$TEST_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
echo "Build Matrix JSON: $BUILD_MATRIX_EXTENDED"
echo "Test Matrix JSON: $TEST_MATRIX_EXTENDED"
echo "build-matrix-json=$BUILD_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
linux-aarch64-build:
name: linux-aarch64-build-wheel (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: ubuntu-24.04-arm
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-aarch64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Build wheel in manylinux docker container
run: |
# Construct the expected Python executable path inside the container
# For free-threaded builds (e.g. cp314t), the manylinux path is cp314-cp314t
TAG="${{ matrix.python_tag }}"
VER_TAG="${TAG%t}"
PYTHON_EXECUTABLE="/opt/python/${VER_TAG}-${TAG}/bin/python"
echo "Using Python executable: $PYTHON_EXECUTABLE"
# Prepare build environment
mkdir -p dist wheelhouse
# Run the build script inside Docker container
docker run --rm \
-v ${{ github.workspace }}:/io \
quay.io/pypa/${{ env.MANYLINUX_IMAGE }} \
bash /io/buildscripts/github/build_wheel_linux.sh \
"${PYTHON_EXECUTABLE}" \
"false" \
"${{ matrix.numpy_build }}" \
"/io/llvmlite_wheels" \
"${WHEELS_INDEX_URL}"
# List built wheels
ls -la wheelhouse/
- name: Repair and patch wheel in manylinux docker container
run: |
# Construct the expected Python executable path inside the container
# For free-threaded builds (e.g. cp314t), the manylinux path is cp314-cp314t
TAG="${{ matrix.python_tag }}"
VER_TAG="${TAG%t}"
PYTHON_EXECUTABLE="/opt/python/${VER_TAG}-${TAG}/bin/python"
echo "Using Python executable: $PYTHON_EXECUTABLE"
# Run the repair script in Docker
docker run --rm \
-v ${{ github.workspace }}:/io \
quay.io/pypa/${{ env.MANYLINUX_IMAGE }} \
bash /io/buildscripts/github/repair_wheel_linux.sh \
"${PYTHON_EXECUTABLE}" \
"false" \
"/io/wheelhouse"
# List repaired wheels
ls -la wheelhouse/
- name: Upload numba wheel
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_linux-aarch64_wheel_py${{ matrix.python_canonical }}
path: wheelhouse/*.whl
compression-level: 0
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }}
if-no-files-found: error
linux-aarch64-test:
name: linux-aarch64-test (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, linux-aarch64-build]
runs-on: ubuntu-24.04-arm
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Download Numba wheel artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_linux-aarch64_wheel_py${{ matrix.python_canonical }}
path: dist
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-linux-aarch64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Validate and test wheel
run: |
PYTHON_PATH=$(which python${{ matrix.python_canonical }})
$PYTHON_PATH -m pip install --upgrade pip twine
ls -l dist
if [ "${{ inputs.llvmlite_wheel_runid }}" != "" ]; then
$PYTHON_PATH -m pip install --no-cache-dir llvmlite_wheels/*.whl
else
$PYTHON_PATH -m pip install --no-cache-dir --pre -i $WHEELS_INDEX_URL llvmlite
fi
$PYTHON_PATH -m twine check dist/*.whl
$PYTHON_PATH -m pip install dist/numba*.whl numpy==${{ matrix.numpy_test }} setuptools
# print Numba system information
$PYTHON_PATH -m numba -s
# run tests
$PYTHON_PATH -m numba.runtests -m 4 -v
================================================
FILE: .github/workflows/numba_osx-arm64_conda_builder.yml
================================================
name: numba_osx-arm64_conda_builder
on:
schedule:
- cron: '0 7 * * 6' # Saturday 7:00 AM UTC - osx-arm64 conda (starts first to manage osx runner limit)
pull_request:
paths:
- .github/workflows/numba_osx-arm64_conda_builder.yml
- buildscripts/condarecipe.local/**
- .github/workflows/conda_workflow_matrix.json
workflow_dispatch:
inputs:
llvmlite_run_id:
description: 'llvmlite workflow run ID (optional)'
required: false
type: string
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
CONDA_CHANNEL_NUMBA: numba/label/dev
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.parse_matrix.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.parse_matrix.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: parse_matrix
name: Parse Workflow Matrix JSON
run: |
BUILD_JSON=$(jq -c .conda_build_matrix .github/workflows/conda_workflow_matrix.json)
TEST_JSON=$(jq -c .conda_test_matrix .github/workflows/conda_workflow_matrix.json)
echo "build matrix: $BUILD_JSON"
echo "test matrix: $TEST_JSON"
echo "build-matrix-json=$BUILD_JSON" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_JSON" >> $GITHUB_OUTPUT
osx-arm64-build-conda:
name: osx-arm64-build-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: macos-14
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: 3.12
auto-update-conda: true
auto-activate-base: true
activate-environment: true
- name: Download llvmlite Artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-osx-arm64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install conda-build
run: conda install conda-build "conda-libmamba-solver<25.11"
- name: Build Numba conda package
run: |
CONDA_CHANNEL_DIR="conda_channel_dir"
mkdir -p $CONDA_CHANNEL_DIR
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="file://${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
conda build --debug -c $LLVMLITE_CHANNEL "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--numpy=${{ matrix.numpy_build }} blas=*=openblas \
buildscripts/condarecipe.local/ \
--output-folder=$CONDA_CHANNEL_DIR \
--no-test
- name: Upload numba conda package
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_osx-arm64_conda_py${{ matrix.python-version }}
path: conda_channel_dir
compression-level: 0
retention-days: 7
if-no-files-found: error
osx-arm64-test:
name: osx-arm64-test-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, osx-arm64-build-conda]
runs-on: macos-14
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: 3.12
auto-update-conda: true
auto-activate-base: true
activate-environment: true
- name: Download llvmlite artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-osx-arm64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Download numba artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_osx-arm64_conda_py${{ matrix.python-version }}
- name: Install conda-build
run: |
conda install conda-build "conda-libmamba-solver<25.11"
- name: Run tests
env:
TESTS_TO_RUN: "numba.tests"
NUMBA_ENABLE_CUDASIM: 1
run: |
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="file://${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
conda build -c $LLVMLITE_CHANNEL "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--extra-deps numpy=${{ matrix.numpy_test }} blas=*=openblas \
--test \
osx-arm64/numba*.conda
================================================
FILE: .github/workflows/numba_osx-arm64_wheel_builder.yml
================================================
name: numba_osx-arm64_wheel_builder
on:
schedule:
- cron: '5 7 * * 6' # Saturday 7:05 AM UTC - osx-arm64 wheel (staggered to manage osx runner limit)
pull_request:
paths:
- .github/workflows/numba_osx-arm64_wheel_builder.yml
- .github/workflows/wheel_workflow_matrix.json
- setup.py
workflow_dispatch:
inputs:
llvmlite_wheel_runid:
description: 'llvmlite wheel workflow run ID (optional)'
required: false
type: string
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
ARTIFACT_RETENTION_DAYS: 7
WHEELS_INDEX_URL: https://pypi.anaconda.org/numba/label/dev/simple
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.load_matrix_json.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.load_matrix_json.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: load_matrix_json
name: Load Workflow Matrix JSON
run: |
BUILD_MATRIX_JSON=$(jq -c .wheel_build_matrix .github/workflows/wheel_workflow_matrix.json)
TEST_MATRIX_JSON=$(jq -c .wheel_test_matrix .github/workflows/wheel_workflow_matrix.json)
# Add canonical python versions to both matrices
BUILD_MATRIX_EXTENDED=$(echo "$BUILD_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
TEST_MATRIX_EXTENDED=$(echo "$TEST_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
echo "Build Matrix JSON: $BUILD_MATRIX_EXTENDED"
echo "Test Matrix JSON: $TEST_MATRIX_EXTENDED"
echo "build-matrix-json=$BUILD_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
osx-arm64-build:
name: osx-arm64-build-wheel (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: macos-14
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
if: ${{ !endsWith(matrix.python-version, 't') }}
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: ${{ matrix.python-version }}
auto-update-conda: true
auto-activate-base: true
- name: Setup Miniconda [free-threaded]
if: ${{ endsWith(matrix.python-version, 't') }}
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
auto-update-conda: true
auto-activate-base: true
- name: Install free-threaded Python
if: ${{ endsWith(matrix.python-version, 't') }}
run: |
conda install -n test python-freethreading pip
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-osx-arm64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install build dependencies
run: |
if [ "${{ inputs.llvmlite_wheel_runid }}" != "" ]; then
arch -arm64 python -m pip install llvmlite_wheels/*.whl
else
arch -arm64 python -m pip install -i ${{ env.WHEELS_INDEX_URL }} llvmlite
fi
python -m pip install build numpy==${{ matrix.numpy_build }} setuptools wheel
- name: Setup llvm-openmp for build
run: |
# Download and extract llvm-openmp conda package
curl -L "https://repo.anaconda.com/pkgs/main/osx-arm64/llvm-openmp-19.1.7-h3b2fb71_2.tar.bz2" -o llvm-openmp.tar.bz2
mkdir -p omp && tar -xjf llvm-openmp.tar.bz2 -C omp
# Create symlinks for setup.py OpenMP detection
mkdir -p omp/lib/clang/19/include
ln -s ${{ github.workspace }}/omp/include/omp.h omp/lib/clang/19/include/omp.h
# Export environment vars for build to detect OpenMP
echo "PREFIX=$PWD/omp" >> $GITHUB_ENV
echo "CPPFLAGS=-I$PWD/omp/include" >> $GITHUB_ENV
echo "LDFLAGS=-L$PWD/omp/lib" >> $GITHUB_ENV
- name: Build sdist [once - py3.10]
if: matrix.python-version == '3.10'
run: arch -arm64 python -m build --sdist
- name: Build wheel
env:
MACOSX_DEPLOYMENT_TARGET: "11.0"
run: arch -arm64 python -m build --wheel --no-isolation
- name: Fix macOS wheel library paths
run: |
arch -arm64 python -m pip install wheel
cd dist
arch -arm64 python ../buildscripts/github/patch_wheel_dylib.py ./*.whl
ls -la ./*.whl
# inspect the wheel
find . -name "*.so" -o -name "*.dylib" | xargs -I {} otool -L {}
- name: Upload numba wheel
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_osx-arm64_wheel_py${{ matrix.python_canonical }}
path: dist/*.whl
compression-level: 0
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }}
if-no-files-found: error
- name: Upload numba sdist
if: matrix.python-version == '3.10'
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba-sdist
path: dist/*.tar.gz
compression-level: 0
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }}
if-no-files-found: error
osx-arm64-test:
name: osx-arm64-test (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, osx-arm64-build]
runs-on: macos-14
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Set Python versions
run: |
FULL_VERSION="${{ matrix.python-version }}"
CANONICAL_VERSION=$(echo "$FULL_VERSION" | cut -d. -f1,2)
echo "PYTHON_INSTALL_VERSION=$FULL_VERSION" >> $GITHUB_ENV
echo "PYTHON_CANONICAL_VERSION=$CANONICAL_VERSION" >> $GITHUB_ENV
echo "Using install version: $FULL_VERSION"
echo "Using canonical version: $CANONICAL_VERSION"
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Download Numba wheel artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_osx-arm64_wheel_py${{ matrix.python_canonical }}
path: dist
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-osx-arm64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install libomp and set DYLD_FALLBACK_LIBRARY_PATH
run: |
brew install libomp
echo "DYLD_FALLBACK_LIBRARY_PATH=$(brew --prefix libomp)/lib" >> $GITHUB_ENV
echo "Set DYLD_FALLBACK_LIBRARY_PATH to: $(brew --prefix libomp)/lib"
- name: Validate and test wheel
run: |
PYTHON_PATH=$(which python${{ matrix.python_canonical }})
"$PYTHON_PATH" -m venv .venv && source .venv/bin/activate
arch -arm64 python -m pip install --upgrade pip twine
ls -l dist
if [ "${{ inputs.llvmlite_wheel_runid }}" != "" ]; then
arch -arm64 python -m pip install llvmlite_wheels/*.whl
else
arch -arm64 python -m pip install --pre -i ${{ env.WHEELS_INDEX_URL }} llvmlite
fi
arch -arm64 python -m twine check dist/*.whl
arch -arm64 python -m pip install dist/numba*.whl numpy==${{ matrix.numpy_test }}
# print Numba system information
arch -arm64 python -m numba -s
# run tests
arch -arm64 python -m numba.runtests -m 4 -v
================================================
FILE: .github/workflows/numba_win-64_conda_builder.yml
================================================
name: numba_win-64_conda_builder
on:
schedule:
- cron: '45 7 * * 6' # Saturday 7:45 AM UTC - win-64 conda
pull_request:
paths:
- .github/workflows/numba_win-64_conda_builder.yml
- buildscripts/condarecipe.local/**
- .github/workflows/conda_workflow_matrix.json
workflow_dispatch:
inputs:
llvmlite_run_id:
description: 'llvmlite workflow run ID (optional)'
required: false
type: string
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
CONDA_CHANNEL_NUMBA: numba/label/dev
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.parse_matrix.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.parse_matrix.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: parse_matrix
name: Parse Workflow Matrix JSON
run: |
BUILD_JSON=$(jq -c .conda_build_matrix .github/workflows/conda_workflow_matrix.json)
TEST_JSON=$(jq -c .conda_test_matrix .github/workflows/conda_workflow_matrix.json)
echo "Build Matrix JSON: $BUILD_JSON"
echo "Test Matrix JSON: $TEST_JSON"
echo "build-matrix-json=$BUILD_JSON" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_JSON" >> $GITHUB_OUTPUT
win-64-build-conda:
name: win-64-build-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: windows-2025
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
auto-update-conda: true
auto-activate-base: true
activate-environment: ""
- name: Download llvmlite Artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-win-64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install conda-build
run: conda install conda-build
- name: Build Numba conda package
run: |
CONDA_CHANNEL_DIR="conda_channel_dir"
mkdir -p $CONDA_CHANNEL_DIR
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
conda build --debug -c $LLVMLITE_CHANNEL "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--numpy=${{ matrix.numpy_build }} \
buildscripts/condarecipe.local/ \
--output-folder=$CONDA_CHANNEL_DIR \
--no-test
- name: Upload numba conda package
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_win-64_conda_py${{ matrix.python-version }}
path: conda_channel_dir
compression-level: 0
retention-days: 7
if-no-files-found: error
win-64-test:
name: win-64-test-conda (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, win-64-build-conda]
runs-on: windows-2025
env:
EXTRA_CHANNELS: ''
defaults:
run:
shell: bash -elx {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Setup miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
- name: Download llvmlite artifact
if: ${{ inputs.llvmlite_run_id != '' }}
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-win-64-py${{ matrix.python-version }}
path: llvmlite_conda
run-id: ${{ inputs.llvmlite_run_id }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Download numba artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_win-64_conda_py${{ matrix.python-version }}
- name: Install conda-build
run: |
conda install conda-build
- name: Run tests
env:
TESTS_TO_RUN: "numba.tests"
NUMBA_ENABLE_CUDASIM: 1
run: |
# Set channel based on whether llvmlite artifact was downloaded
if [ "${{ inputs.llvmlite_run_id }}" != "" ]; then
LLVMLITE_CHANNEL="${{ github.workspace }}/llvmlite_conda"
else
LLVMLITE_CHANNEL="${{ env.CONDA_CHANNEL_NUMBA }}"
fi
if [ -n "${EXTRA_CHANNELS}" ]; then
extra_args=(${EXTRA_CHANNELS})
else
extra_args=()
fi
conda build -c $LLVMLITE_CHANNEL "${extra_args[@]}" -c defaults \
--python=${{ matrix.python-version }} \
--extra-deps numpy=${{ matrix.numpy_test }} \
--test \
win-64/numba*.conda
================================================
FILE: .github/workflows/numba_win-64_wheel_builder.yml
================================================
name: numba_win-64_wheel_builder
on:
schedule:
- cron: '0 8 * * 6' # Saturday 8:00 AM UTC - win-64 wheel
pull_request:
paths:
- .github/workflows/numba_win-64_wheel_builder.yml
- .github/workflows/wheel_workflow_matrix.json
- setup.py
workflow_dispatch:
inputs:
llvmlite_wheel_runid:
description: 'llvmlite wheel workflow run ID (optional)'
required: false
type: string
# Add concurrency control
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
env:
ARTIFACT_RETENTION_DAYS: 7
WHEELS_INDEX_URL: https://pypi.anaconda.org/numba/label/dev/simple
jobs:
load-matrix:
runs-on: ubuntu-latest
outputs:
build-matrix-json: ${{ steps.load_matrix_json.outputs.build-matrix-json }}
test-matrix-json: ${{ steps.load_matrix_json.outputs.test-matrix-json }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: load_matrix_json
name: Load Workflow Matrix JSON
run: |
BUILD_MATRIX_JSON=$(jq -c .wheel_build_matrix .github/workflows/wheel_workflow_matrix.json)
TEST_MATRIX_JSON=$(jq -c .wheel_test_matrix .github/workflows/wheel_workflow_matrix.json)
# Add canonical python versions to both matrices
BUILD_MATRIX_EXTENDED=$(echo "$BUILD_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
TEST_MATRIX_EXTENDED=$(echo "$TEST_MATRIX_JSON" | jq -c '
map(. + {"python_canonical": (.["python-version"] | split(".") | .[:2] | join("."))})
')
echo "Build Matrix JSON: $BUILD_MATRIX_EXTENDED"
echo "Test Matrix JSON: $TEST_MATRIX_EXTENDED"
echo "build-matrix-json=$BUILD_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
echo "test-matrix-json=$TEST_MATRIX_EXTENDED" >> $GITHUB_OUTPUT
win-64-build:
name: win-64-build-wheel (py ${{ matrix.python-version }}, np ${{ matrix.numpy_build }})
needs: load-matrix
runs-on: windows-2025
defaults:
run:
shell: bash -el {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.build-matrix-json) }}
fail-fast: false
steps:
- name: Clone repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-win-64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Install build dependencies
run: |
if [ "${{ inputs.llvmlite_wheel_runid }}" != "" ]; then
python -m pip install llvmlite_wheels/*.whl
else
python -m pip install -i ${{ env.WHEELS_INDEX_URL }} llvmlite
fi
python -m pip install build numpy==${{ matrix.numpy_build }} setuptools wheel tbb==2021.6 tbb-devel==2021.6
- name: Build wheel
run: python -m build --wheel --no-isolation
- name: Upload numba wheel
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: numba_win-64_wheel_py${{ matrix.python_canonical }}
path: dist/*.whl
compression-level: 0
retention-days: ${{ env.ARTIFACT_RETENTION_DAYS }}
if-no-files-found: error
win-64-test:
name: win-64-test-wheel (py ${{ matrix.python-version }}, np ${{ matrix.numpy_test }})
needs: [load-matrix, win-64-build]
runs-on: windows-2025
defaults:
run:
shell: bash -el {0}
strategy:
matrix:
include: ${{ fromJson(needs.load-matrix.outputs.test-matrix-json) }}
fail-fast: false
steps:
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Download Numba wheel artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: numba_win-64_wheel_py${{ matrix.python_canonical }}
path: dist
- name: Download llvmlite wheel
if: inputs.llvmlite_wheel_runid != ''
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: llvmlite-win-64-py${{ matrix.python_canonical }}
path: llvmlite_wheels
run-id: ${{ inputs.llvmlite_wheel_runid }}
repository: numba/llvmlite
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Validate and test wheel
env:
NUMBA_CPU_NAME: generic
_NUMBA_REDUCED_TESTING: 1
run: |
python -m pip install --upgrade pip twine
python -m pip install numpy==${{ matrix.numpy_test }} tbb==2021.6 tbb-devel==2021.6
if [ "${{ inputs.llvmlite_wheel_runid }}" != "" ]; then
python -m pip install llvmlite_wheels/*.whl
else
python -m pip install --pre -i ${{ env.WHEELS_INDEX_URL }} llvmlite
fi
python -m twine check dist/*.whl
python -m pip install dist/*.whl
# Disable NumPy dispatching to AVX512_SKX if the CPU supports it AND it's
# in NumPy's dispatch list. This avoids low accuracy SVML libm replacements.
# This is needed because only dispatched features can be disabled via NPY_DISABLE_CPU_FEATURES.
_NPY_CMD='from numba.misc import numba_sysinfo; si=numba_sysinfo.get_sysinfo();\
print(si["NumPy AVX512_SKX detected"] and "AVX512_SKX" in si.get("NumPy Supported SIMD dispatch", ()))'
DISABLE_AVX512_SKX=$(python -c "$_NPY_CMD")
echo "Disable AVX512_SKX: $DISABLE_AVX512_SKX"
if [[ "$DISABLE_AVX512_SKX" == "True" ]]; then
export NPY_DISABLE_CPU_FEATURES="AVX512_SKX"
fi
# print Numba system information
python -m numba -s
# run tests
python -m numba.runtests -m 4 -v
================================================
FILE: .github/workflows/stale.yml
================================================
name: 'Mark stale issues'
on:
schedule:
- cron: '30 1 * * *'
permissions:
contents: read
jobs:
stale:
permissions:
issues: write # for actions/stale to close stale issues
pull-requests: write # for actions/stale to close stale PRs
runs-on: ubuntu-latest
steps:
- uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
with:
# issues
stale-issue-message: >
This issue is marked as stale as it has had no activity in the past
30 days. Please close this issue if no further response or action is
needed. Otherwise, please respond with any updates and confirm that
this issue still needs to be addressed.
stale-issue-label: 'stale'
any-of-issue-labels: 'question,needtriage,more info needed'
days-before-issue-stale: 30
days-before-issue-close: 7
# pull requests
stale-pr-message: >
This pull request is marked as stale as it has had no activity in
the past 3 months. Please respond to this comment if you're still
interested in working on this. Many thanks!
days-before-pr-stale: 90 # 3 months
days-before-pr-close: 7
any-of-pr-labels: '2 - In progress,4 - Waiting on author'
stale-pr-label: 'stale'
close-pr-label: 'abandoned - stale'
================================================
FILE: .github/workflows/towncrier.yml
================================================
name: Check Release Notes
on:
pull_request:
types: [labeled, unlabeled, opened, reopened, synchronize]
env:
GITHUB_PR_NUMBER: ${{github.event.pull_request.number}}
jobs:
check:
name: Check release notes
if: ${{ github.event.pull_request.state == 'open' && !contains(github.event.pull_request.labels.*.name, 'skip_release_notes') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Set up Python 3.10
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.14'
- name: Install towncrier
run: |
python3 -m pip install towncrier==23.6 "importlib_resources<6" rstcheck
- name: Run towncrier
run: |
git fetch --no-tags origin +refs/heads/${BASE_BRANCH}:refs/remotes/origin/${BASE_BRANCH}
towncrier check --compare-with remotes/origin/${BASE_BRANCH}
python maint/towncrier_rst_validator.py --pull_request_id $GITHUB_PR_NUMBER
env:
BASE_BRANCH: ${{ github.base_ref }}
================================================
FILE: .github/workflows/upload_packages.yml
================================================
name: Upload Packages
on:
workflow_dispatch:
inputs:
tag:
description: 'Git tag to download artifacts from (e.g., v0.45.0)'
required: true
type: string
anaconda_label:
description: 'Anaconda.org label (dev, main, etc.)'
required: false
type: string
default: 'dev'
copy_conda_to_main:
description: 'copy to Anaconda.org main label'
required: false
type: boolean
default: false
publish_to_pypi:
description: 'Publish to PyPI (main)'
required: false
type: boolean
default: false
concurrency:
group: ${{ github.workflow }}-${{ inputs.tag || github.sha }}
cancel-in-progress: true
jobs:
find-workflow-runs:
name: Find Workflow Runs
runs-on: ubuntu-latest
outputs:
conda_run_ids: ${{ steps.find-runs.outputs.conda_run_ids }}
wheel_run_ids: ${{ steps.find-runs.outputs.wheel_run_ids }}
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.14'
- name: Find workflow runs for tag
id: find-runs
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
TAG="${{ inputs.tag }}"
if [ -z "$TAG" ]; then
echo "Error: tag input is required"
exit 1
fi
output=$(./buildscripts/github/find_workflow_runs.py \
--tag "$TAG" \
--repo ${{ github.repository }} \
--token "${{ secrets.GITHUB_TOKEN }}" \
--config ./buildscripts/github/workflow_groups.json)
echo "$output" >> $GITHUB_OUTPUT
download-artifacts:
name: Download Artifacts
needs: find-workflow-runs
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
with:
python-version: '3.14'
- name: Download conda packages
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
./buildscripts/github/download_artifacts.py \
--run-ids ${{ needs.find-workflow-runs.outputs.conda_run_ids }} \
--repo ${{ github.repository }} \
--token "${{ secrets.GITHUB_TOKEN }}" \
--output-dir conda_packages
- name: Download wheels
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
./buildscripts/github/download_artifacts.py \
--run-ids ${{ needs.find-workflow-runs.outputs.wheel_run_ids }} \
--repo ${{ github.repository }} \
--token "${{ secrets.GITHUB_TOKEN }}" \
--output-dir dist
- name: List downloaded conda packages
run: |
echo "=== Downloaded conda packages ==="
find conda_packages -type f -name "*.conda" -print | sort
echo ""
echo "=== Total conda packages ==="
find conda_packages -type f -name "*.conda" | wc -l
echo ""
- name: List downloaded wheels
run: |
echo "=== Downloaded wheels ==="
find dist -type f -name "*.whl" -print | sort
echo ""
echo "=== Wheel count by platform ==="
echo "linux-64: $(find dist -type f -name "*manylinux*x86_64*.whl" | wc -l)"
echo "linux-aarch64: $(find dist -type f -name "*manylinux*aarch64*.whl" | wc -l)"
echo "osx-arm64: $(find dist -type f -name "*macosx*arm64*.whl" | wc -l)"
echo "win-64: $(find dist -type f -name "*win_amd64*.whl" | wc -l)"
echo ""
echo "=== Total wheels count ==="
find dist -type f -name "*.whl" | wc -l
echo ""
echo "=== sdist ==="
find dist -type f -name "*.tar.gz" -print
echo ""
- name: Upload wheels as artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: wheels
path: |
dist/*.whl
dist/*.tar.gz
retention-days: 7
- name: Upload conda packages as artifact
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: conda-packages
path: conda_packages/
retention-days: 7
publish-testpypi:
name: Publish to TestPyPI
needs: download-artifacts
runs-on: ubuntu-latest
environment:
name: testpypi
url: https://test.pypi.org/p/numba
permissions:
id-token: write
steps:
- name: Download wheels artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: wheels
path: dist
- name: List artifacts to publish
run: |
echo "=== To publish ==="
ls -lh dist/
echo ""
find dist -type f -name "*.whl" | wc -l
- name: Publish wheels to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
verbose: true
publish-pypi:
name: Publish to PyPI
needs: publish-testpypi
if: inputs.publish_to_pypi
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/numba
permissions:
id-token: write
steps:
- name: Download wheels artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: wheels
path: dist
- name: List artifacts to publish
run: |
echo "=== To publish ==="
ls -lh dist/
echo ""
find dist -type f -name "*.whl" | wc -l
- name: Publish wheels to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
verbose: true
publish-anaconda-org:
name: Publish to Anaconda.org
needs: download-artifacts
runs-on: ubuntu-latest
env:
ANACONDA_USER: numba
ANACONDA_LABEL: ${{ inputs.anaconda_label || 'dev' }}
defaults:
run:
shell: bash -elx {0}
steps:
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3.3.0
with:
python-version: '3.13'
auto-update-conda: true
auto-activate-base: true
- name: Install anaconda-client
run: conda install -c anaconda anaconda-client
- name: Download conda packages artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: conda-packages
path: conda_packages
- name: Download wheels artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: wheels
path: dist
- name: List conda packages to publish
run: |
echo "=== Conda packages to publish ==="
find conda_packages -type f -name "*.conda" -print | sort
echo ""
echo "=== Total packages ==="
find conda_packages -type f -name "*.conda" | wc -l
echo ""
- name: List wheels to publish
run: |
echo "=== Wheels to publish ==="
find dist -type f -name "*.whl" -print | sort
echo ""
echo "=== Total wheels ==="
find dist -type f -name "*.whl" | wc -l
echo ""
- name: Publish conda packages to Anaconda.org
env:
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_ORG_GITHUB_NUMBA_UPLOAD }}
run: |
LABELS="-l ${{ env.ANACONDA_LABEL }}"
if [ "${{ inputs.copy_conda_to_main }}" = "true" ]; then
LABELS="$LABELS -l main"
fi
echo "Publishing conda packages to: ${{ env.ANACONDA_USER }} with labels: $LABELS"
find conda_packages -name "*.conda" -type f | while read -r pkg; do
echo "Uploading: $pkg"
anaconda -t "$ANACONDA_API_TOKEN" upload --force -u ${{ env.ANACONDA_USER }} $LABELS "$pkg"
done
- name: Publish wheels to Anaconda.org
env:
ANACONDA_API_TOKEN: ${{ secrets.ANACONDA_ORG_GITHUB_NUMBA_UPLOAD }}
run: |
LABELS="-l ${{ env.ANACONDA_LABEL }}"
if [ "${{ inputs.copy_conda_to_main }}" = "true" ]; then
LABELS="$LABELS -l main"
fi
echo "Publishing wheels to: ${{ env.ANACONDA_USER }} with labels: $LABELS"
find dist -name "*.whl" -type f | while read -r pkg; do
echo "Uploading: $pkg"
anaconda -t "$ANACONDA_API_TOKEN" upload --force -u ${{ env.ANACONDA_USER }} $LABELS "$pkg"
done
================================================
FILE: .github/workflows/wheel_workflow_matrix.json
================================================
{
"wheel_build_matrix": [
{ "python-version": "3.10", "numpy_build": "2.0.2", "python_tag": "cp310" },
{ "python-version": "3.11", "numpy_build": "2.0.2", "python_tag": "cp311" },
{ "python-version": "3.12", "numpy_build": "2.0.2", "python_tag": "cp312" },
{ "python-version": "3.13", "numpy_build": "2.1.3", "python_tag": "cp313" },
{ "python-version": "3.14", "numpy_build": "2.3.3", "python_tag": "cp314" },
{ "python-version": "3.14t", "numpy_build": "2.3.3", "python_tag": "cp314t" }
],
"wheel_test_matrix": [
{ "python-version": "3.10", "numpy_test": "1.23" },
{ "python-version": "3.10", "numpy_test": "1.24" },
{ "python-version": "3.10", "numpy_test": "1.25" },
{ "python-version": "3.11", "numpy_test": "1.26" },
{ "python-version": "3.11", "numpy_test": "2.0" },
{ "python-version": "3.11", "numpy_test": "2.2" },
{ "python-version": "3.12", "numpy_test": "1.26" },
{ "python-version": "3.12", "numpy_test": "2.0" },
{ "python-version": "3.12", "numpy_test": "2.2" },
{ "python-version": "3.13", "numpy_test": "2.2" },
{ "python-version": "3.13", "numpy_test": "2.3" },
{ "python-version": "3.14", "numpy_test": "2.4" },
{ "python-version": "3.14t", "numpy_test": "2.4" }
]
}
================================================
FILE: .gitignore
================================================
*.pyc
*.o
*.so
*.dylib
*.pyd
*.pdb
*.egg-info
*.sw[po]
*.out
*.ll
.coverage
.nfs*
tags
MANIFEST
build/
docs/_build/
docs/gh-pages/
dist/
htmlcov/
.idea/
.vscode/
.ycm_extra_conf.py
.mypy_cache/
.ipynb_checkpoints/
__pycache__/
docs/source/developer/autogen*
================================================
FILE: .readthedocs.yml
================================================
version: 2
build:
os: ubuntu-20.04
tools:
python: miniconda3-3.12-24.1
sphinx:
configuration: docs/source/conf.py
python:
install:
- method: setuptools
path: .
conda:
environment: docs/environment.yml
formats:
- pdf
================================================
FILE: CHANGE_LOG
================================================
The contents of this file has been removed. The change log can now be found at:
docs/source/release/*
and:
docs/source/release-notes.rst
================================================
FILE: CONTRIBUTING.md
================================================
We welcome people who want to make contributions to Numba, big or small!
Even simple documentation improvements are encouraged.
# Asking questions
Numba has a [discourse forum](https://numba.discourse.group/) for longer/more
involved questions and an IRC channel on
[gitter.im](https://gitter.im/numba/numba) for quick questions and interactive
help.
# Ways to help:
There's lots of ways to help improve Numba, some of these require creating code
changes, see **contributing patches** below.
## Quick things:
* Answer a question asked on [discourse](https://numba.discourse.group/) or
[gitter.im](https://gitter.im/numba/numba).
* Review a page of documentation, check it makes sense, that it's clear and
still relevant, that the examples are present, good and working. Fix anything
that needs updating in a pull request.
## More involved things:
* Review a pull request, you don't need to be a compiler engineer to do an
initial review of a pull request. It's incredibly helpful to have pull
requests go through a review to just make sure the code change is well formed,
documented, efficient and clear. Further, if the code is fixing a bug, making
sure that tests are present demonstrating it is fixed! Look out for PRs with
the [`needs initial review`](https://github.com/numba/numba/labels/needs%20initial%20review)
label. There are also time boxed tasks available on the
[contributor self-service board](https://github.com/orgs/numba/projects/7).
* Work on fixing or implementing something in the code base, there are a lot of
[`good first issue's`](https://github.com/numba/numba/labels/good%20first%20issue)
and [`good second issue's`](https://github.com/numba/numba/labels/good%20first%20issue).
For implementing new features/functionality, the extension API is the best
thing to use and a guide to using `@overload` in particular is
[here](https://numba.readthedocs.io/en/latest/extending/overloading-guide.html)
and the API documentation is [here](https://numba.readthedocs.io/en/latest/extending/high-level.html#implementing-functions).
## Contributing patches
Please fork the Numba repository on Github, and create a new branch
containing your work. When you are done, open a pull request.
# Further reading
Please read the [contributing guide](
https://numba.readthedocs.io/en/latest/developer/contributing.html).
================================================
FILE: LICENSE
================================================
Copyright (c) 2012, Anaconda, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: LICENSES.third-party
================================================
The Numba source tree includes vendored libraries governed by the following
licenses.
appdirs
-------
# This is the MIT license
Copyright (c) 2010 ActiveState Software Inc.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
NetworkX
--------
The dominance frontier algorithm is from a pull request
https://github.com/numba/numba/pull/4149/files which is based
on the implementation of NetworkX of dominance. NetworkX has the following
license:
NetworkX is distributed with the 3-clause BSD license.
::
Copyright (C) 2004-2019, NetworkX Developers
Aric Hagberg <hagberg@lanl.gov>
Dan Schult <dschult@colgate.edu>
Pieter Swart <swart@lanl.gov>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the NetworkX Developers nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
jquery.graphviz.svg (https://github.com/mountainstorm/jquery.graphviz.svg/)
---------------------------------------------------------------------------
The DAG roadmap rendering code in docs/dagmap/ uses Javascript from this
package to draw graphs in HTML.
Copyright (c) 2015 Mountainstorm
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
CPython (https://github.com/python/cpython)
-------------------------------------------
Numba source code that references URLs starting with:
https://github.com/python/cpython/
relates to use/inclusion of CPython source code which has the following license:
A. HISTORY OF THE SOFTWARE
==========================
Python was created in the early 1990s by Guido van Rossum at Stichting
Mathematisch Centrum (CWI, see http://www.cwi.nl) in the Netherlands
as a successor of a language called ABC. Guido remains Python's
principal author, although it includes many contributions from others.
In 1995, Guido continued his work on Python at the Corporation for
National Research Initiatives (CNRI, see http://www.cnri.reston.va.us)
in Reston, Virginia where he released several versions of the
software.
In May 2000, Guido and the Python core development team moved to
BeOpen.com to form the BeOpen PythonLabs team. In October of the same
year, the PythonLabs team moved to Digital Creations, which became
Zope Corporation. In 2001, the Python Software Foundation (PSF, see
https://www.python.org/psf/) was formed, a non-profit organization
created specifically to own Python-related Intellectual Property.
Zope Corporation was a sponsoring member of the PSF.
All Python releases are Open Source (see http://www.opensource.org for
the Open Source Definition). Historically, most, but not all, Python
releases have also been GPL-compatible; the table below summarizes
the various releases.
Release Derived Year Owner GPL-
from compatible? (1)
0.9.0 thru 1.2 1991-1995 CWI yes
1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
1.6 1.5.2 2000 CNRI no
2.0 1.6 2000 BeOpen.com no
1.6.1 1.6 2001 CNRI yes (2)
2.1 2.0+1.6.1 2001 PSF no
2.0.1 2.0+1.6.1 2001 PSF yes
2.1.1 2.1+2.0.1 2001 PSF yes
2.1.2 2.1.1 2002 PSF yes
2.1.3 2.1.2 2002 PSF yes
2.2 and above 2.1.1 2001-now PSF yes
Footnotes:
(1) GPL-compatible doesn't mean that we're distributing Python under
the GPL. All Python licenses, unlike the GPL, let you distribute
a modified version without making your changes open source. The
GPL-compatible licenses make it possible to combine Python with
other software that is released under the GPL; the others don't.
(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
because its license has a choice of law clause. According to
CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
is "not incompatible" with the GPL.
Thanks to the many outside volunteers who have worked under Guido's
direction to make these releases possible.
B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
===============================================================
PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
--------------------------------------------
1. This LICENSE AGREEMENT is between the Python Software Foundation
("PSF"), and the Individual or Organization ("Licensee") accessing and
otherwise using this software ("Python") in source or binary form and
its associated documentation.
2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative version,
provided, however, that PSF's License Agreement and PSF's notice of copyright,
i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Python Software Foundation;
All Rights Reserved" are retained in Python alone or in any derivative version
prepared by Licensee.
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python.
4. PSF is making Python available to Licensee on an "AS IS"
basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. Nothing in this License Agreement shall be deemed to create any
relationship of agency, partnership, or joint venture between PSF and
Licensee. This License Agreement does not grant permission to use PSF
trademarks or trade name in a trademark sense to endorse or promote
products or services of Licensee, or any third party.
8. By copying, installing or otherwise using Python, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
-------------------------------------------
BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
Individual or Organization ("Licensee") accessing and otherwise using
this software in source or binary form and its associated
documentation ("the Software").
2. Subject to the terms and conditions of this BeOpen Python License
Agreement, BeOpen hereby grants Licensee a non-exclusive,
royalty-free, world-wide license to reproduce, analyze, test, perform
and/or display publicly, prepare derivative works, distribute, and
otherwise use the Software alone or in any derivative version,
provided, however, that the BeOpen Python License is retained in the
Software, alone or in any derivative version prepared by Licensee.
3. BeOpen is making the Software available to Licensee on an "AS IS"
basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
5. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
6. This License Agreement shall be governed by and interpreted in all
respects by the law of the State of California, excluding conflict of
law provisions. Nothing in this License Agreement shall be deemed to
create any relationship of agency, partnership, or joint venture
between BeOpen and Licensee. This License Agreement does not grant
permission to use BeOpen trademarks or trade names in a trademark
sense to endorse or promote products or services of Licensee, or any
third party. As an exception, the "BeOpen Python" logos available at
http://www.pythonlabs.com/logos.html may be used according to the
permissions granted on that web page.
7. By copying, installing or otherwise using the software, Licensee
agrees to be bound by the terms and conditions of this License
Agreement.
CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
---------------------------------------
1. This LICENSE AGREEMENT is between the Corporation for National
Research Initiatives, having an office at 1895 Preston White Drive,
Reston, VA 20191 ("CNRI"), and the Individual or Organization
("Licensee") accessing and otherwise using Python 1.6.1 software in
source or binary form and its associated documentation.
2. Subject to the terms and conditions of this License Agreement, CNRI
hereby grants Licensee a nonexclusive, royalty-free, world-wide
license to reproduce, analyze, test, perform and/or display publicly,
prepare derivative works, distribute, and otherwise use Python 1.6.1
alone or in any derivative version, provided, however, that CNRI's
License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
1995-2001 Corporation for National Research Initiatives; All Rights
Reserved" are retained in Python 1.6.1 alone or in any derivative
version prepared by Licensee. Alternately, in lieu of CNRI's License
Agreement, Licensee may substitute the following text (omitting the
quotes): "Python 1.6.1 is made available subject to the terms and
conditions in CNRI's License Agreement. This Agreement together with
Python 1.6.1 may be located on the Internet using the following
unique, persistent identifier (known as a handle): 1895.22/1013. This
Agreement may also be obtained from a proxy server on the Internet
using the following URL: http://hdl.handle.net/1895.22/1013".
3. In the event Licensee prepares a derivative work that is based on
or incorporates Python 1.6.1 or any part thereof, and wants to make
the derivative work available to others as provided herein, then
Licensee hereby agrees to include in any such work a brief summary of
the changes made to Python 1.6.1.
4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
6. This License Agreement will automatically terminate upon a material
breach of its terms and conditions.
7. This License Agreement shall be governed by the federal
intellectual property law of the United States, including without
limitation the federal copyright law, and, to the extent such
U.S. federal law does not apply, by the law of the Commonwealth of
Virginia, excluding Virginia's conflict of law provisions.
Notwithstanding the foregoing, with regard to derivative works based
on Python 1.6.1 that incorporate non-separable material that was
previously distributed under the GNU General Public License (GPL), the
law of the Commonwealth of Virginia shall govern this License
Agreement only as to issues arising under or with respect to
Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
License Agreement shall be deemed to create any relationship of
agency, partnership, or joint venture between CNRI and Licensee. This
License Agreement does not grant permission to use CNRI trademarks or
trade name in a trademark sense to endorse or promote products or
services of Licensee, or any third party.
8. By clicking on the "ACCEPT" button where indicated, or by copying,
installing or otherwise using Python 1.6.1, Licensee agrees to be
bound by the terms and conditions of this License Agreement.
ACCEPT
CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
--------------------------------------------------
Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
The Netherlands. All rights reserved.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the name of Stichting Mathematisch
Centrum or CWI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
CPython unicode (https://github.com/python/cpython)
---------------------------------------------------
Numba's unicode support includes source code/algorithms from CPython's unicode
implementation, Numba source code that has a reference starting with:
https://github.com/python/cpython/
and contains in the path "Objects/unicodeobject.c" relates to use/inclusion of
CPython source code which has the following license along with the standard
CPython license:
Unicode implementation based on original code by Fredrik Lundh,
modified by Marc-Andre Lemburg <mal@lemburg.com>.
Major speed upgrades to the method implementations at the Reykjavik
NeedForSpeed sprint, by Fredrik Lundh and Andrew Dalke.
Copyright (c) Corporation for National Research Initiatives.
--------------------------------------------------------------------
The original string type implementation is:
Copyright (c) 1999 by Secret Labs AB
Copyright (c) 1999 by Fredrik Lundh
By obtaining, using, and/or copying this software and/or its
associated documentation, you agree that you have read, understood,
and will comply with the following terms and conditions:
Permission to use, copy, modify, and distribute this software and its
associated documentation for any purpose and without fee is hereby
granted, provided that the above copyright notice appears in all
copies, and that both that copyright notice and this permission notice
appear in supporting documentation, and that the name of Secret Labs
AB or the author not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO
THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR
ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
--------------------------------------------------------------------
cloudpickle
-----------
This module was extracted from the `cloud` package, developed by
PiCloud, Inc.
Copyright (c) 2015, Cloudpickle contributors.
Copyright (c) 2012, Regents of the University of California.
Copyright (c) 2009 PiCloud, Inc. http://www.picloud.com.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of the University of California, Berkeley nor the
names of its contributors may be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
© 2020 GitHub, Inc.
NumPy (https://github.com/numpy/numpy)
--------------------------------------
Numba source code that references URLs starting with:
https://github.com/numpy/numpy
relates to use of/inclusion of/derivate work based on NumPy source code which
has the following license:
Copyright (c) 2005-2021, NumPy Developers.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of the NumPy Developers nor the names of any
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
CUDA Half Precision Headers
---------------------------
The files numba/cuda/cuda_fp16.h and numba/cuda/cuda_fp16.hpp are vendored from
the CUDA Toolkit version 11.2.2 under the terms of the NVIDIA Software License
Agreement and CUDA Supplement to Software License Agreement, available at:
https://docs.nvidia.com/cuda/archive/11.2.2/eula/index.html
These files are distributable as listed in Attachment A:
https://docs.nvidia.com/cuda/archive/11.2.2/eula/index.html#attachment-a
pythoncapi_compat
-----------------
The file numba/pythoncapi_compat.h is vendored from
https://github.com/python/pythoncapi_compat under the terms of
the Zero Clause BSD (0BSD) license, which is available at:
https://github.com/python/pythoncapi-compat/blob/main/COPYING and its text is
reproduced below:
BSD Zero Clause License
Copyright Contributors to the pythoncapi_compat project.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
numba-cuda
----------
Numba source code that references URLs starting with:
https://github.com/NVIDIA/numba-cuda
relates to use of/inclusion of/derivate work based on numba-cuda source code which
has the following license:
Copyright (c) 2012, Anaconda, Inc.
Copyright (c) 2024, NVIDIA CORPORATION.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: MANIFEST.in
================================================
include MANIFEST.in
include README.rst setup.py runtests.py versioneer.py CHANGE_LOG LICENSE
recursive-include numba *.c *.cpp *.h *.hpp *.inc
recursive-include docs *.ipynb *.txt *.py Makefile *.rst
recursive-include examples *.py
prune docs/_build
include numba/_version.py
================================================
FILE: README.rst
================================================
*****
Numba
*****
.. image:: https://badges.gitter.im/numba/numba.svg
:target: https://gitter.im/numba/numba?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
:alt: Gitter
.. image:: https://img.shields.io/badge/discuss-on%20discourse-blue
:target: https://numba.discourse.group/
:alt: Discourse
.. image:: https://zenodo.org/badge/3659275.svg
:target: https://zenodo.org/badge/latestdoi/3659275
:alt: Zenodo DOI
.. image:: https://img.shields.io/pypi/v/numba.svg
:target: https://pypi.python.org/pypi/numba/
:alt: PyPI
.. image:: https://dev.azure.com/numba/numba/_apis/build/status/numba.numba?branchName=main
:target: https://dev.azure.com/numba/numba/_build/latest?definitionId=1?branchName=main
:alt: Azure Pipelines
A Just-In-Time Compiler for Numerical Functions in Python
#########################################################
Numba is an open source, NumPy-aware optimizing compiler for Python sponsored
by Anaconda, Inc. It uses the LLVM compiler project to generate machine code
from Python syntax.
Numba can compile a large subset of numerically-focused Python, including many
NumPy functions. Additionally, Numba has support for automatic
parallelization of loops, generation of GPU-accelerated code, and creation of
ufuncs and C callbacks.
For more information about Numba, see the Numba homepage:
https://numba.pydata.org and the online documentation:
https://numba.readthedocs.io/en/stable/index.html
Installation
============
Please follow the instructions:
https://numba.readthedocs.io/en/stable/user/installing.html
Demo
====
Please have a look and the demo notebooks via the mybinder service:
https://mybinder.org/v2/gh/numba/numba-examples/master?filepath=notebooks
Contact
=======
Numba has a discourse forum for discussions:
* https://numba.discourse.group
================================================
FILE: SECURITY.md
================================================
# Numba Security Policy
## Reporting Security Issues
If you believe you have found a security vulnerability in Numba, please open a security advisory here: https://github.com/numba/numba/security/advisories/new
We will respond promptly to security issues, and if we do not believe it is a security issue, we may ask you to open a public issue instead.
## Numba Security Assumptions
Numba is a just-in-time compiler which can generate arbitrary LLVM IR, compile it, and load it immediately into the running process. As a result, the compiler _should not_ be used with untrusted inputs. This includes both the function being compiled, but also arguments to the compiler decorators (`@jit`, `@vectorize`, etc) that control code generation. Additionally, Numba-compiled code, like C and FORTRAN, is not intended to be memory-safe.
================================================
FILE: azure-pipelines.yml
================================================
trigger:
batch: true
variables:
# Change the following along with adding new TEST_START_INDEX.
TEST_COUNT: 21
jobs:
# Mac and Linux use the same template with different matrixes
# NOTE: Mac jobs have been commented out because Numba no longer support osx-64
# and Azure does not support osx-arm64.
# - template: buildscripts/azure/azure-linux-macos.yml
# parameters:
# name: macOS
# vmImage: macos-15
# matrix:
# py310_np123:
# PYTHON: '3.10'
# NUMPY: '1.23'
# CONDA_ENV: 'azure_ci'
# TEST_THREADING: 'tbb'
# TEST_START_INDEX: 0
# py312_np126:
# PYTHON: '3.12'
# NUMPY: '1.26'
# CONDA_ENV: 'azure_ci'
# TEST_START_INDEX: 1
# py313_np23:
# PYTHON: '3.13'
# NUMPY: '2.3'
# CONDA_ENV: 'azure_ci'
# TEST_START_INDEX: 2
- template: buildscripts/azure/azure-linux-macos.yml
parameters:
name: Linux
vmImage: ubuntu-24.04
matrix:
py310_np123:
PYTHON: '3.10'
NUMPY: '1.23'
CONDA_ENV: azure_ci
TEST_START_INDEX: 0
py310_np124_cov_doc:
PYTHON: '3.10'
NUMPY: '1.24'
RUN_COVERAGE: yes
RUN_FLAKE8: yes
RUN_MYPY: yes
BUILD_DOC: yes
CONDA_ENV: azure_ci
TEST_START_INDEX: 1
py310_np125_typeguard:
PYTHON: '3.10'
NUMPY: '1.25'
CONDA_ENV: azure_ci
RUN_TYPEGUARD: no
TEST_START_INDEX: 2
py310_np126:
PYTHON: '3.10'
NUMPY: '1.26'
CONDA_ENV: azure_ci
TEST_START_INDEX: 3
py310_np22:
PYTHON: '3.10'
NUMPY: '2.2'
CONDA_ENV: azure_ci
TEST_START_INDEX: 4
py311_np124:
PYTHON: '3.11'
NUMPY: '1.24'
CONDA_ENV: azure_ci
TEST_START_INDEX: 5
py311_np125:
PYTHON: '3.11'
NUMPY: '1.25'
CONDA_ENV: azure_ci
TEST_START_INDEX: 6
py311_np126:
PYTHON: '3.11'
NUMPY: '1.26'
CONDA_ENV: azure_ci
TEST_START_INDEX: 7
py311_np21:
PYTHON: '3.11'
NUMPY: '2.1'
CONDA_ENV: azure_ci
TEST_START_INDEX: 8
py311_np22:
PYTHON: '3.11'
NUMPY: '2.2'
CONDA_ENV: azure_ci
TEST_START_INDEX: 9
py311_np126_2:
PYTHON: '3.11'
NUMPY: '1.26'
CONDA_ENV: azure_ci
TEST_START_INDEX: 10
py311_np125_svml:
PYTHON: '3.11'
NUMPY: '1.25'
CONDA_ENV: azure_ci
TEST_SVML: yes
TEST_START_INDEX: 11
py312_np126:
PYTHON: '3.12'
NUMPY: '1.26'
CONDA_ENV: azure_ci
TEST_START_INDEX: 12
py312_np20:
PYTHON: '3.12'
NUMPY: '2.0'
CONDA_ENV: azure_ci
TEST_START_INDEX: 13
py312_np22:
PYTHON: '3.12'
NUMPY: '2.2'
CONDA_ENV: azure_ci
TEST_START_INDEX: 14
py313_np23:
PYTHON: '3.13'
NUMPY: '2.3'
CONDA_ENV: azure_ci
TEST_START_INDEX: 15
py314_np24:
PYTHON: '3.14'
NUMPY: '2.4'
CONDA_ENV: azure_ci
TEST_START_INDEX: 16
- template: buildscripts/azure/azure-windows.yml
parameters:
name: Windows
vmImage: windows-2025
================================================
FILE: bin/numba
================================================
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from __future__ import print_function, division, absolute_import
from numba.misc.numba_entry import main
if __name__ == "__main__":
main()
================================================
FILE: buildscripts/azure/azure-linux-macos.yml
================================================
parameters:
name: ''
vmImage: ''
matrix: []
jobs:
- job: ${{ parameters.name }}
pool:
vmImage: ${{ parameters.vmImage }}
strategy:
matrix:
${{ insert }}: ${{ parameters.matrix }}
steps:
- script: |
echo "Installing catchsegv"
sudo apt-get update -qq
sudo apt-get install -y glibc-tools
displayName: 'Install catchsegv (provided by glibc-tools)'
condition: eq('${{ parameters.name }}', 'Linux')
- script: |
set -e
echo "Installing Miniconda"
buildscripts/incremental/install_miniconda.sh
export PATH=$HOME/miniconda3/bin:$PATH
echo "Setting up Conda environment"
buildscripts/incremental/setup_conda_environment.sh
displayName: 'Before Install'
- script: |
set -e
export PATH=$HOME/miniconda3/bin:$PATH
buildscripts/incremental/build.sh
displayName: 'Build'
- script: |
set -e
export PATH=$HOME/miniconda3/bin:$PATH
conda install -y flake8
flake8 -j auto numba
displayName: 'Flake8'
condition: eq(variables['RUN_FLAKE8'], 'yes')
- script: |
set -e
export PATH=$HOME/miniconda3/bin:$PATH
# using conda-forge because main only have version < 1.0
conda create -n mypy311 -y -c conda-forge python=3.11 mypy
conda run -n mypy311 mypy
displayName: 'Mypy'
condition: eq(variables['RUN_MYPY'], 'yes')
- script: |
set -e
export PATH=$HOME/miniconda3/bin:$PATH
buildscripts/incremental/test.sh
displayName: 'Test'
================================================
FILE: buildscripts/azure/azure-windows.yml
================================================
parameters:
name: ''
vmImage: ''
jobs:
- job: ${{ parameters.name }}
pool:
vmImage: ${{ parameters.vmImage }}
strategy:
matrix:
py310_np124:
PYTHON: '3.10'
NUMPY: '1.24'
CONDA_ENV: 'testenv'
TEST_START_INDEX: 17
py312_np20:
PYTHON: '3.12'
NUMPY: '2.0'
CONDA_ENV: 'testenv'
TEST_START_INDEX: 18
py313_np23:
PYTHON: '3.13'
NUMPY: '2.3'
CONDA_ENV: 'testenv'
TEST_START_INDEX: 19
py314_np24:
PYTHON: '3.14'
NUMPY: '2.4'
CONDA_ENV: 'testenv'
TEST_START_INDEX: 20
steps:
- powershell: Write-Host "##vso[task.prependpath]$env:CONDA\Scripts"
displayName: Add conda to PATH
- script: |
buildscripts\\incremental\\setup_conda_environment.cmd
displayName: 'Before Install'
- script: |
buildscripts\\incremental\\build.cmd
displayName: 'Build'
- script: |
call activate %CONDA_ENV%
python -m numba -s
displayName: 'Display numba system information'
- script: |
call activate %CONDA_ENV%
python -m numba.misc.POST
displayName: 'Power-On-Self-Test to make sure testing will likely work'
- script: |
call activate %CONDA_ENV%
set NUMBA_ENABLE_CUDASIM=1
set _NUMBA_REDUCED_TESTING=1
python -m numba.runtests -l
displayName: 'List discovered tests'
- script: |
call activate %CONDA_ENV%
set NUMBA_ENABLE_CUDASIM=1
set NUMBA_CPU_NAME=generic
set _NUMBA_REDUCED_TESTING=1
echo "Running shard of discovered tests: %TEST_START_INDEX%,None,%TEST_COUNT%"
python -m numba.runtests -b -v -g -m 1 -- numba.tests
displayName: 'Test modified test files'
- script: |
call activate %CONDA_ENV%
set NUMBA_ENABLE_CUDASIM=1
set NUMBA_CPU_NAME=generic
set _NUMBA_REDUCED_TESTING=1
echo "Running shard of discovered tests: %TEST_START_INDEX%:%TEST_COUNT%"
python runtests.py -m 1 -b -j "%TEST_START_INDEX%:%TEST_COUNT%" --exclude-tags='long_running' -- numba.tests
displayName: 'Test shard of test files'
================================================
FILE: buildscripts/condarecipe.local/bld.bat
================================================
REM Setup VS2022 environment manually to avoid conda vs2022 activation issues
REM on Windows Server 2025 (hardcoded toolset version mismatches)
for /F "usebackq tokens=*" %%i in (`vswhere.exe -nologo -products * -version "[17.0,18.0)" -property installationPath`) do (
set "VSINSTALLDIR=%%i\\"
)
if not exist "%VSINSTALLDIR%" (
echo "Could not find VS 2022"
exit /B 1
)
call "%VSINSTALLDIR%VC\Auxiliary\Build\vcvarsall.bat" x64
%PYTHON% setup.py build install --single-version-externally-managed --record=record.txt
exit /b %errorlevel%
================================================
FILE: buildscripts/condarecipe.local/build.sh
================================================
#!/bin/bash
if [[ "$(uname -s)" == *"Linux"* ]] && [[ "$(uname -p)" == *"86"* ]]; then
EXTRA_BUILD_EXT_FLAGS="--werror --wall"
else
EXTRA_BUILD_EXT_FLAGS=""
fi
if [[ "$(uname -s)" == *"Linux"* ]] && [[ "$(uname -p)" == *"ppc64le"* ]]; then
# To workaround https://github.com/numba/numba/issues/7302
# because of a python build problem that the -pthread could be stripped.
export CC="$CC -pthread"
export CXX="$CXX -pthread"
fi
MACOSX_DEPLOYMENT_TARGET=10.10 $PYTHON setup.py build_ext $EXTRA_BUILD_EXT_FLAGS build install --single-version-externally-managed --record=record.txt
================================================
FILE: buildscripts/condarecipe.local/conda_build_config.yaml
================================================
# Numba/llvmlite stack needs an older compiler for backwards compatibility.
c_compiler_version: # [linux or osx]
- 7 # [linux and (x86_64 or ppc64le)]
- 11 # [linux and aarch64]
- 19 # [osx]
cxx_compiler_version: # [linux or osx]
- 7 # [linux and (x86_64 or ppc64le)]
- 11 # [linux and aarch64]
- 19 # [osx]
fortran_compiler_version: # [linux]
- 7 # [linux and (x86_64 or ppc64le)]
- 11 # [linux and aarch64]
================================================
FILE: buildscripts/condarecipe.local/license.txt
================================================
Copyright (c) 2012, Anaconda, Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
================================================
FILE: buildscripts/condarecipe.local/meta.yaml
================================================
package:
name: numba
version: {{ GIT_DESCRIBE_TAG }}
source:
path: ../..
build:
number: {{ GIT_DESCRIBE_NUMBER|int }}
string: np{{ NPY_VER }}py{{ PY_VER }}h{{ PKG_HASH }}_{{GIT_DESCRIBE_HASH}}_{{ GIT_DESCRIBE_NUMBER }}
entry_points:
- numba = numba.misc.numba_entry:main
script_env:
- PY_VCRUNTIME_REDIST
missing_dso_whitelist: # [osx]
# optional dependency: required only when omp is chosen as the backend for
# the threading layer
- lib/libiomp5.dylib # [osx]
ignore_run_exports:
# tbb-devel triggers hard dependency on tbb, this is not the case.
- tbb # [not (aarch64 or ppc64le)]
requirements:
# build and run dependencies are duplicated to avoid setuptools issues
# when we also set install_requires in setup.py
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
# OpenMP headers from llvm needed for OSX.
- llvm-openmp={{ c_compiler_version }} # [osx]
host:
- python
- numpy
- setuptools
# On channel https://anaconda.org/numba/
- llvmlite >=0.47.0dev0,<0.47
# TBB devel version is to match TBB libs.
# NOTE: ppc64le and aarch64 are pending testing so excluded for now.
- tbb-devel >=2021.6 # [not (aarch64 or ppc64le)]
run:
- python >=3.10
- numpy >=1.22.3
# On channel https://anaconda.org/numba/
- llvmlite >=0.47.0dev0,<0.47
run_constrained:
# If TBB is present it must be at least version 2021.6
- tbb >=2021.6 # [not (aarch64 or ppc64le)]
# avoid confusion from openblas bugs
- libopenblas !=0.3.6 # [x86_64]
# 0.3.17 buggy on M1 silicon
# https://github.com/xianyi/OpenBLAS/blob/v0.3.20/Changelog.txt#L118
# https://github.com/numba/numba/issues/7822#issuecomment-1063229855
# Exclude 0.3.20 too
# https://github.com/numba/numba/issues/8096
- libopenblas >=0.3.18, !=0.3.20 # [arm64]
# CUDA 11.2 or later is required for CUDA support
- cuda-version >=11.2
- cudatoolkit >=11.2
# scipy 1.0 or later
- scipy >=1.0
# CUDA Python 11.6 or later
- cuda-python >=11.6
test:
requires:
- jinja2
# Required to test optional Numba features
- cffi
- scipy
- ipython # [not aarch64]
# for pycc
- setuptools
- pyyaml
- pygments
- intel-cmplr-lib-rt # [linux and x86_64]
- tbb >=2021.6 # [not (aarch64 or ppc64le)]
- llvm-openmp # [osx]
# This is for driving gdb tests
- pexpect # [linux64]
# For testing ipython. At the time of writing ipykernel was not available
# for Python 3.12.
- ipykernel # [not py==312]
# For memory monitoring
- psutil
# Need these for AOT. Do not init msvc as it may not be present
- {{ compiler('c') }} # [not (win or aarch64)]
- {{ compiler('cxx') }} # [not (win or aarch64)]
about:
home: https://numba.pydata.org/
license: BSD
license_file: LICENSE
summary: a just-in-time Python function compiler based on LLVM
================================================
FILE: buildscripts/condarecipe.local/run_test.bat
================================================
set NUMBA_DEVELOPER_MODE=1
set NUMBA_DISABLE_ERROR_MESSAGE_HIGHLIGHTING=1
set PYTHONFAULTHANDLER=1
@rem Set CPU to generic to avoid LLVM 15 code bloat issue
set NUMBA_CPU_NAME=generic
set _NUMBA_REDUCED_TESTING=1
@rem Disable NumPy dispatching to AVX512_SKX feature extensions if the chip is
@rem reported to support the feature and NumPy >= 1.22 as this results in the use
@rem of low accuracy SVML libm replacements in ufunc loops.
set "_NPY_CMD=from numba.misc import numba_sysinfo; "
set "_NPY_CMD=%_NPY_CMD%sysinfo=numba_sysinfo.get_sysinfo(); "
set "_NPY_CMD=%_NPY_CMD%print(sysinfo['NumPy AVX512_SKX detected'] "
set "_NPY_CMD=%_NPY_CMD%and sysinfo['NumPy Version']>='1.22')"
for /f %%i in ('python -c "%_NPY_CMD%"') do (
set NUMPY_DETECTS_AVX512_SKX_NP_GT_122=%%i
)
echo NumPy ^>= 1.22 with AVX512_SKX detected: %NUMPY_DETECTS_AVX512_SKX_NP_GT_122%
if "%NUMPY_DETECTS_AVX512_SKX_NP_GT_122%"=="True" (
set NPY_DISABLE_CPU_FEATURES=AVX512_SKX
)
@rem Check Numba executable is there
numba -h
@rem Run system info tool
numba -s
@rem Check test discovery works
python -m numba.tests.test_runtests
@rem Run the whole test suite
python -m numba.runtests -b -m -- %TESTS_TO_RUN%
if errorlevel 1 exit 1
================================================
FILE: buildscripts/condarecipe.local/run_test.sh
================================================
#!/bin/bash
set -e
export NUMBA_DEVELOPER_MODE=1
export NUMBA_DISABLE_ERROR_MESSAGE_HIGHLIGHTING=1
export PYTHONFAULTHANDLER=1
# Disable NumPy dispatching to AVX512_SKX feature extensions if the chip is
# reported to support the feature and NumPy >= 1.22 as this results in the use
# of low accuracy SVML libm replacements in ufunc loops.
_NPY_CMD='from numba.misc import numba_sysinfo;\
sysinfo=numba_sysinfo.get_sysinfo();\
print(sysinfo["NumPy AVX512_SKX detected"] and
sysinfo["NumPy Version"]>="1.22")'
NUMPY_DETECTS_AVX512_SKX_NP_GT_122=$(python -c "$_NPY_CMD")
echo "NumPy >= 1.22 with AVX512_SKX detected: $NUMPY_DETECTS_AVX512_SKX_NP_GT_122"
if [[ "$NUMPY_DETECTS_AVX512_SKX_NP_GT_122" == "True" ]]; then
export NPY_DISABLE_CPU_FEATURES="AVX512_SKX"
fi
unamestr=`uname`
if [[ "$unamestr" == 'Linux' ]]; then
SEGVCATCH=catchsegv
elif [[ "$unamestr" == 'Darwin' ]]; then
SEGVCATCH=""
else
echo Error
fi
# limit CPUs in use on PPC64LE, fork() issues
# occur on high core count systems
archstr=`uname -m`
if [[ "$archstr" == 'ppc64le' ]]; then
TEST_NPROCS=16
fi
# Check Numba executable is there
numba -h
# run system info tool
numba -s
# Check test discovery works
python -m numba.tests.test_runtests
# Run the whole test suite
echo "Running: $SEGVCATCH python -m numba.runtests -b -m $TEST_NPROCS -- $TESTS_TO_RUN"
$SEGVCATCH python -m numba.runtests -b -m $TEST_NPROCS -- $TESTS_TO_RUN
================================================
FILE: buildscripts/github/build_wheel_linux.sh
================================================
#!/bin/bash
set -ex
# Builds a Numba wheel inside the manylinux container
# Usage: build_wheel_linux.sh <python_executable> <use_tbb> <numpy_version> <llvmlite_wheel_path> <wheels_index_url>
PYTHON_EXECUTABLE=$1 # Use the provided executable path
USE_TBB=${2:-"true"}
NUMPY_VERSION=$3 # Adjusted index
LLVMLITE_WHEEL_PATH=${4:-""} # Adjusted index
WHEELS_INDEX_URL=${5:-"https://pypi.anaconda.org/numba/label/dev/simple"} # Adjusted index
# Set Git safe directory (needed for setuptools-scm in Docker)
git config --global --add safe.directory /io
# Install dependencies
$PYTHON_EXECUTABLE -m pip install build numpy==${NUMPY_VERSION} setuptools wheel
# Install TBB if enabled
if [ "$USE_TBB" = "true" ]; then
$PYTHON_EXECUTABLE -m pip install tbb==2021.6 tbb-devel==2021.6
fi
# Install llvmlite
if [ -n "$LLVMLITE_WHEEL_PATH" ] && [ -d "$LLVMLITE_WHEEL_PATH" ]; then
$PYTHON_EXECUTABLE -m pip install --no-cache-dir $LLVMLITE_WHEEL_PATH/*.whl
else
$PYTHON_EXECUTABLE -m pip install --no-cache-dir -i $WHEELS_INDEX_URL llvmlite
fi
# Change to the mounted workspace directory
cd /io
# Show directory contents for debugging
echo "Contents of /io directory:"
ls -la
# Build wheel from the workspace directory
$PYTHON_EXECUTABLE -m build --wheel --no-isolation
# Create output directory if it doesn't exist
mkdir -p /io/wheelhouse
# Copy wheel to the output directory
cp dist/*.whl /io/wheelhouse/
echo "Wheel build completed successfully"
================================================
FILE: buildscripts/github/download_artifacts.py
================================================
#!/usr/bin/env python
"""Download artifacts from GitHub Actions workflow runs for given run IDs."""
import argparse
import json
import os
import subprocess
import sys
from pathlib import Path
def get_artifacts_for_run(run_id, repo, token):
"""
Get list of artifacts for a workflow run.
Args:
run_id: Workflow run ID
repo: Repository in format 'owner/repo'
token: GitHub token for API authentication
Returns:
List of artifact dictionaries with 'name' and 'id'
"""
print(f"Fetching artifacts for run ID {run_id}", file=sys.stderr)
env = os.environ.copy()
env['GH_TOKEN'] = token
try:
result = subprocess.run(
[
"gh", "api",
"-H", "Accept: application/vnd.github+json",
"-H", "X-GitHub-Api-Version: 2022-11-28",
f"/repos/{repo}/actions/runs/{run_id}/artifacts",
"--jq", '.artifacts[] | {name: .name, id: .id}'
],
capture_output=True,
text=True,
check=True,
env=env
)
artifacts = []
for line in result.stdout.strip().split('\n'):
if line:
artifacts.append(json.loads(line))
print(f"Found {len(artifacts)} artifacts for run {run_id}", file=sys.stderr)
return artifacts
except subprocess.CalledProcessError as e:
print(f"ERROR: Failed to fetch artifacts: {e}", file=sys.stderr)
print(f"stderr: {e.stderr}", file=sys.stderr)
return []
def download_artifact(artifact_name, artifact_id, repo, token, output_dir):
"""
Download a single artifact and extract directly to output_dir.
Args:
artifact_name: Name of the artifact
artifact_id: Artifact ID
repo: Repository in format 'owner/repo'
token: GitHub token for API authentication
output_dir: Directory to download artifact to
Returns:
True if successful, False otherwise
"""
print(f"Downloading artifact: {artifact_name}", file=sys.stderr)
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
env = os.environ.copy()
env['GH_TOKEN'] = token
try:
# Use gh CLI to download artifact
zip_path = output_path / f"{artifact_name}.zip"
result = subprocess.run(
[
"gh", "api",
"-H", "Accept: application/vnd.github+json",
"-H", "X-GitHub-Api-Version: 2022-11-28",
f"/repos/{repo}/actions/artifacts/{artifact_id}/zip"
],
check=True,
env=env,
capture_output=True
)
# Write the binary output to file
with open(zip_path, 'wb') as f:
f.write(result.stdout)
# Unzip artifact directly to output_dir (flat structure)
subprocess.run(
["unzip", "-q", "-o", str(zip_path), "-d", str(output_path)],
check=True
)
# Remove the zip file
zip_path.unlink()
print(f"Successfully downloaded: {artifact_name}", file=sys.stderr)
return True
except subprocess.CalledProcessError as e:
print(f"ERROR: Failed to download {artifact_name}: {e}", file=sys.stderr)
if e.stderr:
print(f"stderr: {e.stderr}", file=sys.stderr)
if e.stdout:
print(f"stdout: {e.stdout}", file=sys.stderr)
return False
def main():
parser = argparse.ArgumentParser(
description='Download artifacts from workflow runs'
)
parser.add_argument(
'--run-ids',
nargs='+',
required=True,
help='List of workflow run IDs to download artifacts from'
)
parser.add_argument(
'--repo',
default=os.environ.get('GITHUB_REPOSITORY', ''),
help='Repository in format owner/repo (default: GITHUB_REPOSITORY env var)'
)
parser.add_argument(
'--token',
default=os.environ.get('GH_TOKEN', os.environ.get('GITHUB_TOKEN', '')),
help='GitHub token for API authentication (default: GH_TOKEN or GITHUB_TOKEN env var)'
)
parser.add_argument(
'--output-dir',
required=True,
help='Output directory for artifacts'
)
args = parser.parse_args()
if not args.repo:
parser.error("Repository is required (via --repo or GITHUB_REPOSITORY env var)")
if not args.token:
parser.error("GitHub token is required (via --token or GH_TOKEN/GITHUB_TOKEN env var)")
print(f"=== Downloading artifacts from {len(args.run_ids)} workflow runs ===", file=sys.stderr)
for run_id in args.run_ids:
print(f"\n--- Processing run ID: {run_id} ---", file=sys.stderr)
artifacts = get_artifacts_for_run(run_id, args.repo, args.token)
if not artifacts:
print(f"\nERROR: No artifacts found for run ID {run_id}", file=sys.stderr)
sys.exit(1)
for artifact in artifacts:
success = download_artifact(
artifact['name'],
artifact['id'],
args.repo,
args.token,
args.output_dir
)
if not success:
print(f"\nERROR: Failed to download artifact '{artifact['name']}'", file=sys.stderr)
sys.exit(1)
print(f"\n All artifacts downloaded successfully", file=sys.stderr)
if __name__ == "__main__":
main()
================================================
FILE: buildscripts/github/find_workflow_runs.py
================================================
#!/usr/bin/env python
"""Find successful llvmlite workflow run IDs for a given git tag."""
import argparse
import json
import os
import subprocess
import sys
def find_workflow_run(workflow_name, tag, repo, token):
"""
Find the latest successful workflow run for a given workflow and tag.
Args:
workflow_name: Name of the workflow file (e.g., 'llvmlite_conda_builder.yml')
tag: Git tag to search for
repo: Repository in format 'owner/repo' (e.g., 'numba/llvmlite')
token: GitHub token for API authentication
Returns:
Run ID as a string, or None if not found
"""
print(f"Search for successful run of {workflow_name} on tag {tag} in {repo}", file=sys.stderr)
env = os.environ.copy()
env['GH_TOKEN'] = token
try:
result = subprocess.run(
[
"gh", "api",
"-H", "Accept: application/vnd.github+json",
"-H", "X-GitHub-Api-Version: 2022-11-28",
f"/repos/{repo}/actions/workflows/{workflow_name}/runs",
"--jq", f'.workflow_runs[] | select(.head_branch == "{tag}" and .conclusion == "success") | .id'
],
capture_output=True,
text=True,
check=True,
env=env
)
run_ids = result.stdout.strip().split('\n')
if run_ids and run_ids[0]:
run_id = run_ids[0]
print(f"Found run ID {run_id} for {workflow_name}", file=sys.stderr)
return run_id
print(f"ERROR: No successful run found for {workflow_name} on tag {tag}", file=sys.stderr)
return None
except subprocess.CalledProcessError as e:
print(f"ERROR: Failed to query GitHub API: {e}", file=sys.stderr)
print(f"stderr: {e.stderr}", file=sys.stderr)
return None
def load_workflow_config(config_path):
"""
Load workflow groups from JSON config.
Args:
config_path: Path to JSON file containing workflow groups under 'workflows' key
Returns:
Dict mapping group names to lists of workflow filenames
"""
try:
with open(config_path, 'r') as f:
config = json.load(f)
except FileNotFoundError:
print(f"ERROR: Config file not found: {config_path}", file=sys.stderr)
sys.exit(1)
except json.JSONDecodeError as e:
print(f"ERROR: Invalid JSON in config file: {e}", file=sys.stderr)
sys.exit(1)
try:
workflow_groups = config['workflows']
except KeyError as e:
print(f"ERROR: Missing required key in config file: {e}", file=sys.stderr)
sys.exit(1)
# Validate that all groups are lists
for group_name, workflows in workflow_groups.items():
if not isinstance(workflows, list):
print(f"ERROR: Workflow group '{group_name}' must be a list", file=sys.stderr)
sys.exit(1)
return workflow_groups
def main():
parser = argparse.ArgumentParser(
description='Find successful workflow run IDs for a given tag'
)
parser.add_argument(
'--tag',
default=os.environ.get('TAG', ''),
help='Git tag to search for (default: TAG env var)'
)
parser.add_argument(
'--repo',
default=os.environ.get('GITHUB_REPOSITORY', ''),
help='Repository in format owner/repo (default: GITHUB_REPOSITORY env var)'
)
parser.add_argument(
'--token',
default=os.environ.get('GH_TOKEN', os.environ.get('GITHUB_TOKEN', '')),
help='GitHub token for API authentication (default: GH_TOKEN or GITHUB_TOKEN env var)'
)
parser.add_argument(
'--config',
required=True,
help='Path to JSON config file containing workflow groups'
)
args = parser.parse_args()
if not args.tag:
parser.error("TAG is required (via --tag or TAG env var)")
if not args.repo:
parser.error("Repository is required (via --repo or GITHUB_REPOSITORY env var)")
if not args.token:
parser.error("GitHub token is required (via --token or GH_TOKEN/GITHUB_TOKEN env var)")
# Load workflow groups from config file
# Returns dict: {group_name: [workflow_file1.yml, workflow_file2.yml, ...]}
grouped_workflow_names = load_workflow_config(args.config)
# Will store found run IDs: {group_name: [run_id1, run_id2, ...]}
found_run_ids_by_group = {}
# For each workflow group, query GitHub API to find successful run IDs
# matching the specified tag
for group_name, workflow_files in grouped_workflow_names.items():
print(f"\n=== finding {group_name} workflow runs ===", file=sys.stderr)
run_ids = []
for workflow_file in workflow_files:
run_id = find_workflow_run(workflow_file, args.tag, args.repo, args.token)
if run_id:
run_ids.append(run_id)
else:
print(f"WARNING: Could not find run ID for {workflow_file}", file=sys.stderr)
found_run_ids_by_group[group_name] = run_ids
# Verify all workflows were found
total_expected = sum(len(workflows) for workflows in grouped_workflow_names.values())
total_found = sum(len(run_ids) for run_ids in found_run_ids_by_group.values())
if total_found != total_expected:
print(f"\nERROR: Not all workflow runs were found ({total_found}/{total_expected})", file=sys.stderr)
sys.exit(1)
print("\n=== found workflow run IDs ===", file=sys.stderr)
for group_name, run_ids in found_run_ids_by_group.items():
print(f"{group_name}: {' '.join(run_ids)}", file=sys.stderr)
# Output run IDs in shell variable format for GitHub Actions
# eg. wheel_run_ids=run_id1 run_id2 ...
for group_name, run_ids in found_run_ids_by_group.items():
print(f"{group_name}_run_ids={' '.join(run_ids)}")
if __name__ == "__main__":
main()
================================================
FILE: buildscripts/github/patch_wheel_dylib.py
================================================
import sys
import re
import os
import subprocess as subp
known_rpaths = {
'@rpath/libc++.1.dylib': "/usr/lib/libc++.1.dylib",
}
def run_shell(cmd):
out = subp.check_output(cmd, shell=True)
return out
def main(whl):
# Find shared libraries
run_shell('wheel unpack {}'.format(whl))
thedir = '-'.join(whl.split('-')[:2])
sharedlibs = run_shell('find {} -name "*.so"'.format(thedir)).decode().splitlines()
# Scan paths
regex_rpath = re.compile(r'@rpath\/[^ ]+')
updated_files = set()
for path in sharedlibs:
# Check rpaths
otool_out = run_shell('otool -L {}'.format(path)).decode()
rpaths = set(regex_rpath.findall(otool_out))
unknown = rpaths - set(known_rpaths.keys())
if unknown:
#raise AssertionError('unknown rpath {}'.format(unknown))
print('unknown', unknown)
# Patch
for rpath in rpaths & set(known_rpaths.keys()):
print('patch', rpath, 'in', path)
run_shell('install_name_tool -change {} {} {}'.format(
rpath, known_rpaths[rpath], path))
updated_files.add(path)
print('updated_files', updated_files)
# Update whl
if updated_files:
run_shell('wheel pack {}'.format(thedir))
else:
print('nothing to do')
if __name__ == '__main__':
main(*sys.argv[1:])
================================================
FILE: buildscripts/github/repair_wheel_linux.sh
================================================
#!/bin/bash
set -ex
# Repairs and patches a Numba wheel inside the manylinux container
# Usage: repair_wheel_linux.sh <python_executable> <use_tbb> <wheel_dir>
PYTHON_EXECUTABLE=$1 # Use the provided executable path
USE_TBB=${2:-"true"}
WHEEL_DIR=${3:-"/io/wheelhouse"}
# Debug output
echo "PYTHON_EXECUTABLE: $PYTHON_EXECUTABLE"
echo "USE_TBB: $USE_TBB"
echo "WHEEL_DIR: $WHEEL_DIR"
# Install required tools
$PYTHON_EXECUTABLE -m pip install auditwheel patchelf twine wheel
# Install TBB if enabled
if [ "$USE_TBB" = "true" ]; then
$PYTHON_EXECUTABLE -m pip install tbb==2021.6 tbb-devel==2021.6
# Make TBB libraries available to dynamic linker
find /opt /usr -name "libtbb.so*" -exec cp {} /usr/local/lib/ \; 2>/dev/null
ldconfig
fi
# Make sure the wheelhouse directory exists
mkdir -p $WHEEL_DIR
# Find the wheel
cd $WHEEL_DIR
echo "Contents of wheel directory ($WHEEL_DIR):"
ls -la
WHEEL_FILE=$(ls -1 numba*.whl 2>/dev/null | head -1)
if [ -z "$WHEEL_FILE" ]; then
echo "No wheel file found in $WHEEL_DIR"
exit 1
fi
echo "Repairing wheel: $WHEEL_FILE"
# Create a temporary directory for repair
REPAIR_DIR=$(mktemp -d)
cp "$WHEEL_FILE" "$REPAIR_DIR/"
cd "$REPAIR_DIR"
# Repair with auditwheel
$PYTHON_EXECUTABLE -m auditwheel repair "$WHEEL_FILE" -w "$REPAIR_DIR/wheelhouse"
cd "$REPAIR_DIR/wheelhouse"
# Get the filename of the wheel to be patched
WHEEL_PATCHED=$(ls -1 *.whl | head -1)
# Unpack the wheel for patching
$PYTHON_EXECUTABLE -m wheel unpack $WHEEL_PATCHED
WHEEL_DIR_UNPACKED=$(find . -maxdepth 1 -type d -name "numba-*" | head -1)
cd "$WHEEL_DIR_UNPACKED"
# Patch libraries
if [ -d "numba.libs" ]; then
cd numba.libs
LIBTBB=$(ls libtbb* 2>/dev/null || echo "")
LIBOMP=$(ls libgomp* 2>/dev/null || echo "")
cd ..
rm -rf numba.libs
# Patch TBB libraries if present and TBB is enabled
if [ "$USE_TBB" = "true" ] && [ -n "$LIBTBB" ]; then
echo "Patching TBB libraries"
TBBEXT=$(echo "$LIBTBB" | grep -oP "(\\.so.*)" || echo ".so")
patchelf numba/np/ufunc/tbbpool*.so --replace-needed $LIBTBB libtbb$TBBEXT
patchelf numba/np/ufunc/tbbpool*.so --remove-rpath
ldd numba/np/ufunc/tbbpool*.so
readelf -d numba/np/ufunc/tbbpool*.so
fi
# Patch OpenMP libraries if present
if [ -n "$LIBOMP" ]; then
echo "Patching OpenMP libraries"
OMPEXT=$(echo "$LIBOMP" | grep -oP "(\\.so.*)" || echo ".so")
patchelf numba/np/ufunc/omppool*.so --replace-needed $LIBOMP libgomp$OMPEXT
patchelf numba/np/ufunc/omppool*.so --remove-rpath
ldd numba/np/ufunc/omppool*.so
readelf -d numba/np/ufunc/omppool*.so
fi
# Fix executable bit on scripts
if [ -d "numba-*.data/scripts" ]; then
chmod +x numba-*.data/scripts/*
fi
fi
cd ..
# Repack the wheel
rm -f *.whl
$PYTHON_EXECUTABLE -m wheel pack "$WHEEL_DIR_UNPACKED"
# Get the filename of the final repacked wheel
WHEEL_REPACKED=$(ls -1 *.whl | head -1)
# Remove the original non-manylinux wheel from the target directory
echo "Removing original wheel: $WHEEL_DIR/$WHEEL_FILE"
rm -f "$WHEEL_DIR/$WHEEL_FILE"
# Move final (repaired and repacked) wheel back to output directory
echo "Copying final wheel $WHEEL_REPACKED to $WHEEL_DIR/"
cp "$WHEEL_REPACKED" "$WHEEL_DIR/"
# Verify the final wheel (in the temp dir before cleanup)
$PYTHON_EXECUTABLE -m twine check "$WHEEL_REPACKED"
echo "Wheel repair and patch completed successfully"
================================================
FILE: buildscripts/github/workflow_groups.json
================================================
{
"workflows": {
"conda": [
"numba_linux-64_conda_builder.yml",
"numba_linux-aarch64_conda_builder.yml",
"numba_osx-arm64_conda_builder.yml",
"numba_win-64_conda_builder.yml"
],
"wheel": [
"numba_linux-64_wheel_builder.yml",
"numba_linux-aarch64_wheel_builder.yml",
"numba_osx-arm64_wheel_builder.yml",
"numba_win-64_wheel_builder.yml"
]
}
}
================================================
FILE: buildscripts/gpuci/axis.yaml
================================================
PYTHON_VER:
- "3.8"
CUDA_VER:
- "11.2"
CUDA_TOOLKIT_VER:
- "11.2"
- "11.3"
- "11.5"
- "11.8"
LINUX_VER:
- ubuntu18.04
RAPIDS_VER:
- "21.12"
excludes:
================================================
FILE: buildscripts/gpuci/build.sh
================================================
##############################################
# Numba GPU build and test script for CI #
##############################################
set -e
# Set path and build parallel level
export PATH=/opt/conda/bin:/usr/local/cuda/bin:$PATH
export PARALLEL_LEVEL=${PARALLEL_LEVEL:-4}
# Set home to the job's workspace
export HOME="$WORKSPACE"
# Switch to project root; also root of repo checkout
cd "$WORKSPACE"
# Determine CUDA release version
export CUDA_REL=${CUDA_VERSION%.*}
# Test with NVIDIA Bindings on CUDA 11.5
if [ $CUDA_TOOLKIT_VER == "11.5" ]
then
export NUMBA_CUDA_USE_NVIDIA_BINDING=1;
else
export NUMBA_CUDA_USE_NVIDIA_BINDING=0;
fi;
# Test with Minor Version Compatibility on CUDA 11.8
if [ $CUDA_TOOLKIT_VER == "11.8" ]
then
export NUMBA_CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY=1;
else
export NUMBA_CUDA_ENABLE_MINOR_VERSION_COMPATIBILITY=0;
fi;
# Test with different NumPy and Python versions with each toolkit (it's not
# worth testing the Cartesian product of versions here, we just need to test
# with different CUDA, NumPy, and Python versions).
declare -A CTK_NUMPY_VMAP=( ["11.2"]="1.24" ["11.3"]="1.26" ["11.5"]="2.0" ["11.8"]="2.1")
NUMPY_VER="${CTK_NUMPY_VMAP[$CUDA_TOOLKIT_VER]}"
declare -A CTK_PYTHON_VMAP=( ["11.2"]="3.10" ["11.3"]="3.11" ["11.5"]="3.11" ["11.8"]="3.12")
PYTHON_VER="${CTK_PYTHON_VMAP[$CUDA_TOOLKIT_VER]}"
################################################################################
# SETUP - Check environment
################################################################################
gpuci_logger "Check environment variables"
env
gpuci_logger "Check GPU usage"
nvidia-smi
gpuci_logger "Create testing env"
. /opt/conda/etc/profile.d/conda.sh
gpuci_mamba_retry create -n numba_ci -y \
"python=${PYTHON_VER}" \
"cudatoolkit=${CUDA_TOOLKIT_VER}" \
"rapidsai-nightly::cubinlinker" \
"conda-forge::ptxcompiler" \
"numba/label/dev::llvmlite" \
"numpy=${NUMPY_VER}" \
"scipy" \
"cffi" \
"psutil" \
"gcc_linux-64=7" \
"gxx_linux-64=7" \
"setuptools"
conda activate numba_ci
if [ $NUMBA_CUDA_USE_NVIDIA_BINDING == "1" ]
then
gpuci_logger "Install NVIDIA CUDA Python bindings";
gpuci_mamba_retry install cuda-python=11.8 cuda-cudart=11.5 cuda-nvrtc=11.5;
fi;
gpuci_logger "Install numba"
python setup.py develop
gpuci_logger "Check Compiler versions"
$CC --version
$CXX --version
gpuci_logger "Check conda environment"
conda info
conda config --show-sources
gpuci_logger "Dump system information from Numba"
python -m numba -s
gpuci_logger "Run tests in numba.cuda.tests"
python -m numba.runtests numba.cuda.tests -v -m
================================================
FILE: buildscripts/incremental/MacOSX10.10.sdk.checksum
================================================
ea40a3b9dc48cd3593628490f2738b89282f00ab ./MacOSX10.10.sdk.tar.xz
================================================
FILE: buildscripts/incremental/after_success.sh
================================================
#!/bin/bash
source activate $CONDA_ENV
# Make sure any error below is reported as such
set -v -e
if [ "$RUN_COVERAGE" == "yes" ]; then
coverage combine
codecov
fi
================================================
FILE: buildscripts/incremental/build.cmd
================================================
call activate %CONDA_ENV%
@rem Build numba extensions without silencing compile errors
python setup.py build_ext -q --inplace
@rem Install numba locally for use in `numba -s` sys info tool at test time
python -m pip install -e .
if %errorlevel% neq 0 exit /b %errorlevel%
================================================
FILE: buildscripts/incremental/build.sh
================================================
#!/bin/bash
source activate
conda activate $CONDA_ENV
# Make sure any error below is reported as such
set -v -e
# Build numba extensions without silencing compile errors
if [[ "$(uname -s)" == *"Linux"* ]] && [[ "$(uname -p)" == *"86"* ]]; then
EXTRA_BUILD_EXT_FLAGS="--werror --wall"
else
EXTRA_BUILD_EXT_FLAGS=""
fi
if [[ $(uname) == "Darwin" ]]; then
# The following is suggested in https://docs.conda.io/projects/conda-build/en/latest/resources/compiler-tools.html?highlight=SDK#macos-sdk
wget -q https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX10.10.sdk.tar.xz
shasum -c ./buildscripts/incremental/MacOSX10.10.sdk.checksum
tar -xf ./MacOSX10.10.sdk.tar.xz
export SDKROOT=`pwd`/MacOSX10.10.sdk
fi
python setup.py build_ext -q --inplace --debug $EXTRA_BUILD_EXT_FLAGS --verbose
# (note we don't install to avoid problems with extra long Windows paths
# during distutils-dependent tests -- e.g. test_pycc)
# Install numba locally for use in `numba -s` sys info tool at test time
python -m pip install --no-deps -e .
================================================
FILE: buildscripts/incremental/install_miniconda.sh
================================================
#!/bin/bash
set -v -e
# Install Miniconda
unamestr=`uname`
if [[ "$unamestr" == 'Linux' ]]; then
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh
elif [[ "$unamestr" == 'Darwin' ]]; then
wget https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh -O miniconda.sh
else
echo Error
fi
chmod +x miniconda.sh
bash ./miniconda.sh -b
================================================
FILE: buildscripts/incremental/setup_conda_environment.cmd
================================================
@rem first configure conda to have more tolerance of network problems, these
@rem numbers are not scientifically chosen, just merely larger than defaults
set CONDA_CONFIG=cmd /C conda config
%CONDA_CONFIG% --write-default
%CONDA_CONFIG% --set remote_connect_timeout_secs 30.15
%CONDA_CONFIG% --set remote_max_retries 10
%CONDA_CONFIG% --set remote_read_timeout_secs 120.2
%CONDA_CONFIG% --set show_channel_urls true
cmd /C conda info
%CONDA_CONFIG% --show
@rem The cmd /C hack circumvents a regression where conda installs a conda.bat
@rem script in non-root environments.
set CONDA_INSTALL=cmd /C conda install -q -y
set PIP_INSTALL=pip install -q
@echo on
@rem Deactivate any environment
call deactivate
@rem Display root environment (for debugging)
conda list
if "%PYTHON%" neq "3.13" (
@rem CFFI, jinja2 and IPython are optional dependencies, but exercised in the test suite
conda create -n %CONDA_ENV% -q -y python=%PYTHON% numpy=%NUMPY% cffi pip jinja2 ipython gitpython pyyaml psutil
) else (
@rem missing IPython for Python 3.13
conda create -n %CONDA_ENV% -q -y python=%PYTHON% numpy=%NUMPY% cffi pip jinja2 gitpython pyyaml psutil
)
@rem Install SciPy only if NumPy is not 2.1
if "%NUMPY%" neq "2.1" (%CONDA_INSTALL% scipy)
call activate %CONDA_ENV%
@rem Python 3.14+ requires setuptools
if "%PYTHON%" geq "3.14" (%CONDA_INSTALL% setuptools)
@rem Install latest llvmlite build
%CONDA_INSTALL% -c numba/label/dev llvmlite=0.47
@rem Install dependencies for building the documentation
if "%BUILD_DOC%" == "yes" (%CONDA_INSTALL% sphinx sphinx_rtd_theme pygments)
@rem Install dependencies for code coverage (codecov.io)
if "%RUN_COVERAGE%" == "yes" (%PIP_INSTALL% codecov)
@rem Install TBB
%CONDA_INSTALL% "tbb>=2021.6" "tbb-devel>=2021.6"
if %errorlevel% neq 0 exit /b %errorlevel%
echo "DEBUG ENV:"
echo "-------------------------------------------------------------------------"
conda env export
echo "-------------------------------------------------------------------------"
================================================
FILE: buildscripts/incremental/setup_conda_environment.sh
================================================
#!/bin/bash
set -v -e
# first configure conda to have more tolerance of network problems, these
# numbers are not scientifically chosen, just merely larger than defaults
conda config --write-default
conda config --set remote_connect_timeout_secs 30.15
conda config --set remote_max_retries 10
conda config --set remote_read_timeout_secs 120.2
conda config --set show_channel_urls true
conda info
conda config --show
CONDA_INSTALL="conda install -q -y"
PIP_INSTALL="pip install -q"
EXTRA_CHANNELS="$EXTRA_CHANNELS"
if [ "${USE_C3I_TEST_CHANNEL}" == "yes" ]; then
EXTRA_CHANNELS="${EXTRA_CHANNELS} -c c3i_test"
fi
# Deactivate any environment
source deactivate
# Display root environment (for debugging)
conda list
# Pin conda<26 to work around conda 26 regression, issue #10461
$CONDA_INSTALL "conda<26"
# If VANILLA_INSTALL is yes, then only Python, NumPy and pip are installed, this
# is to catch tests/code paths that require an optional package and are not
# guarding against the possibility that it does not exist in the environment.
# Create a base env first and then add to it...
# NOTE: gitpython is needed for CI testing to do the test slicing
# NOTE: pyyaml is used to ensure that the Azure CI config is valid
conda create -n $CONDA_ENV -q -y ${EXTRA_CHANNELS} python=$PYTHON numpy=$NUMPY pip gitpython pyyaml psutil
# Activate first
set +v
source activate $CONDA_ENV
set -v
# Install optional packages into activated env
echo "PYTHON=$PYTHON"
echo "VANILLA_INSTALL=$VANILLA_INSTALL"
if [ "${VANILLA_INSTALL}" != "yes" ]; then
# Scipy, CFFI, jinja2, IPython and pygments are optional
# dependencies, but exercised in the test suite
# pexpect is used to run the gdb tests.
# ipykernel is used for testing ipython behaviours.
if [ $PYTHON \< "3.12" ]; then
$CONDA_INSTALL ${EXTRA_CHANNELS} cffi jinja2 ipython ipykernel pygments pexpect
elif [ $PYTHON \< "3.13" ]; then
# At the time of writing `ipykernel` was not available for Python 3.12
$CONDA_INSTALL ${EXTRA_CHANNELS} cffi jinja2 ipython pygments pexpect
else
echo "no extra packages for 3.13"
fi
if [ $NUMPY \< "2.0" ]; then
$CONDA_INSTALL ${EXTRA_CHANNELS} scipy
fi
fi
# Python 3.14+ requires setuptools
if [ ! $PYTHON \< "3.14" ]; then
$CONDA_INSTALL ${EXTRA_CHANNELS} setuptools
fi
# Install the compiler toolchain and gdb (if available)
if [[ $(uname) == Linux ]]; then
if [ $PYTHON \< "3.12" ]; then
$CONDA_INSTALL gcc_linux-64=11 gxx_linux-64=11 gdb gdb-pretty-printer
else
# At the time of writing gdb and gdb-pretty-printer were not available
# for 3.12.
$CONDA_INSTALL gcc_linux-64=11 gxx_linux-64=11
fi
elif [[ $(uname) == Darwin ]]; then
$CONDA_INSTALL clang_osx-64 clangxx_osx-64
# Install llvm-openmp on OSX for headers during build and runtime during
# testing
$CONDA_INSTALL llvm-openmp
fi
# Install latest correct build
$CONDA_INSTALL -c numba/label/dev llvmlite=0.47
# Install dependencies for building the documentation
if [ "$BUILD_DOC" == "yes" ]; then $CONDA_INSTALL sphinx docutils sphinx_rtd_theme pygments numpydoc; fi
if [ "$BUILD_DOC" == "yes" ]; then $PIP_INSTALL rstcheck; fi
# Install dependencies for code coverage
if [ "$RUN_COVERAGE" == "yes" ]; then $CONDA_INSTALL coverage; fi
# Install SVML
if [ "$TEST_SVML" == "yes" ]; then $CONDA_INSTALL -c numba icc_rt; fi
# Install Intel TBB parallel backend
if [ "$TEST_THREADING" == "tbb" ]; then $CONDA_INSTALL "tbb>=2021.6" "tbb-devel>=2021.6"; fi
# Install typeguard
if [ "$RUN_TYPEGUARD" == "yes" ]; then $CONDA_INSTALL typeguard; fi
# environment dump for debug
echo "DEBUG ENV:"
echo "-------------------------------------------------------------------------"
conda env export
echo "-------------------------------------------------------------------------"
================================================
FILE: buildscripts/incremental/test.sh
================================================
#!/bin/bash
source activate $CONDA_ENV
# Make sure any error below is reported as such
set -v -e
# If the build is a "Vanilla" variant, then remove the setuptools package. It
# was installed at build time for setup.py to use, but is an _optional_ runtime
# dependency of Numba and therefore shouldn't be present in "Vanilla" testing.
# This package is "force" removed so that its removal doesn't uninstall
# things that might depend on it (the dependencies are present but are not of
# interest to Numba as those code paths are not used by Numba).
if [ "${VANILLA_INSTALL}" == "yes" ]; then
conda remove --force -y setuptools
fi
# Ensure the README is correctly formatted
if [ "$BUILD_DOC" == "yes" ]; then rstcheck README.rst; fi
# Ensure that the documentation builds without warnings
pushd docs
if [ "$BUILD_DOC" == "yes" ]; then make SPHINXOPTS=-W clean html; fi
popd
# Run system and gdb info tools
if [ "${VANILLA_INSTALL}" == "yes" ]; then
# Vanilla install has no access to pkg_resources as setuptools is removed,
# so run these via their modules.
python -m numba -s
python -m numba -g
else
pushd bin
numba -s
numba -g
popd
fi
# switch off color messages
export NUMBA_DISABLE_ERROR_MESSAGE_HIGHLIGHTING=1
# switch on developer mode
export NUMBA_DEVELOPER_MODE=1
# enable the fault handler
export PYTHONFAULTHANDLER=1
# Disable NumPy dispatching to AVX512_SKX feature extensions if the chip is
# reported to support the feature and NumPy >= 1.22 as this results in the use
# of low accuracy SVML libm replacements in ufunc loops.
_NPY_CMD='from numba.misc import numba_sysinfo;\
sysinfo=numba_sysinfo.get_sysinfo();\
print(sysinfo["NumPy AVX512_SKX detected"] and
sysinfo["NumPy Version"]>="1.22")'
NUMPY_DETECTS_AVX512_SKX_NP_GT_122=$(python -c "$_NPY_CMD")
echo "NumPy >= 1.22 with AVX512_SKX detected: $NUMPY_DETECTS_AVX512_SKX_NP_GT_122"
if [[ "$NUMPY_DETECTS_AVX512_SKX_NP_GT_122" == "True" ]]; then
export NPY_DISABLE_CPU_FEATURES="AVX512_SKX"
fi
# deal with threading layers
if [ -z ${TEST_THREADING+x} ]; then
echo "INFO: Threading layer not explicitly set."
else
case "${TEST_THREADING}" in "workqueue"|"omp"|"tbb")
export NUMBA_THREADING_LAYER="$TEST_THREADING"
echo "INFO: Threading layer set as: $TEST_THREADING"
;;
*)
echo "INFO: Threading layer explicitly set to bad value: $TEST_THREADING."
exit 1
;;
esac
fi
# If TEST_THREADING is set in the env, then check that Numba agrees that the
# environment can support the requested threading.
function check_sysinfo() {
cmd="import os;\
from numba.misc.numba_sysinfo import get_sysinfo;\
assert get_sysinfo()['$1 Threading'] is True, 'Threading layer $1 '\
'is not supported';\
print('Threading layer $1 is supported')"
python -c "$cmd"
}
if [[ "$TEST_THREADING" ]]; then
if [[ "$TEST_THREADING" == "tbb" ]]; then
check_sysinfo "TBB"
elif [[ "$TEST_THREADING" == "omp" ]]; then
check_sysinfo "OpenMP"
elif [[ "$TEST_THREADING" == "workqueue" ]]; then
check_sysinfo "Workqueue"
else
echo "Unknown threading layer requested: $TEST_THREADING"
exit 1
fi
fi
# Find catchsegv
unamestr=`uname`
if [[ "$unamestr" == 'Linux' ]]; then
SEGVCATCH=catchsegv
elif [[ "$unamestr" == 'Darwin' ]]; then
SEGVCATCH=""
else
echo Error
fi
# limit CPUs in use on PPC64LE, fork() issues
# occur on high core count systems
archstr=`uname -m`
if [[ "$archstr" == 'ppc64le' ]]; then
TEST_NPROCS=16
fi
# setup SDKROOT on Mac
if [[ $(uname) == "Darwin" ]]; then
export SDKROOT=`pwd`/MacOSX10.10.sdk
fi
# First run Numba's Power-On-Self-Test to make sure testing will likely work
python -m numba.misc.POST
export NUMBA_CPU_NAME=generic
export NUMBA_CPU_FEATURES=''
# Now run tests based on the changes identified via git
NUMBA_ENABLE_CUDASIM=1 $SEGVCATCH python -m numba.runtests -b -v -g -m $TEST_NPROCS -- numba.tests
# List the tests found
echo "INFO: All discovered tests:"
python -m numba.runtests -l
# Now run the Numba test suite with sharding
# Note that coverage is run from the checkout dir to match the "source"
# directive in .coveragerc
echo "INFO: Running shard of discovered tests: ($TEST_START_INDEX:$TEST_COUNT)"
if [ "$RUN_COVERAGE" == "yes" ]; then
echo "INFO: Running with coverage"
export PYTHONPATH=.
coverage erase
$SEGVCATCH coverage run runtests.py -b -j "$TEST_START_INDEX:$TEST_COUNT" --exclude-tags='long_running' -m $TEST_NPROCS -- numba.tests
elif [ "$RUN_TYPEGUARD" == "yes" ]; then
echo "INFO: Running with typeguard"
NUMBA_USE_TYPEGUARD=1 NUMBA_ENABLE_CUDASIM=1 PYTHONWARNINGS="ignore:::typeguard" $SEGVCATCH python runtests.py -b -j "$TEST_START_INDEX:$TEST_COUNT" --exclude-tags='long_running' -m $TEST_NPROCS -- numba.tests
else
NUMBA_ENABLE_CUDASIM=1 $SEGVCATCH python -m numba.runtests -b -j "$TEST_START_INDEX:$TEST_COUNT" --exclude-tags='long_running' -m $TEST_NPROCS -- numba.tests
fi
================================================
FILE: codecov.yml
================================================
# Configuration for codecov.io
# When editing this file, please validate its contents using:
# curl -X POST --data-binary @- https://codecov.io/validate < codecov.yml
comment:
layout: "header, diff, changes, uncovered"
coverage:
ignore:
- "numba/cuda/.*"
- "numba/hsa/.*"
status:
project:
default:
# The build fails if total project coverage drops by more than 3%
target: auto
threshold: "3%"
# These checks can mark a build failed if too much new code
# is not covered (which happens often with JITted functions).
changes: false
patch: false
================================================
FILE: contrib/valgrind-numba.supp
================================================
{
<llvmpy_get_cpu_name_cond>
Memcheck:Cond
fun:_ZN4llvm3sys14getHostCPUNameEv
fun:LLVMPY_GetHostCPUName
}
{
<llvmpy_get_cpu_name_value8>
Memcheck:Value8
fun:_ZN4llvm3sys14getHostCPUNameEv
fun:LLVMPY_GetHostCPUName
}
{
<openmp_init_cond>
Memcheck:Cond
fun:__intel_sse2_strrchr
fun:_ZN67_INTERNAL_45_______src_thirdparty_tbb_omp_dynamic_link_cpp_c306cade5__kmp12init_dl_dataEv
fun:__sti__$E
}
================================================
FILE: docs/Makefile
================================================
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS = -j1
SPHINXBUILD = sphinx-build
PAPER =
BUILDDIR = _build
# User-friendly check for sphinx-build
ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1)
$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/)
endif
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " singlehtml to make a single large HTML file"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " devhelp to make HTML files and a Devhelp project"
@echo " epub to make an epub"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " latexpdf to make LaTeX files and run them through pdflatex"
@echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx"
@echo " text to make text files"
@echo " man to make manual pages"
@echo " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " xml to make Docutils-native XML files"
@echo " pseudoxml to make pseudoxml-XML files for display purposes"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
rm -rf $(BUILDDIR)/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml
@echo
@echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml."
singlehtml:
$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml
@echo
@echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in $(BUILDDIR)/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in $(BUILDDIR)/qthelp, like this:"
@echo "# qcollectiongenerator $(BUILDDIR)/qthelp/Numba.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/Numba.qhc"
devhelp:
$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp
@echo
@echo "Build finished."
@echo "To view the help file:"
@echo "# mkdir -p $$HOME/.local/share/devhelp/Numba"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/Numba"
@echo "# devhelp"
epub:
$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub
@echo
@echo "Build finished. The epub file is in $(BUILDDIR)/epub."
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo
@echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex."
@echo "Run \`make' in that directory to run these through (pdf)latex" \
"(use \`make latexpdf' here to do that automatically)."
latexpdf:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through pdflatex..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
latexpdfja:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
@echo "Running LaTeX files through platex and dvipdfmx..."
$(MAKE) -C $(BUILDDIR)/latex all-pdf-ja
@echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
text:
$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text
@echo
@echo "Build finished. The text files are in $(BUILDDIR)/text."
man:
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man
@echo
@echo "Build finished. The manual pages are in $(BUILDDIR)/man."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes
@echo
@echo "The overview file is in $(BUILDDIR)/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in $(BUILDDIR)/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in $(BUILDDIR)/doctest/output.txt."
xml:
$(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml
@echo
@echo "Build finished. The XML files are in $(BUILDDIR)/xml."
pseudoxml:
$(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml
@echo
@echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml."
================================================
FILE: docs/_static/rtd-overrides.css
================================================
.wy-nav-content {
max-width: 1200px
}
================================================
FILE: docs/_templates/EMPTY
================================================
================================================
FILE: docs/dagmap/README.md
================================================
# DAG Roadmap
This directory includes a representation of the Numba roadmap in the form of a
DAG. We have done this to enable a highly granular display of enhancements to
Numba that also shows the relationships between these tasks. Many tasks have
prerequisites, and we've found that issue trackers, Kanban boards, and
time-bucketed roadmap documentation all fail to represent this information in
different ways.
## Requirements
```
conda install jinja2 python-graphviz pyyaml
```
## Usage
```
./render.py -o dagmap.html dagmap.yaml
```
The generated HTML file will look for `jquery.graphviz.svg.js` in the same
directory.
## Updating the DAG
Copy one of the existing tasks and edit:
* `label`: text appears on the node. Embed `\n` for line breaks.
* `id`: Referenced to indicate a dependency
* `description`: Shown in the tooltip. Automatically word-wrapped.
* `depends_on`: Optional list of task IDs which this task depends on.
The `style` section of the file is not used yet.
## Notes
The HTML rendering of the graph is based on a slightly modified version of
(jquery.graphviz.svg)[https://github.com/mountainstorm/jquery.graphviz.svg/].
Its license is:
```
Copyright (c) 2015 Mountainstorm
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
================================================
FILE: docs/dagmap/dagmap.yaml
================================================
meta:
version: 1
style:
tags:
performance:
border: red
tasks:
- label: Track allocations in functions
id: track_alloc
description: |
Maintain a list of allocations inside each function which can be used
for freeing things on return, and also for debugging memory usage.
- label: Catch exceptions
id: catch_exceptions
description: |
Allow exceptions raised in nopython mode to be caught in nopython mode.
depends_on:
- track_alloc
- label: New IR
id: new_ir
description: |
New intermediate representation for Numba that is backed by a dictionary
- label: New Type Matching DSL
id: type_matching
description: |
Replace the current DSL for Numba types with something more expressive
that can match type patterns
- label: Declarative type signatures\nfor @overload/@overload_method
id: declarative_overload
description: |
Replace the current DSL for Numba types with something more expressive\n
that can match type patterns
depends_on:
- type_matching
- label: Rewrite "old-style" implementations
id: rewrite_old_impls
description: |
Rewrite implementations of functions that use the old extension API that
separates typing from implementation, and often uses the LLVM builder
unnecessarily.
depends_on:
- declarative_overload
- improve_test_suite_tooling
- faster_pr_testing
- label: Unify and add more test suite tooling
id: improve_test_suite_tooling
description: |
Add tools to help with common patterns in testing and unify the ones we
have, there's no need for 12 spellings of "is this Python 3" Also decide
on "what to test", do all types need testing if inputs are being
"as_array"'d?
- label: Pipeline pass formalisation
id: pass_formalisation
description: |
Decide on a formal description of a compiler pass and create supporting
code for it
- label: Array expression fusion pass
id: new_array_expr_fusion_pass
description:
From parfors extract out the array expression fusion pass
depends_on:
- parfors_clean_up
- pass_formalisation
- label: LICM Pass
id: new_licm_pass
description: |
Create a LICM Pass
depends_on:
- parfors_clean_up
- pass_formalisation
- label: Clean up Parfors
id: parfors_clean_up
description: |
General clean up and refactoring of parfors ahead of any additional work
- label: Mode based pipeline
id: mode_based_pipeline
description: |
Switch the jit decorator to use a mode based pipeline with
`nopython=True` equivalent as default.
- label: Remove object mode fallback
id: remove_objmode_fallback
description: |
Remove the deprecated object mode fallback
depends_on:
- mode_based_pipeline
- label: Switch to ORC JIT
id: orc_jit
description: |
MCJIT has been deprecated for some time. Need to switch to the newer
ORC JIT class.
- label: Performance analysis suite
id: perform_analysis_suite
description: |
Meta task for all performance analysis related functionality
depends_on:
- line_profiling
- assembly_analysis_tooling
- vectorisation_analysis
- label: Vectorisation analysis
id: vectorisation_analysis
description: |
Obtain LLVMs vectorisation reports and present these in a user friendly
manner
- label: Line profiling
id: line_profiling
description: |
Support collection of profiling sta
gitextract_jo8w_g1q/ ├── .coveragerc ├── .flake8 ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── Bug_report.md │ │ ├── Feature_request.md │ │ ├── config.yml │ │ ├── first_rc_checklist.md │ │ └── sub_rc_checklist.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── conda_workflow_matrix.json │ ├── numba_linux-64_conda_builder.yml │ ├── numba_linux-64_wheel_builder.yml │ ├── numba_linux-aarch64_conda_builder.yml │ ├── numba_linux-aarch64_wheel_builder.yml │ ├── numba_osx-arm64_conda_builder.yml │ ├── numba_osx-arm64_wheel_builder.yml │ ├── numba_win-64_conda_builder.yml │ ├── numba_win-64_wheel_builder.yml │ ├── stale.yml │ ├── towncrier.yml │ ├── upload_packages.yml │ └── wheel_workflow_matrix.json ├── .gitignore ├── .readthedocs.yml ├── CHANGE_LOG ├── CONTRIBUTING.md ├── LICENSE ├── LICENSES.third-party ├── MANIFEST.in ├── README.rst ├── SECURITY.md ├── azure-pipelines.yml ├── bin/ │ └── numba ├── buildscripts/ │ ├── azure/ │ │ ├── azure-linux-macos.yml │ │ └── azure-windows.yml │ ├── condarecipe.local/ │ │ ├── bld.bat │ │ ├── build.sh │ │ ├── conda_build_config.yaml │ │ ├── license.txt │ │ ├── meta.yaml │ │ ├── run_test.bat │ │ └── run_test.sh │ ├── github/ │ │ ├── build_wheel_linux.sh │ │ ├── download_artifacts.py │ │ ├── find_workflow_runs.py │ │ ├── patch_wheel_dylib.py │ │ ├── repair_wheel_linux.sh │ │ └── workflow_groups.json │ ├── gpuci/ │ │ ├── axis.yaml │ │ └── build.sh │ └── incremental/ │ ├── MacOSX10.10.sdk.checksum │ ├── after_success.sh │ ├── build.cmd │ ├── build.sh │ ├── install_miniconda.sh │ ├── setup_conda_environment.cmd │ ├── setup_conda_environment.sh │ └── test.sh ├── codecov.yml ├── contrib/ │ └── valgrind-numba.supp ├── docs/ │ ├── Makefile │ ├── _static/ │ │ └── rtd-overrides.css │ ├── _templates/ │ │ └── EMPTY │ ├── dagmap/ │ │ ├── README.md │ │ ├── dagmap.yaml │ │ ├── jquery.graphviz.svg.js │ │ ├── render.py │ │ └── template.html │ ├── environment.yml │ ├── make.bat │ ├── source/ │ │ ├── _ext/ │ │ │ └── ghfiles.py │ │ ├── conf.py │ │ ├── cuda/ │ │ │ ├── bindings.rst │ │ │ ├── caching.rst │ │ │ ├── cooperative_groups.rst │ │ │ ├── cuda_array_interface.rst │ │ │ ├── cuda_compilation.rst │ │ │ ├── cuda_ffi.rst │ │ │ ├── cudapysupported.rst │ │ │ ├── device-functions.rst │ │ │ ├── device-management.rst │ │ │ ├── examples.rst │ │ │ ├── external-memory.rst │ │ │ ├── faq.rst │ │ │ ├── fastmath.rst │ │ │ ├── index.rst │ │ │ ├── intrinsics.rst │ │ │ ├── ipc.rst │ │ │ ├── kernels.rst │ │ │ ├── memory.rst │ │ │ ├── minor_version_compatibility.rst │ │ │ ├── overview.rst │ │ │ ├── random.rst │ │ │ ├── reduction.rst │ │ │ ├── simulator.rst │ │ │ └── ufunc.rst │ │ ├── cuda-reference/ │ │ │ ├── host.rst │ │ │ ├── index.rst │ │ │ ├── kernel.rst │ │ │ ├── libdevice.rst │ │ │ ├── memory.rst │ │ │ └── types.rst │ │ ├── developer/ │ │ │ ├── architecture.rst │ │ │ ├── bytecode.rst │ │ │ ├── caching.rst │ │ │ ├── compiler_pass_example.py │ │ │ ├── contributing.rst │ │ │ ├── custom_pipeline.rst │ │ │ ├── debugging.rst │ │ │ ├── dispatching.rst │ │ │ ├── environment.rst │ │ │ ├── event_api.rst │ │ │ ├── generators.rst │ │ │ ├── hashing.rst │ │ │ ├── index.rst │ │ │ ├── inline_example.py │ │ │ ├── inline_overload_example.py │ │ │ ├── inlining.rst │ │ │ ├── listings.rst │ │ │ ├── literal.rst │ │ │ ├── live_variable_analysis.rst │ │ │ ├── llvm_timings.rst │ │ │ ├── mission.rst │ │ │ ├── numba-runtime.rst │ │ │ ├── release.rst │ │ │ ├── repomap.rst │ │ │ ├── rewrites.rst │ │ │ ├── stencil.rst │ │ │ ├── sys_monitoring.rst │ │ │ ├── target_extension.rst │ │ │ └── threading_implementation.rst │ │ ├── extending/ │ │ │ ├── entrypoints.rst │ │ │ ├── high-level.rst │ │ │ ├── index.rst │ │ │ ├── interval-example.rst │ │ │ ├── low-level.rst │ │ │ ├── mynorm.py │ │ │ ├── overloading-guide.rst │ │ │ └── template.py │ │ ├── glossary.rst │ │ ├── index.rst │ │ ├── proposals/ │ │ │ ├── cfunc.rst │ │ │ ├── extension-points.rst │ │ │ ├── external-memory-management.rst │ │ │ ├── index.rst │ │ │ ├── integer-typing.rst │ │ │ ├── jit-classes.rst │ │ │ ├── np-where-override.py │ │ │ ├── type-inference.rst │ │ │ └── typing_recursion.rst │ │ ├── reference/ │ │ │ ├── aot-compilation.rst │ │ │ ├── deprecation.rst │ │ │ ├── envvars.rst │ │ │ ├── fpsemantics.rst │ │ │ ├── index.rst │ │ │ ├── jit-compilation.rst │ │ │ ├── numpysupported.rst │ │ │ ├── pysemantics.rst │ │ │ ├── pysupported.rst │ │ │ ├── support_tiers.rst │ │ │ ├── types.rst │ │ │ └── utils.rst │ │ ├── release/ │ │ │ ├── 0.58.0-notes.rst │ │ │ ├── 0.58.1-notes.rst │ │ │ ├── 0.59.0-notes.rst │ │ │ ├── 0.59.1-notes.rst │ │ │ ├── 0.60.0-notes.rst │ │ │ ├── 0.61.0-notes.rst │ │ │ ├── 0.61.1-notes.rst │ │ │ ├── 0.61.2-notes.rst │ │ │ ├── 0.62.0-notes.rst │ │ │ ├── 0.62.1-notes.rst │ │ │ ├── 0.63.0-notes.rst │ │ │ ├── 0.63.1-notes.rst │ │ │ ├── 0.64.0-notes.rst │ │ │ └── 0.65.0-notes.rst │ │ ├── release-notes-overview.rst │ │ ├── release-notes.rst │ │ └── user/ │ │ ├── 5minguide.rst │ │ ├── cfunc.rst │ │ ├── cli.rst │ │ ├── code_coverage.rst │ │ ├── examples.rst │ │ ├── faq.rst │ │ ├── index.rst │ │ ├── installing.rst │ │ ├── jit-module.rst │ │ ├── jit.rst │ │ ├── jitclass.rst │ │ ├── overview.rst │ │ ├── parallel.rst │ │ ├── performance-tips.rst │ │ ├── pycc.rst │ │ ├── stencil.rst │ │ ├── talks.rst │ │ ├── threading-layer.rst │ │ ├── troubleshoot.rst │ │ ├── vectorize.rst │ │ └── withobjmode.rst │ └── upcoming_changes/ │ ├── 10418.bug_fix.rst │ ├── README.rst │ └── template.rst ├── maint/ │ ├── git-copy.py │ ├── github_weekly_meeting.py │ ├── gitlog2changelog.py │ ├── towncrier_checker.py │ └── towncrier_rst_validator.py ├── mypy.ini ├── numba/ │ ├── __init__.py │ ├── __main__.py │ ├── _arraystruct.h │ ├── _devicearray.cpp │ ├── _devicearray.h │ ├── _dispatcher.cpp │ ├── _dynfunc.c │ ├── _dynfuncmod.c │ ├── _hashtable.cpp │ ├── _hashtable.h │ ├── _helperlib.c │ ├── _helperlib.pyi │ ├── _helpermod.c │ ├── _lapack.c │ ├── _numba_common.h │ ├── _pymodule.h │ ├── _random.c │ ├── _typeof.cpp │ ├── _typeof.h │ ├── _unicodetype_db.h │ ├── _version.py │ ├── cext/ │ │ ├── __init__.py │ │ ├── cext.h │ │ ├── dictobject.c │ │ ├── dictobject.h │ │ ├── listobject.c │ │ ├── listobject.h │ │ └── utils.c │ ├── cloudpickle/ │ │ ├── __init__.py │ │ ├── cloudpickle.py │ │ └── cloudpickle_fast.py │ ├── core/ │ │ ├── __init__.py │ │ ├── analysis.py │ │ ├── annotations/ │ │ │ ├── __init__.py │ │ │ ├── pretty_annotate.py │ │ │ ├── template.html │ │ │ └── type_annotations.py │ │ ├── base.py │ │ ├── boxing.py │ │ ├── bytecode.py │ │ ├── byteflow.py │ │ ├── caching.py │ │ ├── callconv.py │ │ ├── callwrapper.py │ │ ├── ccallback.py │ │ ├── cgutils.py │ │ ├── codegen.py │ │ ├── compiler.py │ │ ├── compiler_lock.py │ │ ├── compiler_machinery.py │ │ ├── config.py │ │ ├── consts.py │ │ ├── controlflow.py │ │ ├── cpu.py │ │ ├── cpu_options.py │ │ ├── datamodel/ │ │ │ ├── __init__.py │ │ │ ├── manager.py │ │ │ ├── models.py │ │ │ ├── packer.py │ │ │ ├── registry.py │ │ │ └── testing.py │ │ ├── debuginfo.py │ │ ├── decorators.py │ │ ├── descriptors.py │ │ ├── dispatcher.py │ │ ├── entrypoints.py │ │ ├── environment.py │ │ ├── errors.py │ │ ├── event.py │ │ ├── extending.py │ │ ├── extending.pyi │ │ ├── externals.py │ │ ├── fastmathpass.py │ │ ├── funcdesc.py │ │ ├── generators.py │ │ ├── imputils.py │ │ ├── inline_closurecall.py │ │ ├── interpreter.py │ │ ├── intrinsics.py │ │ ├── ir.py │ │ ├── ir_utils.py │ │ ├── itanium_mangler.py │ │ ├── llvm_bindings.py │ │ ├── lowering.py │ │ ├── object_mode_passes.py │ │ ├── optional.py │ │ ├── options.py │ │ ├── postproc.py │ │ ├── pylowering.py │ │ ├── pythonapi.py │ │ ├── registry.py │ │ ├── removerefctpass.py │ │ ├── rewrites/ │ │ │ ├── __init__.py │ │ │ ├── ir_print.py │ │ │ ├── registry.py │ │ │ ├── static_binop.py │ │ │ ├── static_getitem.py │ │ │ └── static_raise.py │ │ ├── runtime/ │ │ │ ├── __init__.py │ │ │ ├── _nrt_python.c │ │ │ ├── _nrt_pythonmod.c │ │ │ ├── context.py │ │ │ ├── nrt.cpp │ │ │ ├── nrt.h │ │ │ ├── nrt.py │ │ │ ├── nrt_external.h │ │ │ ├── nrtdynmod.py │ │ │ └── nrtopt.py │ │ ├── serialize.py │ │ ├── sigutils.py │ │ ├── ssa.py │ │ ├── target_extension.py │ │ ├── targetconfig.py │ │ ├── tracing.py │ │ ├── transforms.py │ │ ├── typeconv/ │ │ │ ├── __init__.py │ │ │ ├── _typeconv.cpp │ │ │ ├── castgraph.py │ │ │ ├── rules.py │ │ │ ├── test.cpp │ │ │ ├── typeconv.cpp │ │ │ ├── typeconv.hpp │ │ │ └── typeconv.py │ │ ├── typed_passes.py │ │ ├── typeinfer.py │ │ ├── types/ │ │ │ ├── __init__.py │ │ │ ├── __init__.pyi │ │ │ ├── abstract.py │ │ │ ├── common.py │ │ │ ├── containers.py │ │ │ ├── function_type.py │ │ │ ├── functions.py │ │ │ ├── iterators.py │ │ │ ├── misc.py │ │ │ ├── npytypes.py │ │ │ └── scalars.py │ │ ├── typing/ │ │ │ ├── __init__.py │ │ │ ├── arraydecl.py │ │ │ ├── asnumbatype.py │ │ │ ├── bufproto.py │ │ │ ├── builtins.py │ │ │ ├── cffi_utils.py │ │ │ ├── cmathdecl.py │ │ │ ├── collections.py │ │ │ ├── context.py │ │ │ ├── ctypes_utils.py │ │ │ ├── dictdecl.py │ │ │ ├── enumdecl.py │ │ │ ├── listdecl.py │ │ │ ├── mathdecl.py │ │ │ ├── npdatetime.py │ │ │ ├── npydecl.py │ │ │ ├── setdecl.py │ │ │ ├── templates.py │ │ │ └── typeof.py │ │ ├── unsafe/ │ │ │ ├── __init__.py │ │ │ ├── bytes.py │ │ │ ├── eh.py │ │ │ ├── nrt.py │ │ │ └── refcount.py │ │ ├── untyped_passes.py │ │ ├── utils.py │ │ └── withcontexts.py │ ├── cpython/ │ │ ├── __init__.py │ │ ├── builtins.py │ │ ├── charseq.py │ │ ├── cmathimpl.py │ │ ├── enumimpl.py │ │ ├── hashing.py │ │ ├── heapq.py │ │ ├── iterators.py │ │ ├── listobj.py │ │ ├── mathimpl.py │ │ ├── numbers.py │ │ ├── printimpl.py │ │ ├── randomimpl.py │ │ ├── rangeobj.py │ │ ├── setobj.py │ │ ├── slicing.py │ │ ├── tupleobj.py │ │ ├── unicode.py │ │ ├── unicode_support.py │ │ └── unsafe/ │ │ ├── __init__.py │ │ ├── numbers.py │ │ └── tuple.py │ ├── cuda/ │ │ ├── __init__.py │ │ ├── api.py │ │ ├── api_util.py │ │ ├── args.py │ │ ├── cg.py │ │ ├── codegen.py │ │ ├── compiler.py │ │ ├── cpp_function_wrappers.cu │ │ ├── cuda_fp16.h │ │ ├── cuda_fp16.hpp │ │ ├── cuda_paths.py │ │ ├── cudadecl.py │ │ ├── cudadrv/ │ │ │ ├── __init__.py │ │ │ ├── _extras.c │ │ │ ├── devicearray.py │ │ │ ├── devices.py │ │ │ ├── driver.py │ │ │ ├── drvapi.py │ │ │ ├── dummyarray.py │ │ │ ├── enums.py │ │ │ ├── error.py │ │ │ ├── libs.py │ │ │ ├── ndarray.py │ │ │ ├── nvrtc.py │ │ │ ├── nvvm.py │ │ │ ├── rtapi.py │ │ │ └── runtime.py │ │ ├── cudaimpl.py │ │ ├── cudamath.py │ │ ├── decorators.py │ │ ├── descriptor.py │ │ ├── device_init.py │ │ ├── deviceufunc.py │ │ ├── dispatcher.py │ │ ├── errors.py │ │ ├── extending.py │ │ ├── initialize.py │ │ ├── intrinsic_wrapper.py │ │ ├── intrinsics.py │ │ ├── kernels/ │ │ │ ├── __init__.py │ │ │ ├── reduction.py │ │ │ └── transpose.py │ │ ├── libdevice.py │ │ ├── libdevicedecl.py │ │ ├── libdevicefuncs.py │ │ ├── libdeviceimpl.py │ │ ├── mathimpl.py │ │ ├── models.py │ │ ├── nvvmutils.py │ │ ├── printimpl.py │ │ ├── random.py │ │ ├── simulator/ │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ ├── compiler.py │ │ │ ├── cudadrv/ │ │ │ │ ├── __init__.py │ │ │ │ ├── devicearray.py │ │ │ │ ├── devices.py │ │ │ │ ├── driver.py │ │ │ │ ├── drvapi.py │ │ │ │ ├── dummyarray.py │ │ │ │ ├── error.py │ │ │ │ ├── libs.py │ │ │ │ ├── nvvm.py │ │ │ │ └── runtime.py │ │ │ ├── kernel.py │ │ │ ├── kernelapi.py │ │ │ ├── reduction.py │ │ │ └── vector_types.py │ │ ├── simulator_init.py │ │ ├── stubs.py │ │ ├── target.py │ │ ├── testing.py │ │ ├── tests/ │ │ │ ├── __init__.py │ │ │ ├── cudadrv/ │ │ │ │ ├── __init__.py │ │ │ │ ├── test_array_attr.py │ │ │ │ ├── test_context_stack.py │ │ │ │ ├── test_cuda_array_slicing.py │ │ │ │ ├── test_cuda_auto_context.py │ │ │ │ ├── test_cuda_devicerecord.py │ │ │ │ ├── test_cuda_driver.py │ │ │ │ ├── test_cuda_libraries.py │ │ │ │ ├── test_cuda_memory.py │ │ │ │ ├── test_cuda_ndarray.py │ │ │ │ ├── test_deallocations.py │ │ │ │ ├── test_detect.py │ │ │ │ ├── test_emm_plugins.py │ │ │ │ ├── test_events.py │ │ │ │ ├── test_host_alloc.py │ │ │ │ ├── test_init.py │ │ │ │ ├── test_inline_ptx.py │ │ │ │ ├── test_is_fp16.py │ │ │ │ ├── test_linker.py │ │ │ │ ├── test_managed_alloc.py │ │ │ │ ├── test_mvc.py │ │ │ │ ├── test_nvvm_driver.py │ │ │ │ ├── test_pinned.py │ │ │ │ ├── test_profiler.py │ │ │ │ ├── test_ptds.py │ │ │ │ ├── test_reset_device.py │ │ │ │ ├── test_runtime.py │ │ │ │ ├── test_select_device.py │ │ │ │ └── test_streams.py │ │ │ ├── cudapy/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cache_usecases.py │ │ │ │ ├── cache_with_cpu_usecases.py │ │ │ │ ├── extensions_usecases.py │ │ │ │ ├── jitlink.ptx │ │ │ │ ├── recursion_usecases.py │ │ │ │ ├── test_alignment.py │ │ │ │ ├── test_array.py │ │ │ │ ├── test_array_args.py │ │ │ │ ├── test_array_methods.py │ │ │ │ ├── test_atomics.py │ │ │ │ ├── test_blackscholes.py │ │ │ │ ├── test_boolean.py │ │ │ │ ├── test_caching.py │ │ │ │ ├── test_casting.py │ │ │ │ ├── test_cffi.py │ │ │ │ ├── test_compiler.py │ │ │ │ ├── test_complex.py │ │ │ │ ├── test_complex_kernel.py │ │ │ │ ├── test_const_string.py │ │ │ │ ├── test_constmem.py │ │ │ │ ├── test_cooperative_groups.py │ │ │ │ ├── test_cuda_array_interface.py │ │ │ │ ├── test_cuda_jit_no_types.py │ │ │ │ ├── test_datetime.py │ │ │ │ ├── test_debug.py │ │ │ │ ├── test_debuginfo.py │ │ │ │ ├── test_device_func.py │ │ │ │ ├── test_dispatcher.py │ │ │ │ ├── test_enums.py │ │ │ │ ├── test_errors.py │ │ │ │ ├── test_exception.py │ │ │ │ ├── test_extending.py │ │ │ │ ├── test_fastmath.py │ │ │ │ ├── test_forall.py │ │ │ │ ├── test_freevar.py │ │ │ │ ├── test_frexp_ldexp.py │ │ │ │ ├── test_globals.py │ │ │ │ ├── test_gufunc.py │ │ │ │ ├── test_gufunc_scalar.py │ │ │ │ ├── test_gufunc_scheduling.py │ │ │ │ ├── test_idiv.py │ │ │ │ ├── test_inspect.py │ │ │ │ ├── test_intrinsics.py │ │ │ │ ├── test_ipc.py │ │ │ │ ├── test_iterators.py │ │ │ │ ├── test_lang.py │ │ │ │ ├── test_laplace.py │ │ │ │ ├── test_libdevice.py │ │ │ │ ├── test_lineinfo.py │ │ │ │ ├── test_localmem.py │ │ │ │ ├── test_mandel.py │ │ │ │ ├── test_math.py │ │ │ │ ├── test_matmul.py │ │ │ │ ├── test_minmax.py │ │ │ │ ├── test_montecarlo.py │ │ │ │ ├── test_multigpu.py │ │ │ │ ├── test_multiprocessing.py │ │ │ │ ├── test_multithreads.py │ │ │ │ ├── test_nondet.py │ │ │ │ ├── test_operator.py │ │ │ │ ├── test_optimization.py │ │ │ │ ├── test_overload.py │ │ │ │ ├── test_powi.py │ │ │ │ ├── test_print.py │ │ │ │ ├── test_py2_div_issue.py │ │ │ │ ├── test_random.py │ │ │ │ ├── test_record_dtype.py │ │ │ │ ├── test_recursion.py │ │ │ │ ├── test_reduction.py │ │ │ │ ├── test_retrieve_autoconverted_arrays.py │ │ │ │ ├── test_serialize.py │ │ │ │ ├── test_slicing.py │ │ │ │ ├── test_sm.py │ │ │ │ ├── test_sm_creation.py │ │ │ │ ├── test_sync.py │ │ │ │ ├── test_transpose.py │ │ │ │ ├── test_ufuncs.py │ │ │ │ ├── test_userexc.py │ │ │ │ ├── test_vector_type.py │ │ │ │ ├── test_vectorize.py │ │ │ │ ├── test_vectorize_complex.py │ │ │ │ ├── test_vectorize_decor.py │ │ │ │ ├── test_vectorize_device.py │ │ │ │ ├── test_vectorize_scalar_arg.py │ │ │ │ ├── test_warning.py │ │ │ │ └── test_warp_ops.py │ │ │ ├── cudasim/ │ │ │ │ ├── __init__.py │ │ │ │ ├── support.py │ │ │ │ └── test_cudasim_issues.py │ │ │ ├── data/ │ │ │ │ ├── __init__.py │ │ │ │ ├── cuda_include.cu │ │ │ │ ├── error.cu │ │ │ │ ├── jitlink.cu │ │ │ │ ├── jitlink.ptx │ │ │ │ └── warn.cu │ │ │ ├── doc_examples/ │ │ │ │ ├── __init__.py │ │ │ │ ├── ffi/ │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── functions.cu │ │ │ │ ├── test_cg.py │ │ │ │ ├── test_cpu_gpu_compat.py │ │ │ │ ├── test_ffi.py │ │ │ │ ├── test_laplace.py │ │ │ │ ├── test_matmul.py │ │ │ │ ├── test_montecarlo.py │ │ │ │ ├── test_random.py │ │ │ │ ├── test_reduction.py │ │ │ │ ├── test_sessionize.py │ │ │ │ ├── test_ufunc.py │ │ │ │ └── test_vecadd.py │ │ │ └── nocuda/ │ │ │ ├── __init__.py │ │ │ ├── test_dummyarray.py │ │ │ ├── test_function_resolution.py │ │ │ ├── test_import.py │ │ │ ├── test_library_lookup.py │ │ │ └── test_nvvm.py │ │ ├── types.py │ │ ├── ufuncs.py │ │ ├── vector_types.py │ │ └── vectorizers.py │ ├── experimental/ │ │ ├── __init__.py │ │ ├── function_type.py │ │ ├── jitclass/ │ │ │ ├── __init__.py │ │ │ ├── _box.c │ │ │ ├── base.py │ │ │ ├── boxing.py │ │ │ ├── decorators.py │ │ │ └── overloads.py │ │ └── structref.py │ ├── extending.py │ ├── mathnames.h │ ├── misc/ │ │ ├── POST.py │ │ ├── __init__.py │ │ ├── appdirs.py │ │ ├── cffiimpl.py │ │ ├── cmdlang.gdb │ │ ├── coverage_support.py │ │ ├── dump_style.py │ │ ├── findlib.py │ │ ├── firstlinefinder.py │ │ ├── gdb_hook.py │ │ ├── gdb_print_extension.py │ │ ├── help/ │ │ │ ├── __init__.py │ │ │ └── inspector.py │ │ ├── init_utils.py │ │ ├── inspection.py │ │ ├── literal.py │ │ ├── llvm_pass_timings.py │ │ ├── memoryutils.py │ │ ├── mergesort.py │ │ ├── numba_entry.py │ │ ├── numba_gdbinfo.py │ │ ├── numba_sysinfo.py │ │ ├── quicksort.py │ │ ├── special.py │ │ └── timsort.py │ ├── mviewbuf.c │ ├── np/ │ │ ├── __init__.py │ │ ├── arraymath.py │ │ ├── arrayobj.py │ │ ├── extensions.py │ │ ├── linalg.py │ │ ├── math/ │ │ │ ├── __init__.py │ │ │ ├── cmathimpl.py │ │ │ ├── mathimpl.py │ │ │ └── numbers.py │ │ ├── npdatetime.py │ │ ├── npdatetime_helpers.py │ │ ├── npyfuncs.py │ │ ├── npyimpl.py │ │ ├── numpy_support.py │ │ ├── polynomial/ │ │ │ ├── __init__.py │ │ │ ├── polynomial_core.py │ │ │ └── polynomial_functions.py │ │ ├── random/ │ │ │ ├── __init__.py │ │ │ ├── _constants.py │ │ │ ├── distributions.py │ │ │ ├── generator_core.py │ │ │ ├── generator_methods.py │ │ │ └── random_methods.py │ │ ├── ufunc/ │ │ │ ├── __init__.py │ │ │ ├── _internal.c │ │ │ ├── _internal.h │ │ │ ├── _num_threads.c │ │ │ ├── _ufunc.c │ │ │ ├── array_exprs.py │ │ │ ├── decorators.py │ │ │ ├── dufunc.py │ │ │ ├── gufunc.py │ │ │ ├── gufunc_scheduler.cpp │ │ │ ├── gufunc_scheduler.h │ │ │ ├── omppool.cpp │ │ │ ├── parallel.py │ │ │ ├── sigparse.py │ │ │ ├── tbbpool.cpp │ │ │ ├── ufunc_base.py │ │ │ ├── ufuncbuilder.py │ │ │ ├── workqueue.c │ │ │ ├── workqueue.h │ │ │ └── wrappers.py │ │ ├── ufunc_db.py │ │ └── unsafe/ │ │ ├── __init__.py │ │ └── ndarray.py │ ├── parfors/ │ │ ├── __init__.py │ │ ├── array_analysis.py │ │ ├── parfor.py │ │ ├── parfor_lowering.py │ │ └── parfor_lowering_utils.py │ ├── pycc/ │ │ ├── __init__.py │ │ ├── cc.py │ │ ├── compiler.py │ │ ├── decorators.py │ │ ├── llvm_types.py │ │ ├── modulemixin.c │ │ └── platform.py │ ├── pythoncapi_compat.h │ ├── runtests.py │ ├── scripts/ │ │ ├── __init__.py │ │ └── generate_lower_listing.py │ ├── stencils/ │ │ ├── __init__.py │ │ ├── stencil.py │ │ └── stencilparfor.py │ ├── testing/ │ │ ├── __init__.py │ │ ├── __main__.py │ │ ├── _runtests.py │ │ ├── loader.py │ │ ├── main.py │ │ └── notebook.py │ ├── tests/ │ │ ├── __init__.py │ │ ├── annotation_usecases.py │ │ ├── cache_usecases.py │ │ ├── cffi_usecases.py │ │ ├── cfunc_cache_usecases.py │ │ ├── chained_assign_usecases.py │ │ ├── cloudpickle_main_class.py │ │ ├── compile_with_pycc.py │ │ ├── complex_usecases.py │ │ ├── ctypes_usecases.py │ │ ├── doc_examples/ │ │ │ ├── __init__.py │ │ │ ├── test_examples.py │ │ │ ├── test_interval_example.py │ │ │ ├── test_jitclass.py │ │ │ ├── test_literal_container_usage.py │ │ │ ├── test_literally_usage.py │ │ │ ├── test_llvm_pass_timings.py │ │ │ ├── test_numpy_generators.py │ │ │ ├── test_parallel_chunksize.py │ │ │ ├── test_rec_array.py │ │ │ ├── test_structref_usage.py │ │ │ ├── test_typed_dict_usage.py │ │ │ └── test_typed_list_usage.py │ │ ├── doctest_usecase.py │ │ ├── dummy_module.py │ │ ├── enum_usecases.py │ │ ├── error_usecases.py │ │ ├── errorhandling_usecases.py │ │ ├── gdb/ │ │ │ ├── __init__.py │ │ │ ├── test_array_arg.py │ │ │ ├── test_basic.py │ │ │ ├── test_break_on_symbol.py │ │ │ ├── test_break_on_symbol_version.py │ │ │ ├── test_conditional_breakpoint.py │ │ │ └── test_pretty_print.py │ │ ├── gdb_support.py │ │ ├── inlining_usecases.py │ │ ├── matmul_usecase.py │ │ ├── npyufunc/ │ │ │ ├── __init__.py │ │ │ ├── cache_usecases.py │ │ │ ├── test_caching.py │ │ │ ├── test_dufunc.py │ │ │ ├── test_errors.py │ │ │ ├── test_gufunc.py │ │ │ ├── test_parallel_env_variable.py │ │ │ ├── test_parallel_low_work.py │ │ │ ├── test_parallel_ufunc_issues.py │ │ │ ├── test_ufunc.py │ │ │ ├── test_ufuncbuilding.py │ │ │ ├── test_update_inplace.py │ │ │ ├── test_vectorize_decor.py │ │ │ └── ufuncbuilding_usecases.py │ │ ├── orphaned_semaphore_usecase.py │ │ ├── overload_usecases.py │ │ ├── parfor_iss9490_usecase.py │ │ ├── parfors_cache_usecases.py │ │ ├── pdlike_usecase.py │ │ ├── pycc_distutils_usecase/ │ │ │ ├── __init__.py │ │ │ ├── nested/ │ │ │ │ ├── __init__.py │ │ │ │ └── source_module.py │ │ │ ├── setup_distutils.py │ │ │ ├── setup_distutils_nested.py │ │ │ ├── setup_setuptools.py │ │ │ ├── setup_setuptools_nested.py │ │ │ └── source_module.py │ │ ├── recursion_usecases.py │ │ ├── serialize_usecases.py │ │ ├── support.py │ │ ├── test_alignment.py │ │ ├── test_analysis.py │ │ ├── test_annotations.py │ │ ├── test_api.py │ │ ├── test_array_analysis.py │ │ ├── test_array_attr.py │ │ ├── test_array_constants.py │ │ ├── test_array_exprs.py │ │ ├── test_array_iterators.py │ │ ├── test_array_manipulation.py │ │ ├── test_array_methods.py │ │ ├── test_array_reductions.py │ │ ├── test_array_return.py │ │ ├── test_asnumbatype.py │ │ ├── test_auto_constants.py │ │ ├── test_blackscholes.py │ │ ├── test_boundscheck.py │ │ ├── test_buffer_protocol.py │ │ ├── test_builtins.py │ │ ├── test_byteflow.py │ │ ├── test_caching.py │ │ ├── test_casting.py │ │ ├── test_cffi.py │ │ ├── test_cfunc.py │ │ ├── test_cgutils.py │ │ ├── test_chained_assign.py │ │ ├── test_chrome_trace.py │ │ ├── test_cli.py │ │ ├── test_closure.py │ │ ├── test_codegen.py │ │ ├── test_compile_cache.py │ │ ├── test_compiler_flags.py │ │ ├── test_compiler_lock.py │ │ ├── test_complex.py │ │ ├── test_comprehension.py │ │ ├── test_conditions_as_predicates.py │ │ ├── test_config.py │ │ ├── test_conversion.py │ │ ├── test_copy_propagate.py │ │ ├── test_ctypes.py │ │ ├── test_dataflow.py │ │ ├── test_datamodel.py │ │ ├── test_debug.py │ │ ├── test_debuginfo.py │ │ ├── test_deprecations.py │ │ ├── test_dictimpl.py │ │ ├── test_dictobject.py │ │ ├── test_dicts.py │ │ ├── test_dispatcher.py │ │ ├── test_doctest.py │ │ ├── test_dyn_array.py │ │ ├── test_dyn_func.py │ │ ├── test_entrypoints.py │ │ ├── test_enums.py │ │ ├── test_errorhandling.py │ │ ├── test_errormodels.py │ │ ├── test_event.py │ │ ├── test_exceptions.py │ │ ├── test_extended_arg.py │ │ ├── test_extending.py │ │ ├── test_extending_types.py │ │ ├── test_fancy_indexing.py │ │ ├── test_fastmath.py │ │ ├── test_findlib.py │ │ ├── test_firstlinefinder.py │ │ ├── test_flow_control.py │ │ ├── test_func_interface.py │ │ ├── test_func_lifetime.py │ │ ├── test_funcdesc.py │ │ ├── test_function_type.py │ │ ├── test_gdb_bindings.py │ │ ├── test_gdb_dwarf.py │ │ ├── test_generators.py │ │ ├── test_getitem_on_types.py │ │ ├── test_gil.py │ │ ├── test_globals.py │ │ ├── test_hashing.py │ │ ├── test_heapq.py │ │ ├── test_help.py │ │ ├── test_import.py │ │ ├── test_indexing.py │ │ ├── test_init_utils.py │ │ ├── test_inlining.py │ │ ├── test_interpreter.py │ │ ├── test_interproc.py │ │ ├── test_intwidth.py │ │ ├── test_ir.py │ │ ├── test_ir_inlining.py │ │ ├── test_ir_utils.py │ │ ├── test_itanium_mangler.py │ │ ├── test_iteration.py │ │ ├── test_jit_module.py │ │ ├── test_jitclasses.py │ │ ├── test_jitmethod.py │ │ ├── test_linalg.py │ │ ├── test_listimpl.py │ │ ├── test_listobject.py │ │ ├── test_lists.py │ │ ├── test_literal_dispatch.py │ │ ├── test_llvm_pass_timings.py │ │ ├── test_llvm_version_check.py │ │ ├── test_locals.py │ │ ├── test_looplifting.py │ │ ├── test_make_function_to_jit_function.py │ │ ├── test_mandelbrot.py │ │ ├── test_mangling.py │ │ ├── test_map_filter_reduce.py │ │ ├── test_mathlib.py │ │ ├── test_maxmin.py │ │ ├── test_misc_coverage_support.py │ │ ├── test_mixed_tuple_unroller.py │ │ ├── test_moved_modules.py │ │ ├── test_multi3.py │ │ ├── test_nan.py │ │ ├── test_ndarray_subclasses.py │ │ ├── test_nested_calls.py │ │ ├── test_np_functions.py │ │ ├── test_np_randomgen.py │ │ ├── test_npdatetime.py │ │ ├── test_nrt.py │ │ ├── test_nrt_refct.py │ │ ├── test_num_threads.py │ │ ├── test_numberctor.py │ │ ├── test_numbers.py │ │ ├── test_numconv.py │ │ ├── test_numpy_support.py │ │ ├── test_numpyadapt.py │ │ ├── test_obj_lifetime.py │ │ ├── test_object_mode.py │ │ ├── test_objects.py │ │ ├── test_operators.py │ │ ├── test_optimisation_pipelines.py │ │ ├── test_optional.py │ │ ├── test_overlap.py │ │ ├── test_parallel_backend.py │ │ ├── test_parfors.py │ │ ├── test_parfors_caching.py │ │ ├── test_parfors_passes.py │ │ ├── test_pipeline.py │ │ ├── test_polynomial.py │ │ ├── test_practical_lowering_issues.py │ │ ├── test_print.py │ │ ├── test_profiler.py │ │ ├── test_pycc.py │ │ ├── test_python_int.py │ │ ├── test_pythonapi.py │ │ ├── test_random.py │ │ ├── test_range.py │ │ ├── test_recarray_usecases.py │ │ ├── test_record_dtype.py │ │ ├── test_recursion.py │ │ ├── test_refop_pruning.py │ │ ├── test_remove_dead.py │ │ ├── test_repr.py │ │ ├── test_return_values.py │ │ ├── test_runtests.py │ │ ├── test_serialize.py │ │ ├── test_sets.py │ │ ├── test_slices.py │ │ ├── test_sort.py │ │ ├── test_ssa.py │ │ ├── test_stencils.py │ │ ├── test_storeslice.py │ │ ├── test_struct_ref.py │ │ ├── test_support.py │ │ ├── test_svml.py │ │ ├── test_sys_monitoring.py │ │ ├── test_sys_stdin_assignment.py │ │ ├── test_sysinfo.py │ │ ├── test_target_extension.py │ │ ├── test_target_overloadselector.py │ │ ├── test_threadsafety.py │ │ ├── test_tracing.py │ │ ├── test_try_except.py │ │ ├── test_tuples.py │ │ ├── test_typeconv.py │ │ ├── test_typedlist.py │ │ ├── test_typedobjectutils.py │ │ ├── test_typeguard.py │ │ ├── test_typeinfer.py │ │ ├── test_typenames.py │ │ ├── test_typeof.py │ │ ├── test_types.py │ │ ├── test_typingerror.py │ │ ├── test_ufuncs.py │ │ ├── test_unicode.py │ │ ├── test_unicode_array.py │ │ ├── test_unicode_names.py │ │ ├── test_unpack_sequence.py │ │ ├── test_unpickle_without_module.py │ │ ├── test_unsafe_intrinsics.py │ │ ├── test_usecases.py │ │ ├── test_vectorization.py │ │ ├── test_vectorization_type_inference.py │ │ ├── test_warnings.py │ │ ├── test_withlifting.py │ │ ├── threading_backend_usecases.py │ │ ├── typedlist_usecases.py │ │ └── usecases.py │ ├── typed/ │ │ ├── __init__.py │ │ ├── dictimpl.py │ │ ├── dictobject.py │ │ ├── listobject.py │ │ ├── py.typed │ │ ├── typeddict.py │ │ ├── typedlist.py │ │ └── typedobjectutils.py │ └── types/ │ └── __init__.py ├── renovate.json ├── requirements.txt ├── runtests.py ├── setup.cfg ├── setup.py ├── towncrier.toml └── versioneer.py
Showing preview only (1,699K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (22130 symbols across 741 files)
FILE: buildscripts/github/download_artifacts.py
function get_artifacts_for_run (line 12) | def get_artifacts_for_run(run_id, repo, token):
function download_artifact (line 58) | def download_artifact(artifact_name, artifact_id, repo, token, output_dir):
function main (line 120) | def main():
FILE: buildscripts/github/find_workflow_runs.py
function find_workflow_run (line 11) | def find_workflow_run(workflow_name, tag, repo, token):
function load_workflow_config (line 59) | def load_workflow_config(config_path):
function main (line 94) | def main():
FILE: buildscripts/github/patch_wheel_dylib.py
function run_shell (line 12) | def run_shell(cmd):
function main (line 17) | def main(whl):
FILE: docs/dagmap/jquery.graphviz.svg.js
function Plugin (line 511) | function Plugin(option) {
FILE: docs/dagmap/render.py
function parse_yaml (line 15) | def parse_yaml(filename):
function to_graphviz (line 33) | def to_graphviz(dagmap):
function main (line 59) | def main(argv):
FILE: docs/source/_ext/ghfiles.py
function make_ref (line 15) | def make_ref(text):
function intersperse (line 28) | def intersperse(lst, item):
function ghfile_role (line 42) | def ghfile_role(name, rawtext, text, lineno, inliner, options=None, cont...
function setup (line 74) | def setup(app):
FILE: docs/source/conf.py
function _autogenerate (line 314) | def _autogenerate():
class CudaDeprecated (line 349) | class CudaDeprecated(SphinxDirective):
method run (line 350) | def run(self):
function setup (line 368) | def setup(app):
FILE: docs/source/developer/compiler_pass_example.py
function ex_compiler_pass (line 1) | def ex_compiler_pass():
FILE: docs/source/developer/inline_example.py
function never_inline (line 7) | def never_inline():
function always_inline (line 12) | def always_inline():
function sentinel_cost_model (line 16) | def sentinel_cost_model(expr, caller_info, callee_info):
function maybe_inline1 (line 45) | def maybe_inline1():
function maybe_inline2 (line 52) | def maybe_inline2():
function foo (line 59) | def foo():
FILE: docs/source/developer/inline_overload_example.py
function bar (line 6) | def bar(x):
function ol_bar_tuple (line 12) | def ol_bar_tuple(x):
function cost_model (line 21) | def cost_model(expr, caller, callee):
function ol_bar_scalar (line 27) | def ol_bar_scalar(x):
function foo (line 37) | def foo():
FILE: docs/source/extending/mynorm.py
function _oneD_norm_2 (line 10) | def _oneD_norm_2(a):
function jit_norm (line 17) | def jit_norm(a, ord=None):
function use (line 60) | def use(a, ord=None):
FILE: docs/source/extending/template.py
function jit_myfunc (line 6) | def jit_myfunc(arg0, arg1, arg2, ...):
FILE: docs/source/proposals/np-where-override.py
function where (line 7) | def where(cond, x, y):
FILE: maint/git-copy.py
function copy_files (line 81) | def copy_files(branch: str, prefix: str, remove_prefix: bool = False) ->...
FILE: maint/github_weekly_meeting.py
function fetch (line 10) | def fetch(orgname, reponame, last_num, gh):
function display (line 56) | def display(data):
function main (line 78) | def main(numba_last_num, llvmlite_last_num, user=None, password=None):
FILE: maint/gitlog2changelog.py
function hyperlink_user (line 29) | def hyperlink_user(user_obj):
function author_key (line 36) | def author_key(x):
FILE: maint/towncrier_rst_validator.py
function list_rst_filename (line 34) | def list_rst_filename() -> str:
FILE: numba/__init__.py
function _ensure_critical_deps (line 13) | def _ensure_critical_deps():
function test (line 114) | def test(argv, **kwds):
function _ensure_llvm (line 148) | def _ensure_llvm():
function _try_enable_svml (line 183) | def _try_enable_svml():
FILE: numba/_arraystruct.h
type arystruct_t (line 9) | typedef struct {
FILE: numba/_devicearray.cpp
class DeviceArray (line 19) | class DeviceArray {
method DeviceArray_traverse (line 24) | static int
method DeviceArray_clear (line 31) | static int
function MOD_INIT (line 119) | MOD_INIT(_devicearray) {
FILE: numba/_dispatcher.cpp
function call_trace (line 68) | static int
function call_trace_protected (line 93) | static int
function _nb_PyLineTable_InitAddressRange (line 166) | static void
function _nb_PyCode_InitAddressRange (line 182) | static int
function initialize_trace_info (line 196) | static void
function call_trace (line 209) | static int
function call_trace_protected (line 239) | static int
function call_trace (line 309) | static int
function call_trace_protected (line 330) | static int
class Dispatcher (line 406) | class Dispatcher {
method addDefinition (line 444) | void addDefinition(Type args[], PyObject *callable) {
method PyObject (line 465) | PyObject* resolve(Type sig[], int &matches, bool allow_unsafe,
method clear (line 491) | void clear() {
function Dispatcher_traverse (line 499) | static int
function Dispatcher_dealloc (line 506) | static void
function Dispatcher_init (line 516) | static int
function PyObject (line 550) | static PyObject *
function PyObject (line 557) | static
function explain_issue (line 609) | static
function explain_ambiguous (line 628) | static
function explain_matching_error (line 635) | static
function search_new_conversions (line 642) | static
function PyObject (line 673) | static PyObject *
function msb (line 808) | static inline int msb(uint8_t bits) {
function invoke_monitoring (line 816) | static int invoke_monitoring(PyThreadState * tstate, int event, Dispatch...
function invoke_monitoring_PY_START (line 1035) | int static inline invoke_monitoring_PY_START(PyThreadState * tstate, Dis...
function invoke_monitoring_PY_RETURN (line 1040) | int static inline invoke_monitoring_PY_RETURN(PyThreadState * tstate, Di...
function invoke_monitoring_RAISE (line 1045) | int static inline invoke_monitoring_RAISE(PyThreadState * tstate, Dispat...
function invoke_monitoring_PY_UNWIND (line 1050) | int static inline invoke_monitoring_PY_UNWIND(PyThreadState * tstate, Di...
function PyObject (line 1058) | static PyObject *
function PyObject (line 1132) | static
function PyObject (line 1166) | static
function find_named_args (line 1182) | static int
function PyObject (line 1414) | static PyObject*
function is_sysmon_enabled (line 1635) | static
function PyObject (line 1641) | static PyObject *compute_fingerprint(PyObject *self, PyObject *args)
function MOD_INIT (line 1658) | MOD_INIT(_dispatcher) {
FILE: numba/_dynfunc.c
type EnvironmentObject (line 23) | typedef struct {
function env_traverse (line 39) | static int
function env_clear (line 47) | static int
function env_dealloc (line 55) | static void
function EnvironmentObject (line 63) | static EnvironmentObject *
function PyObject (line 69) | static PyObject *
type ClosureObject (line 185) | typedef struct {
function closure_traverse (line 199) | static int
function closure_dealloc (line 207) | static void
function ClosureObject (line 318) | static ClosureObject *
function PyObject (line 347) | static PyObject *
type GeneratorObject (line 381) | typedef struct {
function generator_traverse (line 392) | static int
function generator_clear (line 401) | static int
function generator_dealloc (line 413) | static void
function PyObject (line 428) | static PyObject *
function PyObject (line 522) | static PyObject *
function init_dynfunc_module (line 542) | static int
FILE: numba/_dynfuncmod.c
function PyObject (line 4) | static PyObject*
function PyObject (line 33) | static PyObject *
function MOD_INIT (line 63) | MOD_INIT(_dynfunc) {
FILE: numba/_hashtable.cpp
function _Py_slist_init (line 78) | static void
function _Py_slist_prepend (line 84) | static void
function _Py_slist_remove (line 91) | static void
function Py_uhash_t (line 101) | Py_uhash_t
function Py_uhash_t (line 107) | Py_uhash_t
function _Numba_hashtable_compare_direct (line 118) | int
function round_size (line 125) | static size_t
function _Numba_hashtable_t (line 137) | _Numba_hashtable_t *
function _Numba_hashtable_t (line 182) | _Numba_hashtable_t *
function _Numba_hashtable_size (line 192) | size_t
function _Numba_hashtable_print_stats (line 223) | void
function _Numba_hashtable_entry_t (line 263) | _Numba_hashtable_entry_t *
function _hashtable_pop_entry (line 281) | static int
function _Numba_hashtable_set (line 316) | int
function _Numba_hashtable_get (line 358) | int
function _Numba_hashtable_pop (line 372) | int
function _Numba_hashtable_delete (line 381) | void
function _Numba_hashtable_foreach (line 395) | int
function hashtable_rehash (line 413) | static void
function _Numba_hashtable_clear (line 455) | void
function _Numba_hashtable_destroy (line 474) | void
function _Numba_hashtable_t (line 495) | _Numba_hashtable_t *
FILE: numba/_hashtable.h
type _Py_slist_item_t (line 11) | typedef struct _Py_slist_item_s {
type _Py_slist_t (line 15) | typedef struct {
type _Numba_hashtable_entry_t (line 23) | typedef struct {
type Py_uhash_t (line 45) | typedef Py_uhash_t (*_Numba_hashtable_hash_func) (const void *key);
type _Numba_hashtable_allocator_t (line 51) | typedef struct {
type _Numba_hashtable_t (line 59) | typedef struct {
FILE: numba/_helperlib.c
function numba_fixed_fmod (line 55) | NUMBA_EXPORT_FUNC(double)
function numba_fixed_fmodf (line 61) | NUMBA_EXPORT_FUNC(float)
function numba_set_fnclex (line 67) | NUMBA_EXPORT_FUNC(void)
function numba_sdiv (line 73) | NUMBA_EXPORT_FUNC(int64_t)
function numba_udiv (line 78) | NUMBA_EXPORT_FUNC(uint64_t)
function numba_srem (line 84) | NUMBA_EXPORT_FUNC(int64_t)
function numba_urem (line 89) | NUMBA_EXPORT_FUNC(uint64_t)
function numba_frexp (line 97) | NUMBA_EXPORT_FUNC(double)
function numba_frexpf (line 107) | NUMBA_EXPORT_FUNC(float)
function numba_ldexp (line 117) | NUMBA_EXPORT_FUNC(double)
function numba_ldexpf (line 125) | NUMBA_EXPORT_FUNC(float)
function numba_cpow (line 134) | NUMBA_EXPORT_FUNC(void)
function numba_cpowf (line 145) | NUMBA_EXPORT_FUNC(void)
function numba_gamma (line 158) | NUMBA_EXPORT_FUNC(double)
function numba_gammaf (line 164) | NUMBA_EXPORT_FUNC(float)
function numba_lgamma (line 170) | NUMBA_EXPORT_FUNC(double)
function numba_lgammaf (line 176) | NUMBA_EXPORT_FUNC(float)
function numba_erf (line 182) | NUMBA_EXPORT_FUNC(double)
function numba_erff (line 188) | NUMBA_EXPORT_FUNC(float)
function numba_erfc (line 194) | NUMBA_EXPORT_FUNC(double)
function numba_erfcf (line 200) | NUMBA_EXPORT_FUNC(float)
function numba_nextafterf (line 206) | NUMBA_EXPORT_FUNC(float)
function numba_nextafter (line 212) | NUMBA_EXPORT_FUNC(double)
function numba_complex_adaptor (line 219) | NUMBA_EXPORT_FUNC(int)
type PyBufferObject_Hack (line 254) | typedef struct {
function numba_extract_record_data (line 265) | NUMBA_EXPORT_FUNC(void *)
function numba_recreate_record (line 287) | NUMBA_EXPORT_FUNC(PyObject *)
function numba_adapt_ndarray (line 327) | NUMBA_EXPORT_FUNC(int)
function numba_get_buffer (line 355) | NUMBA_EXPORT_FUNC(int)
function numba_adapt_buffer (line 362) | NUMBA_EXPORT_FUNC(void)
function numba_release_buffer (line 383) | NUMBA_EXPORT_FUNC(void)
function numba_ndarray_new (line 389) | NUMBA_EXPORT_FUNC(PyObject *)
function nocopy_empty_reshape (line 409) | static int
function numba_attempt_nocopy_reshape (line 437) | NUMBA_EXPORT_FUNC(int)
function _numba_import_cython_function (line 592) | NUMBA_EXPORT_FUNC(PyObject *)
function numba_extract_np_datetime (line 619) | NUMBA_EXPORT_FUNC(npy_int64)
function numba_extract_np_timedelta (line 630) | NUMBA_EXPORT_FUNC(npy_int64)
function numba_create_np_datetime (line 641) | NUMBA_EXPORT_FUNC(PyObject *)
function numba_create_np_timedelta (line 654) | NUMBA_EXPORT_FUNC(PyObject *)
function numba_fptoui (line 667) | NUMBA_EXPORT_FUNC(uint64_t)
function numba_fptouif (line 674) | NUMBA_EXPORT_FUNC(uint64_t)
function numba_gil_ensure (line 679) | NUMBA_EXPORT_FUNC(void)
function numba_gil_release (line 684) | NUMBA_EXPORT_FUNC(void)
function numba_py_type (line 689) | NUMBA_EXPORT_FUNC(PyObject *)
function PyObject (line 702) | static PyObject *
function numba_set_pyobject_private_data (line 710) | NUMBA_EXPORT_FUNC(void)
function numba_get_pyobject_private_data (line 731) | NUMBA_EXPORT_FUNC(void *)
function numba_reset_pyobject_private_data (line 756) | NUMBA_EXPORT_FUNC(void)
function numba_unpack_slice (line 773) | NUMBA_EXPORT_FUNC(int)
function numba_fatal_error (line 803) | NUMBA_EXPORT_FUNC(int)
function traceback_add (line 817) | static void traceback_add(const char *funcname, const char *filename, in...
function traceback_add_loc (line 876) | static
function reraise_exc_is_none (line 903) | static
function process_exception_class (line 936) | static
function process_raise (line 962) | static
function numba_do_raise (line 989) | NUMBA_EXPORT_FUNC(int)
function numba_unpickle (line 1021) | NUMBA_EXPORT_FUNC(PyObject *)
function numba_unpickle (line 1049) | NUMBA_EXPORT_FUNC(PyObject *)
function numba_runtime_build_excinfo_struct (line 1086) | NUMBA_EXPORT_FUNC(PyObject *)
function numba_extract_unicode (line 1142) | NUMBA_EXPORT_FUNC(void *)
function numba_gettyperecord (line 1181) | NUMBA_EXPORT_FUNC(void)
function numba_get_PyUnicode_ExtendedCase (line 1210) | NUMBA_EXPORT_FUNC(Py_UCS4)
function numba_gdb_breakpoint (line 1222) | NUMBA_EXPORT_FUNC(void)
FILE: numba/_helperlib.pyi
function _import_cython_function (line 1) | def _import_cython_function(module_name: str, function_name: str):
FILE: numba/_helpermod.c
function PyObject (line 25) | static PyObject *
function _numba_flush_stdout (line 185) | void
function _numba_test_sin (line 214) | double _numba_test_sin(double x)
function _numba_test_cos (line 219) | double _numba_test_cos(double x)
function _numba_test_exp (line 224) | double _numba_test_exp(double x)
function _numba_test_vsquare (line 229) | void _numba_test_vsquare(int n, double *x, double *out)
function _numba_test_vcube (line 236) | void _numba_test_vcube(int n, double *x, double *out)
function _numba_test_funcptr (line 243) | double _numba_test_funcptr(double (*func)(double))
function _numba_test_boolean (line 248) | bool _numba_test_boolean()
function MOD_INIT (line 253) | MOD_INIT(_helperlib) {
FILE: numba/_lapack.c
function EMIT_GET_CBLAS_FUNC (line 24) | EMIT_GET_CBLAS_FUNC(dgemm)
function checked_PyMem_RawMalloc (line 83) | static int checked_PyMem_RawMalloc(void** var, size_t bytes)
function check_kind (line 106) | static int check_kind(char kind)
function check_real_kind (line 143) | static int check_real_kind(char kind)
function check_complex_kind (line 180) | static int check_complex_kind(char kind)
function check_func (line 216) | static int check_func(void *func)
type npy_complex64 (line 252) | typedef npy_complex64 (*cdot_t)(F_INT *n, void *dx, F_INT *incx, void *dy,
type npy_complex128 (line 254) | typedef npy_complex128 (*zdot_t)(F_INT *n, void *dx, F_INT *incx, void *dy,
function numba_xxdot (line 272) | NUMBA_EXPORT_FUNC(int)
function numba_xxgemv (line 323) | NUMBA_EXPORT_FUNC(int)
function numba_xxgemm (line 362) | NUMBA_EXPORT_FUNC(int)
function numba_xxnrm2 (line 406) | NUMBA_EXPORT_FUNC(F_INT)
function kind_size (line 615) | static size_t kind_size(char kind)
function underlying_float_kind (line 662) | static char underlying_float_kind(char kind)
function F_INT (line 697) | static F_INT
function numba_xxgetrf (line 738) | NUMBA_EXPORT_FUNC(int)
function numba_raw_xxgetri (line 777) | static int
function numba_ez_xxgetri (line 811) | NUMBA_EXPORT_FUNC(int)
function numba_xxpotrf (line 849) | NUMBA_EXPORT_FUNC(int)
function numba_raw_rgeev (line 884) | static int
function numba_ez_rgeev (line 921) | NUMBA_EXPORT_FUNC(int)
function numba_raw_cgeev (line 964) | static int
function numba_ez_cgeev (line 1002) | NUMBA_EXPORT_FUNC(int)
function numba_raw_rsyevd (line 1049) | static int
function numba_ez_rsyevd (line 1083) | static int
function numba_raw_cheevd (line 1129) | static int
function numba_ez_cheevd (line 1165) | static int
function numba_ez_xxxevd (line 1228) | NUMBA_EXPORT_FUNC(int)
function numba_raw_rgesdd (line 1248) | static int
function numba_ez_rgesdd (line 1287) | static int
function numba_raw_cgesdd (line 1333) | static int
function numba_ez_cgesdd (line 1372) | static int
function numba_ez_gesdd (line 1466) | NUMBA_EXPORT_FUNC(int)
function numba_raw_xgeqrf (line 1492) | static int
function numba_ez_geqrf (line 1533) | NUMBA_EXPORT_FUNC(int)
function numba_raw_xxxgqr (line 1568) | static int
function numba_ez_xxgqr (line 1611) | NUMBA_EXPORT_FUNC(int)
function numba_raw_rgelsd (line 1646) | static int
function numba_ez_rgelsd (line 1687) | static int
function numba_raw_cgelsd (line 1750) | static int
function numba_ez_cgelsd (line 1792) | static int
function numba_ez_gelsd (line 1874) | NUMBA_EXPORT_FUNC(int)
function numba_xgesv (line 1899) | NUMBA_EXPORT_FUNC(int)
FILE: numba/_random.c
type rnd_state_t (line 24) | typedef struct {
function numba_rnd_shuffle (line 36) | NUMBA_EXPORT_FUNC(void)
function numba_rnd_init (line 58) | NUMBA_EXPORT_FUNC(void)
function rnd_init_by_array (line 76) | static void
function rnd_seed_with_bytes (line 126) | static int
function rnd_atfork_child (line 161) | static void
function numba_rnd_ensure_global_init (line 172) | NUMBA_EXPORT_FUNC(void)
function rnd_implicit_init (line 187) | static void
function numba_get_py_random_state (line 233) | NUMBA_EXPORT_FUNC(rnd_state_t *)
function numba_get_np_random_state (line 242) | NUMBA_EXPORT_FUNC(rnd_state_t *)
function numba_get_internal_random_state (line 251) | NUMBA_EXPORT_FUNC(rnd_state_t *)
function rnd_state_converter (line 263) | static int
function _numba_rnd_get_py_state_ptr (line 270) | NUMBA_EXPORT_FUNC(PyObject *)
function _numba_rnd_get_np_state_ptr (line 276) | NUMBA_EXPORT_FUNC(PyObject *)
function _numba_rnd_shuffle (line 282) | NUMBA_EXPORT_FUNC(PyObject *)
function _numba_rnd_set_state (line 292) | NUMBA_EXPORT_FUNC(PyObject *)
function _numba_rnd_get_state (line 323) | NUMBA_EXPORT_FUNC(PyObject *)
function _numba_rnd_seed (line 346) | NUMBA_EXPORT_FUNC(PyObject *)
function get_next_int32 (line 383) | NUMBA_EXPORT_FUNC(unsigned int)
function get_next_double (line 401) | NUMBA_EXPORT_FUNC(double)
function loggam (line 409) | NUMBA_EXPORT_FUNC(double)
function numba_poisson_ptrs (line 452) | NUMBA_EXPORT_FUNC(int64_t)
FILE: numba/_typeof.cpp
function string_writer_init (line 73) | static void
function string_writer_clear (line 81) | static void
function string_writer_move (line 88) | static void
function string_writer_ensure (line 103) | static int
function string_writer_put_char (line 129) | static int
function string_writer_put_int32 (line 138) | static int
function string_writer_put_intp (line 151) | static int
function string_writer_put_string (line 170) | static int
type opcode (line 186) | enum opcode {
function fingerprint_unrecognized (line 213) | static int
function compute_dtype_fingerprint (line 221) | static int
function compute_fingerprint (line 261) | static int
function PyObject (line 473) | PyObject *
function _typecode_from_type_object (line 496) | static int
function _typecode_fallback (line 536) | static int
function typecode_fallback (line 568) | static
function typecode_fallback_keep_ref (line 573) | static
function Py_uhash_t (line 582) | static Py_uhash_t
function compare_writer (line 602) | static int
function typecode_using_fingerprint (line 615) | static int
function dtype_num_to_typecode (line 676) | static int dtype_num_to_typecode(int type_num) {
function get_cached_typecode (line 722) | static
function cache_typecode (line 731) | static
function PyObject (line 738) | static
function get_cached_ndarray_typecode (line 750) | static
function cache_ndarray_typecode (line 761) | static
function typecode_ndarray (line 771) | static
function typecode_arrayscalar (line 830) | static
function typecode_devicendarray (line 858) | static
function typeof_typecode (line 961) | int
function init_numpy (line 1068) | static
function PyObject (line 1078) | PyObject *
FILE: numba/_unicodetype_db.h
type numba_PyUnicode_TypeRecord (line 19) | typedef struct {
function numba_PyUnicode_ToNumeric (line 4144) | double numba_PyUnicode_ToNumeric(Py_UCS4 ch)
function numba_PyUnicode_IsWhitespace (line 6032) | int numba_PyUnicode_IsWhitespace(const Py_UCS4 ch)
function numba_PyUnicode_IsLinebreak (line 6073) | int numba_PyUnicode_IsLinebreak(const Py_UCS4 ch)
FILE: numba/_version.py
function get_keywords (line 23) | def get_keywords():
class VersioneerConfig (line 36) | class VersioneerConfig:
function get_config (line 40) | def get_config():
class NotThisMethod (line 54) | class NotThisMethod(Exception):
function register_vcs_handler (line 62) | def register_vcs_handler(vcs, method): # decorator
function run_command (line 73) | def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False,
function versions_from_parentdir (line 116) | def versions_from_parentdir(parentdir_prefix, root, verbose):
function git_get_keywords (line 141) | def git_get_keywords(versionfile_abs):
function git_versions_from_keywords (line 169) | def git_versions_from_keywords(keywords, tag_prefix, verbose):
function git_pieces_from_vcs (line 233) | def git_pieces_from_vcs(tag_prefix, root, verbose, runner=run_command):
function plus_or_dot (line 365) | def plus_or_dot(pieces):
function render_pep440 (line 372) | def render_pep440(pieces):
function render_pep440_branch (line 397) | def render_pep440_branch(pieces):
function pep440_split_post (line 427) | def pep440_split_post(ver):
function render_pep440_pre (line 437) | def render_pep440_pre(pieces):
function render_pep440_post (line 461) | def render_pep440_post(pieces):
function render_pep440_post_branch (line 488) | def render_pep440_post_branch(pieces):
function render_pep440_old (line 517) | def render_pep440_old(pieces):
function render_git_describe (line 539) | def render_git_describe(pieces):
function render_git_describe_long (line 559) | def render_git_describe_long(pieces):
function render (line 579) | def render(pieces, style):
function get_versions (line 615) | def get_versions():
FILE: numba/cext/__init__.py
function get_extension_libs (line 8) | def get_extension_libs():
function get_path (line 20) | def get_path():
FILE: numba/cext/dictobject.c
type __int8 (line 131) | typedef __int8 int8_t;
type __int16 (line 132) | typedef __int16 int16_t;
type __int32 (line 133) | typedef __int32 int32_t;
type __int64 (line 134) | typedef __int64 int64_t;
type Status (line 254) | typedef enum {
function mem_cmp_zeros (line 266) | static
function ix_size (line 281) | static int
function Py_ssize_t (line 299) | static Py_ssize_t
function set_index (line 329) | static void
function NB_DictEntry (line 411) | static NB_DictEntry*
function zero_key (line 422) | static void
function zero_val (line 427) | static void
function copy_key (line 432) | static void
function copy_val (line 437) | static void
function key_equal (line 443) | static int
function dk_incref_key (line 466) | static void
function dk_decref_key (line 473) | static void
function dk_incref_val (line 480) | static void
function dk_decref_val (line 487) | static void
function numba_dictkeys_free (line 495) | void
function numba_dict_free (line 512) | void
function Py_ssize_t (line 518) | Py_ssize_t
function numba_dictkeys_new (line 527) | int
function numba_dict_new (line 560) | int
function Py_ssize_t (line 585) | static Py_ssize_t
function Py_ssize_t (line 633) | Py_ssize_t
function Py_ssize_t (line 678) | static Py_ssize_t
function insertion_resize (line 698) | static int
function numba_dict_insert (line 704) | int
function build_indices (line 768) | void
function numba_dict_resize (line 797) | int
function numba_dict_delitem (line 877) | int
function numba_dict_popitem (line 908) | int
function numba_dict_dump (line 947) | void
function numba_dict_iter_sizeof (line 982) | size_t
function numba_dict_iter (line 987) | void
function numba_dict_iter_next (line 995) | int
function numba_dict_insert_ez (line 1015) | int
function numba_dict_new_sized (line 1029) | int
function numba_dict_set_method_table (line 1055) | void
function numba_test_dict (line 1069) | int
FILE: numba/cext/dictobject.h
type NB_DictEntry (line 7) | typedef struct {
type type_based_methods_table (line 18) | typedef struct {
type NB_DictKeys (line 27) | typedef struct {
type NB_Dict (line 52) | typedef struct {
type NB_DictIter (line 59) | typedef struct {
FILE: numba/cext/listobject.c
type ListStatus (line 73) | typedef enum {
function copy_item (line 88) | static void
function list_incref_item (line 98) | static void
function list_decref_item (line 110) | static void
function numba_list_set_method_table (line 125) | void
function valid_index (line 140) | static int
function numba_list_new (line 162) | int
function numba_list_free (line 202) | void
function Py_ssize_t (line 229) | Py_ssize_t
function Py_ssize_t (line 240) | Py_ssize_t
function Py_ssize_t (line 249) | Py_ssize_t
function numba_list_is_mutable (line 259) | int
function numba_list_set_is_mutable (line 270) | void
function numba_list_setitem (line 285) | int
function numba_list_getitem (line 311) | int
function numba_list_append (line 330) | int
function numba_list_resize (line 374) | int
function numba_list_delitem (line 426) | int
function numba_list_delete_slice (line 477) | int
function numba_list_iter_sizeof (line 569) | size_t
function numba_list_iter (line 579) | void
function numba_list_iter_next (line 592) | int
function numba_test_list (line 619) | int
FILE: numba/cext/listobject.h
type list_type_based_methods_table (line 21) | typedef struct {
type NB_List (line 54) | typedef struct {
type NB_ListIter (line 70) | typedef struct {
FILE: numba/cext/utils.c
function Py_ssize_t (line 4) | Py_ssize_t
FILE: numba/cloudpickle/cloudpickle.py
function _get_or_create_tracker_id (line 117) | def _get_or_create_tracker_id(class_def):
function _lookup_class_or_track (line 127) | def _lookup_class_or_track(class_tracker_id, class_def):
function register_pickle_by_value (line 142) | def register_pickle_by_value(module):
function unregister_pickle_by_value (line 181) | def unregister_pickle_by_value(module):
function list_registry_pickle_by_value (line 191) | def list_registry_pickle_by_value():
function _is_registered_pickle_by_value (line 195) | def _is_registered_pickle_by_value(module):
function _getattribute (line 210) | def _getattribute(obj, name):
function _getattribute (line 213) | def _getattribute(obj, name):
function _whichmodule (line 217) | def _whichmodule(obj, name):
function _should_pickle_by_reference (line 251) | def _should_pickle_by_reference(obj, name=None):
function _lookup_module_and_qualname (line 287) | def _lookup_module_and_qualname(obj, name=None):
function _extract_code_globals (line 327) | def _extract_code_globals(co):
function _find_imported_submodules (line 352) | def _find_imported_submodules(code, top_level_dependencies):
function _builtin_type (line 416) | def _builtin_type(name):
function _walk_global_ops (line 425) | def _walk_global_ops(code):
function _extract_class_dict (line 433) | def _extract_class_dict(cls):
function is_tornado_coroutine (line 458) | def is_tornado_coroutine(func):
function subimport (line 478) | def subimport(name):
function dynamic_subimport (line 487) | def dynamic_subimport(name, vars):
function _get_cell_contents (line 494) | def _get_cell_contents(cell):
function instance (line 502) | def instance(cls):
class _empty_cell_value (line 519) | class _empty_cell_value:
method __reduce__ (line 523) | def __reduce__(cls):
function _make_function (line 527) | def _make_function(code, globals, name, argdefs, closure):
function _make_empty_cell (line 533) | def _make_empty_cell():
function _make_cell (line 542) | def _make_cell(value=_empty_cell_value):
function _make_skeleton_class (line 549) | def _make_skeleton_class(
function _make_skeleton_enum (line 574) | def _make_skeleton_enum(
function _make_typevar (line 605) | def _make_typevar(name, bound, constraints, covariant, contravariant, cl...
function _decompose_typevar (line 616) | def _decompose_typevar(obj):
function _typevar_reduce (line 627) | def _typevar_reduce(obj):
function _get_bases (line 640) | def _get_bases(typ):
function _make_dict_keys (line 654) | def _make_dict_keys(obj, is_ordered=False):
function _make_dict_values (line 661) | def _make_dict_values(obj, is_ordered=False):
function _make_dict_items (line 668) | def _make_dict_items(obj, is_ordered=False):
function _class_getnewargs (line 679) | def _class_getnewargs(obj):
function _enum_getnewargs (line 698) | def _enum_getnewargs(obj):
function _file_reconstructor (line 713) | def _file_reconstructor(retval):
function _function_getstate (line 721) | def _function_getstate(func):
function _class_getstate (line 764) | def _class_getstate(obj):
function _enum_getstate (line 803) | def _enum_getstate(obj):
function _code_reduce (line 835) | def _code_reduce(obj):
function _cell_reduce (line 946) | def _cell_reduce(obj):
function _classmethod_reduce (line 956) | def _classmethod_reduce(obj):
function _file_reduce (line 961) | def _file_reduce(obj):
function _getset_descriptor_reduce (line 1005) | def _getset_descriptor_reduce(obj):
function _mappingproxy_reduce (line 1009) | def _mappingproxy_reduce(obj):
function _memoryview_reduce (line 1013) | def _memoryview_reduce(obj):
function _module_reduce (line 1017) | def _module_reduce(obj):
function _method_reduce (line 1030) | def _method_reduce(obj):
function _logger_reduce (line 1034) | def _logger_reduce(obj):
function _root_logger_reduce (line 1038) | def _root_logger_reduce(obj):
function _property_reduce (line 1042) | def _property_reduce(obj):
function _weakset_reduce (line 1046) | def _weakset_reduce(obj):
function _dynamic_class_reduce (line 1050) | def _dynamic_class_reduce(obj):
function _class_reduce (line 1077) | def _class_reduce(obj):
function _dict_keys_reduce (line 1092) | def _dict_keys_reduce(obj):
function _dict_values_reduce (line 1099) | def _dict_values_reduce(obj):
function _dict_items_reduce (line 1106) | def _dict_items_reduce(obj):
function _odict_keys_reduce (line 1110) | def _odict_keys_reduce(obj):
function _odict_values_reduce (line 1117) | def _odict_values_reduce(obj):
function _odict_items_reduce (line 1124) | def _odict_items_reduce(obj):
function _dataclass_field_base_reduce (line 1128) | def _dataclass_field_base_reduce(obj):
function _function_setstate (line 1138) | def _function_setstate(obj, state):
function _class_setstate (line 1172) | def _class_setstate(obj, state):
function _get_dataclass_field_type_sentinel (line 1227) | def _get_dataclass_field_type_sentinel(name):
class Pickler (line 1231) | class Pickler(pickle.Pickler):
method _dynamic_function_reduce (line 1265) | def _dynamic_function_reduce(self, func):
method _function_reduce (line 1271) | def _function_reduce(self, obj):
method _function_getnewargs (line 1285) | def _function_getnewargs(self, func):
method dump (line 1318) | def dump(self, obj):
method __init__ (line 1328) | def __init__(self, file, protocol=None, buffer_callback=None):
method reducer_override (line 1365) | def reducer_override(self, obj):
method _save_reduce_pickle5 (line 1418) | def _save_reduce_pickle5(
method save_global (line 1451) | def save_global(self, obj, name=None, pack=struct.pack):
method save_function (line 1477) | def save_function(self, obj, name=None):
method save_pypy_builtin_func (line 1492) | def save_pypy_builtin_func(self, obj):
function dump (line 1523) | def dump(obj, file, protocol=None, buffer_callback=None):
function dumps (line 1539) | def dumps(obj, protocol=None, buffer_callback=None):
FILE: numba/cloudpickle/cloudpickle_fast.py
function __getattr__ (line 13) | def __getattr__(name):
FILE: numba/core/analysis.py
function compute_use_defs (line 23) | def compute_use_defs(blocks):
function compute_live_map (line 60) | def compute_live_map(cfg, blocks, var_use_map, var_def_map):
function compute_dead_maps (line 118) | def compute_dead_maps(cfg, blocks, live_map, var_def_map):
function compute_live_variables (line 190) | def compute_live_variables(cfg, blocks, var_def_map, var_dead_map):
function compute_cfg_from_blocks (line 235) | def compute_cfg_from_blocks(blocks):
function find_top_level_loops (line 250) | def find_top_level_loops(cfg):
function _fix_loop_exit (line 266) | def _fix_loop_exit(cfg, loop):
function dead_branch_prune (line 291) | def dead_branch_prune(func_ir, called_args):
function rewrite_semantic_constants (line 584) | def rewrite_semantic_constants(func_ir, called_args):
function find_literally_calls (line 655) | def find_literally_calls(func_ir, argtypes):
function must_use_alloca (line 706) | def must_use_alloca(blocks):
FILE: numba/core/annotations/pretty_annotate.py
function hllines (line 10) | def hllines(code, style):
function htlines (line 24) | def htlines(code, style):
function get_ansi_template (line 39) | def get_ansi_template():
function get_html_template (line 66) | def get_html_template():
function reform_code (line 211) | def reform_code(annotation):
class Annotate (line 225) | class Annotate:
method __init__ (line 266) | def __init__(self, function, signature=None, **kwargs):
method _repr_html_ (line 279) | def _repr_html_(self):
method __repr__ (line 282) | def __repr__(self):
FILE: numba/core/annotations/type_annotations.py
class SourceLines (line 16) | class SourceLines(Mapping):
method __init__ (line 17) | def __init__(self, func):
method __getitem__ (line 28) | def __getitem__(self, lineno):
method __iter__ (line 34) | def __iter__(self):
method __len__ (line 37) | def __len__(self):
method avail (line 41) | def avail(self):
class TypeAnnotation (line 45) | class TypeAnnotation(object):
method __init__ (line 56) | def __init__(self, func_ir, typemap, calltypes, lifted, lifted_from,
method prepare_annotations (line 76) | def prepare_annotations(self):
method annotate (line 111) | def annotate(self):
method html_annotate (line 150) | def html_annotate(self, outfile):
method annotate_raw (line 188) | def annotate_raw(self):
method __str__ (line 271) | def __str__(self):
function _getindent (line 278) | def _getindent(text):
FILE: numba/core/base.py
class OverloadSelector (line 27) | class OverloadSelector(object):
method __init__ (line 37) | def __init__(self):
method find (line 42) | def find(self, sig):
method _find (line 49) | def _find(self, sig):
method _select_compatible (line 56) | def _select_compatible(self, sig):
method _best_signature (line 66) | def _best_signature(self, candidates):
method _sort_signatures (line 83) | def _sort_signatures(self, candidates):
method _match_arglist (line 103) | def _match_arglist(self, formal_args, actual_args):
method _match (line 123) | def _match(self, formal, actual):
method append (line 138) | def append(self, value, sig):
function _load_global_helpers (line 148) | def _load_global_helpers():
class BaseContext (line 167) | class BaseContext(object):
method enable_boundscheck (line 192) | def enable_boundscheck(self):
method enable_boundscheck (line 198) | def enable_boundscheck(self, value):
method __init__ (line 225) | def __init__(self, typing_context, target):
method init (line 256) | def init(self):
method refresh (line 261) | def refresh(self):
method load_additional_registries (line 279) | def load_additional_registries(self):
method mangler (line 284) | def mangler(self, name, types, *, abi_tags=(), uid=None):
method get_env_name (line 290) | def get_env_name(self, fndesc):
method declare_env_global (line 298) | def declare_env_global(self, module, envname):
method get_arg_packer (line 319) | def get_arg_packer(self, fe_args):
method get_data_packer (line 322) | def get_data_packer(self, fe_types):
method target_data (line 326) | def target_data(self):
method nonconst_module_attrs (line 330) | def nonconst_module_attrs(self):
method nrt (line 337) | def nrt(self):
method subtarget (line 341) | def subtarget(self, **kws):
method install_registry (line 352) | def install_registry(self, registry):
method insert_func_defn (line 368) | def insert_func_defn(self, defns):
method _insert_getattr_defn (line 372) | def _insert_getattr_defn(self, defns):
method _insert_setattr_defn (line 376) | def _insert_setattr_defn(self, defns):
method _insert_cast_defn (line 380) | def _insert_cast_defn(self, defns):
method _insert_get_constant_defn (line 384) | def _insert_get_constant_defn(self, defns):
method insert_user_function (line 388) | def insert_user_function(self, func, fndesc, libs=()):
method insert_generator (line 392) | def insert_generator(self, genty, gendesc, libs=()):
method remove_user_function (line 397) | def remove_user_function(self, func):
method get_external_function_type (line 404) | def get_external_function_type(self, fndesc):
method declare_function (line 412) | def declare_function(self, module, fndesc):
method apply_target_attributes (line 425) | def apply_target_attributes(self, llvm_func, argtypes=None, restype=No...
method declare_external_function (line 431) | def declare_external_function(self, module, fndesc):
method insert_const_string (line 439) | def insert_const_string(self, mod, string):
method insert_const_bytes (line 449) | def insert_const_bytes(self, mod, bytes, name=None):
method insert_unique_const (line 459) | def insert_unique_const(self, mod, name, val):
method get_argument_type (line 471) | def get_argument_type(self, ty):
method get_return_type (line 474) | def get_return_type(self, ty):
method get_data_type (line 477) | def get_data_type(self, ty):
method get_value_type (line 487) | def get_value_type(self, ty):
method pack_value (line 490) | def pack_value(self, builder, ty, value, ptr, align=None):
method unpack_value (line 499) | def unpack_value(self, builder, ty, ptr, align=None):
method get_constant_generic (line 508) | def get_constant_generic(self, builder, ty, val):
method get_constant (line 518) | def get_constant(self, ty, val):
method get_constant_undef (line 526) | def get_constant_undef(self, ty):
method get_constant_null (line 530) | def get_constant_null(self, ty):
method get_function (line 534) | def get_function(self, fn, sig, _firstcall=True):
method get_generator_desc (line 568) | def get_generator_desc(self, genty):
method get_generator_impl (line 573) | def get_generator_impl(self, genty):
method get_bound_function (line 580) | def get_bound_function(self, builder, obj, ty):
method get_getattr (line 584) | def get_getattr(self, typ, attr):
method get_setattr (line 623) | def get_setattr(self, attr, sig):
method get_argument_value (line 654) | def get_argument_value(self, builder, ty, val):
method get_returned_value (line 660) | def get_returned_value(self, builder, ty, val):
method get_return_value (line 666) | def get_return_value(self, builder, ty, val):
method get_value_as_argument (line 672) | def get_value_as_argument(self, builder, ty, val):
method get_value_as_data (line 677) | def get_value_as_data(self, builder, ty, val):
method get_data_as_value (line 680) | def get_data_as_value(self, builder, ty, val):
method pair_first (line 683) | def pair_first(self, builder, val, ty):
method pair_second (line 690) | def pair_second(self, builder, val, ty):
method cast (line 697) | def cast(self, builder, val, fromty, toty):
method generic_compare (line 715) | def generic_compare(self, builder, key, argtypes, args):
method make_optional_none (line 734) | def make_optional_none(self, builder, valtype):
method make_optional_value (line 739) | def make_optional_value(self, builder, valtype, value):
method is_true (line 745) | def is_true(self, builder, typ, val):
method get_c_value (line 754) | def get_c_value(self, builder, typ, name, dllimport=False):
method call_external_function (line 770) | def call_external_function(self, builder, callee, argtys, args):
method get_function_pointer_type (line 776) | def get_function_pointer_type(self, typ):
method call_function_pointer (line 779) | def call_function_pointer(self, builder, funcptr, args, cconv=None):
method print_string (line 782) | def print_string(self, builder, text):
method debug_print (line 789) | def debug_print(self, builder, text):
method printf (line 794) | def printf(self, builder, format_string, *args):
method get_struct_type (line 804) | def get_struct_type(self, struct):
method get_dummy_value (line 811) | def get_dummy_value(self):
method get_dummy_type (line 814) | def get_dummy_type(self):
method _compile_subroutine_no_cache (line 817) | def _compile_subroutine_no_cache(self, builder, impl, sig, locals=None,
method compile_subroutine (line 857) | def compile_subroutine(self, builder, impl, sig, locals=None, flags=None,
method compile_internal (line 888) | def compile_internal(self, builder, impl, sig, args, locals=None):
method call_internal (line 898) | def call_internal(self, builder, fndesc, sig, args):
method call_internal_no_propagate (line 910) | def call_internal_no_propagate(self, builder, fndesc, sig, args):
method call_unresolved (line 921) | def call_unresolved(self, builder, name, sig, args):
method get_executable (line 965) | def get_executable(self, func, fndesc, env):
method get_python_api (line 968) | def get_python_api(self, builder):
method sentry_record_alignment (line 971) | def sentry_record_alignment(self, rectyp, attr):
method get_helper_class (line 989) | def get_helper_class(self, typ, kind='value'):
method _make_helper (line 997) | def _make_helper(self, builder, typ, value=None, ref=None, kind='value'):
method make_helper (line 1001) | def make_helper(self, builder, typ, value=None, ref=None):
method make_data_helper (line 1008) | def make_data_helper(self, builder, typ, ref=None):
method make_array (line 1015) | def make_array(self, typ):
method populate_array (line 1019) | def populate_array(self, arr, **kwargs):
method make_complex (line 1026) | def make_complex(self, builder, typ, value=None):
method make_tuple (line 1033) | def make_tuple(self, builder, typ, values):
method make_constant_array (line 1042) | def make_constant_array(self, builder, typ, ary):
method add_dynamic_addr (line 1093) | def add_dynamic_addr(self, builder, intaddr, info):
method get_abi_sizeof (line 1114) | def get_abi_sizeof(self, ty):
method get_abi_alignment (line 1121) | def get_abi_alignment(self, ty):
method get_preferred_array_alignment (line 1128) | def get_preferred_array_alignment(context, ty):
method post_lowering (line 1135) | def post_lowering(self, mod, library):
method create_module (line 1139) | def create_module(self, name):
method active_code_library (line 1149) | def active_code_library(self):
method push_code_library (line 1155) | def push_code_library(self, lib):
method add_linking_libs (line 1164) | def add_linking_libs(self, libs):
method get_ufunc_info (line 1171) | def get_ufunc_info(self, ufunc_key):
class _wrap_impl (line 1190) | class _wrap_impl(object):
method __init__ (line 1197) | def __init__(self, imp, context, sig):
method __call__ (line 1203) | def __call__(self, builder, args, loc=None):
method __getattr__ (line 1208) | def __getattr__(self, item):
method __repr__ (line 1211) | def __repr__(self):
function _has_loc (line 1214) | def _has_loc(fn):
class _wrap_missing_loc (line 1221) | class _wrap_missing_loc(object):
method __init__ (line 1223) | def __init__(self, fn):
method __call__ (line 1226) | def __call__(self):
method __repr__ (line 1252) | def __repr__(self):
function _initialize_llvm_lock_event (line 1257) | def _initialize_llvm_lock_event():
FILE: numba/core/boxing.py
function box_bool (line 22) | def box_bool(typ, val, c):
function unbox_boolean (line 26) | def unbox_boolean(typ, obj, c):
function box_literal_integer (line 35) | def box_literal_integer(typ, val, c):
function box_integer (line 41) | def box_integer(typ, val, c):
function unbox_integer (line 50) | def unbox_integer(typ, obj, c):
function box_float (line 66) | def box_float(typ, val, c):
function unbox_float (line 75) | def unbox_float(typ, obj, c):
function box_complex (line 89) | def box_complex(typ, val, c):
function unbox_complex (line 101) | def unbox_complex(typ, obj, c):
function box_none (line 125) | def box_none(typ, val, c):
function unbox_none (line 130) | def unbox_none(typ, val, c):
function box_npdatetime (line 135) | def box_npdatetime(typ, val, c):
function unbox_npdatetime (line 139) | def unbox_npdatetime(typ, obj, c):
function box_nptimedelta (line 145) | def box_nptimedelta(typ, val, c):
function unbox_nptimedelta (line 149) | def unbox_nptimedelta(typ, obj, c):
function box_raw_pointer (line 155) | def box_raw_pointer(typ, val, c):
function box_enum (line 165) | def box_enum(typ, val, c):
function unbox_enum (line 176) | def unbox_enum(typ, obj, c):
function box_undefvar (line 185) | def box_undefvar(typ, val, c):
function box_record (line 196) | def box_record(typ, val, c):
function unbox_record (line 205) | def unbox_record(typ, obj, c):
function box_unicodecharseq (line 219) | def box_unicodecharseq(typ, val, c):
function unbox_unicodecharseq (line 245) | def unbox_unicodecharseq(typ, obj, c):
function box_bytes (line 275) | def box_bytes(typ, val, c):
function box_charseq (line 283) | def box_charseq(typ, val, c):
function unbox_charseq (line 306) | def unbox_charseq(typ, obj, c):
function box_optional (line 334) | def box_optional(typ, val, c):
function unbox_optional (line 347) | def unbox_optional(typ, obj, c):
function unbox_slice (line 381) | def unbox_slice(typ, obj, c):
function box_slice_literal (line 394) | def box_slice_literal(typ, val, c):
function unbox_string_literal (line 420) | def unbox_string_literal(typ, obj, c):
function box_array (line 432) | def box_array(typ, val, c):
function unbox_buffer (line 449) | def unbox_buffer(typ, obj, c):
function unbox_array (line 475) | def unbox_array(typ, obj, c):
function box_tuple (line 524) | def box_tuple(typ, val, c):
function box_namedtuple (line 539) | def box_namedtuple(typ, val, c):
function unbox_tuple (line 552) | def unbox_tuple(typ, obj, c):
function box_list (line 602) | def box_list(typ, val, c):
class _NumbaTypeHelper (line 635) | class _NumbaTypeHelper(object):
method __init__ (line 652) | def __init__(self, c):
method __enter__ (line 655) | def __enter__(self):
method __exit__ (line 664) | def __exit__(self, *args, **kwargs):
method typeof (line 668) | def typeof(self, obj):
function _python_list_to_native (line 673) | def _python_list_to_native(typ, obj, c, size, listptr, errorptr):
function unbox_list (line 744) | def unbox_list(typ, obj, c):
function reflect_list (line 783) | def reflect_list(typ, val, c):
function _python_set_to_native (line 833) | def _python_set_to_native(typ, obj, c, size, setptr, errorptr):
function unbox_set (line 893) | def unbox_set(typ, obj, c):
function _native_set_to_python_list (line 930) | def _native_set_to_python_list(typ, payload, c):
function box_set (line 953) | def box_set(typ, val, c):
function reflect_set (line 982) | def reflect_set(typ, val, c):
function box_generator (line 1011) | def box_generator(typ, val, c):
function unbox_generator (line 1015) | def unbox_generator(typ, obj, c):
function box_dtype (line 1020) | def box_dtype(typ, val, c):
function unbox_dtype (line 1025) | def unbox_dtype(typ, val, c):
function box_number_class (line 1030) | def box_number_class(typ, val, c):
function unbox_number_class (line 1035) | def unbox_number_class(typ, val, c):
function box_pyobject (line 1041) | def box_pyobject(typ, val, c):
function unbox_pyobject (line 1046) | def unbox_pyobject(typ, obj, c):
function unbox_funcptr (line 1051) | def unbox_funcptr(typ, obj, c):
function box_deferred (line 1074) | def box_deferred(typ, val, c):
function unbox_deferred (line 1082) | def unbox_deferred(typ, obj, c):
function unbox_dispatcher (line 1091) | def unbox_dispatcher(typ, obj, c):
function box_pyobject (line 1097) | def box_pyobject(typ, val, c):
function unbox_unsupported (line 1102) | def unbox_unsupported(typ, obj, c):
function box_unsupported (line 1109) | def box_unsupported(typ, val, c):
function box_literal (line 1117) | def box_literal(typ, val, c):
function box_meminfo_pointer (line 1126) | def box_meminfo_pointer(typ, val, c):
function unbox_meminfo_pointer (line 1131) | def unbox_meminfo_pointer(typ, obj, c):
function unbox_typeref (line 1137) | def unbox_typeref(typ, val, c):
function box_LiteralStrKeyDict (line 1142) | def box_LiteralStrKeyDict(typ, val, c):
function unbox_numpy_random_bitgenerator (line 1148) | def unbox_numpy_random_bitgenerator(typ, obj, c):
function unbox_numpy_random_generator (line 1273) | def unbox_numpy_random_generator(typ, obj, c):
function box_numpy_random_generator (line 1306) | def box_numpy_random_generator(typ, val, c):
FILE: numba/core/bytecode.py
function get_function_object (line 33) | def get_function_object(obj):
function get_code_object (line 45) | def get_code_object(obj):
function _as_opcodes (line 50) | def _as_opcodes(seq):
class ByteCodeInst (line 67) | class ByteCodeInst(object):
method __init__ (line 82) | def __init__(self, offset, opcode, arg, nextoffset):
method is_jump (line 91) | def is_jump(self):
method is_terminator (line 95) | def is_terminator(self):
method get_jump_target (line 98) | def get_jump_target(self):
method __repr__ (line 139) | def __repr__(self):
method block_effect (line 143) | def block_effect(self):
function _unpack_opargs (line 164) | def _unpack_opargs(code):
function _unpack_opargs (line 178) | def _unpack_opargs(code):
function _patched_opargs (line 239) | def _patched_opargs(bc_stream):
class ByteCodeIter (line 254) | class ByteCodeIter(object):
method __init__ (line 255) | def __init__(self, code):
method __iter__ (line 259) | def __iter__(self):
method _fetch_opcode (line 262) | def _fetch_opcode(self):
method next (line 265) | def next(self):
method read_arg (line 272) | def read_arg(self, size):
class _ByteCode (line 280) | class _ByteCode(object):
method __init__ (line 288) | def __init__(self, func_id):
method _compute_lineno (line 309) | def _compute_lineno(cls, table, code):
method __iter__ (line 327) | def __iter__(self):
method __getitem__ (line 330) | def __getitem__(self, offset):
method __contains__ (line 333) | def __contains__(self, offset):
method dump (line 336) | def dump(self):
method _compute_used_globals (line 348) | def _compute_used_globals(cls, func, table, co_consts, co_names):
method get_used_globals (line 376) | def get_used_globals(self):
function _fix_LOAD_GLOBAL_arg (line 385) | def _fix_LOAD_GLOBAL_arg(arg):
class ByteCodePy311 (line 394) | class ByteCodePy311(_ByteCode):
method __init__ (line 396) | def __init__(self, func_id):
method fixup_eh (line 402) | def fixup_eh(ent):
method find_exception_entry (line 412) | def find_exception_entry(self, offset):
class ByteCodePy312 (line 425) | class ByteCodePy312(ByteCodePy311):
method __init__ (line 427) | def __init__(self, func_id):
method ordered_offsets (line 454) | def ordered_offsets(self):
method remove_build_list_swap_pattern (line 460) | def remove_build_list_swap_pattern(self, entries):
class FunctionIdentity (line 620) | class FunctionIdentity(serialize.ReduceMixin):
method from_function (line 631) | def from_function(cls, pyfunc):
method derive (line 672) | def derive(self):
method _reduce_states (line 677) | def _reduce_states(self):
method _rebuild (line 684) | def _rebuild(cls, pyfunc):
FILE: numba/core/byteflow.py
class CALL_INTRINSIC_1_Operand (line 31) | class CALL_INTRINSIC_1_Operand(Enum):
class BlockKind (line 43) | class BlockKind(object):
method __init__ (line 52) | def __init__(self, value):
method __hash__ (line 56) | def __hash__(self):
method __lt__ (line 59) | def __lt__(self, other):
method __eq__ (line 65) | def __eq__(self, other):
method __repr__ (line 71) | def __repr__(self):
class Flow (line 75) | class Flow(object):
method __init__ (line 80) | def __init__(self, bytecode):
method run (line 86) | def run(self):
method _run_handle_exception (line 145) | def _run_handle_exception(self, runner, state):
method _run_handle_exception (line 173) | def _run_handle_exception(self, runner, state):
method _build_cfg (line 197) | def _build_cfg(self, all_states):
method _prune_phis (line 209) | def _prune_phis(self, runner):
method _is_implicit_new_block (line 286) | def _is_implicit_new_block(self, state):
method _guard_with_as (line 297) | def _guard_with_as(self, state):
method _guard_with_as (line 301) | def _guard_with_as(self, state):
function _is_null_temp_reg (line 317) | def _is_null_temp_reg(reg):
class TraceRunner (line 321) | class TraceRunner(object):
method __init__ (line 324) | def __init__(self, debug_filename):
method get_debug_loc (line 329) | def get_debug_loc(self, lineno):
method dispatch (line 332) | def dispatch(self, state):
method _adjust_except_stack (line 359) | def _adjust_except_stack(self, state):
method op_NOP (line 379) | def op_NOP(self, state, inst):
method op_RESUME (line 390) | def op_RESUME(self, state, inst):
method op_CACHE (line 393) | def op_CACHE(self, state, inst):
method op_PRECALL (line 396) | def op_PRECALL(self, state, inst):
method op_PUSH_NULL (line 399) | def op_PUSH_NULL(self, state, inst):
method op_RETURN_GENERATOR (line 403) | def op_RETURN_GENERATOR(self, state, inst):
method op_FORMAT_SIMPLE (line 417) | def op_FORMAT_SIMPLE(self, state, inst):
method op_FORMAT_VALUE (line 428) | def op_FORMAT_VALUE(self, state, inst):
method op_BUILD_STRING (line 446) | def op_BUILD_STRING(self, state, inst):
method op_POP_TOP (line 463) | def op_POP_TOP(self, state, inst):
method op_TO_BOOL (line 475) | def op_TO_BOOL(self, state, inst):
method op_LOAD_GLOBAL (line 486) | def op_LOAD_GLOBAL(self, state, inst):
method op_LOAD_GLOBAL (line 496) | def op_LOAD_GLOBAL(self, state, inst):
method op_LOAD_GLOBAL (line 505) | def op_LOAD_GLOBAL(self, state, inst):
method op_COPY_FREE_VARS (line 512) | def op_COPY_FREE_VARS(self, state, inst):
method op_MAKE_CELL (line 515) | def op_MAKE_CELL(self, state, inst):
method op_LOAD_DEREF (line 518) | def op_LOAD_DEREF(self, state, inst):
method op_LOAD_CONST (line 523) | def op_LOAD_CONST(self, state, inst):
method op_LOAD_SMALL_INT (line 531) | def op_LOAD_SMALL_INT(self, state, inst):
method op_LOAD_ATTR (line 541) | def op_LOAD_ATTR(self, state, inst):
method op_LOAD_FAST (line 558) | def op_LOAD_FAST(self, state, inst):
method op_LOAD_FAST_LOAD_FAST (line 587) | def op_LOAD_FAST_LOAD_FAST(self, state, inst):
method op_STORE_FAST_LOAD_FAST (line 599) | def op_STORE_FAST_LOAD_FAST(self, state, inst):
method op_STORE_FAST_STORE_FAST (line 609) | def op_STORE_FAST_STORE_FAST(self, state, inst):
method op_DELETE_FAST (line 636) | def op_DELETE_FAST(self, state, inst):
method op_DELETE_ATTR (line 639) | def op_DELETE_ATTR(self, state, inst):
method op_STORE_ATTR (line 643) | def op_STORE_ATTR(self, state, inst):
method op_STORE_DEREF (line 648) | def op_STORE_DEREF(self, state, inst):
method op_STORE_FAST (line 652) | def op_STORE_FAST(self, state, inst):
method op_SLICE_1 (line 656) | def op_SLICE_1(self, state, inst):
method op_SLICE_2 (line 677) | def op_SLICE_2(self, state, inst):
method op_SLICE_3 (line 698) | def op_SLICE_3(self, state, inst):
method op_STORE_SLICE_0 (line 719) | def op_STORE_SLICE_0(self, state, inst):
method op_STORE_SLICE_1 (line 737) | def op_STORE_SLICE_1(self, state, inst):
method op_STORE_SLICE_2 (line 757) | def op_STORE_SLICE_2(self, state, inst):
method op_STORE_SLICE_3 (line 777) | def op_STORE_SLICE_3(self, state, inst):
method op_DELETE_SLICE_0 (line 797) | def op_DELETE_SLICE_0(self, state, inst):
method op_DELETE_SLICE_1 (line 810) | def op_DELETE_SLICE_1(self, state, inst):
method op_DELETE_SLICE_2 (line 828) | def op_DELETE_SLICE_2(self, state, inst):
method op_DELETE_SLICE_3 (line 846) | def op_DELETE_SLICE_3(self, state, inst):
method op_BUILD_SLICE (line 860) | def op_BUILD_SLICE(self, state, inst):
method op_BINARY_SLICE (line 888) | def op_BINARY_SLICE(self, state, inst):
method op_STORE_SLICE (line 906) | def op_STORE_SLICE(self, state, inst):
method _op_POP_JUMP_IF (line 923) | def _op_POP_JUMP_IF(self, state, inst):
method _op_JUMP_IF_OR_POP (line 946) | def _op_JUMP_IF_OR_POP(self, state, inst):
method op_POP_JUMP_FORWARD_IF_NONE (line 955) | def op_POP_JUMP_FORWARD_IF_NONE(self, state, inst):
method op_POP_JUMP_FORWARD_IF_NOT_NONE (line 958) | def op_POP_JUMP_FORWARD_IF_NOT_NONE(self, state, inst):
method op_POP_JUMP_BACKWARD_IF_NONE (line 961) | def op_POP_JUMP_BACKWARD_IF_NONE(self, state, inst):
method op_POP_JUMP_BACKWARD_IF_NOT_NONE (line 964) | def op_POP_JUMP_BACKWARD_IF_NOT_NONE(self, state, inst):
method op_POP_JUMP_FORWARD_IF_FALSE (line 967) | def op_POP_JUMP_FORWARD_IF_FALSE(self, state, inst):
method op_POP_JUMP_FORWARD_IF_TRUE (line 970) | def op_POP_JUMP_FORWARD_IF_TRUE(self, state, inst):
method op_POP_JUMP_BACKWARD_IF_FALSE (line 973) | def op_POP_JUMP_BACKWARD_IF_FALSE(self, state, inst):
method op_POP_JUMP_BACKWARD_IF_TRUE (line 976) | def op_POP_JUMP_BACKWARD_IF_TRUE(self, state, inst):
method op_JUMP_FORWARD (line 979) | def op_JUMP_FORWARD(self, state, inst):
method op_JUMP_BACKWARD (line 983) | def op_JUMP_BACKWARD(self, state, inst):
method op_JUMP_ABSOLUTE (line 989) | def op_JUMP_ABSOLUTE(self, state, inst):
method op_BREAK_LOOP (line 993) | def op_BREAK_LOOP(self, state, inst):
method op_RETURN_VALUE (line 1000) | def op_RETURN_VALUE(self, state, inst):
method op_RETURN_CONST (line 1005) | def op_RETURN_CONST(self, state, inst):
method op_YIELD_VALUE (line 1014) | def op_YIELD_VALUE(self, state, inst):
method op_RAISE_VARARGS (line 1021) | def op_RAISE_VARARGS(self, state, inst):
method op_RAISE_VARARGS (line 1043) | def op_RAISE_VARARGS(self, state, inst):
method op_BEGIN_FINALLY (line 1064) | def op_BEGIN_FINALLY(self, state, inst):
method op_END_FINALLY (line 1072) | def op_END_FINALLY(self, state, inst):
method op_END_FOR (line 1077) | def op_END_FOR(self, state, inst):
method op_END_FOR (line 1080) | def op_END_FOR(self, state, inst):
method op_POP_FINALLY (line 1088) | def op_POP_FINALLY(self, state, inst):
method op_CALL_FINALLY (line 1096) | def op_CALL_FINALLY(self, state, inst):
method op_WITH_EXCEPT_START (line 1099) | def op_WITH_EXCEPT_START(self, state, inst):
method op_WITH_CLEANUP_START (line 1102) | def op_WITH_CLEANUP_START(self, state, inst):
method op_WITH_CLEANUP_FINISH (line 1106) | def op_WITH_CLEANUP_FINISH(self, state, inst):
method op_SETUP_LOOP (line 1110) | def op_SETUP_LOOP(self, state, inst):
method op_BEFORE_WITH (line 1122) | def op_BEFORE_WITH(self, state, inst):
method op_SETUP_WITH (line 1155) | def op_SETUP_WITH(self, state, inst):
method _setup_try (line 1174) | def _setup_try(self, kind, state, next, end):
method op_PUSH_EXC_INFO (line 1194) | def op_PUSH_EXC_INFO(self, state, inst):
method op_SETUP_FINALLY (line 1199) | def op_SETUP_FINALLY(self, state, inst):
method op_POP_EXCEPT (line 1206) | def op_POP_EXCEPT(self, state, inst):
method op_POP_EXCEPT (line 1210) | def op_POP_EXCEPT(self, state, inst):
method op_POP_BLOCK (line 1225) | def op_POP_BLOCK(self, state, inst):
method op_BINARY_SUBSCR (line 1237) | def op_BINARY_SUBSCR(self, state, inst):
method op_STORE_SUBSCR (line 1246) | def op_STORE_SUBSCR(self, state, inst):
method op_DELETE_SUBSCR (line 1252) | def op_DELETE_SUBSCR(self, state, inst):
method op_CALL (line 1257) | def op_CALL(self, state, inst):
method op_KW_NAMES (line 1281) | def op_KW_NAMES(self, state, inst):
method op_CALL_FUNCTION (line 1284) | def op_CALL_FUNCTION(self, state, inst):
method op_CALL_FUNCTION_KW (line 1293) | def op_CALL_FUNCTION_KW(self, state, inst):
method op_CALL_KW (line 1304) | def op_CALL_KW(self, state, inst):
method op_CALL_FUNCTION_EX (line 1324) | def op_CALL_FUNCTION_EX(self, state, inst):
method op_CALL_FUNCTION_EX (line 1340) | def op_CALL_FUNCTION_EX(self, state, inst):
method op_CALL_FUNCTION_EX (line 1356) | def op_CALL_FUNCTION_EX(self, state, inst):
method _dup_topx (line 1379) | def _dup_topx(self, state, inst, count):
method op_CALL_INTRINSIC_1 (line 1392) | def op_CALL_INTRINSIC_1(self, state, inst):
method op_DUP_TOPX (line 1427) | def op_DUP_TOPX(self, state, inst):
method op_DUP_TOP (line 1432) | def op_DUP_TOP(self, state, inst):
method op_DUP_TOP_TWO (line 1435) | def op_DUP_TOP_TWO(self, state, inst):
method op_COPY (line 1438) | def op_COPY(self, state, inst):
method op_SWAP (line 1441) | def op_SWAP(self, state, inst):
method op_ROT_TWO (line 1444) | def op_ROT_TWO(self, state, inst):
method op_ROT_THREE (line 1450) | def op_ROT_THREE(self, state, inst):
method op_ROT_FOUR (line 1458) | def op_ROT_FOUR(self, state, inst):
method op_UNPACK_SEQUENCE (line 1468) | def op_UNPACK_SEQUENCE(self, state, inst):
method op_BUILD_TUPLE (line 1477) | def op_BUILD_TUPLE(self, state, inst):
method _build_tuple_unpack (line 1484) | def _build_tuple_unpack(self, state, inst):
method op_BUILD_TUPLE_UNPACK_WITH_CALL (line 1499) | def op_BUILD_TUPLE_UNPACK_WITH_CALL(self, state, inst):
method op_BUILD_TUPLE_UNPACK (line 1503) | def op_BUILD_TUPLE_UNPACK(self, state, inst):
method op_LIST_TO_TUPLE (line 1506) | def op_LIST_TO_TUPLE(self, state, inst):
method op_BUILD_CONST_KEY_MAP (line 1514) | def op_BUILD_CONST_KEY_MAP(self, state, inst):
method op_BUILD_LIST (line 1522) | def op_BUILD_LIST(self, state, inst):
method op_LIST_APPEND (line 1529) | def op_LIST_APPEND(self, state, inst):
method op_LIST_EXTEND (line 1538) | def op_LIST_EXTEND(self, state, inst):
method op_BUILD_MAP (line 1547) | def op_BUILD_MAP(self, state, inst):
method op_MAP_ADD (line 1558) | def op_MAP_ADD(self, state, inst):
method op_BUILD_SET (line 1569) | def op_BUILD_SET(self, state, inst):
method op_SET_ADD (line 1577) | def op_SET_ADD(self, state, inst):
method op_SET_UPDATE (line 1584) | def op_SET_UPDATE(self, state, inst):
method op_DICT_UPDATE (line 1593) | def op_DICT_UPDATE(self, state, inst):
method op_GET_ITER (line 1602) | def op_GET_ITER(self, state, inst):
method op_FOR_ITER (line 1608) | def op_FOR_ITER(self, state, inst):
method op_GEN_START (line 1628) | def op_GEN_START(self, state, inst):
method op_BINARY_OP (line 1639) | def op_BINARY_OP(self, state, inst):
method _unaryop (line 1655) | def _unaryop(self, state, inst):
method _binaryop (line 1666) | def _binaryop(self, state, inst):
method op_MAKE_FUNCTION (line 1709) | def op_MAKE_FUNCTION(self, state, inst, MAKE_CLOSURE=False):
method op_SET_FUNCTION_ATTRIBUTE (line 1747) | def op_SET_FUNCTION_ATTRIBUTE(self, state, inst):
method op_MAKE_CLOSURE (line 1772) | def op_MAKE_CLOSURE(self, state, inst):
method op_LOAD_CLOSURE (line 1775) | def op_LOAD_CLOSURE(self, state, inst):
method op_LOAD_ASSERTION_ERROR (line 1784) | def op_LOAD_ASSERTION_ERROR(self, state, inst):
method op_CHECK_EXC_MATCH (line 1791) | def op_CHECK_EXC_MATCH(self, state, inst):
method op_JUMP_IF_NOT_EXC_MATCH (line 1798) | def op_JUMP_IF_NOT_EXC_MATCH(self, state, inst):
method op_RERAISE (line 1809) | def op_RERAISE(self, state, inst):
method op_RERAISE (line 1822) | def op_RERAISE(self, state, inst):
method op_LOAD_METHOD (line 1837) | def op_LOAD_METHOD(self, state, inst):
method op_LOAD_METHOD (line 1845) | def op_LOAD_METHOD(self, state, inst):
method op_CALL_METHOD (line 1850) | def op_CALL_METHOD(self, state, inst):
method op_LOAD_SPECIAL (line 1855) | def op_LOAD_SPECIAL(self, state, inst):
method op_LOAD_COMMON_CONSTANT (line 1974) | def op_LOAD_COMMON_CONSTANT(self, state, inst):
class _State (line 1990) | class _State(object):
method __init__ (line 1993) | def __init__(self, bytecode, pc, nstack, blockstack, nullvals=()):
method __repr__ (line 2028) | def __repr__(self):
method get_identity (line 2033) | def get_identity(self):
method __hash__ (line 2036) | def __hash__(self):
method __lt__ (line 2039) | def __lt__(self, other):
method __eq__ (line 2042) | def __eq__(self, other):
method pc_initial (line 2046) | def pc_initial(self):
method instructions (line 2053) | def instructions(self):
method outgoing_edges (line 2060) | def outgoing_edges(self):
method outgoing_phis (line 2070) | def outgoing_phis(self):
method blockstack_initial (line 2079) | def blockstack_initial(self):
method stack_depth (line 2085) | def stack_depth(self):
method find_initial_try_block (line 2094) | def find_initial_try_block(self):
method has_terminated (line 2101) | def has_terminated(self):
method get_inst (line 2104) | def get_inst(self):
method advance_pc (line 2107) | def advance_pc(self):
method make_temp (line 2111) | def make_temp(self, prefix=""):
method append (line 2129) | def append(self, inst, **kwargs):
method get_tos (line 2134) | def get_tos(self):
method peek (line 2137) | def peek(self, k):
method push (line 2142) | def push(self, item):
method pop (line 2146) | def pop(self):
method swap (line 2150) | def swap(self, idx):
method push_block (line 2155) | def push_block(self, synblk):
method reset_stack (line 2161) | def reset_stack(self, depth):
method make_block (line 2168) | def make_block(self, kind, end, reset_stack=True, handler=None):
method pop_block (line 2183) | def pop_block(self):
method pop_block_and_above (line 2190) | def pop_block_and_above(self, blk):
method get_top_block (line 2198) | def get_top_block(self, kind):
method get_top_block_either (line 2206) | def get_top_block_either(self, *kinds):
method has_active_try (line 2214) | def has_active_try(self):
method get_varname (line 2219) | def get_varname(self, inst):
method get_varname_by_arg (line 2224) | def get_varname_by_arg(self, oparg: int):
method terminate (line 2229) | def terminate(self):
method fork (line 2234) | def fork(self, pc, npop=0, npush=0, extra_block=None):
method split_new_block (line 2271) | def split_new_block(self):
method get_outgoing_states (line 2276) | def get_outgoing_states(self):
method get_outgoing_edgepushed (line 2293) | def get_outgoing_edgepushed(self):
class StatePy311 (line 2306) | class StatePy311(_State):
method __init__ (line 2307) | def __init__(self, *args, **kwargs):
method pop_kw_names (line 2311) | def pop_kw_names(self):
method set_kw_names (line 2316) | def set_kw_names(self, val):
method is_in_exception (line 2320) | def is_in_exception(self):
method get_exception (line 2324) | def get_exception(self):
method in_with (line 2328) | def in_with(self):
method make_null (line 2333) | def make_null(self):
class StatePy313 (line 2337) | class StatePy313(StatePy311):
method __init__ (line 2338) | def __init__(self, *args, **kwargs):
method set_function_attribute (line 2342) | def set_function_attribute(self, make_func_res, **kwargs):
method get_function_attributes (line 2345) | def get_function_attributes(self, make_func_res):
class AdaptDFA (line 2362) | class AdaptDFA(object):
method __init__ (line 2365) | def __init__(self, flow):
method infos (line 2369) | def infos(self):
function adapt_state_infos (line 2380) | def adapt_state_infos(state):
function _flatten_inst_regs (line 2402) | def _flatten_inst_regs(iterable):
class AdaptCFA (line 2413) | class AdaptCFA(object):
method __init__ (line 2416) | def __init__(self, flow):
method graph (line 2436) | def graph(self):
method backbone (line 2440) | def backbone(self):
method blocks (line 2444) | def blocks(self):
method iterliveblocks (line 2447) | def iterliveblocks(self):
method dump (line 2451) | def dump(self):
class AdaptCFBlock (line 2455) | class AdaptCFBlock(object):
method __init__ (line 2456) | def __init__(self, blockinfo, offset):
FILE: numba/core/caching.py
function _cache_log (line 34) | def _cache_log(msg, *args):
class _Cache (line 40) | class _Cache(metaclass=ABCMeta):
method cache_path (line 44) | def cache_path(self):
method load_overload (line 50) | def load_overload(self, sig, target_context):
method save_overload (line 58) | def save_overload(self, sig, data):
method enable (line 64) | def enable(self):
method disable (line 70) | def disable(self):
method flush (line 76) | def flush(self):
class NullCache (line 82) | class NullCache(_Cache):
method cache_path (line 84) | def cache_path(self):
method load_overload (line 87) | def load_overload(self, sig, target_context):
method save_overload (line 90) | def save_overload(self, sig, cres):
method enable (line 93) | def enable(self):
method disable (line 96) | def disable(self):
method flush (line 99) | def flush(self):
class _CacheLocator (line 103) | class _CacheLocator(metaclass=ABCMeta):
method ensure_cache_path (line 108) | def ensure_cache_path(self):
method get_cache_path (line 115) | def get_cache_path(self):
method get_source_stamp (line 121) | def get_source_stamp(self):
method get_disambiguator (line 128) | def get_disambiguator(self):
method from_function (line 135) | def from_function(cls, py_func, py_file):
method get_suitable_cache_subpath (line 143) | def get_suitable_cache_subpath(cls, py_file):
class _SourceFileBackedLocatorMixin (line 160) | class _SourceFileBackedLocatorMixin(object):
method get_source_stamp (line 166) | def get_source_stamp(self):
method get_disambiguator (line 175) | def get_disambiguator(self):
method from_function (line 179) | def from_function(cls, py_func, py_file):
class UserProvidedCacheLocator (line 192) | class UserProvidedCacheLocator(_SourceFileBackedLocatorMixin, _CacheLoca...
method __init__ (line 197) | def __init__(self, py_func, py_file):
method get_cache_path (line 203) | def get_cache_path(self):
method from_function (line 207) | def from_function(cls, py_func, py_file):
class InTreeCacheLocator (line 214) | class InTreeCacheLocator(_SourceFileBackedLocatorMixin, _CacheLocator):
method __init__ (line 220) | def __init__(self, py_func, py_file):
method get_cache_path (line 225) | def get_cache_path(self):
class InTreeCacheLocatorFsAgnostic (line 229) | class InTreeCacheLocatorFsAgnostic(InTreeCacheLocator):
method get_source_stamp (line 236) | def get_source_stamp(self):
class UserWideCacheLocator (line 241) | class UserWideCacheLocator(_SourceFileBackedLocatorMixin, _CacheLocator):
method __init__ (line 247) | def __init__(self, py_func, py_file):
method get_cache_path (line 255) | def get_cache_path(self):
method from_function (line 259) | def from_function(cls, py_func, py_file):
class IPythonCacheLocator (line 273) | class IPythonCacheLocator(_CacheLocator):
method __init__ (line 278) | def __init__(self, py_func, py_file):
method get_cache_path (line 288) | def get_cache_path(self):
method get_source_stamp (line 300) | def get_source_stamp(self):
method get_disambiguator (line 303) | def get_disambiguator(self):
method from_function (line 313) | def from_function(cls, py_func, py_file):
class ZipCacheLocator (line 328) | class ZipCacheLocator(_SourceFileBackedLocatorMixin, _CacheLocator):
method __init__ (line 333) | def __init__(self, py_func, py_file):
method _split_zip_path (line 346) | def _split_zip_path(py_file):
method get_cache_path (line 355) | def get_cache_path(self):
method get_source_stamp (line 358) | def get_source_stamp(self):
method from_function (line 363) | def from_function(cls, py_func, py_file):
class CacheImpl (line 368) | class CacheImpl(metaclass=ABCMeta):
method __init__ (line 384) | def __init__(self, py_func):
method get_filename_base (line 434) | def get_filename_base(self, fullname, abiflags):
method filename_base (line 443) | def filename_base(self):
method locator (line 447) | def locator(self):
method reduce (line 451) | def reduce(self, data):
method rebuild (line 456) | def rebuild(self, target_context, reduced_data):
method check_cachable (line 461) | def check_cachable(self, data):
class CompileResultCacheImpl (line 466) | class CompileResultCacheImpl(CacheImpl):
method reduce (line 471) | def reduce(self, cres):
method rebuild (line 477) | def rebuild(self, target_context, payload):
method check_cachable (line 483) | def check_cachable(self, cres):
class CodeLibraryCacheImpl (line 502) | class CodeLibraryCacheImpl(CacheImpl):
method reduce (line 509) | def reduce(self, codelib):
method rebuild (line 515) | def rebuild(self, target_context, payload):
method check_cachable (line 521) | def check_cachable(self, codelib):
method get_filename_base (line 527) | def get_filename_base(self, fullname, abiflags):
class IndexDataCacheFile (line 533) | class IndexDataCacheFile(object):
method __init__ (line 537) | def __init__(self, cache_path, filename_base, source_stamp):
method flush (line 545) | def flush(self):
method save (line 548) | def save(self, key, data):
method load (line 567) | def load(self, key):
method _load_index (line 581) | def _load_index(self):
method _save_index (line 606) | def _save_index(self, overloads):
method _load_data (line 614) | def _load_data(self, name):
method _save_data (line 622) | def _save_data(self, name, data):
method _data_name (line 629) | def _data_name(self, number):
method _data_path (line 632) | def _data_path(self, name):
method _dump (line 635) | def _dump(self, obj):
method _open_for_write (line 639) | def _open_for_write(self, filepath):
class Cache (line 659) | class Cache(_Cache):
method __init__ (line 684) | def __init__(self, py_func):
method __repr__ (line 697) | def __repr__(self):
method cache_path (line 701) | def cache_path(self):
method enable (line 704) | def enable(self):
method disable (line 707) | def disable(self):
method flush (line 710) | def flush(self):
method load_overload (line 713) | def load_overload(self, sig, target_context):
method _load_overload (line 724) | def _load_overload(self, sig, target_context):
method save_overload (line 733) | def save_overload(self, sig, data):
method _save_overload (line 740) | def _save_overload(self, sig, data):
method _guard_against_spurious_io_errors (line 751) | def _guard_against_spurious_io_errors(self):
method _index_key (line 764) | def _index_key(self, sig, codegen):
class FunctionCache (line 785) | class FunctionCache(Cache):
function make_library_cache (line 796) | def make_library_cache(prefix):
FILE: numba/core/callconv.py
function _const_int (line 43) | def _const_int(code):
class BaseCallConv (line 58) | class BaseCallConv(object):
method __init__ (line 60) | def __init__(self, context):
method return_optional_value (line 63) | def return_optional_value(self, builder, retty, valty, value):
method return_native_none (line 92) | def return_native_none(self, builder):
method return_exc (line 95) | def return_exc(self, builder):
method return_stop_iteration (line 98) | def return_stop_iteration(self, builder):
method get_return_type (line 101) | def get_return_type(self, ty):
method init_call_helper (line 108) | def init_call_helper(self, builder):
method _get_call_helper (line 116) | def _get_call_helper(self, builder):
method unpack_exception (line 119) | def unpack_exception(self, builder, pyapi, status):
method raise_error (line 122) | def raise_error(self, builder, pyapi, status):
method decode_arguments (line 152) | def decode_arguments(self, builder, argtypes, func):
method _get_arg_packer (line 161) | def _get_arg_packer(self, argtypes):
class MinimalCallConv (line 168) | class MinimalCallConv(BaseCallConv):
method _make_call_helper (line 182) | def _make_call_helper(self, builder):
method return_value (line 185) | def return_value(self, builder, retval):
method return_user_exc (line 192) | def return_user_exc(self, builder, exc, exc_args=None, loc=None,
method return_status_propagate (line 218) | def return_status_propagate(self, builder, status):
method _return_errcode_raw (line 221) | def _return_errcode_raw(self, builder, code):
method _get_return_status (line 226) | def _get_return_status(self, builder, code):
method get_function_type (line 248) | def get_function_type(self, restype, argtypes):
method decorate_function (line 258) | def decorate_function(self, fn, args, fe_argtypes, noalias=False):
method get_arguments (line 268) | def get_arguments(self, func):
method call_function (line 274) | def call_function(self, builder, callee, resty, argtys, args):
class _MinimalCallHelper (line 293) | class _MinimalCallHelper(object):
method __init__ (line 300) | def __init__(self):
method _add_exception (line 303) | def _add_exception(self, exc, exc_args, locinfo):
method get_exception (line 321) | def get_exception(self, exc_id):
class CPUCallConv (line 353) | class CPUCallConv(BaseCallConv):
method _make_call_helper (line 370) | def _make_call_helper(self, builder):
method return_value (line 373) | def return_value(self, builder, retval):
method build_excinfo_struct (line 380) | def build_excinfo_struct(self, exc, exc_args, loc, func_name):
method set_static_user_exc (line 397) | def set_static_user_exc(self, builder, exc, exc_args=None, loc=None,
method return_user_exc (line 454) | def return_user_exc(self, builder, exc, exc_args=None, loc=None,
method unpack_dynamic_exception (line 468) | def unpack_dynamic_exception(self, builder, pyapi, status):
method unpack_exception (line 520) | def unpack_exception(self, builder, pyapi, status):
method emit_unwrap_dynamic_exception_fn (line 544) | def emit_unwrap_dynamic_exception_fn(self, module, st_type, nb_types):
method emit_wrap_args_insts (line 610) | def emit_wrap_args_insts(self, builder, pyapi, struct_type, exc_args):
method set_dynamic_user_exc (line 629) | def set_dynamic_user_exc(self, builder, exc, exc_args, nb_types, loc=N...
method return_dynamic_user_exc (line 722) | def return_dynamic_user_exc(self, builder, exc, exc_args, nb_types,
method _get_try_state (line 731) | def _get_try_state(self, builder):
method check_try_status (line 741) | def check_try_status(self, builder):
method set_try_status (line 752) | def set_try_status(self, builder):
method unset_try_status (line 759) | def unset_try_status(self, builder):
method return_status_propagate (line 772) | def return_status_propagate(self, builder, status):
method _return_errcode_raw (line 779) | def _return_errcode_raw(self, builder, code):
method _get_return_status (line 782) | def _get_return_status(self, builder, code, excinfoptr):
method get_function_type (line 806) | def get_function_type(self, restype, argtypes):
method decorate_function (line 818) | def decorate_function(self, fn, args, fe_argtypes, noalias=False):
method get_arguments (line 861) | def get_arguments(self, func):
method _get_return_argument (line 867) | def _get_return_argument(self, func):
method _get_excinfo_argument (line 870) | def _get_excinfo_argument(self, func):
method call_function (line 873) | def call_function(self, builder, callee, resty, argtys, args,
class ErrorModel (line 917) | class ErrorModel(object):
method __init__ (line 919) | def __init__(self, call_conv):
method fp_zero_division (line 922) | def fp_zero_division(self, builder, exc_args=None, loc=None):
class PythonErrorModel (line 931) | class PythonErrorModel(ErrorModel):
class NumpyErrorModel (line 938) | class NumpyErrorModel(ErrorModel):
function create_error_model (line 959) | def create_error_model(model_name, context):
FILE: numba/core/callwrapper.py
class _ArgManager (line 7) | class _ArgManager(object):
method __init__ (line 11) | def __init__(self, context, builder, api, env_manager, endblk, nargs):
method add_arg (line 20) | def add_arg(self, obj, ty):
method emit_cleanup (line 66) | def emit_cleanup(self):
class _GilManager (line 74) | class _GilManager(object):
method __init__ (line 80) | def __init__(self, builder, api, argman):
method emit_cleanup (line 86) | def emit_cleanup(self):
class PyCallWrapper (line 91) | class PyCallWrapper(object):
method __init__ (line 92) | def __init__(self, context, module, func, fndesc, env, call_helper,
method build (line 101) | def build(self):
method build_wrapper (line 126) | def build_wrapper(self, api, builder, closure, args, kws):
method get_env (line 197) | def get_env(self, api, builder):
method _simplified_return_type (line 212) | def _simplified_return_type(self):
method debug_print (line 224) | def debug_print(self, builder, msg):
FILE: numba/core/ccallback.py
class _CFuncCompiler (line 17) | class _CFuncCompiler(_FunctionCompiler):
method _customize_flags (line 19) | def _customize_flags(self, flags):
class CFunc (line 33) | class CFunc(object):
method __init__ (line 39) | def __init__(self, pyfunc, sig, locals, options,
method enable_caching (line 59) | def enable_caching(self):
method compile (line 63) | def compile(self):
method _compile_uncached (line 78) | def _compile_uncached(self):
method native_name (line 85) | def native_name(self):
method address (line 94) | def address(self):
method cffi (line 101) | def cffi(self):
method ctypes (line 112) | def ctypes(self):
method inspect_llvm (line 121) | def inspect_llvm(self):
method cache_hits (line 128) | def cache_hits(self):
method __repr__ (line 131) | def __repr__(self):
method __call__ (line 134) | def __call__(self, *args, **kwargs):
FILE: numba/core/cgutils.py
function as_bool_bit (line 28) | def as_bool_bit(builder, value):
function make_anonymous_struct (line 32) | def make_anonymous_struct(builder, values, struct_type=None):
function make_bytearray (line 44) | def make_bytearray(buf):
function create_struct_proxy (line 56) | def create_struct_proxy(fe_type, kind='value'):
function copy_struct (line 75) | def copy_struct(dst, src, repl=None):
class _StructProxy (line 92) | class _StructProxy(object):
method __init__ (line 101) | def __init__(self, context, builder, value=None, ref=None):
method _make_refs (line 126) | def _make_refs(self, ref):
method _get_be_type (line 135) | def _get_be_type(self, datamodel):
method _cast_member_to_value (line 138) | def _cast_member_to_value(self, index, val):
method _cast_member_from_value (line 141) | def _cast_member_from_value(self, index, val):
method _get_ptr_by_index (line 144) | def _get_ptr_by_index(self, index):
method _get_ptr_by_name (line 147) | def _get_ptr_by_name(self, attrname):
method __getattr__ (line 151) | def __getattr__(self, field):
method __setattr__ (line 160) | def __setattr__(self, field, value):
method __getitem__ (line 168) | def __getitem__(self, index):
method __setitem__ (line 175) | def __setitem__(self, index, value):
method __len__ (line 198) | def __len__(self):
method _getpointer (line 204) | def _getpointer(self):
method _getvalue (line 210) | def _getvalue(self):
method _setvalue (line 216) | def _setvalue(self, value):
class ValueStructProxy (line 225) | class ValueStructProxy(_StructProxy):
method _get_be_type (line 230) | def _get_be_type(self, datamodel):
method _cast_member_to_value (line 233) | def _cast_member_to_value(self, index, val):
method _cast_member_from_value (line 236) | def _cast_member_from_value(self, index, val):
class DataStructProxy (line 240) | class DataStructProxy(_StructProxy):
method _get_be_type (line 244) | def _get_be_type(self, datamodel):
method _cast_member_to_value (line 247) | def _cast_member_to_value(self, index, val):
method _cast_member_from_value (line 251) | def _cast_member_from_value(self, index, val):
class Structure (line 256) | class Structure(object):
method __init__ (line 263) | def __init__(self, context, builder, value=None, ref=None, cast_ref=Fa...
method _get_ptr_by_index (line 294) | def _get_ptr_by_index(self, index):
method _get_ptr_by_name (line 298) | def _get_ptr_by_name(self, attrname):
method __getattr__ (line 301) | def __getattr__(self, field):
method __setattr__ (line 310) | def __setattr__(self, field, value):
method __getitem__ (line 318) | def __getitem__(self, index):
method __setitem__ (line 325) | def __setitem__(self, index, value):
method __len__ (line 337) | def __len__(self):
method _getpointer (line 343) | def _getpointer(self):
method _getvalue (line 349) | def _getvalue(self):
method _setvalue (line 355) | def _setvalue(self, value):
function alloca_once (line 364) | def alloca_once(builder, ty, size=None, name='', zfill=False):
function sizeof (line 389) | def sizeof(builder, ptr_type):
function alloca_once_value (line 397) | def alloca_once_value(builder, value, name='', zfill=False):
function insert_pure_function (line 408) | def insert_pure_function(module, fnty, name):
function get_or_insert_function (line 419) | def get_or_insert_function(module, fnty, name):
function get_or_insert_named_metadata (line 430) | def get_or_insert_named_metadata(module, name):
function add_global_variable (line 437) | def add_global_variable(module, ty, name, addrspace=0):
function terminate (line 442) | def terminate(builder, bbend):
function get_null_value (line 448) | def get_null_value(ltype):
function is_null (line 452) | def is_null(builder, val):
function is_not_null (line 457) | def is_not_null(builder, val):
function if_unlikely (line 462) | def if_unlikely(builder, pred):
function if_likely (line 466) | def if_likely(builder, pred):
function ifnot (line 470) | def ifnot(builder, pred):
function increment_index (line 474) | def increment_index(builder, val):
function for_range (line 489) | def for_range(builder, count, start=None, intp=None):
function for_range_slice (line 533) | def for_range_slice(builder, start, stop, step, intp=None, inc=True):
function for_range_slice_generic (line 591) | def for_range_slice_generic(builder, start, stop, step):
function loop_nest (line 621) | def loop_nest(builder, shape, intp, order='C'):
function _loop_nest (line 649) | def _loop_nest(builder, shape, intp):
function pack_array (line 658) | def pack_array(builder, values, ty=None):
function pack_struct (line 673) | def pack_struct(builder, values):
function unpack_tuple (line 684) | def unpack_tuple(builder, tup, count=None):
function get_item_pointer (line 696) | def get_item_pointer(context, builder, aryty, ary, inds, wraparound=False,
function do_boundscheck (line 708) | def do_boundscheck(context, builder, ind, dimlen, axis=None):
function get_item_pointer2 (line 738) | def get_item_pointer2(context, builder, data, shape, strides, layout, inds,
function _scalar_pred_against_zero (line 796) | def _scalar_pred_against_zero(builder, value, fpred, icond):
function is_scalar_zero (line 807) | def is_scalar_zero(builder, value):
function is_not_scalar_zero (line 815) | def is_not_scalar_zero(builder, value):
function is_scalar_zero_or_nan (line 824) | def is_scalar_zero_or_nan(builder, value):
function is_scalar_neg (line 837) | def is_scalar_neg(builder, value):
function early_exit_if (line 846) | def early_exit_if(builder, stack: ExitStack, cond):
function early_exit_if_null (line 873) | def early_exit_if_null(builder, stack, obj):
function guard_null (line 881) | def guard_null(context, builder, value, exc_tuple):
function guard_memory_error (line 892) | def guard_memory_error(context, builder, pointer, msg=None):
function if_zero (line 903) | def if_zero(builder, value, likely=False):
function is_pointer (line 914) | def is_pointer(ltyp):
function get_record_member (line 921) | def get_record_member(builder, record, offset, typ):
function is_neg_int (line 927) | def is_neg_int(builder, val):
function gep_inbounds (line 931) | def gep_inbounds(builder, ptr, *inds, **kws):
function gep (line 938) | def gep(builder, ptr, *inds, **kws):
function pointer_add (line 957) | def pointer_add(builder, ptr, offset, return_type=None):
function memset (line 972) | def memset(builder, ptr, size, value):
function memset_padding (line 983) | def memset_padding(builder, ptr):
function global_constant (line 995) | def global_constant(builder_or_module, name, value, linkage='internal'):
function divmod_by_constant (line 1010) | def divmod_by_constant(builder, val, divisor):
function cbranch_or_continue (line 1041) | def cbranch_or_continue(builder, cond, bbtrue):
function memcpy (line 1054) | def memcpy(builder, dst, src, count):
function _raw_memcpy (line 1075) | def _raw_memcpy(builder, func_name, dst, src, count, itemsize, align):
function raw_memcpy (line 1089) | def raw_memcpy(builder, dst, src, count, itemsize, align=1):
function raw_memmove (line 1097) | def raw_memmove(builder, dst, src, count, itemsize, align=1):
function muladd_with_overflow (line 1106) | def muladd_with_overflow(builder, a, b, c):
function printf (line 1120) | def printf(builder, format, *args):
function snprintf (line 1146) | def snprintf(builder, buffer, bufsz, format, *args):
function snprintf_stackbuffer (line 1172) | def snprintf_stackbuffer(builder, bufsz, format, *args):
function normalize_ir_text (line 1186) | def normalize_ir_text(text):
function hexdump (line 1195) | def hexdump(builder, ptr, nbytes):
function is_nonelike (line 1218) | def is_nonelike(ty):
function is_empty_tuple (line 1227) | def is_empty_tuple(ty):
function create_constant_array (line 1235) | def create_constant_array(ty, val):
FILE: numba/core/codegen.py
function _is_x86 (line 27) | def _is_x86(triple):
function _parse_refprune_flags (line 32) | def _parse_refprune_flags():
function dump (line 56) | def dump(header, body, lang):
class _CFG (line 83) | class _CFG(object):
method __init__ (line 91) | def __init__(self, cres, name, py_func, **kwargs):
method pretty_printer (line 99) | def pretty_printer(self, filename=None, view=None, render_format=None,
method display (line 497) | def display(self, filename=None, format='pdf', view=False):
method _repr_svg_ (line 511) | def _repr_svg_(self):
method __repr__ (line 514) | def __repr__(self):
class CodeLibrary (line 518) | class CodeLibrary(metaclass=ABCMeta):
method __init__ (line 529) | def __init__(self, codegen: "CPUCodegen", name: str):
method has_dynamic_globals (line 540) | def has_dynamic_globals(self):
method recorded_timings (line 545) | def recorded_timings(self):
method codegen (line 549) | def codegen(self):
method name (line 556) | def name(self):
method __repr__ (line 559) | def __repr__(self):
method _raise_if_finalized (line 562) | def _raise_if_finalized(self):
method _ensure_finalized (line 567) | def _ensure_finalized(self):
method create_ir_module (line 571) | def create_ir_module(self, name):
method add_linking_library (line 580) | def add_linking_library(self, library):
method add_ir_module (line 587) | def add_ir_module(self, ir_module):
method finalize (line 593) | def finalize(self):
method get_function (line 601) | def get_function(self, name):
method get_llvm_str (line 607) | def get_llvm_str(self):
method get_asm_str (line 613) | def get_asm_str(self):
method enable_object_caching (line 622) | def enable_object_caching(self):
method _get_compiled_object (line 627) | def _get_compiled_object(self):
method _set_compiled_object (line 634) | def _set_compiled_object(self, value):
class CPUCodeLibrary (line 643) | class CPUCodeLibrary(CodeLibrary):
method __init__ (line 645) | def __init__(self, codegen, name):
method _optimize_functions (line 653) | def _optimize_functions(self, ll_module):
method _optimize_final_module (line 667) | def _optimize_final_module(self):
method _get_module_for_linking (line 693) | def _get_module_for_linking(self):
method add_linking_library (line 728) | def add_linking_library(self, library):
method add_ir_module (line 732) | def add_ir_module(self, ir_module):
method add_llvm_module (line 741) | def add_llvm_module(self, ll_module):
method finalize (line 748) | def finalize(self):
method _finalize_dynamic_globals (line 778) | def _finalize_dynamic_globals(self):
method _verify_declare_only_symbols (line 784) | def _verify_declare_only_symbols(self):
method _finalize_final_module (line 792) | def _finalize_final_module(self):
method get_defined_functions (line 818) | def get_defined_functions(self):
method get_function (line 828) | def get_function(self, name):
method _sentry_cache_disable_inspection (line 831) | def _sentry_cache_disable_inspection(self):
method get_llvm_str (line 836) | def get_llvm_str(self):
method get_asm_str (line 840) | def get_asm_str(self):
method get_function_cfg (line 844) | def get_function_cfg(self, name, py_func=None, **kwargs):
method get_disasm_cfg (line 851) | def get_disasm_cfg(self, mangled_name):
method _dump_elf (line 865) | def _dump_elf(cls, buf):
method _object_compiled_hook (line 892) | def _object_compiled_hook(cls, ll_module, buf):
method _object_getbuffer_hook (line 905) | def _object_getbuffer_hook(cls, ll_module):
method serialize_using_bitcode (line 918) | def serialize_using_bitcode(self):
method serialize_using_object_code (line 925) | def serialize_using_object_code(self):
method _unserialize (line 937) | def _unserialize(cls, codegen, state):
class AOTCodeLibrary (line 959) | class AOTCodeLibrary(CPUCodeLibrary):
method emit_native_object (line 961) | def emit_native_object(self):
method emit_bitcode (line 971) | def emit_bitcode(self):
method _finalize_specific (line 980) | def _finalize_specific(self):
class JITCodeLibrary (line 984) | class JITCodeLibrary(CPUCodeLibrary):
method get_pointer_to_function (line 986) | def get_pointer_to_function(self, name):
method _finalize_specific (line 1007) | def _finalize_specific(self):
class RuntimeLinker (line 1013) | class RuntimeLinker(object):
method __init__ (line 1019) | def __init__(self):
method scan_unresolved_symbols (line 1024) | def scan_unresolved_symbols(self, module, engine):
method scan_defined_symbols (line 1043) | def scan_defined_symbols(self, module):
method resolve (line 1051) | def resolve(self, engine):
function _proxy (line 1068) | def _proxy(old):
class JitEngine (line 1075) | class JitEngine(object):
method __init__ (line 1080) | def __init__(self, ee):
method is_symbol_defined (line 1093) | def is_symbol_defined(self, name):
method _load_defined_symbols (line 1098) | def _load_defined_symbols(self, mod):
method add_module (line 1105) | def add_module(self, module):
method add_global_mapping (line 1112) | def add_global_mapping(self, gv, addr):
class Codegen (line 1130) | class Codegen(metaclass=ABCMeta):
method _create_empty_module (line 1142) | def _create_empty_module(self, name):
method _add_module (line 1148) | def _add_module(self, module):
method target_data (line 1155) | def target_data(self):
method create_library (line 1161) | def create_library(self, name, **kwargs):
method unserialize_library (line 1168) | def unserialize_library(self, serialized):
class CPUCodegen (line 1172) | class CPUCodegen(Codegen):
method __init__ (line 1174) | def __init__(self, module_name):
method _init (line 1184) | def _init(self, llvm_module):
method _create_empty_module (line 1224) | def _create_empty_module(self, name):
method _module_pass_manager (line 1231) | def _module_pass_manager(self, **kwargs):
method _function_pass_manager (line 1249) | def _function_pass_manager(self, **kwargs):
method _pass_builder (line 1256) | def _pass_builder(self, **kwargs):
method _check_llvm_bugs (line 1268) | def _check_llvm_bugs(self):
method magic_tuple (line 1298) | def magic_tuple(self):
method _scan_and_fix_unresolved_refs (line 1305) | def _scan_and_fix_unresolved_refs(self, module):
method insert_unresolved_ref (line 1310) | def insert_unresolved_ref(self, builder, fnty, name):
method _get_host_cpu_name (line 1322) | def _get_host_cpu_name(self):
method _get_host_cpu_features (line 1327) | def _get_host_cpu_features(self):
class AOTCPUCodegen (line 1333) | class AOTCPUCodegen(CPUCodegen):
method __init__ (line 1341) | def __init__(self, module_name, cpu_name=None):
method _customize_tm_options (line 1346) | def _customize_tm_options(self, options):
method _customize_tm_features (line 1355) | def _customize_tm_features(self):
method _add_module (line 1360) | def _add_module(self, module):
class JITCPUCodegen (line 1364) | class JITCPUCodegen(CPUCodegen):
method _customize_tm_options (line 1371) | def _customize_tm_options(self, options):
method _customize_tm_features (line 1398) | def _customize_tm_features(self):
method _add_module (line 1402) | def _add_module(self, module):
method set_env (line 1410) | def set_env(self, env_name, env):
function initialize_llvm (line 1420) | def initialize_llvm():
function get_host_cpu_features (line 1427) | def get_host_cpu_features():
FILE: numba/core/compiler.py
class Flags (line 42) | class Flags(TargetConfig):
class CompileResult (line 189) | class CompileResult(namedtuple("_CompileResult", CR_FIELDS)):
method _reduce (line 196) | def _reduce(self):
method _find_referenced_environments (line 212) | def _find_referenced_environments(self):
method _rebuild (line 228) | def _rebuild(cls, target_context, libdata, fndesc, env,
method codegen (line 262) | def codegen(self):
method dump (line 265) | def dump(self, tab=''):
function sanitize_compile_result_entries (line 279) | def sanitize_compile_result_entries(entries):
function compile_result (line 295) | def compile_result(**entries):
function run_frontend (line 300) | def run_frontend(func, inline_closures=False, emit_dels=False):
class _CompileStatus (line 323) | class _CompileStatus(object):
method __init__ (line 329) | def __init__(self, can_fallback):
method __repr__ (line 333) | def __repr__(self):
class _EarlyPipelineCompletion (line 340) | class _EarlyPipelineCompletion(Exception):
method __init__ (line 345) | def __init__(self, result):
class StateDict (line 349) | class StateDict(dict):
method __getattr__ (line 355) | def __getattr__(self, attr):
method __setattr__ (line 361) | def __setattr__(self, attr, value):
function _make_subtarget (line 365) | def _make_subtarget(targetctx, flags):
class CompilerBase (line 386) | class CompilerBase(object):
method __init__ (line 391) | def __init__(self, typingctx, targetctx, library, args, return_type, f...
method compile_extra (line 433) | def compile_extra(self, func):
method compile_ir (line 441) | def compile_ir(self, func_ir, lifted=(), lifted_from=None):
method define_pipelines (line 451) | def define_pipelines(self):
method _compile_core (line 456) | def _compile_core(self):
method _compile_bytecode (line 500) | def _compile_bytecode(self):
method _compile_ir (line 507) | def _compile_ir(self):
class Compiler (line 515) | class Compiler(CompilerBase):
method define_pipelines (line 519) | def define_pipelines(self):
class DefaultPassBuilder (line 528) | class DefaultPassBuilder(object):
method define_nopython_pipeline (line 540) | def define_nopython_pipeline(state, name='nopython'):
method define_nopython_lowering_pipeline (line 559) | def define_nopython_lowering_pipeline(state, name='nopython_lowering'):
method define_parfor_gufunc_nopython_lowering_pipeline (line 579) | def define_parfor_gufunc_nopython_lowering_pipeline(
method define_typed_pipeline (line 599) | def define_typed_pipeline(state, name="typed"):
method define_parfor_gufunc_pipeline (line 623) | def define_parfor_gufunc_pipeline(state, name="parfor_gufunc_typed"):
method define_untyped_pipeline (line 635) | def define_untyped_pipeline(state, name='untyped'):
method define_objectmode_pipeline (line 683) | def define_objectmode_pipeline(state, name='object'):
function compile_extra (line 713) | def compile_extra(typingctx, targetctx, func, args, return_type, flags,
function compile_ir (line 742) | def compile_ir(typingctx, targetctx, func_ir, args, return_type, flags,
function compile_internal (line 806) | def compile_internal(typingctx, targetctx, library,
FILE: numba/core/compiler_lock.py
class _CompilerLock (line 7) | class _CompilerLock(object):
method __init__ (line 8) | def __init__(self):
method acquire (line 11) | def acquire(self):
method release (line 15) | def release(self):
method __enter__ (line 19) | def __enter__(self):
method __exit__ (line 22) | def __exit__(self, exc_val, exc_type, traceback):
method is_locked (line 25) | def is_locked(self):
method __call__ (line 31) | def __call__(self, func):
method _is_owned (line 38) | def _is_owned(self):
function require_global_compiler_lock (line 52) | def require_global_compiler_lock():
FILE: numba/core/compiler_machinery.py
class SimpleTimer (line 18) | class SimpleTimer(object):
method __enter__ (line 23) | def __enter__(self):
method __exit__ (line 27) | def __exit__(self, *exc):
class CompilerPass (line 31) | class CompilerPass(metaclass=ABCMeta):
method __init__ (line 36) | def __init__(self, *args, **kwargs):
method name (line 41) | def name(cls):
method pass_id (line 48) | def pass_id(self):
method pass_id (line 55) | def pass_id(self, val):
method analysis (line 62) | def analysis(self):
method analysis (line 69) | def analysis(self, val):
method run_initialization (line 75) | def run_initialization(self, *args, **kwargs):
method run_pass (line 83) | def run_pass(self, *args, **kwargs):
method run_finalizer (line 90) | def run_finalizer(self, *args, **kwargs):
method get_analysis_usage (line 97) | def get_analysis_usage(self, AU):
method get_analysis (line 102) | def get_analysis(self, pass_name):
class SSACompliantMixin (line 109) | class SSACompliantMixin(object):
class FunctionPass (line 116) | class FunctionPass(CompilerPass):
class AnalysisPass (line 122) | class AnalysisPass(CompilerPass):
class LoweringPass (line 128) | class LoweringPass(CompilerPass):
class AnalysisUsage (line 134) | class AnalysisUsage(object):
method __init__ (line 138) | def __init__(self):
method get_required_set (line 142) | def get_required_set(self):
method get_preserved_set (line 145) | def get_preserved_set(self):
method add_required (line 148) | def add_required(self, pss):
method add_preserved (line 151) | def add_preserved(self, pss):
method __str__ (line 154) | def __str__(self):
function debug_print (line 161) | def debug_print(*args, **kwargs):
class PassManager (line 169) | class PassManager(object):
method __init__ (line 176) | def __init__(self, pipeline_name):
method _validate_pass (line 187) | def _validate_pass(self, pass_cls):
method add_pass (line 200) | def add_pass(self, pss, description=""):
method add_pass_after (line 209) | def add_pass_after(self, pass_cls, location):
method _debug_init (line 226) | def _debug_init(self):
method finalize (line 245) | def finalize(self):
method finalized (line 256) | def finalized(self):
method _patch_error (line 259) | def _patch_error(self, desc, exc):
method _runPass (line 268) | def _runPass(self, index, pss, internal_state):
method run (line 342) | def run(self, state):
method dependency_analysis (line 369) | def dependency_analysis(self):
class PassRegistry (line 408) | class PassRegistry(object):
method register (line 417) | def register(self, mutates_CFG, analysis_only):
method is_registered (line 428) | def is_registered(self, clazz):
method get (line 431) | def get(self, clazz):
method _does_pass_name_alias (line 435) | def _does_pass_name_alias(self, check):
method find_by_name (line 441) | def find_by_name(self, class_name):
method dump (line 449) | def dump(self):
FILE: numba/core/config.py
function _parse_cc (line 31) | def _parse_cc(text):
function _os_supports_avx (line 47) | def _os_supports_avx():
class _OptLevel (line 73) | class _OptLevel(int):
method __new__ (line 81) | def __new__(cls, *args, **kwargs):
method is_opt_max (line 92) | def is_opt_max(self):
method __repr__ (line 97) | def __repr__(self):
function _process_opt_level (line 105) | def _process_opt_level(opt_level):
class _EnvReloader (line 116) | class _EnvReloader(object):
method __init__ (line 118) | def __init__(self):
method reset (line 121) | def reset(self):
method update (line 125) | def update(self, force=False):
method validate (line 158) | def validate(self):
method process_environ (line 179) | def process_environ(self, environ):
function reload_config (line 593) | def reload_config():
FILE: numba/core/consts.py
class ConstantInference (line 9) | class ConstantInference(object):
method __init__ (line 18) | def __init__(self, func_ir):
method infer_constant (line 24) | def infer_constant(self, name, loc=None):
method _fail (line 47) | def _fail(self, val):
method _do_infer (line 56) | def _do_infer(self, name):
method _infer_expr (line 73) | def _infer_expr(self, expr):
method _infer_call (line 89) | def _infer_call(self, func, expr):
method _infer_getattr (line 111) | def _infer_getattr(self, value, expr):
FILE: numba/core/controlflow.py
class CFBlock (line 23) | class CFBlock(object):
method __init__ (line 25) | def __init__(self, offset):
method __repr__ (line 36) | def __repr__(self):
method __iter__ (line 42) | def __iter__(self):
class Loop (line 46) | class Loop(collections.namedtuple("Loop",
method __eq__ (line 59) | def __eq__(self, other):
method __hash__ (line 62) | def __hash__(self):
class _DictOfContainers (line 66) | class _DictOfContainers(collections.defaultdict):
method __eq__ (line 72) | def __eq__(self, other):
method __ne__ (line 80) | def __ne__(self, other):
method _non_empty_items (line 87) | def _non_empty_items(self):
class CFGraph (line 91) | class CFGraph(object):
method __init__ (line 96) | def __init__(self):
method add_node (line 103) | def add_node(self, node):
method add_edge (line 110) | def add_edge(self, src, dest, data=None):
method successors (line 125) | def successors(self, src):
method predecessors (line 133) | def predecessors(self, dest):
method set_entry_point (line 141) | def set_entry_point(self, node):
method process (line 148) | def process(self):
method dominators (line 158) | def dominators(self):
method post_dominators (line 167) | def post_dominators(self):
method immediate_dominators (line 177) | def immediate_dominators(self):
method dominance_frontier (line 186) | def dominance_frontier(self):
method dominator_tree (line 197) | def dominator_tree(self):
method _exit_points (line 207) | def _exit_points(self):
method _doms (line 211) | def _doms(self):
method _back_edges (line 215) | def _back_edges(self):
method _topo_order (line 219) | def _topo_order(self):
method _descs (line 223) | def _descs(self):
method _loops (line 227) | def _loops(self):
method _in_loops (line 231) | def _in_loops(self):
method _post_doms (line 235) | def _post_doms(self):
method _idom (line 239) | def _idom(self):
method _df (line 243) | def _df(self):
method _domtree (line 247) | def _domtree(self):
method descendents (line 250) | def descendents(self, node):
method entry_point (line 257) | def entry_point(self):
method exit_points (line 264) | def exit_points(self):
method backbone (line 270) | def backbone(self):
method loops (line 279) | def loops(self):
method in_loops (line 286) | def in_loops(self, node):
method dead_nodes (line 293) | def dead_nodes(self):
method nodes (line 299) | def nodes(self):
method topo_order (line 305) | def topo_order(self):
method topo_sort (line 312) | def topo_sort(self, nodes, reverse=False):
method dump (line 325) | def dump(self, file=None):
method render_dot (line 346) | def render_dot(self, filename="numba_cfg.dot"):
method _add_edge (line 375) | def _add_edge(self, from_, to, data=None):
method _remove_node_edges (line 382) | def _remove_node_edges(self, node):
method _dfs (line 390) | def _dfs(self, entries=None):
method _eliminate_dead_blocks (line 403) | def _eliminate_dead_blocks(self):
method _find_exit_points (line 417) | def _find_exit_points(self):
method _find_postorder (line 427) | def _find_postorder(self):
method _find_immediate_dominators (line 451) | def _find_immediate_dominators(self):
method _find_dominator_tree (line 491) | def _find_dominator_tree(self):
method _find_dominance_frontier (line 504) | def _find_dominance_frontier(self):
method _find_dominators_internal (line 519) | def _find_dominators_internal(self, post=False):
method _find_dominators (line 562) | def _find_dominators(self):
method _find_post_dominators (line 565) | def _find_post_dominators(self):
method _find_back_edges (line 586) | def _find_back_edges(self, stats=None):
method _find_topo_order (line 641) | def _find_topo_order(self):
method _find_descendents (line 659) | def _find_descendents(self):
method _find_loops (line 669) | def _find_loops(self):
method _find_in_loops (line 705) | def _find_in_loops(self):
method _dump_adj_lists (line 716) | def _dump_adj_lists(self, file):
method __eq__ (line 722) | def __eq__(self, other):
method __ne__ (line 733) | def __ne__(self, other):
class ControlFlowAnalysis (line 737) | class ControlFlowAnalysis(object):
method __init__ (line 754) | def __init__(self, bytecode):
method iterblocks (line 768) | def iterblocks(self):
method iterliveblocks (line 775) | def iterliveblocks(self):
method incoming_blocks (line 783) | def incoming_blocks(self, block):
method dump (line 791) | def dump(self, file=None):
method run (line 794) | def run(self):
method jump (line 856) | def jump(self, target, pops=0):
method _iter_inst (line 863) | def _iter_inst(self):
method _use_new_block (line 871) | def _use_new_block(self, inst):
method _start_new_block (line 882) | def _start_new_block(self, inst):
method _guard_with_as (line 887) | def _guard_with_as(self, current_inst):
method op_SETUP_LOOP (line 899) | def op_SETUP_LOOP(self, inst):
method op_SETUP_WITH (line 909) | def op_SETUP_WITH(self, inst):
method op_POP_BLOCK (line 919) | def op_POP_BLOCK(self, inst):
method op_FOR_ITER (line 922) | def op_FOR_ITER(self, inst):
method _op_ABSOLUTE_JUMP_IF (line 927) | def _op_ABSOLUTE_JUMP_IF(self, inst):
method _op_ABSOLUTE_JUMP_OR_POP (line 942) | def _op_ABSOLUTE_JUMP_OR_POP(self, inst):
method op_JUMP_ABSOLUTE (line 950) | def op_JUMP_ABSOLUTE(self, inst):
method op_JUMP_FORWARD (line 954) | def op_JUMP_FORWARD(self, inst):
method op_RETURN_VALUE (line 960) | def op_RETURN_VALUE(self, inst):
method op_RETURN_CONST (line 965) | def op_RETURN_CONST(self, inst):
method op_RAISE_VARARGS (line 973) | def op_RAISE_VARARGS(self, inst):
method op_BREAK_LOOP (line 977) | def op_BREAK_LOOP(self, inst):
FILE: numba/core/cpu.py
class ClosureBody (line 24) | class ClosureBody(cgutils.Structure):
class EnvBody (line 28) | class EnvBody(cgutils.Structure):
class CPUContext (line 35) | class CPUContext(BaseContext):
method __init__ (line 41) | def __init__(self, typingctx, target='cpu'):
method create_module (line 45) | def create_module(self, name):
method init (line 49) | def init(self):
method apply_target_attributes (line 60) | def apply_target_attributes(self, llvm_func, argtypes=None, restype=No...
method load_additional_registries (line 97) | def load_additional_registries(self):
method target_data (line 142) | def target_data(self):
method with_aot_codegen (line 145) | def with_aot_codegen(self, name, **aot_options):
method codegen (line 150) | def codegen(self):
method call_conv (line 154) | def call_conv(self):
method get_env_body (line 157) | def get_env_body(self, builder, envptr):
method get_env_manager (line 166) | def get_env_manager(self, builder, return_pyobject=False):
method get_generator_state (line 179) | def get_generator_state(self, builder, genptr, return_type):
method build_list (line 188) | def build_list(self, builder, list_type, items):
method build_set (line 195) | def build_set(self, builder, set_type, items):
method build_map (line 202) | def build_map(self, builder, dict_type, item_types, items):
method post_lowering (line 207) | def post_lowering(self, mod, library):
method create_cpython_wrapper (line 218) | def create_cpython_wrapper(self, library, fndesc, env, call_helper,
method create_cfunc_wrapper (line 230) | def create_cfunc_wrapper(self, library, fndesc, env, call_helper):
method get_executable (line 262) | def get_executable(self, library, fndesc, env):
method calc_array_sizeof (line 291) | def calc_array_sizeof(self, ndim):
method get_ufunc_info (line 299) | def get_ufunc_info(self, ufunc_key):
class CPUTargetOptions (line 327) | class CPUTargetOptions(_options_mixin, TargetOptions):
method finalize (line 328) | def finalize(self, flags, options):
FILE: numba/core/cpu_options.py
class AbstractOptionValue (line 7) | class AbstractOptionValue(metaclass=ABCMeta):
method encode (line 11) | def encode(self) -> str:
method __repr__ (line 16) | def __repr__(self) -> str:
class FastMathOptions (line 20) | class FastMathOptions(AbstractOptionValue):
method __init__ (line 25) | def __init__(self, value):
method __bool__ (line 53) | def __bool__(self):
method encode (line 58) | def encode(self) -> str:
method __eq__ (line 61) | def __eq__(self, other):
class ParallelOptions (line 67) | class ParallelOptions(AbstractOptionValue):
method __init__ (line 74) | def __init__(self, value):
method _get_values (line 112) | def _get_values(self):
method __eq__ (line 117) | def __eq__(self, other):
method encode (line 122) | def encode(self) -> str:
class InlineOptions (line 126) | class InlineOptions(AbstractOptionValue):
method __init__ (line 131) | def __init__(self, value):
method is_never_inline (line 148) | def is_never_inline(self):
method is_always_inline (line 155) | def is_always_inline(self):
method has_cost_model (line 162) | def has_cost_model(self):
method value (line 169) | def value(self):
method __eq__ (line 175) | def __eq__(self, other):
method encode (line 180) | def encode(self) -> str:
FILE: numba/core/datamodel/manager.py
class DataModelManager (line 7) | class DataModelManager(object):
method __init__ (line 11) | def __init__(self, handlers=None):
method register (line 23) | def register(self, fetypecls, handler):
method lookup (line 29) | def lookup(self, fetype):
method __getitem__ (line 40) | def __getitem__(self, fetype):
method copy (line 45) | def copy(self):
method chain (line 53) | def chain(self, other_manager):
FILE: numba/core/datamodel/models.py
class DataModel (line 11) | class DataModel(object):
method __init__ (line 34) | def __init__(self, dmm, fe_type):
method fe_type (line 39) | def fe_type(self):
method get_value_type (line 42) | def get_value_type(self):
method get_data_type (line 45) | def get_data_type(self):
method get_argument_type (line 48) | def get_argument_type(self):
method get_return_type (line 53) | def get_return_type(self):
method as_data (line 56) | def as_data(self, builder, value):
method as_argument (line 59) | def as_argument(self, builder, value):
method as_return (line 66) | def as_return(self, builder, value):
method from_data (line 69) | def from_data(self, builder, value):
method from_argument (line 72) | def from_argument(self, builder, value):
method from_return (line 79) | def from_return(self, builder, value):
method load_from_data_pointer (line 82) | def load_from_data_pointer(self, builder, ptr, align=None):
method traverse (line 89) | def traverse(self, builder):
method traverse_models (line 97) | def traverse_models(self):
method traverse_types (line 103) | def traverse_types(self):
method inner_models (line 119) | def inner_models(self):
method get_nrt_meminfo (line 125) | def get_nrt_meminfo(self, builder, value):
method has_nrt_meminfo (line 132) | def has_nrt_meminfo(self):
method contains_nrt_meminfo (line 135) | def contains_nrt_meminfo(self):
method _compared_fields (line 141) | def _compared_fields(self):
method __hash__ (line 144) | def __hash__(self):
method __eq__ (line 147) | def __eq__(self, other):
method __ne__ (line 153) | def __ne__(self, other):
class OmittedArgDataModel (line 158) | class OmittedArgDataModel(DataModel):
method get_value_type (line 164) | def get_value_type(self):
method get_argument_type (line 168) | def get_argument_type(self):
method as_argument (line 171) | def as_argument(self, builder, val):
method from_argument (line 174) | def from_argument(self, builder, val):
class BooleanModel (line 181) | class BooleanModel(DataModel):
method get_value_type (line 185) | def get_value_type(self):
method get_data_type (line 188) | def get_data_type(self):
method get_return_type (line 191) | def get_return_type(self):
method get_argument_type (line 194) | def get_argument_type(self):
method as_data (line 197) | def as_data(self, builder, value):
method as_argument (line 200) | def as_argument(self, builder, value):
method as_return (line 203) | def as_return(self, builder, value):
method from_data (line 206) | def from_data(self, builder, value):
method from_argument (line 217) | def from_argument(self, builder, value):
method from_return (line 220) | def from_return(self, builder, value):
class PrimitiveModel (line 224) | class PrimitiveModel(DataModel):
method __init__ (line 229) | def __init__(self, dmm, fe_type, be_type):
method get_value_type (line 233) | def get_value_type(self):
method as_data (line 236) | def as_data(self, builder, value):
method as_argument (line 239) | def as_argument(self, builder, value):
method as_return (line 242) | def as_return(self, builder, value):
method from_data (line 245) | def from_data(self, builder, value):
method from_argument (line 248) | def from_argument(self, builder, value):
method from_return (line 251) | def from_return(self, builder, value):
class ProxyModel (line 255) | class ProxyModel(DataModel):
method get_value_type (line 260) | def get_value_type(self):
method get_data_type (line 263) | def get_data_type(self):
method get_return_type (line 266) | def get_return_type(self):
method get_argument_type (line 269) | def get_argument_type(self):
method as_data (line 272) | def as_data(self, builder, value):
method as_argument (line 275) | def as_argument(self, builder, value):
method as_return (line 278) | def as_return(self, builder, value):
method from_data (line 281) | def from_data(self, builder, value):
method from_argument (line 284) | def from_argument(self, builder, value):
method from_return (line 287) | def from_return(self, builder, value):
class EnumModel (line 293) | class EnumModel(ProxyModel):
method __init__ (line 297) | def __init__(self, dmm, fe_type):
class OpaqueModel (line 330) | class OpaqueModel(PrimitiveModel):
method __init__ (line 336) | def __init__(self, dmm, fe_type):
class MemInfoModel (line 342) | class MemInfoModel(OpaqueModel):
method inner_models (line 344) | def inner_models(self):
method has_nrt_meminfo (line 347) | def has_nrt_meminfo(self):
method get_nrt_meminfo (line 350) | def get_nrt_meminfo(self, builder, value):
class IntegerModel (line 356) | class IntegerModel(PrimitiveModel):
method __init__ (line 357) | def __init__(self, dmm, fe_type):
class FloatModel (line 363) | class FloatModel(PrimitiveModel):
method __init__ (line 364) | def __init__(self, dmm, fe_type):
class PointerModel (line 375) | class PointerModel(PrimitiveModel):
method __init__ (line 376) | def __init__(self, dmm, fe_type):
class EphemeralPointerModel (line 384) | class EphemeralPointerModel(PointerModel):
method get_data_type (line 386) | def get_data_type(self):
method as_data (line 389) | def as_data(self, builder, value):
method from_data (line 393) | def from_data(self, builder, value):
method load_from_data_pointer (line 396) | def load_from_data_pointer(self, builder, ptr, align=None):
class EphemeralArrayModel (line 401) | class EphemeralArrayModel(PointerModel):
method __init__ (line 403) | def __init__(self, dmm, fe_type):
method get_data_type (line 408) | def get_data_type(self):
method as_data (line 411) | def as_data(self, builder, value):
method from_data (line 416) | def from_data(self, builder, value):
method load_from_data_pointer (line 419) | def load_from_data_pointer(self, builder, ptr, align=None):
class ExternalFuncPointerModel (line 424) | class ExternalFuncPointerModel(PrimitiveModel):
method __init__ (line 425) | def __init__(self, dmm, fe_type):
class UniTupleModel (line 438) | class UniTupleModel(DataModel):
method __init__ (line 439) | def __init__(self, dmm, fe_type):
method get_value_type (line 448) | def get_value_type(self):
method get_data_type (line 451) | def get_data_type(self):
method get_return_type (line 454) | def get_return_type(self):
method get_argument_type (line 457) | def get_argument_type(self):
method as_argument (line 460) | def as_argument(self, builder, value):
method from_argument (line 468) | def from_argument(self, builder, value):
method as_data (line 475) | def as_data(self, builder, value):
method from_data (line 483) | def from_data(self, builder, value):
method as_return (line 491) | def as_return(self, builder, value):
method from_return (line 494) | def from_return(self, builder, value):
method traverse (line 497) | def traverse(self, builder):
method inner_models (line 503) | def inner_models(self):
class CompositeModel (line 507) | class CompositeModel(DataModel):
class StructModel (line 514) | class StructModel(CompositeModel):
method __init__ (line 518) | def __init__(self, dmm, fe_type, members):
method get_member_fe_type (line 526) | def get_member_fe_type(self, name):
method get_value_type (line 533) | def get_value_type(self):
method get_data_type (line 539) | def get_data_type(self):
method get_argument_type (line 545) | def get_argument_type(self):
method get_return_type (line 548) | def get_return_type(self):
method _as (line 551) | def _as(self, methname, builder, value):
method _from (line 558) | def _from(self, methname, builder, value):
method as_data (line 567) | def as_data(self, builder, value):
method from_data (line 589) | def from_data(self, builder, value):
method load_from_data_pointer (line 600) | def load_from_data_pointer(self, builder, ptr, align=None):
method as_argument (line 612) | def as_argument(self, builder, value):
method from_argument (line 615) | def from_argument(self, builder, value):
method as_return (line 618) | def as_return(self, builder, value):
method from_return (line 625) | def from_return(self, builder, value):
method get (line 630) | def get(self, builder, val, pos):
method set (line 651) | def set(self, builder, stval, val, pos):
method get_field_position (line 674) | def get_field_position(self, field):
method field_count (line 682) | def field_count(self):
method get_type (line 685) | def get_type(self, pos):
method get_model (line 698) | def get_model(self, pos):
method traverse (line 709) | def traverse(self, builder):
method inner_models (line 718) | def inner_models(self):
class ComplexModel (line 723) | class ComplexModel(StructModel):
method __init__ (line 726) | def __init__(self, dmm, fe_type):
class TupleModel (line 739) | class TupleModel(StructModel):
method __init__ (line 740) | def __init__(self, dmm, fe_type):
class UnionModel (line 746) | class UnionModel(StructModel):
method __init__ (line 747) | def __init__(self, dmm, fe_type):
class PairModel (line 758) | class PairModel(StructModel):
method __init__ (line 759) | def __init__(self, dmm, fe_type):
class ListPayloadModel (line 766) | class ListPayloadModel(StructModel):
method __init__ (line 767) | def __init__(self, dmm, fe_type):
class ListModel (line 783) | class ListModel(StructModel):
method __init__ (line 784) | def __init__(self, dmm, fe_type):
class ListIterModel (line 796) | class ListIterModel(StructModel):
method __init__ (line 797) | def __init__(self, dmm, fe_type):
class SetEntryModel (line 809) | class SetEntryModel(StructModel):
method __init__ (line 810) | def __init__(self, dmm, fe_type):
class SetPayloadModel (line 821) | class SetPayloadModel(StructModel):
method __init__ (line 822) | def __init__(self, dmm, fe_type):
class SetModel (line 841) | class SetModel(StructModel):
method __init__ (line 842) | def __init__(self, dmm, fe_type):
class SetIterModel (line 853) | class SetIterModel(StructModel):
method __init__ (line 854) | def __init__(self, dmm, fe_type):
class ArrayModel (line 872) | class ArrayModel(StructModel):
method __init__ (line 873) | def __init__(self, dmm, fe_type):
class ArrayFlagsModel (line 889) | class ArrayFlagsModel(StructModel):
method __init__ (line 890) | def __init__(self, dmm, fe_type):
class NestedArrayModel (line 898) | class NestedArrayModel(ArrayModel):
method __init__ (line 899) | def __init__(self, dmm, fe_type):
method as_storage_type (line 903) | def as_storage_type(self):
class OptionalModel (line 912) | class OptionalModel(StructModel):
method __init__ (line 913) | def __init__(self, dmm, fe_type):
method get_return_type (line 921) | def get_return_type(self):
method as_return (line 924) | def as_return(self, builder, value):
method from_return (line 927) | def from_return(self, builder, value):
method traverse (line 930) | def traverse(self, builder):
class RecordModel (line 943) | class RecordModel(CompositeModel):
method __init__ (line 944) | def __init__(self, dmm, fe_type):
method get_value_type (line 950) | def get_value_type(self):
method get_argument_type (line 955) | def get_argument_type(self):
method get_return_type (line 958) | def get_return_type(self):
method get_data_type (line 961) | def get_data_type(self):
method as_data (line 964) | def as_data(self, builder, value):
method from_data (line 967) | def from_data(self, builder, value):
method as_argument (line 970) | def as_argument(self, builder, value):
method from_argument (line 973) | def from_argument(self, builder, value):
method as_return (line 976) | def as_return(self, builder, value):
method from_return (line 979) | def from_return(self, builder, value):
method load_from_data_pointer (line 982) | def load_from_data_pointer(self, builder, ptr, align=None):
class UnicodeCharSeq (line 987) | class UnicodeCharSeq(DataModel):
method __init__ (line 988) | def __init__(self, dmm, fe_type):
method get_value_type (line 993) | def get_value_type(self):
method get_data_type (line 996) | def get_data_type(self):
method as_data (line 999) | def as_data(self, builder, value):
method from_data (line 1002) | def from_data(self, builder, value):
method as_return (line 1005) | def as_return(self, builder, value):
method from_return (line 1008) | def from_return(self, builder, value):
method as_argument (line 1011) | def as_argument(self, builder, value):
method from_argument (line 1014) | def from_argument(self, builder, value):
class CharSeq (line 1019) | class CharSeq(DataModel):
method __init__ (line 1020) | def __init__(self, dmm, fe_type):
method get_value_type (line 1025) | def get_value_type(self):
method get_data_type (line 1028) | def get_data_type(self):
method as_data (line 1031) | def as_data(self, builder, value):
method from_data (line 1034) | def from_data(self, builder, value):
method as_return (line 1037) | def as_return(self, builder, value):
method from_return (line 1040) | def from_return(self, builder, value):
method as_argument (line 1043) | def as_argument(self, builder, value):
method from_argument (line 1046) | def from_argument(self, builder, value):
class CContiguousFlatIter (line 1050) | class CContiguousFlatIter(StructModel):
method __init__ (line 1051) | def __init__(self, dmm, fe_type, need_indices):
class FlatIter (line 1066) | class FlatIter(StructModel):
method __init__ (line 1067) | def __init__(self, dmm, fe_type):
class UniTupleIter (line 1080) | class UniTupleIter(StructModel):
method __init__ (line 1081) | def __init__(self, dmm, fe_type):
class SliceModel (line 1089) | class SliceModel(StructModel):
method __init__ (line 1090) | def __init__(self, dmm, fe_type):
class NPDatetimeModel (line 1100) | class NPDatetimeModel(PrimitiveModel):
method __init__ (line 1101) | def __init__(self, dmm, fe_type):
class ArrayIterator (line 1107) | class ArrayIterator(StructModel):
method __init__ (line 1108) | def __init__(self, dmm, fe_type):
class EnumerateType (line 1116) | class EnumerateType(StructModel):
method __init__ (line 1117) | def __init__(self, dmm, fe_type):
class ZipType (line 1125) | class ZipType(StructModel):
method __init__ (line 1126) | def __init__(self, dmm, fe_type):
class RangeIteratorType (line 1133) | class RangeIteratorType(StructModel):
method __init__ (line 1134) | def __init__(self, dmm, fe_type):
class GeneratorModel (line 1144) | class GeneratorModel(CompositeModel):
method __init__ (line 1145) | def __init__(self, dmm, fe_type):
method get_value_type (line 1162) | def get_value_type(self):
method get_argument_type (line 1168) | def get_argument_type(self):
method get_return_type (line 1171) | def get_return_type(self):
method get_data_type (line 1174) | def get_data_type(self):
method as_argument (line 1177) | def as_argument(self, builder, value):
method from_argument (line 1180) | def from_argument(self, builder, value):
method as_return (line 1183) | def as_return(self, builder, value):
method from_return (line 1186) | def from_return(self, builder, value):
method as_data (line 1189) | def as_data(self, builder, value):
method from_data (line 1192) | def from_data(self, builder, value):
class ArrayCTypesModel (line 1199) | class ArrayCTypesModel(StructModel):
method __init__ (line 1200) | def __init__(self, dmm, fe_type):
class RangeModel (line 1208) | class RangeModel(StructModel):
method __init__ (line 1209) | def __init__(self, dmm, fe_type):
class NdIndexModel (line 1220) | class NdIndexModel(StructModel):
method __init__ (line 1221) | def __init__(self, dmm, fe_type):
function handle_numpy_flat_type (line 1231) | def handle_numpy_flat_type(dmm, ty):
function handle_numpy_ndenumerate_type (line 1238) | def handle_numpy_ndenumerate_type(dmm, ty):
function handle_bound_function (line 1245) | def handle_bound_function(dmm, ty):
class NdIter (line 1251) | class NdIter(StructModel):
method __init__ (line 1252) | def __init__(self, dmm, fe_type):
class DeferredStructModel (line 1286) | class DeferredStructModel(CompositeModel):
method __init__ (line 1287) | def __init__(self, dmm, fe_type):
method get_value_type (line 1292) | def get_value_type(self):
method get_data_type (line 1295) | def get_data_type(self):
method get_argument_type (line 1298) | def get_argument_type(self):
method as_argument (line 1301) | def as_argument(self, builder, value):
method from_argument (line 1305) | def from_argument(self, builder, value):
method from_data (line 1309) | def from_data(self, builder, value):
method as_data (line 1316) | def as_data(self, builder, value):
method from_return (line 1323) | def from_return(self, builder, value):
method as_return (line 1326) | def as_return(self, builder, value):
method get (line 1329) | def get(self, builder, value):
method set (line 1332) | def set(self, builder, value, content):
method make_uninitialized (line 1335) | def make_uninitialized(self, kind='value'):
method _define (line 1343) | def _define(self):
method _define_value_type (line 1349) | def _define_value_type(self, value_type):
method _define_data_type (line 1353) | def _define_data_type(self, data_type):
method _actual_model (line 1358) | def _actual_model(self):
method traverse (line 1361) | def traverse(self, builder):
class StructPayloadModel (line 1367) | class StructPayloadModel(StructModel):
method __init__ (line 1370) | def __init__(self, dmm, fe_typ):
class StructRefModel (line 1375) | class StructRefModel(StructModel):
method __init__ (line 1379) | def __init__(self, dmm, fe_typ):
FILE: numba/core/datamodel/packer.py
class DataPacker (line 7) | class DataPacker(object):
method __init__ (line 15) | def __init__(self, dmm, fe_types):
method as_data (line 27) | def as_data(self, builder, values):
method _do_load (line 35) | def _do_load(self, builder, ptr, formal_list=None):
method load (line 46) | def load(self, builder, ptr):
method load_into (line 52) | def load_into(self, builder, ptr, formal_list):
class ArgPacker (line 60) | class ArgPacker(object):
method __init__ (line 73) | def __init__(self, dmm, fe_args):
method as_arguments (line 87) | def as_arguments(self, builder, values):
method from_arguments (line 104) | def from_arguments(self, builder, args):
method assign_names (line 115) | def assign_names(self, args, names):
method _assign_names (line 123) | def _assign_names(self, val_or_nested, name, depth=()):
method argument_types (line 133) | def argument_types(self):
function _flatten (line 140) | def _flatten(iterable):
class _Unflattener (line 159) | class _Unflattener(object):
method __init__ (line 167) | def __init__(self, pattern):
method _build_unflatten_code (line 170) | def _build_unflatten_code(self, iterable):
method unflatten (line 190) | def unflatten(self, flatiter):
FILE: numba/core/datamodel/registry.py
function register (line 5) | def register(dmm, typecls):
FILE: numba/core/datamodel/testing.py
class DataModelTester (line 8) | class DataModelTester(unittest.TestCase):
method setUp (line 14) | def setUp(self):
method test_as_arg (line 18) | def test_as_arg(self):
method test_as_return (line 61) | def test_as_return(self):
class SupportAsDataMixin (line 88) | class SupportAsDataMixin(object):
method test_as_data (line 93) | def test_as_data(self):
class NotSupportAsDataMixin (line 117) | class NotSupportAsDataMixin(object):
method test_as_data_not_supported (line 121) | def test_as_data_not_supported(self):
class DataModelTester_SupportAsDataMixin (line 134) | class DataModelTester_SupportAsDataMixin(DataModelTester,
class DataModelTester_NotSupportAsDataMixin (line 139) | class DataModelTester_NotSupportAsDataMixin(DataModelTester,
function test_factory (line 144) | def test_factory(support_as_data=True):
FILE: numba/core/debuginfo.py
function suspend_emission (line 17) | def suspend_emission(builder):
class AbstractDIBuilder (line 28) | class AbstractDIBuilder(metaclass=abc.ABCMeta):
method mark_variable (line 30) | def mark_variable(self, builder, allocavalue, name, lltype, size, line,
method mark_location (line 37) | def mark_location(self, builder, line):
method mark_subprogram (line 43) | def mark_subprogram(self, function, qualname, argnames, argtypes, line):
method initialize (line 49) | def initialize(self):
method finalize (line 55) | def finalize(self):
class DummyDIBuilder (line 61) | class DummyDIBuilder(AbstractDIBuilder):
method __init__ (line 63) | def __init__(self, module, filepath, cgctx, directives_only):
method mark_variable (line 66) | def mark_variable(self, builder, allocavalue, name, lltype, size, line,
method mark_location (line 70) | def mark_location(self, builder, line):
method mark_subprogram (line 73) | def mark_subprogram(self, function, qualname, argnames, argtypes, line):
method initialize (line 76) | def initialize(self):
method finalize (line 79) | def finalize(self):
class DIBuilder (line 86) | class DIBuilder(AbstractDIBuilder):
method __init__ (line 92) | def __init__(self, module, filepath, cgctx, directives_only):
method initialize (line 106) | def initialize(self):
method _var_type (line 111) | def _var_type(self, lltype, size, datamodel=None):
method mark_variable (line 292) | def mark_variable(self, builder, allocavalue, name, lltype, size, line,
method mark_location (line 314) | def mark_location(self, builder, line):
method mark_subprogram (line 317) | def mark_subprogram(self, function, qualname, argnames, argtypes, line):
method finalize (line 325) | def finalize(self):
method _set_module_flags (line 334) | def _set_module_flags(self):
method _add_subprogram (line 358) | def _add_subprogram(self, name, linkagename, line, function, argmap):
method _add_location (line 365) | def _add_location(self, line):
method _const_int (line 372) | def _const_int(cls, num, bits=32):
method _const_bool (line 378) | def _const_bool(cls, boolean):
method _di_file (line 387) | def _di_file(self):
method _di_compile_unit (line 393) | def _di_compile_unit(self):
method _di_subroutine_type (line 411) | def _di_subroutine_type(self, line, function, argmap):
method _di_subprogram (line 436) | def _di_subprogram(self, name, linkagename, line, function, argmap):
method _di_location (line 451) | def _di_location(self, line):
FILE: numba/core/decorators.py
function jit (line 27) | def jit(signature_or_function=None, locals=MappingProxyType({}), cache=F...
function _jit (line 199) | def _jit(sigs, locals, target, cache, targetoptions, **dispatcher_args):
function njit (line 241) | def njit(*args, **kws):
function cfunc (line 256) | def cfunc(sig, locals=MappingProxyType({}), cache=False, pipeline_class=...
function jit_module (line 284) | def jit_module(**kwargs):
FILE: numba/core/descriptors.py
class TargetDescriptor (line 8) | class TargetDescriptor(metaclass=ABCMeta):
method __init__ (line 10) | def __init__(self, target_name):
method typing_context (line 15) | def typing_context(self):
method target_context (line 20) | def target_context(self):
FILE: numba/core/dispatcher.py
class OmittedArg (line 27) | class OmittedArg(object):
method __init__ (line 32) | def __init__(self, value):
method __repr__ (line 35) | def __repr__(self):
method _numba_type_ (line 39) | def _numba_type_(self):
class _FunctionCompiler (line 43) | class _FunctionCompiler(object):
method __init__ (line 44) | def __init__(self, py_func, targetdescr, targetoptions, locals,
method fold_argument_types (line 57) | def fold_argument_types(self, args, kws):
method compile (line 79) | def compile(self, args, return_type):
method _compile_cached (line 86) | def _compile_cached(self, args, return_type):
method _compile_core (line 101) | def _compile_core(self, args, return_type):
method get_globals_for_reduction (line 118) | def get_globals_for_reduction(self):
method _get_implementation (line 121) | def _get_implementation(self, args, kws):
method _customize_flags (line 124) | def _customize_flags(self, flags):
class _GeneratedFunctionCompiler (line 128) | class _GeneratedFunctionCompiler(_FunctionCompiler):
method __init__ (line 130) | def __init__(self, py_func, targetdescr, targetoptions, locals,
method get_globals_for_reduction (line 136) | def get_globals_for_reduction(self):
method _get_implementation (line 141) | def _get_implementation(self, args, kws):
class CompilingCounter (line 170) | class CompilingCounter(object):
method __init__ (line 175) | def __init__(self):
method __enter__ (line 178) | def __enter__(self):
method __exit__ (line 182) | def __exit__(self, *args, **kwargs):
method __bool__ (line 186) | def __bool__(self):
class _DispatcherBase (line 192) | class _DispatcherBase(_dispatcher.Dispatcher):
method __init__ (line 199) | def __init__(self, arg_count, py_func, pysig, can_fallback,
method _compilation_chain_init_hook (line 237) | def _compilation_chain_init_hook(self):
method _reset_overloads (line 247) | def _reset_overloads(self):
method _make_finalizer (line 251) | def _make_finalizer(self):
method signatures (line 277) | def signatures(self):
method nopython_signatures (line 284) | def nopython_signatures(self):
method disable_compile (line 288) | def disable_compile(self, val=True):
method add_overload (line 295) | def add_overload(self, cres):
method fold_argument_types (line 301) | def fold_argument_types(self, args, kws):
method get_call_template (line 304) | def get_call_template(self, args, kws):
method get_overload (line 330) | def get_overload(self, sig):
method is_compiling (line 338) | def is_compiling(self):
method _compile_for_args (line 344) | def _compile_for_args(self, *args, **kws):
method inspect_llvm (line 448) | def inspect_llvm(self, signature=None):
method inspect_asm (line 470) | def inspect_asm(self, signature=None):
method inspect_types (line 492) | def inspect_types(self, file=None, signature=None,
method inspect_cfg (line 541) | def inspect_cfg(self, signature=None, show_wrapper=None, **kwargs):
method inspect_disasm_cfg (line 602) | def inspect_disasm_cfg(self, signature=None):
method get_annotation_info (line 622) | def get_annotation_info(self, signature=None):
method _explain_ambiguous (line 638) | def _explain_ambiguous(self, *args, **kws):
method _explain_matching_error (line 651) | def _explain_matching_error(self, *args, **kws):
method _search_new_conversions (line 661) | def _search_new_conversions(self, *args, **kws):
method __repr__ (line 677) | def __repr__(self):
method typeof_pyval (line 680) | def typeof_pyval(self, val):
method _callback_add_timer (line 696) | def _callback_add_timer(self, duration, cres, lock_name):
method _callback_add_compiler_timer (line 708) | def _callback_add_compiler_timer(self, duration, cres):
method _callback_add_llvm_timer (line 712) | def _callback_add_llvm_timer(self, duration, cres):
class _MemoMixin (line 717) | class _MemoMixin:
method _uuid (line 726) | def _uuid(self):
method _set_uuid (line 739) | def _set_uuid(self, u):
class Dispatcher (line 746) | class Dispatcher(serialize.ReduceMixin, _MemoMixin, _DispatcherBase):
method __init__ (line 757) | def __init__(self, py_func, locals=None, targetoptions=None,
method dump (line 799) | def dump(self, tab=''):
method _numba_type_ (line 807) | def _numba_type_(self):
method enable_caching (line 810) | def enable_caching(self):
method __get__ (line 813) | def __get__(self, obj, objtype=None):
method _reduce_states (line 820) | def _reduce_states(self):
method _rebuild (line 843) | def _rebuild(cls, uuid, py_func, locals, targetoptions,
method compile (line 862) | def compile(self, sig):
method get_compile_result (line 918) | def get_compile_result(self, sig):
method recompile (line 935) | def recompile(self):
method stats (line 954) | def stats(self):
method parallel_diagnostics (line 961) | def parallel_diagnostics(self, signature=None, level=1):
method get_metadata (line 980) | def get_metadata(self, signature=None):
method get_function_type (line 991) | def get_function_type(self):
class LiftedCode (line 1004) | class LiftedCode(serialize.ReduceMixin, _MemoMixin, _DispatcherBase):
method __init__ (line 1012) | def __init__(self, func_ir, typingctx, targetctx, flags, locals):
method _reduce_states (line 1027) | def _reduce_states(self):
method _reduce_extras (line 1040) | def _reduce_extras(self):
method _rebuild (line 1047) | def _rebuild(cls, uuid, func_ir, flags, locals, extras):
method get_source_location (line 1070) | def get_source_location(self):
method _pre_compile (line 1075) | def _pre_compile(self, args, return_type, flags):
method compile (line 1081) | def compile(self, sig):
method _get_dispatcher_for_current_target (line 1086) | def _get_dispatcher_for_current_target(self):
class LiftedLoop (line 1092) | class LiftedLoop(LiftedCode):
method _pre_compile (line 1093) | def _pre_compile(self, args, return_type, flags):
method compile (line 1096) | def compile(self, sig):
class LiftedWith (line 1175) | class LiftedWith(LiftedCode):
method _reduce_extras (line 1179) | def _reduce_extras(self):
method _numba_type_ (line 1183) | def _numba_type_(self):
method get_call_template (line 1186) | def get_call_template(self, args, kws):
method compile (line 1207) | def compile(self, sig):
class ObjModeLiftedWith (line 1267) | class ObjModeLiftedWith(LiftedWith):
method __init__ (line 1268) | def __init__(self, *args, **kwargs):
method _numba_type_ (line 1279) | def _numba_type_(self):
method get_call_template (line 1282) | def get_call_template(self, args, kws):
method _legalize_arg_types (line 1306) | def _legalize_arg_types(self, args):
method compile (line 1322) | def compile(self, sig):
FILE: numba/core/entrypoints.py
function init_all (line 11) | def init_all():
FILE: numba/core/environment.py
class Environment (line 7) | class Environment(_dynfunc.Environment):
method from_fndesc (line 18) | def from_fndesc(cls, fndesc):
method can_cache (line 28) | def can_cache(self):
method __reduce__ (line 32) | def __reduce__(self):
method __del__ (line 39) | def __del__(self):
method __repr__ (line 42) | def __repr__(self):
function _rebuild_env (line 46) | def _rebuild_env(modname, consts, env_name):
function lookup_environment (line 60) | def lookup_environment(env_name):
FILE: numba/core/errors.py
function _is_numba_core_config_loaded (line 20) | def _is_numba_core_config_loaded():
class NumbaWarning (line 32) | class NumbaWarning(Warning):
method __init__ (line 37) | def __init__(self, msg, loc=None, highlighting=True, ):
class NumbaPerformanceWarning (line 55) | class NumbaPerformanceWarning(NumbaWarning):
class NumbaDeprecationWarning (line 62) | class NumbaDeprecationWarning(NumbaWarning, DeprecationWarning):
class NumbaPendingDeprecationWarning (line 68) | class NumbaPendingDeprecationWarning(NumbaWarning, PendingDeprecationWar...
class NumbaParallelSafetyWarning (line 74) | class NumbaParallelSafetyWarning(NumbaWarning):
class NumbaTypeSafetyWarning (line 81) | class NumbaTypeSafetyWarning(NumbaWarning):
class NumbaExperimentalFeatureWarning (line 87) | class NumbaExperimentalFeatureWarning(NumbaWarning):
class NumbaInvalidConfigWarning (line 93) | class NumbaInvalidConfigWarning(NumbaWarning):
class NumbaPedanticWarning (line 99) | class NumbaPedanticWarning(NumbaWarning):
method __init__ (line 103) | def __init__(self, msg, **kwargs):
class NumbaIRAssumptionWarning (line 107) | class NumbaIRAssumptionWarning(NumbaPedanticWarning):
class NumbaDebugInfoWarning (line 113) | class NumbaDebugInfoWarning(NumbaWarning):
class NumbaSystemWarning (line 119) | class NumbaSystemWarning(NumbaWarning):
class _ColorScheme (line 127) | class _ColorScheme(metaclass=abc.ABCMeta):
method code (line 130) | def code(self, msg):
method errmsg (line 134) | def errmsg(self, msg):
method filename (line 138) | def filename(self, msg):
method indicate (line 142) | def indicate(self, msg):
method highlight (line 146) | def highlight(self, msg):
method reset (line 150) | def reset(self, msg):
class _DummyColorScheme (line 154) | class _DummyColorScheme(_ColorScheme):
method __init__ (line 156) | def __init__(self, theme=None):
method code (line 159) | def code(self, msg):
method errmsg (line 162) | def errmsg(self, msg):
method filename (line 165) | def filename(self, msg):
method indicate (line 168) | def indicate(self, msg):
method highlight (line 171) | def highlight(self, msg):
method reset (line 174) | def reset(self, msg):
class NOPColorScheme (line 205) | class NOPColorScheme(_DummyColorScheme):
method __init__ (line 206) | def __init__(self, theme=None):
method code (line 211) | def code(self, msg):
method errmsg (line 214) | def errmsg(self, msg):
method filename (line 217) | def filename(self, msg):
method indicate (line 220) | def indicate(self, msg):
method highlight (line 223) | def highlight(self, msg):
method reset (line 226) | def reset(self, msg):
function termcolor (line 229) | def termcolor():
class ColorShell (line 239) | class ColorShell(object):
method __init__ (line 242) | def __init__(self):
method __enter__ (line 246) | def __enter__(self):
method __exit__ (line 250) | def __exit__(self, *exc_detail):
class reset_terminal (line 254) | class reset_terminal(object):
method __init__ (line 255) | def __init__(self):
method __enter__ (line 258) | def __enter__(self):
method __exit__ (line 261) | def __exit__(self, *exc_detail):
class HighlightColorScheme (line 309) | class HighlightColorScheme(_DummyColorScheme):
method __init__ (line 310) | def __init__(self, theme=default_theme):
method _markup (line 319) | def _markup(self, msg, color=None, style=Style.BRIGHT):
method code (line 331) | def code(self, msg):
method errmsg (line 334) | def errmsg(self, msg):
method filename (line 337) | def filename(self, msg):
method indicate (line 340) | def indicate(self, msg):
method highlight (line 343) | def highlight(self, msg):
method reset (line 346) | def reset(self, msg):
function termcolor (line 349) | def termcolor():
function deprecated (line 443) | def deprecated(arg):
class WarningsFixer (line 473) | class WarningsFixer(object):
method __init__ (line 483) | def __init__(self, category):
method catch_warnings (line 489) | def catch_warnings(self, filename=None, lineno=None):
method flush (line 509) | def flush(self):
method __enter__ (line 526) | def __enter__(self):
method __exit__ (line 529) | def __exit__(self, exc_type, exc_value, traceback):
class NumbaError (line 533) | class NumbaError(Exception):
method __init__ (line 534) | def __init__(self, msg, loc=None, highlighting=True):
method contexts (line 550) | def contexts(self):
method add_context (line 557) | def add_context(self, msg):
method patch_message (line 571) | def patch_message(self, new_message):
class UnsupportedError (line 578) | class UnsupportedError(NumbaError):
class UnsupportedBytecodeError (line 584) | class UnsupportedBytecodeError(Exception):
method __init__ (line 587) | def __init__(self, msg, loc=None):
class UnsupportedRewriteError (line 591) | class UnsupportedRewriteError(UnsupportedError):
class IRError (line 597) | class IRError(NumbaError):
class RedefinedError (line 604) | class RedefinedError(IRError):
class NotDefinedError (line 611) | class NotDefinedError(IRError):
method __init__ (line 616) | def __init__(self, name, loc=None):
class VerificationError (line 623) | class VerificationError(IRError):
class DeprecationError (line 634) | class DeprecationError(NumbaError):
class LoweringError (line 641) | class LoweringError(NumbaError):
method __init__ (line 646) | def __init__(self, msg, loc=None):
class UnsupportedParforsError (line 650) | class UnsupportedParforsError(NumbaError):
class ForbiddenConstruct (line 657) | class ForbiddenConstruct(LoweringError):
class TypingError (line 664) | class TypingError(NumbaError):
class UntypedAttributeError (line 671) | class UntypedAttributeError(TypingError):
method __init__ (line 672) | def __init__(self, value, attr, loc=None):
class ByteCodeSupportError (line 684) | class ByteCodeSupportError(NumbaError):
method __init__ (line 689) | def __init__(self, msg, loc=None):
class CompilerError (line 693) | class CompilerError(NumbaError):
class ConstantInferenceError (line 700) | class ConstantInferenceError(NumbaError):
method __init__ (line 705) | def __init__(self, value, loc=None):
class InternalError (line 709) | class InternalError(NumbaError):
method __init__ (line 714) | def __init__(self, exception):
class InternalTargetMismatchError (line 719) | class InternalTargetMismatchError(InternalError):
method __init__ (line 723) | def __init__(self, kind, target_hw, hw_clazz):
class NonexistentTargetError (line 730) | class NonexistentTargetError(InternalError):
class RequireLiteralValue (line 736) | class RequireLiteralValue(TypingError):
class ForceLiteralArg (line 744) | class ForceLiteralArg(NumbaError):
method __init__ (line 752) | def __init__(self, arg_indices, fold_arguments=None, loc=None):
method bind_fold_arguments (line 770) | def bind_fold_arguments(self, fold_arguments):
method combine (line 780) | def combine(self, other):
method __or__ (line 788) | def __or__(self, other):
class LiteralTypingError (line 794) | class LiteralTypingError(TypingError):
class NumbaValueError (line 807) | class NumbaValueError(TypingError):
class NumbaTypeError (line 811) | class NumbaTypeError(TypingError):
class NumbaAttributeError (line 815) | class NumbaAttributeError(TypingError):
class NumbaAssertionError (line 819) | class NumbaAssertionError(TypingError):
class NumbaNotImplementedError (line 823) | class NumbaNotImplementedError(TypingError):
class NumbaKeyError (line 827) | class NumbaKeyError(TypingError):
class NumbaIndexError (line 831) | class NumbaIndexError(TypingError):
class NumbaRuntimeError (line 835) | class NumbaRuntimeError(NumbaError):
function _format_msg (line 839) | def _format_msg(fmt, args, kwargs):
function new_error_context (line 853) | def new_error_context(fmt_, *args, **kwargs):
FILE: numba/core/event.py
class EventStatus (line 50) | class EventStatus(enum.Enum):
function _guard_kind (line 66) | def _guard_kind(kind):
class Event (line 88) | class Event:
method __init__ (line 100) | def __init__(self, kind, status, data=None, exc_details=None):
method kind (line 109) | def kind(self):
method status (line 119) | def status(self):
method data (line 129) | def data(self):
method is_start (line 139) | def is_start(self):
method is_end (line 149) | def is_end(self):
method is_failed (line 159) | def is_failed(self):
method __str__ (line 171) | def __str__(self):
function register (line 182) | def register(kind, listener):
function unregister (line 195) | def unregister(kind, listener):
function broadcast (line 209) | def broadcast(event):
class Listener (line 220) | class Listener(abc.ABC):
method on_start (line 224) | def on_start(self, event):
method on_end (line 234) | def on_end(self, event):
method notify (line 243) | def notify(self, event):
class TimingListener (line 258) | class TimingListener(Listener):
method __init__ (line 262) | def __init__(self):
method on_start (line 265) | def on_start(self, event):
method on_end (line 270) | def on_end(self, event):
method done (line 277) | def done(self):
method duration (line 287) | def duration(self):
class RecordingListener (line 296) | class RecordingListener(Listener):
method __init__ (line 302) | def __init__(self):
method on_start (line 305) | def on_start(self, event):
method on_end (line 308) | def on_end(self, event):
function install_listener (line 313) | def install_listener(kind, listener):
function install_timer (line 338) | def install_timer(kind, callback):
function install_recorder (line 367) | def install_recorder(kind):
function start_event (line 390) | def start_event(kind, data=None):
function end_event (line 404) | def end_event(kind, data=None, exc_details=None):
function trigger_event (line 423) | def trigger_event(kind, data=None):
function _prepare_chrome_trace_data (line 444) | def _prepare_chrome_trace_data(listener: RecordingListener):
function _setup_chrome_trace_exit_handler (line 468) | def _setup_chrome_trace_exit_handler():
FILE: numba/core/extending.py
function type_callable (line 25) | def type_callable(func):
function overload (line 63) | def overload(
function register_jitable (line 148) | def register_jitable(*args, **kwargs):
function overload_attribute (line 180) | def overload_attribute(typ, attr, **kwargs):
function _overload_method_common (line 210) | def _overload_method_common(typ, attr, **kwargs):
function overload_method (line 230) | def overload_method(typ, attr, **kwargs):
function overload_classmethod (line 253) | def overload_classmethod(typ, attr, **kwargs):
function make_attribute_wrapper (line 280) | def make_attribute_wrapper(typeclass, struct_attr, python_attr):
class _Intrinsic (line 322) | class _Intrinsic(ReduceMixin):
method __init__ (line 334) | def __init__(self, name, defn, prefer_literal=False, **kwargs):
method _uuid (line 342) | def _uuid(self):
method _set_uuid (line 355) | def _set_uuid(self, u):
method _register (line 361) | def _register(self):
method __call__ (line 372) | def __call__(self, *args, **kwargs):
method __repr__ (line 379) | def __repr__(self):
method __deepcopy__ (line 382) | def __deepcopy__(self, memo):
method _reduce_states (line 387) | def _reduce_states(self):
method _rebuild (line 394) | def _rebuild(cls, uuid, name, defn):
function intrinsic (line 407) | def intrinsic(*args, **kwargs):
function get_cython_function_address (line 461) | def get_cython_function_address(module_name, function_name):
function include_path (line 480) | def include_path():
function sentry_literal_args (line 488) | def sentry_literal_args(pysig, literal_args, args, kwargs):
class SentryLiteralArgs (line 519) | class SentryLiteralArgs(collections.namedtuple(
method for_function (line 538) | def for_function(self, func):
method for_pysig (line 552) | def for_pysig(self, pysig):
class BoundLiteralArgs (line 570) | class BoundLiteralArgs(collections.namedtuple(
method bind (line 575) | def bind(self, *args, **kwargs):
function is_jitted (line 586) | def is_jitted(function):
FILE: numba/core/extending.pyi
function type_callable (line 8) | def type_callable(func):
function overload (line 12) | def overload(func, jit_options={}, strict=True, inline='never',
function register_jitable (line 17) | def register_jitable(*args, **kwargs):
function overload_attribute (line 21) | def overload_attribute(typ, attr, **kwargs):
function _overload_method_common (line 25) | def _overload_method_common(typ, attr, **kwargs):
function overload_method (line 29) | def overload_method(typ, attr, **kwargs):
function overload_classmethod (line 33) | def overload_classmethod(typ, attr, **kwargs):
function make_attribute_wrapper (line 37) | def make_attribute_wrapper(typeclass, struct_attr, python_attr):
class _Intrinsic (line 41) | class _Intrinsic(ReduceMixin, Generic[P, R]):
method __init__ (line 45) | def __init__(
method _uuid (line 55) | def _uuid(self):
method _set_uuid (line 58) | def _set_uuid(self, u):
method _register (line 61) | def _register(self):
method __call__ (line 64) | def __call__(self, *args: P.args, **kwargs: P.kwargs) -> R:
method __repr__ (line 67) | def __repr__(self):
method __deepcopy__ (line 70) | def __deepcopy__(self, memo):
method _reduce_states (line 73) | def _reduce_states(self):
method _rebuild (line 77) | def _rebuild(cls, uuid, name, defn):
function intrinsic (line 90) | def intrinsic(*args, **kwargs) -> Callable[
function intrinsic (line 96) | def intrinsic(*args, **kwargs):
function get_cython_function_address (line 100) | def get_cython_function_address(module_name, function_name):
function include_path (line 104) | def include_path():
function sentry_literal_args (line 108) | def sentry_literal_args(pysig, literal_args, args, kwargs):
class SentryLiteralArgs (line 112) | class SentryLiteralArgs(collections.namedtuple(
method for_function (line 114) | def for_function(self, func):
method for_pysig (line 117) | def for_pysig(self, pysig):
class BoundLiteralArgs (line 121) | class BoundLiteralArgs(collections.namedtuple(
method bind (line 123) | def bind(self, *args, **kwargs):
function is_jitted (line 127) | def is_jitted(function):
FILE: numba/core/externals.py
function _add_missing_symbol (line 14) | def _add_missing_symbol(symbol, addr):
function _get_msvcrt_symbol (line 21) | def _get_msvcrt_symbol(symbol):
function compile_multi3 (line 31) | def compile_multi3(context):
class _Installer (line 104) | class _Installer(object):
method install (line 108) | def install(self, context):
class _ExternalMathFunctions (line 118) | class _ExternalMathFunctions(_Installer):
method _do_install (line 124) | def _do_install(self, context):
FILE: numba/core/fastmathpass.py
class FastFloatBinOpVisitor (line 5) | class FastFloatBinOpVisitor(Visitor):
method __init__ (line 12) | def __init__(self, flags):
method visit_Instruction (line 15) | def visit_Instruction(self, instr):
class FastFloatCallVisitor (line 22) | class FastFloatCallVisitor(CallVisitor):
method __init__ (line 27) | def __init__(self, flags):
method visit_Call (line 30) | def visit_Call(self, instr):
function rewrite_module (line 37) | def rewrite_module(mod, options):
FILE: numba/core/funcdesc.py
function default_mangler (line 12) | def default_mangler(name, argtypes, *, abi_tags=(), uid=None):
function qualifying_prefix (line 16) | def qualifying_prefix(modname, qualname):
class FunctionDescriptor (line 24) | class FunctionDescriptor(object):
method __init__ (line 38) | def __init__(self, native, modname, qualname, unique_name, doc,
method lookup_globals (line 79) | def lookup_globals(self):
method lookup_module (line 87) | def lookup_module(self):
method lookup_function (line 102) | def lookup_function(self):
method llvm_func_name (line 109) | def llvm_func_name(self):
method llvm_cpython_wrapper_name (line 118) | def llvm_cpython_wrapper_name(self):
method llvm_cfunc_wrapper_name (line 127) | def llvm_cfunc_wrapper_name(self):
method __repr__ (line 134) | def __repr__(self):
method _get_function_info (line 138) | def _get_function_info(cls, func_ir):
method _from_python_function (line 167) | def _from_python_function(cls, func_ir, typemap, restype,
class PythonFunctionDescriptor (line 181) | class PythonFunctionDescriptor(FunctionDescriptor):
method from_specialized_function (line 188) | def from_specialized_function(cls, func_ir, typemap, restype, calltypes,
method from_object_mode_function (line 200) | def from_object_mode_function(cls, func_ir):
class ExternalFunctionDescriptor (line 212) | class ExternalFunctionDescriptor(FunctionDescriptor):
method __init__ (line 219) | def __init__(self, name, restype, argtypes):
FILE: numba/core/generators.py
class GeneratorDescriptor (line 12) | class GeneratorDescriptor(FunctionDescriptor):
method from_generator_fndesc (line 19) | def from_generator_fndesc(cls, func_ir, fndesc, gentype, mangler):
method llvm_finalizer_name (line 40) | def llvm_finalizer_name(self):
class BaseGeneratorLower (line 48) | class BaseGeneratorLower(object):
method __init__ (line 53) | def __init__(self, lower):
method call_conv (line 70) | def call_conv(self):
method get_args_ptr (line 73) | def get_args_ptr(self, builder, genptr):
method get_resume_index_ptr (line 76) | def get_resume_index_ptr(self, builder, genptr):
method get_state_ptr (line 80) | def get_state_ptr(self, builder, genptr):
method lower_init_func (line 84) | def lower_init_func(self, lower):
method lower_next_func (line 133) | def lower_next_func(self, lower):
method lower_finalize_func (line 179) | def lower_finalize_func(self, lower):
method return_from_generator (line 194) | def return_from_generator(self, lower):
method create_resumption_block (line 202) | def create_resumption_block(self, lower, index):
method debug_print (line 208) | def debug_print(self, builder, msg):
class GeneratorLower (line 212) | class GeneratorLower(BaseGeneratorLower):
method get_generator_type (line 217) | def get_generator_type(self):
method box_generator_struct (line 220) | def box_generator_struct(self, lower, gen_struct):
method lower_finalize_func_body (line 223) | def lower_finalize_func_body(self, builder, genptr):
class PyGeneratorLower (line 240) | class PyGeneratorLower(BaseGeneratorLower):
method get_generator_type (line 245) | def get_generator_type(self):
method box_generator_struct (line 258) | def box_generator_struct(self, lower, gen_struct):
method init_generator_state (line 265) | def init_generator_state(self, lower):
method lower_finalize_func_body (line 273) | def lower_finalize_func_body(self, builder, genptr):
class LowerYield (line 301) | class LowerYield(object):
method __init__ (line 306) | def __init__(self, lower, yield_point, live_vars):
method lower_yield_suspend (line 321) | def lower_yield_suspend(self):
method lower_yield_resume (line 346) | def lower_yield_resume(self):
FILE: numba/core/imputils.py
class Registry (line 16) | class Registry(object):
method __init__ (line 20) | def __init__(self, name='unspecified'):
method lower (line 28) | def lower(self, func, *argtys):
method _decorate_attr (line 42) | def _decorate_attr(self, impl, ty, attr, impl_list, decorator):
method lower_getattr (line 47) | def lower_getattr(self, ty, attr):
method lower_getattr_generic (line 60) | def lower_getattr_generic(self, ty):
method lower_setattr (line 71) | def lower_setattr(self, ty, attr):
method lower_setattr_generic (line 84) | def lower_setattr_generic(self, ty):
method lower_cast (line 95) | def lower_cast(self, fromty, toty):
method lower_constant (line 108) | def lower_constant(self, ty):
method __repr__ (line 120) | def __repr__(self):
class RegistryLoader (line 124) | class RegistryLoader(BaseRegistryLoader):
function _decorate_getattr (line 144) | def _decorate_getattr(impl, ty, attr):
function _decorate_setattr (line 158) | def _decorate_setattr(impl, ty, attr):
function fix_returning_optional (line 173) | def fix_returning_optional(context, builder, sig, status, retval):
function user_function (line 187) | def user_function(fndesc, libs):
function user_generator (line 214) | def user_generator(gendesc, libs):
function iterator_impl (line 231) | def iterator_impl(iterable_type, iterator_type):
class _IternextResult (line 253) | class _IternextResult(object):
method __init__ (line 260) | def __init__(self, context, builder, pairobj):
method set_exhausted (line 265) | def set_exhausted(self):
method set_valid (line 271) | def set_valid(self, is_valid=True):
method yield_ (line 280) | def yield_(self, value):
method is_valid (line 286) | def is_valid(self):
method yielded_value (line 294) | def yielded_value(self):
class RefType (line 300) | class RefType(Enum):
function iternext_impl (line 317) | def iternext_impl(ref_type=None):
function call_getiter (line 352) | def call_getiter(context, builder, iterable_type, val):
function call_iternext (line 362) | def call_iternext(context, builder, iterator_type, val):
function call_len (line 377) | def call_len(context, builder, ty, val):
function for_iter (line 395) | def for_iter(context, builder, iterable_type, val):
function impl_ret_new_ref (line 425) | def impl_ret_new_ref(ctx, builder, retty, ret):
function impl_ret_borrowed (line 432) | def impl_ret_borrowed(ctx, builder, retty, ret):
function impl_ret_untracked (line 443) | def impl_ret_untracked(ctx, builder, retty, ret):
function force_error_model (line 451) | def force_error_model(context, model_name='numpy'):
function numba_typeref_ctor (line 465) | def numba_typeref_ctor(*args, **kwargs):
FILE: numba/core/inline_closurecall.py
function callee_ir_validator (line 52) | def callee_ir_validator(func_ir):
function _created_inlined_var_name (line 62) | def _created_inlined_var_name(function_name, var_name):
class InlineClosureCallPass (line 76) | class InlineClosureCallPass(object):
method __init__ (line 81) | def __init__(self, func_ir, parallel_options, swapped=None, typed=False):
method run (line 90) | def run(self):
method _inline_reduction (line 165) | def _inline_reduction(self, work_list, block, i, expr, call_name):
method _inline_stencil (line 194) | def _inline_stencil(self, instr, call_name, func_def):
method _fix_stencil_neighborhood (line 244) | def _fix_stencil_neighborhood(self, options):
method _fix_stencil_index_offsets (line 260) | def _fix_stencil_index_offsets(self, options):
method _inline_closure (line 270) | def _inline_closure(self, work_list, block, i, func_def):
function check_reduce_func (line 280) | def check_reduce_func(func_ir, func_var):
class InlineWorker (line 304) | class InlineWorker(object):
method __init__ (line 312) | def __init__(self,
method inline_ir (line 370) | def inline_ir(self, caller_ir, block, i, callee_ir, callee_freevars,
method inline_function (line 493) | def inline_function(self, caller_ir, block, i, function, arg_typs=None):
method run_untyped_passes (line 504) | def run_untyped_passes(self, func, enable_ssa=False):
method update_type_and_call_maps (line 546) | def update_type_and_call_maps(self, callee_ir, arg_typs):
function inline_closure_call (line 580) | def inline_closure_call(func_ir, glbls, block, i, callee, typingctx=None,
function _get_callee_args (line 739) | def _get_callee_args(call_expr, callee, loc, func_ir):
function _make_debug_print (line 808) | def _make_debug_print(prefix):
function _debug_dump (line 815) | def _debug_dump(func_ir):
function _get_all_scopes (line 820) | def _get_all_scopes(blocks):
function _replace_args_with (line 830) | def _replace_args_with(blocks, args):
function _replace_freevars (line 843) | def _replace_freevars(blocks, args):
function _replace_returns (line 859) | def _replace_returns(blocks, target, return_label):
function _add_definitions (line 881) | def _add_definitions(func_ir, block):
function _find_arraycall (line 891) | def _find_arraycall(func_ir, block):
function _find_iter_range (line 940) | def _find_iter_range(func_ir, range_iter_var, swapped):
function length_of_iterator (line 975) | def length_of_iterator(typingctx, val):
function _inline_arraycall (line 1034) | def _inline_arraycall(func_ir, cfg, visited, loop, swapped, enable_prang...
function _find_unsafe_empty_inferred (line 1314) | def _find_unsafe_empty_inferred(func_ir, expr):
function _fix_nested_array (line 1324) | def _fix_nested_array(func_ir):
function _new_definition (line 1451) | def _new_definition(func_ir, var, value, loc):
class RewriteArrayOfConsts (line 1457) | class RewriteArrayOfConsts(rewrites.Rewrite):
method __init__ (line 1462) | def __init__(self, state, *args, **kws):
method match (line 1466) | def match(self, func_ir, block, typemap, calltypes):
method apply (line 1474) | def apply(self):
function _inline_const_arraycall (line 1479) | def _inline_const_arraycall(block, func_ir, context, typemap, calltypes):
FILE: numba/core/interpreter.py
class _UNKNOWN_VALUE (line 31) | class _UNKNOWN_VALUE(object):
method __init__ (line 35) | def __init__(self, varname):
method __repr__ (line 38) | def __repr__(self):
class Assigner (line 45) | class Assigner(object):
method __init__ (line 58) | def __init__(self):
method assign (line 66) | def assign(self, srcvar, destvar):
method get_assignment_source (line 86) | def get_assignment_source(self, destname):
function _remove_assignment_definition (line 97) | def _remove_assignment_definition(old_body, idx, func_ir, already_delete...
function _call_function_ex_replace_kws_small (line 122) | def _call_function_ex_replace_kws_small(
function _call_function_ex_replace_kws_large (line 163) | def _call_function_ex_replace_kws_large(
function _call_function_ex_replace_args_small (line 302) | def _call_function_ex_replace_args_small(
function _call_function_ex_replace_args_large (line 337) | def _call_function_ex_replace_args_large(
function peep_hole_call_function_ex_to_call_function_kw (line 509) | def peep_hole_call_function_ex_to_call_function_kw(func_ir):
function peep_hole_list_to_tuple (line 764) | def peep_hole_list_to_tuple(func_ir):
function peep_hole_delete_with_exit (line 986) | def peep_hole_delete_with_exit(func_ir):
function peep_hole_fuse_dict_add_updates (line 1018) | def peep_hole_fuse_dict_add_updates(func_ir):
function peep_hole_split_at_pop_block (line 1240) | def peep_hole_split_at_pop_block(func_ir):
function _build_new_build_map (line 1289) | def _build_new_build_map(func_ir, name, old_body, old_lineno, new_items):
class Interpreter (line 1342) | class Interpreter(object):
method __init__ (line 1348) | def __init__(self, func_id):
method interpret (line 1365) | def interpret(self, bytecode):
method post_process (line 1443) | def post_process(self, peepholes, func_ir):
method _end_try_blocks (line 1448) | def _end_try_blocks(self):
method _legalize_exception_vars (line 1495) | def _legalize_exception_vars(self):
method init_first_block (line 1517) | def init_first_block(self):
method _iter_inst (line 1523) | def _iter_inst(self):
method _start_new_block (line 1543) | def _start_new_block(self, offset):
method _end_current_block (line 1595) | def _end_current_block(self):
method _inject_call (line 1605) | def _inject_call(self, func, gv_name, res_name=None):
method _insert_try_block_begin (line 1624) | def _insert_try_block_begin(self):
method _insert_try_block_end (line 1629) | def _insert_try_block_end(self):
method _insert_exception_variables (line 1634) | def _insert_exception_variables(self):
method _insert_exception_check (line 1654) | def _insert_exception_check(self):
method _remove_unused_temporaries (line 1662) | def _remove_unused_temporaries(self):
method _var_used_in_binop (line 1723) | def _var_used_in_binop(self, varname, expr):
method _insert_outgoing_phis (line 1731) | def _insert_outgoing_phis(self):
method get_global_value (line 1754) | def get_global_value(self, name):
method get_closure_value (line 1764) | def get_closure_value(self, index):
method current_scope (line 1776) | def current_scope(self):
method code_consts (line 1780) | def code_consts(self):
method code_locals (line 1784) | def code_locals(self):
method code_names (line 1788) | def code_names(self):
method code_cellvars (line 1792) | def code_cellvars(self):
method code_freevars (line 1796) | def code_freevars(self):
method _dispatch (line 1799) | def _dispatch(self, inst, kws):
method store (line 1840) | def store(self, value, name, redefine=False):
method get (line 1858) | def get(self, name):
method insert_block (line 1876) | def insert_block(self, offset, scope=None, loc=None):
method op_NOP (line 1887) | def op_NOP(self, inst):
method op_RESUME (line 1898) | def op_RESUME(self, inst):
method op_CACHE (line 1901) | def op_CACHE(self, inst):
method op_PRECALL (line 1904) | def op_PRECALL(self, inst):
method op_PUSH_NULL (line 1907) | def op_PUSH_NULL(self, inst):
method op_RETURN_GENERATOR (line 1910) | def op_RETURN_GENERATOR(self, inst):
method op_PRINT_ITEM (line 1913) | def op_PRINT_ITEM(self, inst, item, printvar, res):
method op_PRINT_NEWLINE (line 1920) | def op_PRINT_NEWLINE(self, inst, printvar, res):
method op_UNPACK_SEQUENCE (line 1926) | def op_UNPACK_SEQUENCE(self, inst, iterable, stores, tupleobj):
method op_FORMAT_SIMPLE (line 1940) | def op_FORMAT_SIMPLE(self, inst, value, res, strvar):
method op_FORMAT_VALUE (line 1944) | def op_FORMAT_VALUE(self, inst, value, res, strvar):
method op_BUILD_STRING (line 1956) | def op_BUILD_STRING(self, inst, strings, tmps):
method op_BUILD_SLICE (line 1978) | def op_BUILD_SLICE(self, inst, start, stop, step, res, slicevar):
method op_BINARY_SLICE (line 1995) | def op_BINARY_SLICE(self, inst, start, end, container, res, slicevar,
method op_STORE_SLICE (line 2014) | def op_STORE_SLICE(self, inst, start, end, container, value, res,
method op_SLICE_0 (line 2035) | def op_SLICE_0(self, inst, base, res, slicevar, indexvar, nonevar):
method op_SLICE_1 (line 2051) | def op_SLICE_1(self, inst, base, start, nonevar, res, slicevar, indexv...
method op_SLICE_2 (line 2069) | def op_SLICE_2(self, inst, base, nonevar, stop, res, slicevar, indexvar):
method op_SLICE_3 (line 2087) | def op_SLICE_3(self, inst, base, start, stop, res, slicevar, indexvar):
method op_STORE_SLICE_0 (line 2102) | def op_STORE_SLICE_0(self, inst, base, value, slicevar, indexvar, none...
method op_STORE_SLICE_1 (line 2119) | def op_STORE_SLICE_1(self, inst, base, start, nonevar, value, slicevar,
method op_STORE_SLICE_2 (line 2139) | def op_STORE_SLICE_2(self, inst, base, nonevar, stop, value, slicevar,
method op_STORE_SLICE_3 (line 2159) | def op_STORE_SLICE_3(self, inst, base, start, stop, value, slicevar,
method op_DELETE_SLICE_0 (line 2175) | def op_DELETE_SLICE_0(self, inst, base, slicevar, indexvar, nonevar):
method op_DELETE_SLICE_1 (line 2191) | def op_DELETE_SLICE_1(self, inst, base, start, nonevar, slicevar, inde...
method op_DELETE_SLICE_2 (line 2209) | def op_DELETE_SLICE_2(self, inst, base, nonevar, stop, slicevar, index...
method op_DELETE_SLICE_3 (line 2227) | def op_DELETE_SLICE_3(self, inst, base, start, stop, slicevar, indexvar):
method _op_LOAD_FAST (line 2241) | def _op_LOAD_FAST(self, inst, res):
method op_LOAD_FAST (line 2246) | def op_LOAD_FAST(self, inst, res, as_load_deref=False):
method op_LOAD_FAST_LOAD_FAST (line 2256) | def op_LOAD_FAST_LOAD_FAST(self, inst, res1, res2):
method op_STORE_FAST_LOAD_FAST (line 2265) | def op_STORE_FAST_LOAD_FAST(self, inst, store_value, load_res):
method op_STORE_FAST_STORE_FAST (line 2277) | def op_STORE_FAST_STORE_FAST(self, inst, value1, value2):
method op_LOAD_FAST_AND_CLEAR (line 2295) | def op_LOAD_FAST_AND_CLEAR(self, inst, res):
method op_STORE_FAST (line 2320) | def op_STORE_FAST(self, inst, value):
method op_DELETE_FAST (line 2325) | def op_DELETE_FAST(self, inst):
method op_DUP_TOPX (line 2329) | def op_DUP_TOPX(self, inst, orig, duped):
method op_STORE_ATTR (line 2336) | def op_STORE_ATTR(self, inst, target, value):
method op_DELETE_ATTR (line 2342) | def op_DELETE_ATTR(self, inst, target):
method op_LOAD_ATTR (line 2347) | def op_LOAD_ATTR(self, inst, item, res):
method op_LOAD_CONST (line 2358) | def op_LOAD_CONST(self, inst, res):
method op_LOAD_SMALL_INT (line 2409) | def op_LOAD_SMALL_INT(self, inst, res):
method op_LOAD_GLOBAL (line 2419) | def op_LOAD_GLOBAL(self, inst, idx, res):
method op_LOAD_GLOBAL (line 2425) | def op_LOAD_GLOBAL(self, inst, res):
method op_COPY_FREE_VARS (line 2433) | def op_COPY_FREE_VARS(self, inst):
method op_LOAD_DEREF (line 2437) | def op_LOAD_DEREF(self, inst, res):
method op_LOAD_DEREF (line 2451) | def op_LOAD_DEREF(self, inst, res):
method op_MAKE_CELL (line 2466) | def op_MAKE_CELL(self, inst):
method op_STORE_DEREF (line 2470) | def op_STORE_DEREF(self, inst, value):
method op_STORE_DEREF (line 2475) | def op_STORE_DEREF(self, inst, value):
method op_SETUP_LOOP (line 2486) | def op_SETUP_LOOP(self, inst):
method op_SETUP_WITH (line 2491) | def op_SETUP_WITH(self, inst, contextmanager, exitfn=None):
method op_BEFORE_WITH (line 2511) | def op_BEFORE_WITH(self, inst, contextmanager, exitfn, end):
method op_SETUP_FINALLY (line 2537) | def op_SETUP_FINALLY(self, inst):
method op_WITH_CLEANUP (line 2541) | def op_WITH_CLEANUP(self, inst):
method op_WITH_CLEANUP_START (line 2544) | def op_WITH_CLEANUP_START(self, inst):
method op_WITH_CLEANUP_FINISH (line 2547) | def op_WITH_CLEANUP_FINISH(self, inst):
method op_END_FINALLY (line 2550) | def op_END_FINALLY(self, inst):
method op_BEGIN_FINALLY (line 2553) | def op_BEGIN_FINALLY(self, inst, temps):
method op_CALL (line 2561) | def op_CALL(self, inst, func, args, kw_names, res):
method op_CALL_KW (line 2575) | def op_CALL_KW(self, inst, func, args, kw_names, res):
method op_CALL_FUNCTION (line 2587) | def op_CALL_FUNCTION(self, inst, func, args, res):
method op_CALL_FUNCTION_KW (line 2593) | def op_CALL_FUNCTION_KW(self, inst, func, args, names, res):
method op_CALL_FUNCTION_EX (line 2621) | def op_CALL_FUNCTION_EX(self, inst, func, vararg, varkwarg, res):
method _build_tuple_unpack (line 2631) | def _build_tuple_unpack(self, inst, tuples, temps, is_assign):
method op_BUILD_TUPLE_UNPACK_WITH_CALL (line 2667) | def op_BUILD_TUPLE_UNPACK_WITH_CALL(self, inst, tuples, temps, is_assi...
method op_BUILD_TUPLE_UNPACK (line 2671) | def op_BUILD_TUPLE_UNPACK(self, inst, tuples, temps, is_assign):
method op_LIST_TO_TUPLE (line 2674) | def op_LIST_TO_TUPLE(self, inst, const_list, res):
method op_BUILD_CONST_KEY_MAP (line 2678) | def op_BUILD_CONST_KEY_MAP(self, inst, keys, keytmps, values, res):
method op_GET_ITER (line 2745) | def op_GET_ITER(self, inst, value, res):
method op_FOR_ITER (line 2749) | def op_FOR_ITER(self, inst, iterator, pair, indval, pred):
method op_BINARY_SUBSCR (line 2777) | def op_BINARY_SUBSCR(self, inst, target, index, res):
method op_STORE_SUBSCR (line 2785) | def op_STORE_SUBSCR(self, inst, target, index, value):
method op_DELETE_SUBSCR (line 2793) | def op_DELETE_SUBSCR(self, inst, target, index):
method op_BUILD_TUPLE (line 2799) | def op_BUILD_TUPLE(self, inst, items, res):
method op_BUILD_LIST (line 2804) | def op_BUILD_LIST(self, inst, items, res):
method op_BUILD_SET (line 2809) | def op_BUILD_SET(self, inst, items, res):
method op_SET_ADD (line 2814) | def op_SET_ADD(self, inst, value, target, addvar, res):
method op_SET_UPDATE (line 2822) | def op_SET_UPDATE(self, inst, target, value, updatevar, res):
method op_DICT_UPDATE (line 2831) | def op_DICT_UPDATE(self, inst, target, value, updatevar, res):
method op_BUILD_MAP (line 2847) | def op_BUILD_MAP(self, inst, items, size, res):
method op_STORE_MAP (line 2891) | def op_STORE_MAP(self, inst, dct, key, value):
method op_UNARY_NEGATIVE (line 2896) | def op_UNARY_NEGATIVE(self, inst, value, res):
method op_UNARY_POSITIVE (line 2901) | def op_UNARY_POSITIVE(self, inst, value, res):
method op_UNARY_INVERT (line 2906) | def op_UNARY_INVERT(self, inst, value, res):
method op_UNARY_NOT (line 2911) | def op_UNARY_NOT(self, inst, value, res):
method _binop (line 2916) | def _binop(self, op, lhs, rhs, res):
method _inplace_binop (line 2923) | def _inplace_binop(self, op, lhs, rhs, res):
method op_BINARY_OP (line 2932) | def op_BINARY_OP(self, inst, op, lhs, rhs, res):
method op_BINARY_ADD (line 2944) | def op_BINARY_ADD(self, inst, lhs, rhs, res):
method op_BINARY_SUBTRACT (line 2947) | def op_BINARY_SUBTRACT(self, inst, lhs, rhs, res):
method op_BINARY_MULTIPLY (line 2950) | def op_BINARY_MULTIPLY(self, inst, lhs, rhs, res):
method op_BINARY_DIVIDE (line 2953) | def op_BINARY_DIVIDE(self, inst, lhs, rhs, res):
method op_BINARY_TRUE_DIVIDE (line 2956) | def op_BINARY_TRUE_DIVIDE(self, inst, lhs, rhs, res):
method op_BINARY_FLOOR_DIVIDE (line 2959) | def op_BINARY_FLOOR_DIVIDE(self, inst, lhs, rhs, res):
method op_BINARY_MODULO (line 2962) | def op_BINARY_MODULO(self, inst, lhs, rhs, res):
method op_BINARY_POWER (line 2965) | def op_BINARY_POWER(self, inst, lhs, rhs, res):
method op_BINARY_MATRIX_MULTIPLY (line 2968) | def op_BINARY_MATRIX_MULTIPLY(self, inst, lhs, rhs, res):
method op_BINARY_LSHIFT (line 2971) | def op_BINARY_LSHIFT(self, inst, lhs, rhs, res):
method op_BINARY_RSHIFT (line 2974) | def op_BINARY_RSHIFT(self, inst, lhs, rhs, res):
method op_BINARY_AND (line 2977) | def op_BINARY_AND(self, inst, lhs, rhs, res):
method op_BINARY_OR (line 2980) | def op_BINARY_OR(self, inst, lhs, rhs, res):
method op_BINARY_XOR (line 2983) | def op_BINARY_XOR(self, inst, lhs, rhs, res):
method op_INPLACE_ADD (line 2986) | def op_INPLACE_ADD(self, inst, lhs, rhs, res):
method op_INPLACE_SUBTRACT (line 2989) | def op_INPLACE_SUBTRACT(self, inst, lhs, rhs, res):
method op_INPLACE_MULTIPLY (line 2992) | def op_INPLACE_MULTIPLY(self, inst, lhs, rhs, res):
method op_INPLACE_DIVIDE (line 2995) | def op_INPLACE_DIVIDE(self, inst, lhs, rhs, res):
method op_INPLACE_TRUE_DIVIDE (line 2998) | def op_INPLACE_TRUE_DIVIDE(self, inst, lhs, rhs, res):
method op_INPLACE_FLOOR_DIVIDE (line 3001) | def op_INPLACE_FLOOR_DIVIDE(self, inst, lhs, rhs, res):
method op_INPLACE_MODULO (line 3004) | def op_INPLACE_MODULO(self, inst, lhs, rhs, res):
method op_INPLACE_POWER (line 3007) | def op_INPLACE_POWER(self, inst, lhs, rhs, res):
method op_INPLACE_MATRIX_MULTIPLY (line 3010) | def op_INPLACE_MATRIX_MULTIPLY(self, inst, lhs, rhs, res):
method op_INPLACE_LSHIFT (line 3013) | def op_INPLACE_LSHIFT(self, inst, lhs, rhs, res):
method op_INPLACE_RSHIFT (line 3016) | def op_INPLACE_RSHIFT(self, inst, lhs, rhs, res):
method op_INPLACE_AND (line 3019) | def op_INPLACE_AND(self, inst, lhs, rhs, res):
method op_INPLACE_OR (line 3022) | def op_INPLACE_OR(self, inst, lhs, rhs, res):
method op_INPLACE_XOR (line 3025) | def op_INPLACE_XOR(self, inst, lhs, rhs, res):
method op_JUMP_ABSOLUTE (line 3028) | def op_JUMP_ABSOLUTE(self, inst):
method op_JUMP_FORWARD (line 3032) | def op_JUMP_FORWARD(self, inst):
method op_JUMP_BACKWARD (line 3036) | def op_JUMP_BACKWARD(self, inst):
method op_POP_BLOCK (line 3042) | def op_POP_BLOCK(self, inst, kind=None):
method op_RETURN_VALUE (line 3051) | def op_RETURN_VALUE(self, inst, retval, castval):
method op_RETURN_CONST (line 3057) | def op_RETURN_CONST(self, inst, retval, castval):
method op_TO_BOOL (line 3070) | def op_TO_BOOL(self, inst, val, res):
method op_COMPARE_OP (line 3078) | def op_COMPARE_OP(self, inst, lhs, rhs, res):
method op_IS_OP (line 3111) | def op_IS_OP(self, inst, lhs, rhs, res):
method op_CONTAINS_OP (line 3116) | def op_CONTAINS_OP(self, inst, lhs, rhs, res):
method op_BREAK_LOOP (line 3125) | def op_BREAK_LOOP(self, inst, end=None):
method _op_JUMP_IF (line 3133) | def _op_JUMP_IF(self, inst, pred, iftrue):
method op_JUMP_IF_FALSE (line 3154) | def op_JUMP_IF_FALSE(self, inst, pred):
method op_JUMP_IF_TRUE (line 3157) | def op_JUMP_IF_TRUE(self, inst, pred):
method _jump_if_none (line 3160) | def _jump_if_none(self, inst, pred, iftrue):
method op_POP_JUMP_FORWARD_IF_NONE (line 3194) | def op_POP_JUMP_FORWARD_IF_NONE(self, inst, pred):
method op_POP_JUMP_FORWARD_IF_NOT_NONE (line 3197) | def op_POP_JUMP_FORWARD_IF_NOT_NONE(self, inst, pred):
method op_POP_JUMP_IF_NONE (line 3201) | def op_POP_JUMP_IF_NONE(self, inst, pred):
method op_POP_JUMP_IF_NOT_NONE (line 3204) | def op_POP_JUMP_IF_NOT_NONE(self, inst, pred):
method op_POP_JUMP_BACKWARD_IF_NONE (line 3211) | def op_POP_JUMP_BACKWARD_IF_NONE(self, inst, pred):
method op_POP_JUMP_BACKWARD_IF_NOT_NONE (line 3214) | def op_POP_JUMP_BACKWARD_IF_NOT_NONE(self, inst, pred):
method op_POP_JUMP_FORWARD_IF_FALSE (line 3217) | def op_POP_JUMP_FORWARD_IF_FALSE(self, inst, pred):
method op_POP_JUMP_FORWARD_IF_TRUE (line 3220) | def op_POP_JUMP_FORWARD_IF_TRUE(self, inst, pred):
method op_POP_JUMP_BACKWARD_IF_FALSE (line 3223) | def op_POP_JUMP_BACKWARD_IF_FALSE(self, inst, pred):
method op_POP_JUMP_BACKWARD_IF_TRUE (line 3226) | def op_POP_JUMP_BACKWARD_IF_TRUE(self, inst, pred):
method op_POP_JUMP_IF_FALSE (line 3229) | def op_POP_JUMP_IF_FALSE(self, inst, pred):
method op_POP_JUMP_IF_TRUE (line 3232) | def op_POP_JUMP_IF_TRUE(self, inst, pred):
method op_JUMP_IF_FALSE_OR_POP (line 3235) | def op_JUMP_IF_FALSE_OR_POP(self, inst, pred):
method op_JUMP_IF_TRUE_OR_POP (line 3238) | def op_JUMP_IF_TRUE_OR_POP(self, inst, pred):
method op_CHECK_EXC_MATCH (line 3241) | def op_CHECK_EXC_MATCH(self, inst, pred, tos, tos1):
method op_JUMP_IF_NOT_EXC_MATCH (line 3254) | def op_JUMP_IF_NOT_EXC_MATCH(self, inst, pred, tos, tos1):
method op_RERAISE (line 3272) | def op_RERAISE(self, inst, exc):
method op_RAISE_VARARGS (line 3287) | def op_RAISE_VARARGS(self, inst, exc):
method op_YIELD_VALUE (line 3302) | def op_YIELD_VALUE(self, inst, value, res):
method op_MAKE_FUNCTION (line 3308) | def op_MAKE_FUNCTION(self, inst, name, code, closure, annotations,
method op_MAKE_CLOSURE (line 3339) | def op_MAKE_CLOSURE(self, inst, name, code, closure, annotations,
method op_LOAD_CLOSURE (line 3345) | def op_LOAD_CLOSURE(self, inst, res):
method op_LOAD_CLOSURE (line 3362) | def op_LOAD_CLOSURE(self, inst, res):
method op_LIST_APPEND (line 3380) | def op_LIST_APPEND(self, inst, target, value, appendvar, res):
method op_LIST_EXTEND (line 3389) | def op_LIST_EXTEND(self, inst, target, value, extendvar, res):
method op_MAP_ADD (line 3454) | def op_MAP_ADD(self, inst, target, key, value, setitemvar, res):
method op_LOAD_ASSERTION_ERROR (line 3468) | def op_LOAD_ASSERTION_ERROR(self, inst, res):
method op_LOAD_METHOD (line 3482) | def op_LOAD_METHOD(self, *args, **kws):
method op_CALL_METHOD (line 3485) | def op_CALL_METHOD(self, *args, **kws):
method op_CALL_INTRINSIC_1 (line 3489) | def op_CALL_INTRINSIC_1(self, inst, operand, **kwargs):
method op_LOAD_SPECIAL (line 3510) | def op_LOAD_SPECIAL(self, inst, contextmanager, exit_method, block_end):
method op_LOAD_COMMON_CONSTANT (line 3538) | def op_LOAD_COMMON_CONSTANT(self, inst, res, idx):
class INTRINSIC_STOPITERATION_ERROR (line 3553) | class INTRINSIC_STOPITERATION_ERROR(AssertionError):
FILE: numba/core/intrinsics.py
class _DivmodFixer (line 8) | class _DivmodFixer(ir.Visitor):
method visit_Instruction (line 9) | def visit_Instruction(self, instr):
function fix_divmod (line 25) | def fix_divmod(mod):
FILE: numba/core/ir.py
class Loc (line 25) | class Loc(object):
method __init__ (line 31) | def __init__(self, filename, line, col=None, maybe_decorator=False):
method __eq__ (line 44) | def __eq__(self, other):
method __ne__ (line 52) | def __ne__(self, other):
method from_function_id (line 56) | def from_function_id(cls, func_id):
method __repr__ (line 59) | def __repr__(self):
method __str__ (line 63) | def __str__(self):
method _find_definition (line 69) | def _find_definition(self):
method _raw_function_name (line 82) | def _raw_function_name(self):
method get_lines (line 91) | def get_lines(self):
method _get_path (line 101) | def _get_path(self):
method strformat (line 115) | def strformat(self, nlines_up=2):
method with_lineno (line 198) | def with_lineno(self, line, col=None):
method short (line 204) | def short(self):
class SlotEqualityCheckMixin (line 217) | class SlotEqualityCheckMixin(object):
method __eq__ (line 222) | def __eq__(self, other):
method __le__ (line 231) | def __le__(self, other):
method __hash__ (line 234) | def __hash__(self):
class EqualityCheckMixin (line 239) | class EqualityCheckMixin(object):
method __eq__ (line 242) | def __eq__(self, other):
method __le__ (line 256) | def __le__(self, other):
method __hash__ (line 259) | def __hash__(self):
class VarMap (line 263) | class VarMap(object):
method __init__ (line 264) | def __init__(self):
method define (line 267) | def define(self, name, var):
method get (line 273) | def get(self, name):
method __contains__ (line 279) | def __contains__(self, name):
method __len__ (line 282) | def __len__(self):
method __repr__ (line 285) | def __repr__(self):
method __hash__ (line 288) | def __hash__(self):
method __iter__ (line 291) | def __iter__(self):
method __eq__ (line 294) | def __eq__(self, other):
method __ne__ (line 300) | def __ne__(self, other):
class AbstractRHS (line 304) | class AbstractRHS(object):
class Inst (line 310) | class Inst(EqualityCheckMixin, AbstractRHS):
method list_vars (line 315) | def list_vars(self):
method _rec_list_vars (line 321) | def _rec_list_vars(self, val):
class Stmt (line 343) | class Stmt(Inst):
method list_vars (line 354) | def list_vars(self):
class Terminator (line 358) | class Terminator(Stmt):
method get_targets (line 370) | def get_targets(self):
class Expr (line 374) | class Expr(Inst):
method __init__ (line 380) | def __init__(self, op, loc, **kws):
method __getattr__ (line 387) | def __getattr__(self, name):
method __setattr__ (line 392) | def __setattr__(self, name, value):
method binop (line 399) | def binop(cls, fn, lhs, rhs, loc):
method inplace_binop (line 409) | def inplace_binop(cls, fn, immutable_fn, lhs, rhs, loc):
method unary (line 421) | def unary(cls, fn, value, loc):
method call (line 429) | def call(cls, func, args, kws, loc, vararg=None, varkwarg=None, target...
method build_tuple (line 437) | def build_tuple(cls, items, loc):
method build_list (line 443) | def build_list(cls, items, loc):
method build_set (line 449) | def build_set(cls, items, loc):
method build_map (line 455) | def build_map(cls, items, size, literal_value, value_indexes, loc):
method pair_first (line 462) | def pair_first(cls, value, loc):
method pair_second (line 468) | def pair_second(cls, value, loc):
method getiter (line 475) | def getiter(cls, value, loc):
method iternext (line 482) | def iternext(cls, value, loc):
method exhaust_iter (line 489) | def exhaust_iter(cls, value, count, loc):
method getattr (line 497) | def getattr(cls, value, attr, loc):
method getitem (line 505) | def getitem(cls, value, index, loc):
method typed_getitem (line 514) | def typed_getitem(cls, value, dtype, index, loc):
method static_getitem (line 522) | def static_getitem(cls, value, index, index_var, loc):
method cast (line 532) | def cast(cls, value, loc):
method phi (line 542) | def phi(cls, loc):
method make_function (line 549) | def make_function(cls, name, code, closure, defaults, loc):
method null (line 558) | def null(cls, loc):
method undef (line 570) | def undef(cls, loc):
method dummy (line 579) | def dummy(cls, op, info, loc):
method __repr__ (line 592) | def __repr__(self):
method list_vars (line 611) | def list_vars(self):
method infer_constant (line 614) | def infer_constant(self):
class SetItem (line 618) | class SetItem(Stmt):
method __init__ (line 623) | def __init__(self, target, index, value, loc):
method __repr__ (line 633) | def __repr__(self):
class StaticSetItem (line 637) | class StaticSetItem(Stmt):
method __init__ (line 642) | def __init__(self, target, index, index_var, value, loc):
method __repr__ (line 654) | def __repr__(self):
class DelItem (line 658) | class DelItem(Stmt):
method __init__ (line 663) | def __init__(self, target, index, loc):
method __repr__ (line 671) | def __repr__(self):
class SetAttr (line 675) | class SetAttr(Stmt):
method __init__ (line 676) | def __init__(self, target, attr, value, loc):
method __repr__ (line 686) | def __repr__(self):
class DelAttr (line 690) | class DelAttr(Stmt):
method __init__ (line 691) | def __init__(self, target, attr, loc):
method __repr__ (line 699) | def __repr__(self):
class StoreMap (line 703) | class StoreMap(Stmt):
method __init__ (line 704) | de
Copy disabled (too large)
Download .json
Condensed preview — 1007 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,607K chars).
[
{
"path": ".coveragerc",
"chars": 456,
"preview": "# configuration file used by run_coverage.py\n[run]\nbranch = True\nsource = numba\nconcurrency = multiprocessing\nparallel ="
},
{
"path": ".flake8",
"chars": 8574,
"preview": "[flake8]\nignore =\n # Extra space in brackets\n E20,\n # Multiple spaces around \",\"\n E231,E241,\n # Comments\n"
},
{
"path": ".gitattributes",
"chars": 31,
"preview": "numba/_version.py export-subst\n"
},
{
"path": ".github/CODEOWNERS",
"chars": 3853,
"preview": "# Numba's codeowners file is dual purpose, it:\n#\n# 1. Provides information to github about who should be requested to re"
},
{
"path": ".github/ISSUE_TEMPLATE/Bug_report.md",
"chars": 885,
"preview": "---\nname: Bug Report\nabout: Report a bug. Not for asking general questions - see below.\n\n---\n\n<!--\n\nThanks for opening a"
},
{
"path": ".github/ISSUE_TEMPLATE/Feature_request.md",
"chars": 567,
"preview": "---\nname: Feature Request\nabout: Tell us about something in the Python language/NumPy you'd like Numba to support. Not f"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 903,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: General Question\n url: https://numba.discourse.group/c/numba/com"
},
{
"path": ".github/ISSUE_TEMPLATE/first_rc_checklist.md",
"chars": 2384,
"preview": "---\nname: First Release Candidate Checklist (maintainer only)\nabout: Checklist template for the first release of every s"
},
{
"path": ".github/ISSUE_TEMPLATE/sub_rc_checklist.md",
"chars": 1668,
"preview": "---\nname: Subsequent Release Candidate Checklist (maintainer only)\nabout: Checklist template for all subsequent releases"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 1721,
"preview": "<!--\n\nThanks for wanting to contribute to Numba :)\n\nFirst, if you need some help or want to chat to the core developers,"
},
{
"path": ".github/workflows/conda_workflow_matrix.json",
"chars": 1049,
"preview": "{\n \"conda_build_matrix\": [\n { \"python-version\": \"3.10\", \"numpy_build\": \"2.0\" },\n { \"python-version\": \"3.11\""
},
{
"path": ".github/workflows/numba_linux-64_conda_builder.yml",
"chars": 6696,
"preview": "name: numba_linux-64_conda_builder\n\non:\n schedule:\n - cron: '15 7 * * 6' # Saturday 7:15 AM UTC - linux-64 conda\n "
},
{
"path": ".github/workflows/numba_linux-64_wheel_builder.yml",
"chars": 8707,
"preview": "name: numba_linux-64_wheel_builder\n\non:\n schedule:\n - cron: '30 7 * * 6' # Saturday 7:30 AM UTC - linux-64 wheel\n "
},
{
"path": ".github/workflows/numba_linux-aarch64_conda_builder.yml",
"chars": 7281,
"preview": "name: numba_linux-aarch64_conda_builder\n\non:\n schedule:\n - cron: '10 7 * * 6' # Saturday 7:10 AM UTC - linux-aarch6"
},
{
"path": ".github/workflows/numba_linux-aarch64_wheel_builder.yml",
"chars": 7394,
"preview": "name: numba_linux-aarch64_wheel_builder\n\non:\n schedule:\n - cron: '20 7 * * 6' # Saturday 7:20 AM UTC - linux-aarch6"
},
{
"path": ".github/workflows/numba_osx-arm64_conda_builder.yml",
"chars": 6519,
"preview": "name: numba_osx-arm64_conda_builder\n\non:\n schedule:\n - cron: '0 7 * * 6' # Saturday 7:00 AM UTC - osx-arm64 conda ("
},
{
"path": ".github/workflows/numba_osx-arm64_wheel_builder.yml",
"chars": 9031,
"preview": "name: numba_osx-arm64_wheel_builder\n\non:\n schedule:\n - cron: '5 7 * * 6' # Saturday 7:05 AM UTC - osx-arm64 wheel ("
},
{
"path": ".github/workflows/numba_win-64_conda_builder.yml",
"chars": 6015,
"preview": "name: numba_win-64_conda_builder\n\non:\n schedule:\n - cron: '45 7 * * 6' # Saturday 7:45 AM UTC - win-64 conda\n pull"
},
{
"path": ".github/workflows/numba_win-64_wheel_builder.yml",
"chars": 6693,
"preview": "name: numba_win-64_wheel_builder\n\non:\n schedule:\n - cron: '0 8 * * 6' # Saturday 8:00 AM UTC - win-64 wheel\n pull_"
},
{
"path": ".github/workflows/stale.yml",
"chars": 1416,
"preview": "name: 'Mark stale issues'\non:\n schedule:\n - cron: '30 1 * * *'\n\npermissions:\n contents: read\n\njobs:\n stale:\n pe"
},
{
"path": ".github/workflows/towncrier.yml",
"chars": 1156,
"preview": "\nname: Check Release Notes\non:\n pull_request: \n types: [labeled, unlabeled, opened, reopened, synchronize]\n\nenv:\n G"
},
{
"path": ".github/workflows/upload_packages.yml",
"chars": 9033,
"preview": "name: Upload Packages\n\non:\n workflow_dispatch:\n inputs:\n tag:\n description: 'Git tag to download artifac"
},
{
"path": ".github/workflows/wheel_workflow_matrix.json",
"chars": 1359,
"preview": "{\n \"wheel_build_matrix\": [\n { \"python-version\": \"3.10\", \"numpy_build\": \"2.0.2\", \"python_tag\": \"cp310\" },\n "
},
{
"path": ".gitignore",
"chars": 260,
"preview": "*.pyc\n*.o\n*.so\n*.dylib\n*.pyd\n*.pdb\n*.egg-info\n*.sw[po]\n*.out\n*.ll\n.coverage\n.nfs*\ntags\nMANIFEST\n\nbuild/\ndocs/_build/\ndoc"
},
{
"path": ".readthedocs.yml",
"chars": 236,
"preview": "version: 2\nbuild:\n os: ubuntu-20.04\n tools:\n python: miniconda3-3.12-24.1\nsphinx:\n configuration: docs/source/conf"
},
{
"path": "CHANGE_LOG",
"chars": 140,
"preview": "The contents of this file has been removed. The change log can now be found at:\n\ndocs/source/release/*\n\nand:\n\ndocs/sourc"
},
{
"path": "CONTRIBUTING.md",
"chars": 2373,
"preview": "\nWe welcome people who want to make contributions to Numba, big or small!\nEven simple documentation improvements are enc"
},
{
"path": "LICENSE",
"chars": 1286,
"preview": "Copyright (c) 2012, Anaconda, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or with"
},
{
"path": "LICENSES.third-party",
"chars": 26321,
"preview": "The Numba source tree includes vendored libraries governed by the following\nlicenses.\n\n\nappdirs\n-------\n\n# This is the M"
},
{
"path": "MANIFEST.in",
"chars": 278,
"preview": "include MANIFEST.in\ninclude README.rst setup.py runtests.py versioneer.py CHANGE_LOG LICENSE\n\nrecursive-include numba *."
},
{
"path": "README.rst",
"chars": 1842,
"preview": "*****\nNumba\n*****\n\n.. image:: https://badges.gitter.im/numba/numba.svg\n :target: https://gitter.im/numba/numba?utm_sou"
},
{
"path": "SECURITY.md",
"chars": 832,
"preview": "# Numba Security Policy\n\n## Reporting Security Issues\n\nIf you believe you have found a security vulnerability in Numba, "
},
{
"path": "azure-pipelines.yml",
"chars": 3300,
"preview": "trigger:\n batch: true\n\nvariables:\n # Change the following along with adding new TEST_START_INDEX.\n TEST_COUNT: 21\n\njo"
},
{
"path": "bin/numba",
"chars": 191,
"preview": "#!/usr/bin/env python\n# -*- coding: UTF-8 -*-\nfrom __future__ import print_function, division, absolute_import\n\nfrom num"
},
{
"path": "buildscripts/azure/azure-linux-macos.yml",
"chars": 1607,
"preview": "parameters:\n name: ''\n vmImage: ''\n matrix: []\n\njobs:\n- job: ${{ parameters.name }}\n pool:\n vmImage: ${{ paramete"
},
{
"path": "buildscripts/azure/azure-windows.yml",
"chars": 2210,
"preview": "parameters:\n name: ''\n vmImage: ''\n\njobs:\n- job: ${{ parameters.name }}\n pool:\n vmImage: ${{ parameters.vmImage }}"
},
{
"path": "buildscripts/condarecipe.local/bld.bat",
"chars": 545,
"preview": "REM Setup VS2022 environment manually to avoid conda vs2022 activation issues\nREM on Windows Server 2025 (hardcoded tool"
},
{
"path": "buildscripts/condarecipe.local/build.sh",
"chars": 606,
"preview": "#!/bin/bash\n\nif [[ \"$(uname -s)\" == *\"Linux\"* ]] && [[ \"$(uname -p)\" == *\"86\"* ]]; then\n EXTRA_BUILD_EXT_FLAGS=\"--wer"
},
{
"path": "buildscripts/condarecipe.local/conda_build_config.yaml",
"chars": 614,
"preview": "# Numba/llvmlite stack needs an older compiler for backwards compatibility.\nc_compiler_version: # [linux or osx]"
},
{
"path": "buildscripts/condarecipe.local/license.txt",
"chars": 1286,
"preview": "Copyright (c) 2012, Anaconda, Inc.\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or with"
},
{
"path": "buildscripts/condarecipe.local/meta.yaml",
"chars": 3061,
"preview": "package:\n name: numba\n version: {{ GIT_DESCRIBE_TAG }}\n\nsource:\n path: ../..\n\nbuild:\n number: {{ GIT_DESCRIBE_NUM"
},
{
"path": "buildscripts/condarecipe.local/run_test.bat",
"chars": 1216,
"preview": "set NUMBA_DEVELOPER_MODE=1\nset NUMBA_DISABLE_ERROR_MESSAGE_HIGHLIGHTING=1\nset PYTHONFAULTHANDLER=1\n@rem Set CPU to gener"
},
{
"path": "buildscripts/condarecipe.local/run_test.sh",
"chars": 1455,
"preview": "#!/bin/bash\n\nset -e\n\nexport NUMBA_DEVELOPER_MODE=1\nexport NUMBA_DISABLE_ERROR_MESSAGE_HIGHLIGHTING=1\nexport PYTHONFAULTH"
},
{
"path": "buildscripts/github/build_wheel_linux.sh",
"chars": 1459,
"preview": "#!/bin/bash\nset -ex\n\n# Builds a Numba wheel inside the manylinux container\n# Usage: build_wheel_linux.sh <python_executa"
},
{
"path": "buildscripts/github/download_artifacts.py",
"chars": 5501,
"preview": "#!/usr/bin/env python\n\"\"\"Download artifacts from GitHub Actions workflow runs for given run IDs.\"\"\"\n\nimport argparse\nimp"
},
{
"path": "buildscripts/github/find_workflow_runs.py",
"chars": 5904,
"preview": "#!/usr/bin/env python\n\"\"\"Find successful llvmlite workflow run IDs for a given git tag.\"\"\"\n\nimport argparse\nimport json\n"
},
{
"path": "buildscripts/github/patch_wheel_dylib.py",
"chars": 1375,
"preview": "import sys\nimport re\nimport os\nimport subprocess as subp\n\n\nknown_rpaths = {\n '@rpath/libc++.1.dylib': \"/usr/lib/libc+"
},
{
"path": "buildscripts/github/repair_wheel_linux.sh",
"chars": 3393,
"preview": "#!/bin/bash\nset -ex\n\n# Repairs and patches a Numba wheel inside the manylinux container\n# Usage: repair_wheel_linux.sh <"
},
{
"path": "buildscripts/github/workflow_groups.json",
"chars": 410,
"preview": "{\n \"workflows\": {\n \"conda\": [\n \"numba_linux-64_conda_builder.yml\",\n \"numba_linux-aarch64_conda_builder.yml"
},
{
"path": "buildscripts/gpuci/axis.yaml",
"chars": 155,
"preview": "PYTHON_VER:\n- \"3.8\"\n\nCUDA_VER:\n- \"11.2\"\n\nCUDA_TOOLKIT_VER:\n- \"11.2\"\n- \"11.3\"\n- \"11.5\"\n- \"11.8\"\n\nLINUX_VER:\n- ubuntu18.04"
},
{
"path": "buildscripts/gpuci/build.sh",
"chars": 2814,
"preview": "##############################################\n# Numba GPU build and test script for CI #\n##########################"
},
{
"path": "buildscripts/incremental/MacOSX10.10.sdk.checksum",
"chars": 67,
"preview": "ea40a3b9dc48cd3593628490f2738b89282f00ab ./MacOSX10.10.sdk.tar.xz\n"
},
{
"path": "buildscripts/incremental/after_success.sh",
"chars": 174,
"preview": "#!/bin/bash\n\nsource activate $CONDA_ENV\n\n# Make sure any error below is reported as such\nset -v -e\n\nif [ \"$RUN_COVERAGE\""
},
{
"path": "buildscripts/incremental/build.cmd",
"chars": 276,
"preview": "\ncall activate %CONDA_ENV%\n\n@rem Build numba extensions without silencing compile errors\npython setup.py build_ext -q --"
},
{
"path": "buildscripts/incremental/build.sh",
"chars": 1074,
"preview": "#!/bin/bash\n\nsource activate\nconda activate $CONDA_ENV\n\n# Make sure any error below is reported as such\nset -v -e\n\n# Bu"
},
{
"path": "buildscripts/incremental/install_miniconda.sh",
"chars": 397,
"preview": "#!/bin/bash\n\nset -v -e\n\n# Install Miniconda\nunamestr=`uname`\nif [[ \"$unamestr\" == 'Linux' ]]; then\n wget https://repo"
},
{
"path": "buildscripts/incremental/setup_conda_environment.cmd",
"chars": 2008,
"preview": "@rem first configure conda to have more tolerance of network problems, these\n@rem numbers are not scientifically chosen,"
},
{
"path": "buildscripts/incremental/setup_conda_environment.sh",
"chars": 3871,
"preview": "#!/bin/bash\n\nset -v -e\n\n# first configure conda to have more tolerance of network problems, these\n# numbers are not scie"
},
{
"path": "buildscripts/incremental/test.sh",
"chars": 5077,
"preview": "#!/bin/bash\n\nsource activate $CONDA_ENV\n\n# Make sure any error below is reported as such\nset -v -e\n\n# If the build is a "
},
{
"path": "codecov.yml",
"chars": 676,
"preview": "# Configuration for codecov.io\n# When editing this file, please validate its contents using:\n# curl -X POST --data-bin"
},
{
"path": "contrib/valgrind-numba.supp",
"chars": 432,
"preview": "{\n <llvmpy_get_cpu_name_cond>\n Memcheck:Cond\n fun:_ZN4llvm3sys14getHostCPUNameEv\n fun:LLVMPY_GetHostCPUName\n}\n\n{"
},
{
"path": "docs/Makefile",
"chars": 6772,
"preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS = -j1\nSPHINXBU"
},
{
"path": "docs/_static/rtd-overrides.css",
"chars": 41,
"preview": ".wy-nav-content {\n max-width: 1200px\n}\n"
},
{
"path": "docs/_templates/EMPTY",
"chars": 0,
"preview": ""
},
{
"path": "docs/dagmap/README.md",
"chars": 2240,
"preview": "# DAG Roadmap\n\nThis directory includes a representation of the Numba roadmap in the form of a\nDAG. We have done this to"
},
{
"path": "docs/dagmap/dagmap.yaml",
"chars": 5648,
"preview": "meta:\n version: 1\nstyle:\n tags:\n performance:\n border: red\ntasks:\n - label: Track allocations in functions\n "
},
{
"path": "docs/dagmap/jquery.graphviz.svg.js",
"chars": 15960,
"preview": "/*\n * Copyright (c) 2015 Mountainstorm\n *\n * Permission is hereby granted, free of charge, to any person obtaining a cop"
},
{
"path": "docs/dagmap/render.py",
"chars": 2606,
"preview": "#!/usr/bin/env python\n\nimport os.path\nimport json\nimport collections\nimport yaml\nimport graphviz\nfrom jinja2 import Envi"
},
{
"path": "docs/dagmap/template.html",
"chars": 4278,
"preview": "<!--\n * Copyright (c) 2015 Mountainstorm\n *\n * Permission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "docs/environment.yml",
"chars": 558,
"preview": "# This environment is used by the RTD config for PR builds. RTD uses this as the\n# base environment and then adds in the"
},
{
"path": "docs/make.bat",
"chars": 6709,
"preview": "@ECHO OFF\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\n"
},
{
"path": "docs/source/_ext/ghfiles.py",
"chars": 2629,
"preview": "import os.path as path\nimport subprocess\nimport shlex\nfrom sphinx.util import logging\nfrom docutils import nodes\nlogger "
},
{
"path": "docs/source/conf.py",
"chars": 11554,
"preview": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n#\n# Numba documentation build configuration file, created by\n# sphinx-qui"
},
{
"path": "docs/source/cuda/bindings.rst",
"chars": 1453,
"preview": "CUDA Bindings\n=============\n\n.. cuda-deprecated::\n\nNumba supports two bindings to the CUDA Driver APIs: its own internal"
},
{
"path": "docs/source/cuda/caching.rst",
"chars": 1752,
"preview": "On-disk Kernel Caching\n======================\n\n.. cuda-deprecated::\n\nWhen the ``cache`` keyword argument of the :func:`@"
},
{
"path": "docs/source/cuda/cooperative_groups.rst",
"chars": 3816,
"preview": "==================\nCooperative Groups\n==================\n\n.. cuda-deprecated::\n\nSupported features\n------------------\n\nN"
},
{
"path": "docs/source/cuda/cuda_array_interface.rst",
"chars": 20571,
"preview": ".. _cuda-array-interface:\n\n================================\nCUDA Array Interface (Version 3)\n==========================="
},
{
"path": "docs/source/cuda/cuda_compilation.rst",
"chars": 5453,
"preview": "\n.. _cuda_compilation:\n\nCompiling Python functions for use with other languages\n========================================"
},
{
"path": "docs/source/cuda/cuda_ffi.rst",
"chars": 7152,
"preview": "\n.. _cuda_ffi:\n\nCalling foreign functions from Python kernels\n=============================================\n\n.. cuda-dep"
},
{
"path": "docs/source/cuda/cudapysupported.rst",
"chars": 10150,
"preview": "========================================\nSupported Python features in CUDA Python\n======================================"
},
{
"path": "docs/source/cuda/device-functions.rst",
"chars": 409,
"preview": "\nWriting Device Functions\n========================\n\n.. cuda-deprecated::\n\nCUDA device functions can only be invoked from"
},
{
"path": "docs/source/cuda/device-management.rst",
"chars": 2446,
"preview": "\nDevice management\n=================\n\n.. cuda-deprecated::\n\nFor multi-GPU machines, users may want to select which GPU t"
},
{
"path": "docs/source/cuda/examples.rst",
"chars": 21495,
"preview": "\n========\nExamples\n========\n\n.. cuda-deprecated::\n\n.. _cuda-vecadd:\n\nVector Addition\n===============\nThis example uses N"
},
{
"path": "docs/source/cuda/external-memory.rst",
"chars": 13887,
"preview": ".. _cuda-emm-plugin:\n\n=================================================\nExternal Memory Management (EMM) Plugin interfac"
},
{
"path": "docs/source/cuda/faq.rst",
"chars": 871,
"preview": "\n.. _cudafaq:\n\n=================================================\nCUDA Frequently Asked Questions\n======================="
},
{
"path": "docs/source/cuda/fastmath.rst",
"chars": 2254,
"preview": "\n.. _cuda-fast-math:\n\nCUDA Fast Math\n==============\n\n.. cuda-deprecated::\n\nAs noted in :ref:`fast-math`, for certain cla"
},
{
"path": "docs/source/cuda/index.rst",
"chars": 528,
"preview": "\n.. _cuda-index:\n\nNumba for CUDA GPUs\n===================\n\n.. cuda-deprecated::\n\n.. toctree::\n\n overview.rst\n kernel"
},
{
"path": "docs/source/cuda/intrinsics.rst",
"chars": 1729,
"preview": "\nSupported Atomic Operations\n===========================\n\n.. cuda-deprecated::\n\nNumba provides access to some of the ato"
},
{
"path": "docs/source/cuda/ipc.rst",
"chars": 1021,
"preview": "===================\nSharing CUDA Memory\n===================\n\n.. cuda-deprecated::\n\n.. _cuda-ipc-memory:\n\nSharing between"
},
{
"path": "docs/source/cuda/kernels.rst",
"chars": 8891,
"preview": "\n====================\nWriting CUDA Kernels\n====================\n\n.. cuda-deprecated::\n\nIntroduction\n============\n\nCUDA h"
},
{
"path": "docs/source/cuda/memory.rst",
"chars": 11823,
"preview": "=================\nMemory management\n=================\n\n.. cuda-deprecated::\n\n.. _cuda-device-memory:\n\nData transfer\n===="
},
{
"path": "docs/source/cuda/minor_version_compatibility.rst",
"chars": 2440,
"preview": ".. _minor-version-compatibility:\n\nCUDA Minor Version Compatibility\n================================\n\n.. cuda-deprecated:"
},
{
"path": "docs/source/cuda/overview.rst",
"chars": 6953,
"preview": "========\nOverview\n========\n\n.. cuda-deprecated::\n\n.. _cuda-deprecation-status:\n\nBuilt-in CUDA target deprecation and mai"
},
{
"path": "docs/source/cuda/random.rst",
"chars": 3946,
"preview": "\n.. _cuda-random:\n\nRandom Number Generation\n========================\n\n.. cuda-deprecated::\n\nNumba provides a random numb"
},
{
"path": "docs/source/cuda/reduction.rst",
"chars": 899,
"preview": "GPU Reduction\n==============\n\n.. cuda-deprecated::\n\nWriting a reduction algorithm for CUDA GPU can be tricky. Numba pro"
},
{
"path": "docs/source/cuda/simulator.rst",
"chars": 5011,
"preview": "\n.. _simulator:\n\n=================================================\nDebugging CUDA Python with the CUDA Simulator\n======="
},
{
"path": "docs/source/cuda/ufunc.rst",
"chars": 4491,
"preview": "CUDA Ufuncs and Generalized Ufuncs\n==================================\n\n.. cuda-deprecated::\n\nThis page describes the CUD"
},
{
"path": "docs/source/cuda-reference/host.rst",
"chars": 8131,
"preview": "CUDA Host API\n=============\n\n.. cuda-deprecated::\n\nDevice Management\n-----------------\n\nDevice detection and enquiry\n~~~"
},
{
"path": "docs/source/cuda-reference/index.rst",
"chars": 151,
"preview": "CUDA Python Reference\n=====================\n\n.. cuda-deprecated::\n\n.. toctree::\n\n host.rst\n kernel.rst\n types.rst\n"
},
{
"path": "docs/source/cuda-reference/kernel.rst",
"chars": 24395,
"preview": "CUDA Kernel API\n===============\n\n.. cuda-deprecated::\n\nKernel declaration\n------------------\n\nThe ``@cuda.jit`` decorato"
},
{
"path": "docs/source/cuda-reference/libdevice.rst",
"chars": 671,
"preview": "Libdevice functions\n===================\n\n.. cuda-deprecated::\n\nAll wrapped libdevice functions are listed in this sectio"
},
{
"path": "docs/source/cuda-reference/memory.rst",
"chars": 895,
"preview": "Memory Management\n=================\n\n.. cuda-deprecated::\n\n.. autofunction:: numba.cuda.to_device\n.. autofunction:: numb"
},
{
"path": "docs/source/cuda-reference/types.rst",
"chars": 2273,
"preview": "CUDA-Specific Types\n====================\n\n.. cuda-deprecated::\n\n.. note::\n\n This page is about types specific to CUDA"
},
{
"path": "docs/source/developer/architecture.rst",
"chars": 44070,
"preview": "\n.. _architecture:\n\n==================\nNumba architecture\n==================\n\nIntroduction\n============\n\nNumba is a comp"
},
{
"path": "docs/source/developer/bytecode.rst",
"chars": 7044,
"preview": "==========================\nNotes on Bytecode Handling\n==========================\n\n\n``LOAD_FAST_AND_CLEAR`` opcode, ``Exp"
},
{
"path": "docs/source/developer/caching.rst",
"chars": 4989,
"preview": ".. _developer-caching:\n\n================\nNotes on Caching\n================\n\nNumba supports caching of compiled functions"
},
{
"path": "docs/source/developer/compiler_pass_example.py",
"chars": 3267,
"preview": "def ex_compiler_pass():\n\n # magictoken.ex_compiler_pass.begin\n from numba import njit\n from numba.core import i"
},
{
"path": "docs/source/developer/contributing.rst",
"chars": 19740,
"preview": "\nContributing to Numba\n=====================\n\nWe welcome people who want to make contributions to Numba, big or small!\nE"
},
{
"path": "docs/source/developer/custom_pipeline.rst",
"chars": 7055,
"preview": ".. _arch-pipeline:\n\n========================\nCustomizing the Compiler\n========================\n\n.. warning:: The custom "
},
{
"path": "docs/source/developer/debugging.rst",
"chars": 7678,
"preview": ".. _developer-debugging:\n\n==================\nNotes on Debugging\n==================\n\nThis section describes techniques th"
},
{
"path": "docs/source/developer/dispatching.rst",
"chars": 11928,
"preview": "\n=======================\nPolymorphic dispatching\n=======================\n\nFunctions compiled using :func:`~numba.jit` or"
},
{
"path": "docs/source/developer/environment.rst",
"chars": 2215,
"preview": "\n==================\nEnvironment Object\n==================\n\nThe Environment object (Env) is used to maintain references t"
},
{
"path": "docs/source/developer/event_api.rst",
"chars": 67,
"preview": "Event API\n=========\n\n.. automodule:: numba.core.event\n :members:"
},
{
"path": "docs/source/developer/generators.rst",
"chars": 11324,
"preview": "\n.. _arch-generators:\n\n===================\nNotes on generators\n===================\n\nNumba recently gained support for co"
},
{
"path": "docs/source/developer/hashing.rst",
"chars": 2575,
"preview": "\n================\nNotes on Hashing\n================\n\nNumba supports the built-in :func:`hash` and does so by simply call"
},
{
"path": "docs/source/developer/index.rst",
"chars": 560,
"preview": "\n.. _developer-manual:\n\nDeveloper Manual\n================\n\n.. toctree::\n :maxdepth: 2\n\n contributing.rst\n release."
},
{
"path": "docs/source/developer/inline_example.py",
"chars": 2256,
"preview": "from numba import njit\nimport numba\nfrom numba.core import ir\n\n\n@njit(inline='never')\ndef never_inline():\n return 100"
},
{
"path": "docs/source/developer/inline_overload_example.py",
"chars": 1821,
"preview": "import numba\nfrom numba.extending import overload\nfrom numba import njit, types\n\n\ndef bar(x):\n \"\"\"A function stub to "
},
{
"path": "docs/source/developer/inlining.rst",
"chars": 13125,
"preview": ".. _notes-on-inlining:\n\n=================\nNotes on Inlining\n=================\n\nThere are occasions where it is useful to"
},
{
"path": "docs/source/developer/listings.rst",
"chars": 701,
"preview": "Listings\n========\n\nThis shows listings from compiler internal registries (e.g. lowering\ndefinitions). The information "
},
{
"path": "docs/source/developer/literal.rst",
"chars": 2320,
"preview": ".. _developer-literally:\n\n======================\nNotes on Literal Types\n======================\n\n.. note:: This document "
},
{
"path": "docs/source/developer/live_variable_analysis.rst",
"chars": 3299,
"preview": ".. _live variable analysis:\n\n======================\nLive Variable Analysis\n======================\n\n(Related issue https:"
},
{
"path": "docs/source/developer/llvm_timings.rst",
"chars": 4038,
"preview": ".. _developer-llvm-timings:\n\n====================\nNotes on timing LLVM\n====================\n\n\nGetting LLVM Pass Timings\n"
},
{
"path": "docs/source/developer/mission.rst",
"chars": 3274,
"preview": "Numba Mission Statement\n=======================\n\nIntroduction\n------------\n\nThis document is the mission statement for t"
},
{
"path": "docs/source/developer/numba-runtime.rst",
"chars": 7600,
"preview": ".. _arch-numba-runtime:\n\n======================\nNotes on Numba Runtime\n======================\n\n\nThe *Numba Runtime (NRT)"
},
{
"path": "docs/source/developer/release.rst",
"chars": 5971,
"preview": "Numba Release Process\n=====================\n\nThe goal of the Numba release process -- from a high level perspective -- i"
},
{
"path": "docs/source/developer/repomap.rst",
"chars": 25291,
"preview": "A Map of the Numba Repository\n=============================\n\nThe Numba repository is quite large, and due to age has fun"
},
{
"path": "docs/source/developer/rewrites.rst",
"chars": 17365,
"preview": "=====================================================\nUsing the Numba Rewrite Pass for Fun and Optimization\n============"
},
{
"path": "docs/source/developer/stencil.rst",
"chars": 8112,
"preview": ".. Copyright (c) 2017 Intel Corporation\n SPDX-License-Identifier: BSD-2-Clause\n\n.. _arch-stencil:\n\n=================\nN"
},
{
"path": "docs/source/developer/sys_monitoring.rst",
"chars": 6333,
"preview": "\n===========================\nNotes on ``sys.monitoring``\n===========================\n\n.. note:: This documentation was w"
},
{
"path": "docs/source/developer/target_extension.rst",
"chars": 2556,
"preview": "==========================\nNotes on Target Extensions\n==========================\n\n.. warning:: All features and APIs des"
},
{
"path": "docs/source/developer/threading_implementation.rst",
"chars": 12714,
"preview": "=========================================\nNotes on Numba's threading implementation\n===================================="
},
{
"path": "docs/source/extending/entrypoints.rst",
"chars": 2773,
"preview": "Registering Extensions with Entry Points\n========================================\n\nOften, third party packages will have"
},
{
"path": "docs/source/extending/high-level.rst",
"chars": 8383,
"preview": "\n.. _high-level-extending:\n\nHigh-level extension API\n========================\n\nThis extension API is exposed through the"
},
{
"path": "docs/source/extending/index.rst",
"chars": 914,
"preview": "\nExtending Numba\n===============\n\n.. module:: numba.extending\n\nThis chapter describes how to extend Numba to make it rec"
},
{
"path": "docs/source/extending/interval-example.rst",
"chars": 11568,
"preview": "\nExample: An Interval Type\n=========================\n\nIn this example, we will extend the Numba frontend to add support "
},
{
"path": "docs/source/extending/low-level.rst",
"chars": 8197,
"preview": "\n.. _low-level-extending:\n\nLow-level extension API\n=======================\n\nThis extension API is available through the "
},
{
"path": "docs/source/extending/mynorm.py",
"chars": 2320,
"preview": "import numpy as np\nfrom numba import njit, types\nfrom numba.extending import overload, register_jitable\nfrom numba.core."
},
{
"path": "docs/source/extending/overloading-guide.rst",
"chars": 8717,
"preview": "\n.. _overloading-guide:\n\n==============================\nA guide to using ``@overload``\n==============================\n\n\n"
},
{
"path": "docs/source/extending/template.py",
"chars": 978,
"preview": "# Declare that function `myfunc` is going to be overloaded (have a\n# substitutable Numba implementation)\n@overload(myfun"
},
{
"path": "docs/source/glossary.rst",
"chars": 4661,
"preview": "\nGlossary\n========\n\n.. glossary::\n\n ahead-of-time compilation\n AOT compilation\n AOT\n Compilation of a functio"
},
{
"path": "docs/source/index.rst",
"chars": 798,
"preview": ".. Numba documentation master file, created by\n sphinx-quickstart on Tue Dec 30 11:55:40 2014.\n You can adapt this f"
},
{
"path": "docs/source/proposals/cfunc.rst",
"chars": 5329,
"preview": "============================\nNBEP 4: Defining C callbacks\n============================\n\n:Author: Antoine Pitrou\n:Date: A"
},
{
"path": "docs/source/proposals/extension-points.rst",
"chars": 13336,
"preview": "========================\nNBEP 2: Extension points\n========================\n\n:Author: Antoine Pitrou\n:Date: July 2015\n:St"
},
{
"path": "docs/source/proposals/external-memory-management.rst",
"chars": 35310,
"preview": ".. _nbep-7:\n\n===============================================\nNBEP 7: CUDA External Memory Management Plugins\n==========="
},
{
"path": "docs/source/proposals/index.rst",
"chars": 901,
"preview": "===========================\nNumba Enhancement Proposals\n===========================\n\nNumba Enhancement Proposals (not re"
},
{
"path": "docs/source/proposals/integer-typing.rst",
"chars": 7867,
"preview": ".. _nbep-1:\n\n=================================\nNBEP 1: Changes in integer typing\n=================================\n\n:Aut"
},
{
"path": "docs/source/proposals/jit-classes.rst",
"chars": 7802,
"preview": "===================\nNBEP 3: JIT Classes\n===================\n\n:Author: Siu Kwan Lam\n:Date: Dec 2015\n:Status: Draft\n\nIntro"
},
{
"path": "docs/source/proposals/np-where-override.py",
"chars": 1697,
"preview": "import numpy as np\n\nfrom numba.core import types\nfrom numba.extending import overload\n\n@overload(np.where)\ndef where(con"
},
{
"path": "docs/source/proposals/type-inference.rst",
"chars": 6648,
"preview": "======================\nNBEP 5: Type Inference\n======================\n\n:Author: Siu Kwan Lam\n:Date: Sept 2016\n:Status: Dr"
},
{
"path": "docs/source/proposals/typing_recursion.rst",
"chars": 5035,
"preview": "========================\nNBEP 6: Typing Recursion\n========================\n\n:Author: Siu Kwan Lam\n:Date: Sept 2016\n:Stat"
},
{
"path": "docs/source/reference/aot-compilation.rst",
"chars": 2939,
"preview": ".. _aot-compilation:\n\nAhead-of-Time compilation\n=========================\n\n.. note:: This module is pending deprecation."
},
{
"path": "docs/source/reference/deprecation.rst",
"chars": 11891,
"preview": ".. _deprecation:\n\n===================\nDeprecation Notices\n===================\n\nThis section contains information about d"
},
{
"path": "docs/source/reference/envvars.rst",
"chars": 25966,
"preview": ".. _numba-envvars:\n\nEnvironment variables\n=====================\n\n.. note:: This section relates to environment variables"
},
{
"path": "docs/source/reference/fpsemantics.rst",
"chars": 3490,
"preview": "\nFloating-point pitfalls\n=======================\n\nPrecision and accuracy\n----------------------\n\nFor some operations, Nu"
},
{
"path": "docs/source/reference/index.rst",
"chars": 256,
"preview": "\nReference Manual\n================\n\n.. toctree::\n\n types.rst\n jit-compilation.rst\n aot-compilation.rst\n utils.rs"
},
{
"path": "docs/source/reference/jit-compilation.rst",
"chars": 24826,
"preview": "Just-in-Time compilation\n========================\n\n.. _jit-decorator:\n\nJIT functions\n-------------\n\n\n.. decorator:: numb"
},
{
"path": "docs/source/reference/numpysupported.rst",
"chars": 37297,
"preview": "\n.. _numpy-support:\n\n========================\nSupported NumPy features\n========================\n\nOne objective of Numba "
},
{
"path": "docs/source/reference/pysemantics.rst",
"chars": 2894,
"preview": ".. _pysemantics:\n\nDeviations from Python Semantics\n================================\n\nBounds Checking\n---------------\n\nBy"
},
{
"path": "docs/source/reference/pysupported.rst",
"chars": 40441,
"preview": ".. _pysupported:\n\n=========================\nSupported Python features\n=========================\n\nApart from the :ref:`py"
},
{
"path": "docs/source/reference/support_tiers.rst",
"chars": 7612,
"preview": ".. _support_tiers:\n\nSupport Policy\n==============\n\nThis section aims to answer questions like:\n\n* Which OS/hardware/plat"
},
{
"path": "docs/source/reference/types.rst",
"chars": 13827,
"preview": ".. _numba-types:\n\n====================\nTypes and signatures\n====================\n\nRationale\n=========\n\nAs an optimizing "
},
{
"path": "docs/source/reference/utils.rst",
"chars": 1047,
"preview": "\n=========\nUtilities\n=========\n\nDealing with pointers\n=====================\n\nThese functions can be called from pure Pyt"
},
{
"path": "docs/source/release/0.58.0-notes.rst",
"chars": 26963,
"preview": "Version 0.58.0 (20 September 2023)\n==================================\n\n.. contents:: Table of Contents\n :depth: 2\n\nThi"
},
{
"path": "docs/source/release/0.58.1-notes.rst",
"chars": 1296,
"preview": "\nVersion 0.58.1 (17 October 2023)\n================================\n\nThis is a maintenance release that adds support for "
},
{
"path": "docs/source/release/0.59.0-notes.rst",
"chars": 27844,
"preview": "Version 0.59.0 (31 January 2024)\n--------------------------------\n\n.. contents:: Table of Contents\n :depth: 2\n\nThis is"
},
{
"path": "docs/source/release/0.59.1-notes.rst",
"chars": 2925,
"preview": "Version 0.59.1 (18 March 2024)\n------------------------------\n\nThis is a bug-fix release to fix regressions in 0.59.0.\n\n"
},
{
"path": "docs/source/release/0.60.0-notes.rst",
"chars": 12744,
"preview": "\nVersion 0.60.0 (13 June 2024)\n=============================\n\n.. contents:: Table of Contents\n :depth: 2\n\nThis is a ma"
},
{
"path": "docs/source/release/0.61.0-notes.rst",
"chars": 27183,
"preview": "\nVersion 0.61.0 (16 January 2025)\n================================\n\n.. contents:: Table of Contents\n :depth: 2\n\nThis i"
},
{
"path": "docs/source/release/0.61.1-notes.rst",
"chars": 124,
"preview": "\nVersion 0.61.1 (NO RELEASE)\n===========================\n\nThe release was skipped due to issues during the release proce"
},
{
"path": "docs/source/release/0.61.2-notes.rst",
"chars": 3909,
"preview": "\nVersion 0.61.2 (07 April 2025)\n==============================\n\nThis is a maintenance release that adds support for NumP"
},
{
"path": "docs/source/release/0.62.0-notes.rst",
"chars": 30823,
"preview": "Version 0.62.0 (18 September 2025)\n==================================\n\n.. contents:: Table of Contents\n :depth: 2\n\nThi"
},
{
"path": "docs/source/release/0.62.1-notes.rst",
"chars": 633,
"preview": "Version 0.62.1 (26 September 2025)\n==================================\n\nThis is a patch release of Numba that fixes issue"
},
{
"path": "docs/source/release/0.63.0-notes.rst",
"chars": 12492,
"preview": "Version 0.63.0 (8 December 2025)\n================================\n\n.. contents:: Table of Contents\n :depth: 2\n\nThis is"
},
{
"path": "docs/source/release/0.63.1-notes.rst",
"chars": 914,
"preview": "\nVersion 0.63.1 (9 December 2025)\n================================\n\nThis is a patch release of Numba that fixes lowering"
},
{
"path": "docs/source/release/0.64.0-notes.rst",
"chars": 8237,
"preview": "\nVersion 0.64.0 (18 February 2026)\n=================================\n\nThis is a major Numba release. Numba now supports "
},
{
"path": "docs/source/release/0.65.0-notes.rst",
"chars": 4464,
"preview": "\nVersion 0.65.0 (TBD)\n====================\n\nThis is a major Numba release. Numba now adds support for Python 3.14t\nfree-"
},
{
"path": "docs/source/release-notes-overview.rst",
"chars": 298,
"preview": "======================\nRelease Notes\n======================\n\nTowncrier generated notes:\n--------------------------\n\n.. t"
},
{
"path": "docs/source/release-notes.rst",
"chars": 350270,
"preview": "Version 0.57.1 (21 June, 2023)\n------------------------------\n\nPull-Requests:\n\n* PR `#8964 <https://github.com/numba/num"
},
{
"path": "docs/source/user/5minguide.rst",
"chars": 9387,
"preview": ".. _numba-5_mins:\n\nA ~5 minute guide to Numba\n==========================\n\nNumba is a just-in-time compiler for Python th"
},
{
"path": "docs/source/user/cfunc.rst",
"chars": 8484,
"preview": ".. _cfunc:\n\n====================================\nCreating C callbacks with ``@cfunc``\n=================================="
},
{
"path": "docs/source/user/cli.rst",
"chars": 7530,
"preview": ".. _cli:\n\nCommand line interface\n======================\n\nNumba is a Python package, usually you ``import numba`` from Py"
},
{
"path": "docs/source/user/code_coverage.rst",
"chars": 1318,
"preview": "===============================\nCode Coverage for Compiled Code\n===============================\n\nNumba, a just-in-time c"
},
{
"path": "docs/source/user/examples.rst",
"chars": 1536,
"preview": "========\nExamples\n========\n\n\nMandelbrot\n----------\n\n.. literalinclude:: ../../../numba/tests/doc_examples/test_examples."
},
{
"path": "docs/source/user/faq.rst",
"chars": 16539,
"preview": "\n==========================\nFrequently Asked Questions\n==========================\n\nInstallation\n============\n\nNumba coul"
},
{
"path": "docs/source/user/index.rst",
"chars": 367,
"preview": "\nUser Manual\n===========\n\n.. toctree::\n\n 5minguide.rst\n overview.rst\n installing.rst\n jit.rst\n vectorize.rst\n "
},
{
"path": "docs/source/user/installing.rst",
"chars": 26469,
"preview": "\nInstallation\n============\n\nCompatibility\n-------------\n\nFor software compatibility, please see the section on :ref:`ver"
},
{
"path": "docs/source/user/jit-module.rst",
"chars": 3181,
"preview": ".. _jit-module:\n\n============================================\nAutomatic module jitting with ``jit_module``\n============="
},
{
"path": "docs/source/user/jit.rst",
"chars": 6819,
"preview": ".. _jit:\n\n===================================\nCompiling Python code with ``@jit``\n===================================\n\nN"
},
{
"path": "docs/source/user/jitclass.rst",
"chars": 9134,
"preview": ".. _jitclass:\n\n===========================================\nCompiling Python classes with ``@jitclass``\n================="
},
{
"path": "docs/source/user/overview.rst",
"chars": 1103,
"preview": "\nOverview\n========\n\nNumba is a compiler for Python array and numerical functions that gives \nyou the power to speed up y"
},
{
"path": "docs/source/user/parallel.rst",
"chars": 31542,
"preview": ".. Copyright (c) 2017 Intel Corporation\n SPDX-License-Identifier: BSD-2-Clause\n\n.. _numba-parallel:\n\n================="
},
{
"path": "docs/source/user/performance-tips.rst",
"chars": 11324,
"preview": ".. _performance-tips:\n\nPerformance Tips\n================\n\nThis is a short guide to features present in Numba that can he"
},
{
"path": "docs/source/user/pycc.rst",
"chars": 4225,
"preview": "\n============================\nCompiling code ahead of time\n============================\n\n.. _pycc:\n\nWhile Numba's main u"
},
{
"path": "docs/source/user/stencil.rst",
"chars": 10737,
"preview": ".. Copyright (c) 2017 Intel Corporation\n SPDX-License-Identifier: BSD-2-Clause\n\n.. _numba-stencil:\n\n=================="
},
{
"path": "docs/source/user/talks.rst",
"chars": 3343,
"preview": "\nTalks and Tutorials\n===================\n\n.. note:: This is a selection of talks and tutorials that have been given by m"
},
{
"path": "docs/source/user/threading-layer.rst",
"chars": 13344,
"preview": ".. _numba-threading-layer:\n\nThe Threading Layers\n====================\n\nThis section is about the Numba threading layer, "
},
{
"path": "docs/source/user/troubleshoot.rst",
"chars": 40533,
"preview": "\n.. _numba-troubleshooting:\n\n========================\nTroubleshooting and tips\n========================\n\n.. _what-to-com"
},
{
"path": "docs/source/user/vectorize.rst",
"chars": 21944,
"preview": "==================================\nCreating NumPy universal functions\n==================================\n\nThere are two "
},
{
"path": "docs/source/user/withobjmode.rst",
"chars": 1246,
"preview": "============================================================\nCallback into the Python Interpreter from within JIT'ed cod"
}
]
// ... and 807 more files (download for full content)
About this extraction
This page contains the full source code of the numba/numba GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1007 files (12.5 MB), approximately 3.3M tokens, and a symbol index with 22130 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.