| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* DEP: remove allocation_tracking
* DOC: add release note
* DEP: deprecate PyDataMem_SetEventHook
* DOC: fix name of release note
* fixes from review
* DOC: document deprecation of PyDataMem_EventHookFunc
|
| |
|
|\
| |
| | |
DOC: Two small changes in array.rst:
|
| |
| |
| |
| |
| |
| | |
* Include the return values of `PyArray_RegisterCanCast`
in the description.
* Correct the documentation of `PyArray_Scalar`.
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
Builds on gh-20194. Fixes breakage of SciPy in https://github.com/scipy/scipy/issues/14917
At some point we could flip the default to "warn" instead of "no warning"
* make warning conditional on NUMPY_WARN_IF_NO_MEM_POLICY
* add test, fix example code
* fixes from review
* typo
|
|
|
|
|
|
|
| |
* DOC: add release note and move NEP 49 to Final
* fix link
* fix release note
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes gh-17467. Adds a public struct to hold memory manipulation routines PyDataMem_Handler and two new API functions PyDataMem_SetHandler to replace the current routines with the new ones, and PyDataMem_GetHandlerName to get the string name of the current routines (either globally or for a specific ndarray object). This also changes the size of the ndarray object to hold the PyDataMem_Handler active when it was created so subsequent actions on its data memory will remain consistent.
Tests and documentation are included. Along the way, I found some places in the code where the current policy is inconsistent (all data memory handling should have gone through npy_*_cache not PyDataMem_*) so even if this is rejected it might improve the cache handling.
The PyDataMem_Handler has fields to override memcpy, these are currently not implemented: memcpy in the code base is untouched. I think this PR is invasive enough as-is, if desired memcpy can be handled in a follow-up PR.
* ENH: add and use global configurable memory routines
* ENH: add tests and a way to compile c-extensions from tests
* fix allocation/free exposed by tests
* DOC: document the new APIs (and some old ones too)
* BUG: return void from FREE, also some cleanup
* MAINT: changes from review
* fixes from linter
* setting ndarray->descr on 0d or scalars mess with FREE
* make scalar allocation more consistent wrt np_alloc_cache
* change formatting for sphinx
* remove memcpy variants
* update to match NEP 49
* ENH: add a python-level get_handler_name
* ENH: add core.multiarray.get_handler_name
* Allow closure-like definition of the data mem routines
* Fix incompatible pointer warnings
* Note PyDataMemAllocator and PyMemAllocatorEx differentiation
Co-authored-by: Matti Picus <matti.picus@gmail.com>
* Redefine default allocator handling
* Always allocate new arrays using the current_handler
* Search for the mem_handler name of the data owner
* Sub-comparisons don't need a local mem_handler
* Make the default_handler a valid PyDataMem_Handler
* Fix PyDataMem_SetHandler description (NEP discussion)
* Pass the allocators by reference
* Implement allocator context-locality
* Fix documentation, make PyDataMem_GetHandler return const
* remove import of setuptools==49.1.3, doesn't work on python3.10
* Fix refcount leaks
* fix function signatures in test
* Return early on PyDataMem_GetHandler error (VOID_compare)
* Add context/thread-locality tests, allow testing custom policies
* ENH: add and use global configurable memory routines
* ENH: add tests and a way to compile c-extensions from tests
* fix allocation/free exposed by tests
* DOC: document the new APIs (and some old ones too)
* BUG: return void from FREE, also some cleanup
* MAINT: changes from review
* fixes from linter
* setting ndarray->descr on 0d or scalars mess with FREE
* make scalar allocation more consistent wrt np_alloc_cache
* change formatting for sphinx
* remove memcpy variants
* update to match NEP 49
* ENH: add a python-level get_handler_name
* ENH: add core.multiarray.get_handler_name
* Allow closure-like definition of the data mem routines
* Fix incompatible pointer warnings
* Note PyDataMemAllocator and PyMemAllocatorEx differentiation
Co-authored-by: Matti Picus <matti.picus@gmail.com>
* Redefine default allocator handling
* Always allocate new arrays using the current_handler
* Search for the mem_handler name of the data owner
* Sub-comparisons don't need a local mem_handler
* Make the default_handler a valid PyDataMem_Handler
* Fix PyDataMem_SetHandler description (NEP discussion)
* Pass the allocators by reference
* remove import of setuptools==49.1.3, doesn't work on python3.10
* fix function signatures in test
* try to fix cygwin extension building
* YAPF mem_policy test
* Less empty lines, more comments (tests)
* Apply suggestions from code review (set an exception and)
Co-authored-by: Matti Picus <matti.picus@gmail.com>
* skip test on cygwin
* update API hash for changed signature
* TST: add gc.collect to make sure cycles are broken
* Implement thread-locality for PyPy
Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
* Update numpy/core/tests/test_mem_policy.py
Co-authored-by: Sebastian Berg <sebastian@sipsolutions.net>
* fixes from review
* update circleci config
* fix test
* make the connection between OWNDATA and having a allocator handle more explicit
* improve docstring, fix flake8 for tests
* update PyDataMem_GetHandler() from review
* Implement allocator lifetime management
* update NEP and add best-effort handling of error in PyDataMem_UserFREE
* ENH: fix and test for blindly taking ownership of data
* Update doc/neps/nep-0049.rst
Co-authored-by: Elias Koromilas <elias.koromilas@gmail.com>
|
|\
| |
| | |
DOC: Deindent some sphinx declarations to avoid warnings.
|
| | |
|
| | |
|
|/ |
|
| |
|
|
|
| |
Co-authored-by: Melissa Weber Mendonça <melissawm@gmail.com>
|
|
|
|
|
|
|
|
| |
1. PyArray_CopyObject
2. PyArray_MapIterArray
3. PyArray_MapIterSwapAxes
4. PyArray_MapIterNext
5. PyArray_MapIterArrayCopyIfOverlap
|
| |
|
| |
|
| |
|
|\
| |
| | |
MAINT: Refactor UFunc core to use NEP 43 style dispatching
|
| |
| |
| |
| | |
Co-authored-by: Matti Picus <matti.picus@gmail.com>
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The first (big) chunk of a multi-step process to update all ufuncs
to NEP 43 style ufuncs.
This limits itself to normal ufunc calls and sets ufunc.at and
all reduce-like operations to the side. These would add another
level of complexity.
|
| |
| |
| | |
Co-authored-by: Matti Picus <matti.picus@gmail.com>
|
| |
| |
| |
| | |
PyArray_FinalizeFunc.
|
| | |
|
|/ |
|
| |
|
|
|
|
|
| |
* MAINT: Move masked code 1:1 (does not work)
* MAINT: Fixup code move and small follow-up fixes
|
|
|
|
|
|
| |
Document that NeighborhoodIterator will point to the begining
of the data instead of the position pointed by iter on creation
in the special case where data is contiguous.
|
|
|
|
|
|
|
|
| |
Both functions have been deprecated in 1.19.x without complaints
(so far). The first function is largely identical to a Python ufunc
call. The second function had served internal NumPy purposes until
NumPy 1.6 (probably), and since then had a comment that it should
probably be removed (it was not documented).
|
|\
| |
| | |
DOC: Fix for building with sphinx 3
|
| | |
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* ENH,API: Store exported buffer info on the array
This speeds up array deallocation and buffer exports, since it
removes the need to global dictionary lookups. It also somewhat
simplifies the logic. The main advantage is prossibly less the
speedup itself (which is not large compared to most things that
happen in the livetime of an array), but rather that no unnecessary
work is done for shortlived arrays, which never export a buffer.
The downside of this approach is that the ABI changes for anyone
who would be subclassing ndarray in C.
* MAINT: Do not tag the NULL (no buffers exported)
The allocation is not the right place to initialize to anything but
NULL, so take the easy path and do not tag the NULL default.
* TST: Add test for best try RuntimeError on corrupt buffer-info
* Remove NPY_SIZEOF_PYARRAYOBJECT and add some documentation
* Use 3 to tag the pointer and object for a "bad" one in the test
* DEP: deprecate the NPY_SIZEOF_PYARRAYOBJECT macro
* Tune down matti's deprecation to write the error instead.
* Tweak macro, so that clang hopefully doesn't complain.
* Use None instead of NULL in PyErr_WriteUnraisable, pypy seems to have a bug with it
* Just comment it out...
* Apply suggestions from code review
Co-authored-by: Matti Picus <matti.picus@gmail.com>
Co-authored-by: mattip <matti.picus@gmail.com>
|
|
|
| |
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
|
| |
|
| |
|
|\
| |
| | |
DOC: Fix the references for ``__array_*__``
|
| | |
|
|\ \
| | |
| | | |
DOC: Replace ``PyCObject`` with ``PyCapsule``
|
| |/ |
|
|\ \
| | |
| | | |
DOC: Add ``identity_value`` to ``PyUFuncObject``
|
| |/ |
|
|/ |
|
| |
|
| |
|
|\
| |
| | |
DOC: Add the entry for ``NPY_FEATURE_VERSION``
|
| | |
|
| | |
|
|/ |
|
| |
|