{
  "__type": "IngestedDoc",
  "__tag": 4010,
  "_content": {},
  "_ordered_sections": [],
  "item_file": null,
  "item_line": null,
  "item_type": null,
  "aliases": [],
  "example_section_data": {
    "__type": "Section",
    "__tag": 4015,
    "children": [],
    "title": [],
    "level": 0,
    "target": null
  },
  "see_also": [],
  "signature": null,
  "references": null,
  "qa": "release:2.0.0-notes",
  "arbitrary": [
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy 2.0.0 is the first major release since 2006. It is the result of 11 months of development since the last feature release and is the work of 212 contributors spread over 1078 pull requests. It contains a large number of exciting new features as well as changes to both the Python and C APIs."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This major release includes breaking changes that could not happen in a regular minor (feature) release - including an ABI break, changes to type promotion rules, and API changes which may not have been emitting deprecation warnings in 1.26.x. Key documents related to how to adapt to changes in NumPy 2.0, in addition to these release notes, include:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy-2-migration-guide",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "numpy_2_0_migration_guide"
                      },
                      "kind": "exists"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "NumPy 2.0-specific advice",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "dev:depending_on_numpy"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "for-downstream-package-authors",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "dev:depending_on_numpy"
                      },
                      "kind": "exists"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NumPy 2.0.0 Release Notes"
        }
      ],
      "level": 0,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Highlights of this release include:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "New features:"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "A new variable-length string dtype, "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "StringDType",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy.dtypes:StringDType"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " and a new     "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "numpy.strings",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy.strings"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " namespace with performant ufuncs for string operations,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Support for "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "float32"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " and "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "longdouble"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " in all "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "numpy.fft",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy.fft"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " functions,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Support for the array API standard in the main "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "numpy"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " namespace."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Performance improvements:"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Sorting functions ("
                            },
                            {
                              "__type": "InlineRole",
                              "__tag": 4003,
                              "value": "sort",
                              "domain": null,
                              "role": null,
                              "inventory": null
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineRole",
                              "__tag": 4003,
                              "value": "argsort",
                              "domain": null,
                              "role": null,
                              "inventory": null
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineRole",
                              "__tag": 4003,
                              "value": "partition",
                              "domain": null,
                              "role": null,
                              "inventory": null
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", "
                            },
                            {
                              "__type": "InlineRole",
                              "__tag": 4003,
                              "value": "argpartition",
                              "domain": null,
                              "role": null,
                              "inventory": null
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ")     have been accelerated through the use of the Intel x86-simd-sort and Google     Highway libraries, and may see large (hardware-specific) speedups,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "macOS Accelerate support and binary wheels for macOS >=14, with significant     performance improvements for linear algebra operations on macOS, and wheels     that are about 3 times smaller,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "numpy.char",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy.char"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " fixed-length string operations have been accelerated by     implementing ufuncs that also support "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "StringDType",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy.dtypes:StringDType"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " in     addition to the fixed-length string dtypes,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "A new tracing and introspection API, "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "opt_func_info",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy.lib.introspect:opt_func_info"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ",     to determine which hardware-specific kernels are available and will be     dispatched to."
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "numpy.save",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy:save"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " now uses pickle protocol version 4 for saving arrays with     object dtype, which allows for pickle objects larger than 4GB and improves     saving speed by about 5% for large arrays."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Python API improvements:"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "A clear split between public and private API, with a new     "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "module structure",
                              "reference": {
                                "__type": "LocalRef",
                                "__tag": 4022,
                                "kind": "docs",
                                "path": "reference:module_structure"
                              },
                              "kind": "exists"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ", and each public function now     available in a single place,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Many removals of non-recommended functions and aliases. This should make     it easier to learn and use NumPy. The number of objects in the main     namespace decreased by ~10% and in "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "numpy.lib"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " by ~80%,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "Canonical dtype names",
                              "reference": {
                                "__type": "LocalRef",
                                "__tag": 4022,
                                "kind": "docs",
                                "path": "user:basics.types"
                              },
                              "kind": "exists"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " and a new     "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "isdtype",
                              "reference": {
                                "__type": "RefInfo",
                                "__tag": 4000,
                                "module": "numpy",
                                "version": "*",
                                "kind": "api",
                                "path": "numpy:isdtype"
                              },
                              "kind": "module"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " introspection function,"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "C API improvements:"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "A new "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "public C API for creating custom dtypes",
                              "reference": {
                                "__type": "LocalRef",
                                "__tag": 4022,
                                "kind": "docs",
                                "path": "reference:c-api:array"
                              },
                              "kind": "exists"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ","
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Many outdated functions and macros removed, and private internals hidden to     ease future extensibility,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "New, easier to use, initialization functions:     "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "PyArray_ImportNumPyAPI"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " and "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "PyUFunc_ImportUFuncAPI"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Improved behavior:"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "Improvements to type promotion behavior was changed by adopting "
                            },
                            {
                              "__type": "InlineRole",
                              "__tag": 4003,
                              "value": "NEP     50 <NEP50>",
                              "domain": null,
                              "role": "ref",
                              "inventory": null
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ". This fixes many user surprises about promotions which     previously often depended on data values of input arrays rather than only     their dtypes.  Please see the NEP and the "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "numpy-2-migration-guide",
                              "reference": {
                                "__type": "LocalRef",
                                "__tag": 4022,
                                "kind": "docs",
                                "path": "numpy_2_0_migration_guide"
                              },
                              "kind": "exists"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "     for details as this change can lead to changes in output dtypes and lower     precision results for mixed-dtype operations."
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "The default integer type on Windows is now "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "int64"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " rather than "
                            },
                            {
                              "__type": "InlineCode",
                              "__tag": 4051,
                              "value": "int32"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ",     matching the behavior on other platforms,"
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "The maximum number of array dimensions is changed from 32 to 64"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Documentation:"
                    }
                  ]
                },
                {
                  "__type": "BulletList",
                  "__tag": 4053,
                  "ordered": false,
                  "start": 1,
                  "children": [
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "The reference guide navigation was significantly improved, and there is now     documentation on NumPy's "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "module structure",
                              "reference": {
                                "__type": "LocalRef",
                                "__tag": 4022,
                                "kind": "docs",
                                "path": "reference:module_structure"
                              },
                              "kind": "exists"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": ","
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "__type": "ListItem",
                      "__tag": 4054,
                      "children": [
                        {
                          "__type": "Paragraph",
                          "__tag": 4045,
                          "children": [
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": "The "
                            },
                            {
                              "__type": "CrossRef",
                              "__tag": 4002,
                              "value": "building from source",
                              "reference": {
                                "__type": "LocalRef",
                                "__tag": 4022,
                                "kind": "docs",
                                "path": "building:index"
                              },
                              "kind": "exists"
                            },
                            {
                              "__type": "Text",
                              "__tag": 4046,
                              "value": " documentation was     completely rewritten,"
                            }
                          ]
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Furthermore there are many changes to NumPy internals, including continuing to migrate code from C to C++, that will make it easier to improve and maintain NumPy in the future."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The \"no free lunch\" theorem dictates that there is a price to pay for all these API and behavior improvements and better future extensibility. This price is:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": true,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Backwards compatibility. There are a significant number of breaking changes    to both the Python and C APIs. In the majority of cases, there are clear    error messages that will inform the user how to adapt their code. However,    there are also changes in behavior for which it was not possible to give    such an error message - these cases are all covered in the Deprecation and    Compatibility sections below, and in the "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy-2-migration-guide",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "numpy_2_0_migration_guide"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Note that there is a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ruff"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " mode to auto-fix many things in Python code."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Breaking changes to the NumPy ABI. As a result, binaries of packages that    use the NumPy C API and were built against a NumPy 1.xx release will not    work with NumPy 2.0. On import, such packages will see an "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ImportError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "    with a message about binary incompatibility."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "It is possible to build binaries against NumPy 2.0 that will work at runtime    with both NumPy 2.0 and 1.x. See "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy-2-abi-handling",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "dev:depending_on_numpy"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for more details."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Strong",
                      "__tag": 4048,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "All downstream packages that depend on the NumPy ABI are advised to do a\n   new release built against NumPy 2.0 and verify that that release works with\n   both 2.0 and 1.26 - ideally in the period between 2.0.0rc1 (which will be\n   ABI-stable) and the final 2.0.0 release to avoid problems for their users."
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The Python versions supported by this release are 3.9-3.12."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Highlights"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.geterrobj"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.seterrobj"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and the related ufunc keyword argument   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "extobj="
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have been removed.  The preferred replacement for all of these   is using the context manager "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "with np.errstate():"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23922"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23922",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.cast"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. The literal replacement for   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.cast[dtype](arg)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.asarray(arg, dtype=dtype)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.source"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. The preferred replacement is   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "inspect.getsource"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.lookfor"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24144"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24144",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.who"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. As an alternative for the removed functionality, one   can use a variable explorer that is available in IDEs such as Spyder or Jupyter Notebook."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24321"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24321",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Warnings and exceptions present in "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.exceptions",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.exceptions"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " (e.g,   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "ComplexWarning",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.exceptions:ComplexWarning"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "VisibleDeprecationWarning",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.exceptions:VisibleDeprecationWarning"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") are no longer exposed in the   main namespace."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Multiple niche enums, expired members and functions have been removed from   the main namespace, such as: "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ERR_*"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "SHIFT_*"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.fastCopyAndTranspose"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.kernel_version"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.numarray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.oldnumeric"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.set_numeric_ops"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24316"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24316",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Replaced "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "from ... import *"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy/__init__.py"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " with explicit imports.   As a result, these main namespace members got removed: "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.FLOATING_POINT_SUPPORT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.FPE_*"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.NINF"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.PINF"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.NZERO"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.PZERO"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.CLIP"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.WRAP"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.WRAP"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.RAISE"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.BUFSIZE"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.UFUNC_BUFSIZE_DEFAULT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.UFUNC_PYVALS_NAME"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.ALLOW_THREADS"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.MAXDIMS"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.MAY_SHARE_EXACT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.MAY_SHARE_BOUNDS"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "add_newdoc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.add_docstring"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.add_newdoc_ufunc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24357"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24357",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.float_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.float64"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.complex_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.complex128"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.longfloat"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.longdouble"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.singlecomplex"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.complex64"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.cfloat"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.complex128"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.longcomplex"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.clongdouble"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.clongfloat"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.clongdouble"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.string_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.bytes_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.unicode_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.str_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.Inf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.inf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.Infinity"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.inf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.NaN"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.nan"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.infty"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.inf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.mat"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.asmatrix"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.issubclass_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "issubclass"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " builtin instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.asfarray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.asarray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " with a proper dtype instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.set_string_function"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.set_printoptions"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   instead with a formatter for custom printing of NumPy objects."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.tracemalloc_domain"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is now only available from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.lib"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.recfromcsv"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.recfromtxt"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " were removed from the main namespace.   Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.genfromtxt"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " with comma delimiter instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.issctype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.maximum_sctype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.obj2sctype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.sctype2char"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.sctypes"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.issubsctype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " were all removed from the   main namespace without replacement, as they where niche members."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Deprecated "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.deprecate"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.deprecate_with_doc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed    from the main namespace. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "DeprecationWarning"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Deprecated "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.safe_eval"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed from the main namespace.    Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ast.literal_eval"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24376"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24376",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.find_common_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.promote_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.result_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead. To achieve semantics for the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "scalar_types"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   argument, use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.result_type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and pass "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "0.0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "0j"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as a   Python scalar instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.round_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.round"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.nbytes"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.dtype(<dtype>).itemsize"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24477"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24477",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.compare_chararrays"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed from the main namespace.    Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.char.compare_chararrays"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "charrarray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in the main namespace has been deprecated. It can be imported   without a deprecation warning from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.char.chararray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for now,   but we are planning to fully deprecate and remove "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "chararray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in the future."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.format_parser"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed from the main namespace.    Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.rec.format_parser"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24587"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24587",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Support for seven data type string aliases has been removed from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.dtype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ":   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "int0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "uint0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "void0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "object0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "str0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "bytes0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "bool8"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24807"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24807",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The experimental "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.array_api"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " submodule has been removed. Use the main   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " namespace for regular usage instead, or the separate   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "array-api-strict"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " package for the compliance testing use case for which   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.array_api"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " was mostly used."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25911"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25911",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NumPy 2.0 Python API removals"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "UFuncs called "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array_prepare__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " before running computations for normal ufunc calls (not generalized ufuncs, reductions, etc.). The function was also called instead of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array_wrap__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " on the results of some linear algebra functions."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "It is now removed. If you use it, migrate to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array_ufunc__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or rely on "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array_wrap__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which is called with a context in all cases, although only after the result array is filled. In those code paths, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array_wrap__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will now be passed a base class, rather than a subclass array."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25105"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25105",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "__array_prepare__"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " is removed"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.compat"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been deprecated, as Python 2 is no longer supported."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.int8"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and similar classes will no longer support conversion of    out of bounds python integers to integer arrays. For example,    conversion of 255 to int8 will not return -1.   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.iinfo(dtype)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " can be used to check the machine limits for data types.    For example, "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.iinfo(np.uint16)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " returns min = 0 and max = 65535."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.array(value).astype(dtype)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will give the desired result."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.safe_eval"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been deprecated. "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ast.literal_eval"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " should be used instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23830"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23830",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.recfromcsv"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.recfromtxt"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.disp"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.get_array_wrap"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.maximum_sctype"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.deprecate"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.deprecate_with_doc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   have been deprecated."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24154"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24154",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.trapz"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been deprecated. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.trapezoid"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "scipy.integrate"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " function instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.in1d"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been deprecated. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.isin"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Alias "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.row_stack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been deprecated. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.vstack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " directly."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24445"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24445",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__array_wrap__"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is now passed "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "arr, context, return_scalar"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and   support for implementations not accepting all three are deprecated.  Its signature   should be "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "__array_wrap__(self, arr, context=None, return_scalar=False)"
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25409"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25409",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Arrays of 2-dimensional vectors for "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.cross"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have been deprecated. Use   arrays of 3-dimensional vectors instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24818"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24818",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.dtype(\"a\")"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " alias for "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.dtype(np.bytes_)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " was deprecated. Use   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.dtype(\"S\")"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " alias instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24854"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24854",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Use of keyword arguments "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "x"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "y"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " with functions   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "assert_array_equal"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "assert_array_almost_equal"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been deprecated.   Pass the first two arguments as positional arguments instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24978"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24978",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Deprecations"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "fftn"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ifftn"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rfftn"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "irfftn"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "fft2"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ifft2"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rfft2"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "irfft2"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "s"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameter set to a value that is not "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axes"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameter set to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " has been deprecated, in line with the array API standard. To retain current behaviour, pass a sequence [0, ..., k-1] to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axes"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for an array of dimension k."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Furthermore, passing an array to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "s"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which contains "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " values is deprecated as the parameter is documented to accept a sequence of integers in both the NumPy docs and the array API specification. To use the default behaviour of the corresponding 1-D transform, pass the value matching the default for its "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "n"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameter. To use the default behaviour for every axis, the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "s"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument can be omitted."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25495"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25495",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.fft"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " deprecations for n-D transforms with None values in arguments"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "lstsq",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg:lstsq"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now uses the new rcond value of the machine precision times "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "max(M, N)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ".  Previously, the machine precision was used but a FutureWarning was given to notify that this change will happen eventually. That old behavior can still be achieved by passing "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rcond=-1"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25721"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25721",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.linalg.lstsq"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " now defaults to a new "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "rcond"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " value"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.core.umath_tests"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " submodule has been removed from the public API.   (Deprecated in NumPy 1.15)"
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23809"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23809",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataMem_SetEventHook"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " deprecation has expired and it is   removed.  Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "tracemalloc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.lib.tracemalloc_domain"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   domain.  (Deprecated in NumPy 1.23)"
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23921"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23921",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The deprecation of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "set_numeric_ops"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and the C functions   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_SetNumericOps"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_GetNumericOps"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has   been expired and the functions removed.  (Deprecated in NumPy 1.16)"
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23998"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23998",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "fasttake"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "fastclip"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "fastputmask"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "  "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ArrFuncs"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   deprecation is now finalized."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The deprecated function "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "fastCopyAndTranspose"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and its C counterpart   are now removed."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The deprecation of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_ScalarFromObject"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is now finalized."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24312"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24312",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.msort"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed. For a replacement, "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.sort(a, axis=0)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   should be used instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24494"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24494",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.dtype((\"f8\", 1)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will now return a shape 1 subarray dtype   rather than a non-subarray one."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25761"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25761",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Assigning to the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": ".data"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " attribute of an ndarray is disallowed and will   raise."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.binary_repr(a, width)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will raise if width is too small."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Using "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_CHAR"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_DescrFromType()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will raise, use   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_STRING"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_UNICODE"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_VSTRING"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25794"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25794",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Expired deprecations"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Compatibility notes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "loadtxt"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "genfromtxt"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now both default to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "encoding=None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which may mainly modify how "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "converters"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " work. These will now be passed "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "str"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " rather than "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "bytes"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Pass the encoding explicitly to always get the new or old behavior. For "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "genfromtxt"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " the change also means that returned values will now be unicode strings rather than bytes."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25158"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25158",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "loadtxt"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "genfromtxt"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " default encoding changed"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "f2py"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will no longer accept ambiguous "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "-m"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": ".pyf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " CLI   combinations.  When more than one "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": ".pyf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " file is passed, an error is   raised. When both "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "-m"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": ".pyf"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is passed, a warning is emitted and   the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "-m"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " provided name is ignored."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25181"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25181",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "f2py.compile()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " helper has been removed because it leaked memory, has   been marked as experimental for several years now, and was implemented as a   thin "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "subprocess.run"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " wrapper. It was also one of the test bottlenecks. See   "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25122"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/issues/25122",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for the full   rationale. It also used several "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.distutils"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " features which are too   fragile to be ported to work with "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "meson"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Users are urged to replace calls to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "f2py.compile"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " with calls to   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "subprocess.run(\"python\", \"-m\", \"numpy.f2py\",..."
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead, and to use   environment variables to interact with "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "meson"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "Native files"
                        }
                      ],
                      "url": "https://mesonbuild.com/Machine-files.html",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " are also an option."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25193"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25193",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "f2py"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " compatibility notes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Due to algorithmic changes and use of SIMD code, sorting functions with methods that aren't stable may return slightly different results in 2.0.0 compared to 1.26.x. This includes the default method of "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "argsort",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:argsort"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "argpartition",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:argpartition"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Minor changes in behavior of sorting functions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The broadcasting rules for "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.solve(a, b)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " were ambiguous when "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "b"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " had 1 fewer dimensions than "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "a"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". This has been resolved in a backward-incompatible way and is now compliant with the Array API. The old behaviour can be reconstructed by using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.solve(a, b[..., None])[..., 0]"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25914"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25914",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Removed ambiguity when broadcasting in "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.solve"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The representation method for "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "Polynomial",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.polynomial.polynomial:Polynomial"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was updated to include the domain in the representation. The plain text and latex representations are now consistent. For example the output of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "str(np.polynomial.Polynomial([1, 1], domain=[.1, .2]))"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " used to be "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "1.0 + 1.0 x"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", but now is "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "1.0 + 1.0 (-3.0000000000000004 + 20.0 x)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-21760"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/21760",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Modified representation for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "Polynomial"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CGT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CLT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CGE"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CLE"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ",   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CEQ"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CNE"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " macros have been removed."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_MIN"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_MAX"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " have been moved from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ndarraytypes.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "npy_math.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24258"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24258",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A C API for working with "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.dtypes.StringDType",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.dtypes:StringDType"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " arrays has been exposed.   This includes functions for acquiring and releasing mutexes which lock access   to the string data, as well as packing and unpacking UTF-8 bytestreams from   array entries."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_NTYPES"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been renamed to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_NTYPES_LEGACY"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as it does not   include new NumPy built-in DTypes. In particular the new string DType   will likely not work correctly with code that handles legacy DTypes."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25347"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25347",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The C-API now only exports the static inline function versions   of the array accessors (previously this depended on using \"deprecated API\").   While we discourage it, the struct fields can still be used directly."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25789"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25789",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "NumPy now defines "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_Pack"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to set an individual memory   address.  Unlike "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_SETITEM"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " this function is equivalent to setting   an individual array item and does not require a NumPy array input."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25954"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25954",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "->f"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " slot has been removed from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_Descr"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   If you use this slot, replace accessing it with   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataType_GetArrFuncs"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " (see its documentation and the   "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy-2-migration-guide",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "numpy_2_0_migration_guide"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "). In some cases using other functions like   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_GETITEM"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " may be an alternatives."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_GETITEM"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_SETITEM"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " now require the import of the   NumPy API table to be used and are no longer defined in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ndarraytypes.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25812"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25812",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Due to runtime dependencies, the definition for functionality accessing   the dtype flags was moved from "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy/ndarraytypes.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and is only available   after including "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy/ndarrayobject.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as it requires "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "import_array()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   This includes "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataType_FLAGCHK"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataType_REFCHK"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_BEGIN_THREADS_DESCR"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The dtype flags on "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_Descr"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " must now be accessed through the   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataType_FLAGS"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " inline function to be compatible with both 1.x and 2.x.   This function is defined in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "npy_2_compat.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to allow backporting.   Most or all users should use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataType_FLAGCHK"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " which is available on   1.x and does not require backporting.   Cython users should use Cython 3.  Otherwise access will go through Python   unless they use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataType_FLAGCHK"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25816"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25816",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "C API changes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The functions "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpyDatetime_ConvertDatetime64ToDatetimeStruct"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpyDatetime_ConvertDatetimeStructToDatetime64"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpyDatetime_ConvertPyDateTimeToDatetimeStruct"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpyDatetime_GetDatetimeISO8601StrLen"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpyDatetime_MakeISO8601Datetime"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NpyDatetime_ParseISO8601Datetime"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " have been added to the C API to facilitate converting between strings, Python datetimes, and NumPy datetimes in external libraries."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-21199"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/21199",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Datetime functionality exposed in the C API and Cython bindings"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The NumPy C API's functions for constructing generalized ufuncs ("
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyUFunc_FromFuncAndData"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyUFunc_FromFuncAndDataAndSignature"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyUFunc_FromFuncAndDataAndSignatureAndIdentity"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") take "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "types"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "data"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " arguments that are not modified by NumPy's internals. Like the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "name"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "doc"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " arguments, third-party Python extension modules are likely to supply these arguments from static constants. The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "types"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "data"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " arguments are now const-correct: they are declared as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "const char *types"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "void *const *data"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", respectively. C code should not be affected, but C++ code may be."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23847"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23847",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Const correctness for the generalized ufunc C API"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_MAXDIMS"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is now 64, you may want to review its use.  This is usually used in a stack allocation, where the increase should be safe. However, we do encourage generally to remove any use of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_MAXDIMS"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_MAXARGS"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to eventually allow removing the constraint completely. For the conversion helper and C-API functions mirroring Python ones such as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "take"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_MAXDIMS"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was used to mean "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axis=None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Such usage must be replaced with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_RAVEL_AXIS"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". See also "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "migration_maxdims",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "numpy_2_0_migration_guide"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25149"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25149",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Larger "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "NPY_MAXDIMS"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "NPY_MAXARGS"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": ", "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "NPY_RAVEL_AXIS"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " introduced"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Since "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_MAXARGS"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was increased, it is now a runtime constant and not compile-time constant anymore. We expect almost no users to notice this.  But if used for stack allocations it now must be replaced with a custom constant using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_MAXARGS"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " as an additional runtime check."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "sizeof(PyArrayMultiIterObject)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " no longer includes the full size of the object.  We expect nobody to notice this change.  It was necessary to avoid issues with Cython."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25271"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25271",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "NPY_MAXARGS"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " not constant and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "PyArrayMultiIterObject"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " size change"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In order to improve our DTypes it is unfortunately necessary to break the ABI, which requires some changes for dtypes registered with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyArray_RegisterDataType"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Please see the documentation of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyArray_RegisterDataType"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for how to adapt your code and achieve compatibility with both 1.x and 2.x."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25792"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25792",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Required changes for custom legacy user dtypes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The C implementation of the NEP 42 DType API is now public. While the DType API has shipped in NumPy for a few versions, it was only usable in sessions with a special environment variable set. It is now possible to write custom DTypes outside of NumPy using the new DType API and the normal "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "import_array()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " mechanism for importing the numpy C API."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "See "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "dtype-api",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "reference:c-api:array"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for more details about the API. As always with a new feature, please report any bugs you run into implementing or using a new DType. It is likely that downstream C code that works with dtypes will need to be updated to work correctly with new DTypes."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25754"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25754",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New Public DType API"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We have now added "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyArray_ImportNumPyAPI"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyUFunc_ImportUFuncAPI"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " as static inline functions to import the NumPy C-API tables. The new functions have two advantages over "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "import_array"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "import_ufunc"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ":"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "They check whether the import was already performed and are light-weight   if not, allowing to add them judiciously (although this is not preferable   in most cases)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The old mechanisms were macros rather than functions which included a   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "return"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " statement."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyArray_ImportNumPyAPI()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " function is included in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "npy_2_compat.h"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for simpler backporting."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25866"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25866",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New C-API import functions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The dtype structures fields "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "c_metadata"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "names"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "fields"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "subarray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " must now be accessed through new functions following the same names, such as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyDataType_NAMES"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Direct access of the fields is not valid as they do not exist for all "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyArray_Descr"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " instances. The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "metadata"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " field is kept, but the macro version should also be preferred."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25802"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25802",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Structured dtype information access through functions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Unless compiling only with NumPy 2 support, the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "elsize"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "alignment"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " fields must now be accessed via "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyDataType_ELSIZE"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyDataType_SET_ELSIZE"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyDataType_ALIGNMENT"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". In cases where the descriptor is attached to an array, we advise using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyArray_ITEMSIZE"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " as it exists on all NumPy versions. Please see "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "migration_c_descr",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "numpy_2_0_migration_guide"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for more information."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25943"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25943",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Descriptor "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "elsize"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "alignment"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " access"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "npy_interrupt.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and the corresponding macros like "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_SIGINT_ON"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   have been removed.  We recommend querying "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyErr_CheckSignals()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyOS_InterruptOccurred()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " periodically (these do currently require   holding the GIL though)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "noprefix.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " header has been removed. Replace missing symbols with   their prefixed counterparts (usually an added "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "npy_"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23919"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23919",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyUFunc_GetPyVals"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyUFunc_handlefperr"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyUFunc_checkfperr"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   have been removed.   If needed, a new backwards compatible function to raise floating point errors   could be restored. Reason for removal: there are no known users and the   functions would have made "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "with np.errstate()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " fixes much more difficult)."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23922"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23922",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy/old_defines.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " which was part of the API deprecated since NumPy 1.7   has been removed.  This removes macros of the form "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CONSTANT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   The "
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "replace_old_macros.sed"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/blob/main/tools/replace_old_macros.sed",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   script may be useful to convert them to the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_CONSTANT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " version."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24011"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24011",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "legacy_inner_loop_selector"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " member of the ufunc struct is removed   to simplify improvements to the dispatching system.   There are no known users overriding or directly accessing this member."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24271"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24271",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_INTPLTR"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been removed to avoid confusion (see "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "intp"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   redefinition)."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24888"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24888",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The advanced indexing "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "MapIter"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and related API has been removed.   The (truly) public part of it was not well tested and had only one   known user (Theano).  Making it private will simplify improvements   to speed up "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ufunc.at"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", make advanced indexing more maintainable,   and was important for increasing the maximum number of dimensions of arrays   to 64. Please let us know if this API is important to you so we can find a   solution together."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25138"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25138",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_MAX_ELSIZE"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " macro has been removed, as it only ever reflected   builtin numeric types and served no internal purpose."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25149"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25149",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_REFCNT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "NPY_REFCOUNT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " are removed. Use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "Py_REFCNT"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " instead."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25156"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25156",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArrayFlags_Type"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_NewFlagsObject"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as well as   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArrayFlagsObject"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " are private now.   There is no known use-case; use the Python API if needed."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_MoveInto"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CastTo"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CastAnyTo"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " are removed   use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CopyInto"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and if absolutely needed "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CopyAnyInto"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   (the latter does a flat copy)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_FillObjectArray"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is removed, its only true use was for   implementing "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.empty"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".  Create a new empty array or use   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_FillWithScalar()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " (decrefs existing objects)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CompareUCS4"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CompareString"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " are removed.   Use the standard C string comparison functions."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_ISPYTHON"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is removed as it is misleading, has no known   use-cases, and is easy to replace."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_FieldNames"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is removed, as it is unclear what it would   be useful for.  It also has incorrect semantics in some possible   use-cases."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_TypestrConvert"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is removed, since it seems a misnomer and unlikely   to be used by anyone.  If you know the size or are limited to few types, just   use it explicitly, otherwise go via Python strings."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25292"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25292",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyDataType_GetDatetimeMetaData"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is removed, it did not actually   do anything since at least NumPy 1.7."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25802"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25802",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_GetCastFunc"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is removed. Note that custom legacy user dtypes   can still provide a castfunc as their implementation, but any access to them   is now removed.  The reason for this is that NumPy never used these   internally for many years.  If you use simple numeric types, please just use   C casts directly.  In case you require an alternative, please let us know so   we can create new API such as "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_CastBuffer()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " which could use old or   new cast functions depending on the NumPy version."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25161"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25161",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "NumPy 2.0 C API removals"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New Features"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "("
                },
                {
                  "__type": "Link",
                  "__tag": 4049,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "gh-24858"
                    }
                  ],
                  "url": "https://github.com/numpy/numpy/pull/24858",
                  "title": ""
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": ")"
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.add"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " was extended to work with "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "unicode"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "bytes"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " dtypes."
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This new function counts the number of 1-bits in a number. "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "bitwise_count",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:bitwise_count"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " works on all the numpy integer types and integer-like objects."
            }
          ]
        },
        {
          "__type": "Code",
          "__tag": 4050,
          "value": ">>> a = np.array([2**i - 1 for i in range(16)])\n>>> np.bitwise_count(a)\narray([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15],\n      dtype=uint8)",
          "execution_status": null
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-19355"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/19355",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "A new "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "bitwise_count"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " function"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Support for the updated Accelerate BLAS/LAPACK library, including ILP64 (64-bit integer) support, in macOS 13.3 has been added. This brings arm64 support, and significant performance improvements of up to 10x for commonly used linear algebra operations. When Accelerate is selected at build time, or if no explicit BLAS library selection is done, the 13.3+ version will automatically be used if available."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24053"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24053",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Binary wheels are also available. On macOS >=14.0, users who install NumPy from PyPI will get wheels built against Accelerate rather than OpenBLAS."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25255"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25255",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "macOS Accelerate support, including the ILP64"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "weights"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " keyword is now available for "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "quantile",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:quantile"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "percentile",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:percentile"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "nanquantile",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:nanquantile"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "nanpercentile",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:nanpercentile"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Only "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "method=\"inverted_cdf\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " supports weights."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24254"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24254",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Option to use weights for quantile and percentile functions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A new tracer mechanism is available which enables tracking of the enabled targets for each optimized function (i.e., that uses hardware-specific SIMD instructions) in the NumPy library. With this enhancement, it becomes possible to precisely monitor the enabled CPU dispatch targets for the dispatched functions."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A new function named "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "opt_func_info"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " has been added to the new namespace "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.lib.introspect",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.lib.introspect"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", offering this tracing capability. This function allows you to retrieve information about the enabled targets based on function names and data type signatures."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24420"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24420",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Improved CPU optimization tracking"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " in compile mode (i.e. "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py -c"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ") now accepts the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "--backend meson"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " option. This is the default option for Python >=3.12. For older Python versions, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will still default to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "--backend distutils"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "To support this in realistic use-cases, in compile mode "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " takes a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "--dep"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " flag one or many times which maps to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "dependency()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " calls in the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "meson"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " backend, and does nothing in the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "distutils"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " backend."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "There are no changes for users of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " only as a code generator, i.e. without "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "-c"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24532"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24532",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "A new Meson backend for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "f2py"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Both functions and subroutines can be annotated with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "bind(c)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will handle both the correct type mapping, and preserve the unique label for other C interfaces."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Strong",
              "__tag": 4048,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "Note:"
                }
              ]
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "bind(c, name = 'routine_name_other_than_fortran_routine')"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is not honored by the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " bindings by design, since "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "bind(c)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "name"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is meant to guarantee only the same name in C and Fortran, not in Python and Fortran."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24555"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24555",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "bind(c)"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " support for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "f2py"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "strict"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " keyword is now available for "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "assert_allclose",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.testing._private.utils:assert_allclose"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "assert_equal",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.testing._private.utils:assert_equal"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "assert_array_less",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.testing._private.utils:assert_array_less"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Setting "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "strict=True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will disable the broadcasting behaviour for scalars and ensure that input arrays have the same data type."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24680"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24680",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24770"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24770",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24775"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24775",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "A new "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "strict"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " option for several testing functions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Add two "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "find"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rfind"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " UFuncs that operate on unicode or byte strings and are used in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.char"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". They operate similar to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "str.find"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "str.rfind"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24868"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24868",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Add "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.core.umath.find"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.core.umath.rfind"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " UFuncs"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.linalg.diagonal",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg:diagonal"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.linalg.trace",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg:trace"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " have been added, which are array API standard-compatible variants of "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.diagonal",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:diagonal"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.trace",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:trace"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". They differ in the default axis selection which define 2-D sub-arrays."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24887"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24887",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "diagonal"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "trace"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.linalg"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.long",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:int64"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.ulong",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:uint64"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " have been added as NumPy integers mapping to C's "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "unsigned long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Prior to NumPy 1.24, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.long"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was an alias to Python's "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "int"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24922"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24922",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "long"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ulong"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " dtypes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.linalg.svdvals",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg:svdvals"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " has been added. It computes singular values for (a stack of) matrices. Executing "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.svdvals(x)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is the same as calling "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.svd(x, compute_uv=False, hermitian=False)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". This function is compatible with the array API standard."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24940"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24940",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "svdvals"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.linalg"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.isdtype",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:isdtype"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was added to provide a canonical way to classify NumPy's dtypes in compliance with the array API standard."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25054"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25054",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "A new "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "isdtype"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " function"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.astype",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:astype"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was added to provide an array API standard-compatible alternative to the "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "numpy.ndarray.astype",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " method."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25079"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25079",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "A new "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "astype"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " function"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "13 aliases for existing functions were added to improve compatibility with the array API standard:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Trigonometry: "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "acos"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "acosh"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "asin"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "asinh"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "atan"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "atanh"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "atan2"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Bitwise: "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "bitwise_left_shift"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "bitwise_invert"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "bitwise_right_shift"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Misc: "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "concat"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "permute_dims"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "pow"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "In "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy.linalg"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ": "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "tensordot"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "matmul"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25086"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25086",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Array API compatible functions' aliases"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "unique_all",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:unique_all"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "unique_counts",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:unique_counts"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "unique_inverse",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:unique_inverse"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "unique_values",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:unique_values"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " functions have been added. They provide functionality of "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "unique",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:unique"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with different sets of flags. They are array API standard-compatible, and because the number of arrays they return does not depend on the values of input arguments, they are easier to target for JIT compilation."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25088"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25088",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "unique_*"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " functions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy now offers support for calculating the matrix transpose of an array (or stack of arrays). The matrix transpose is equivalent to swapping the last two axes of an array. Both "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ndarray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.ma.MaskedArray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now expose a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": ".mT"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " attribute, and there is a matching new "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.matrix_transpose",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:matrix_transpose"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " function."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23762"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23762",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Matrix transpose support for ndarrays"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Six new functions and two aliases were added to improve compatibility with the Array API standard for "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.linalg",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ":"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.linalg.matrix_norm",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.linalg:matrix_norm"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Computes the matrix norm of a matrix (or a stack of matrices)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.linalg.vector_norm",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.linalg:vector_norm"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Computes the vector norm of a vector (or batch of vectors)."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.vecdot",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:vecdot"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Computes the (vector) dot product of two arrays."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.linalg.vecdot",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.linalg:vecdot"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - An alias for "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.vecdot",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:vecdot"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.linalg.matrix_transpose",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.linalg:matrix_transpose"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - An alias for "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.matrix_transpose",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:matrix_transpose"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25155"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25155",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.linalg.outer",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.linalg:outer"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been added. It computes the outer product of two   vectors. It differs from "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.outer",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:outer"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " by accepting one-dimensional arrays   only. This function is compatible with the array API standard."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25101"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25101",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.linalg.cross",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.linalg:cross"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " has been added. It computes the cross product of two   (arrays of) 3-dimensional vectors. It differs from "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.cross",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:cross"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " by accepting   three-dimensional vectors only. This function is compatible with the array   API standard."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25145"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25145",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Array API compatible functions for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.linalg"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "correction"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument was added to "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "var",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:var"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "std",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:std"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", which is an array API standard compatible alternative to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ddof"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". As both arguments serve a similar purpose, only one of them can be provided at the same time."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25169"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25169",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "A "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "correction"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " argument for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "var"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "std"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "An "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ndarray.device"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " attribute and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ndarray.to_device"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " method were added to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.ndarray"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for array API standard compatibility."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Additionally, "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "device"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " keyword-only arguments were added to: "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "asarray",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:asarray"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "arange",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:arange"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "empty",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:empty"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "empty_like",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:empty_like"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "eye",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:eye"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "full",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:full"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "full_like",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:full_like"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "linspace",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:linspace"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "ones",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:ones"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "ones_like",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:ones_like"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "zeros",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:zeros"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "zeros_like",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:zeros_like"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "For all these new arguments, only "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "device=\"cpu\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is supported."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25233"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25233",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ndarray.device"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "ndarray.to_device"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "We have added a new variable-width UTF-8 encoded string data type, implementing a \"NumPy array of Python strings\", including support for a user-provided missing data sentinel. It is intended as a drop-in replacement for arrays of Python strings and missing data sentinels using the object dtype. See "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "NEP 55"
                }
              ],
              "url": "https://numpy.org/neps/nep-0055-string_dtype.html",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "the documentation",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "user:basics.strings"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for more details."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25347"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25347",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "StringDType has been added to NumPy"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "upper"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rtol"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " keywords were added to "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.linalg.cholesky",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg:cholesky"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.linalg.pinv",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg:pinv"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", respectively, to improve array API standard compatibility."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "For "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "pinv",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg:pinv"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", if neither "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rcond"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " nor "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rtol"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is specified, the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rcond"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "'s default is used. We plan to deprecate and remove "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rcond"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " in the future."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25388"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25388",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New keywords for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "cholesky"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "pinv"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "New keyword parameters were added to improve array API standard compatibility:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "rtol"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " was added to "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "matrix_rank",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy.linalg:matrix_rank"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "stable"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " was added to "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "sort",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:sort"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "argsort",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:argsort"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25437"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25437",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New keywords for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "sort"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": ", "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "argsort"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "linalg.matrix_rank"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy now implements some string operations as ufuncs. The old "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.char"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " namespace is still available, and where possible the string manipulation functions in that namespace have been updated to use the new ufuncs, substantially improving their performance."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Where possible, we suggest updating code to use functions in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.strings"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " instead of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.char"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". In the future we may deprecate "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.char"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " in favor of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.strings"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25463"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25463",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.strings"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " namespace for string ufuncs"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The various FFT routines in "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.fft",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now do their calculations natively in float, double, or long double precision, depending on the input precision, instead of always calculating in double precision. Hence, the calculation will now be less precise for single and more precise for long double precision. The data type of the output array will now be adjusted accordingly."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Furthermore, all FFT routines have gained an "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "out"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument that can be used for in-place calculations."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25536"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25536",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.fft"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " support for different precisions and in-place calculations"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "A new "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy-config"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " CLI script is available that can be queried for the NumPy version and for compile flags needed to use the NumPy C API. This will allow build systems to better support the use of NumPy as a dependency. Also, a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.pc"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " pkg-config file is now included with Numpy. In order to find its location for use with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PKG_CONFIG_PATH"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy-config --pkgconfigdir"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25730"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25730",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "configtool and pkg-config support"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The main "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " namespace now supports the array API standard. See "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "array-api-standard-compatibility",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "reference:array_api"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " for details."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25911"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25911",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Array API standard support in the main namespace"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Improvements"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Blockquote",
          "__tag": 4059,
          "children": [
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "("
                },
                {
                  "__type": "Link",
                  "__tag": 4049,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "gh-25651"
                    }
                  ],
                  "url": "https://github.com/numpy/numpy/pull/25651",
                  "title": ""
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": ")"
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Strings are now supported by "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "any"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": ", "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "all"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": ", and the logical ufuncs."
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.memmap",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:memmap"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " can now be created with any integer sequence as the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "shape"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " argument, such as a list or numpy array of integers. Previously, only the types of tuple and int could be used without raising an error."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23729"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23729",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Integer sequences as the shape argument for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "memmap"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.errstate",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:errstate"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " context manager/decorator is now faster and safer.  Previously, it was not context safe and had (rare) issues with thread-safety."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23936"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23936",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "errstate"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " is now faster and context safe"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The first introduction of the Google Highway library, using VQSort on AArch64.  Execution time is improved by up to 16x in some cases, see the PR for benchmark results. Extensions to other platforms will be done in the future."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24018"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24018",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "AArch64 quicksort speed improved by using Highway's VQSort"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The underlying C types for all of NumPy's complex types have been changed to   use C99 complex types."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "While this change does not affect the memory layout of complex types, it   changes the API to be used to directly retrieve or write the real or   complex part of the complex number, since direct field access (as in "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "c.real"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "c.imag"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ") is no longer an option. You can now use utilities provided in   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy/npy_math.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " to do these operations, like this:"
                    }
                  ]
                },
                {
                  "__type": "Code",
                  "__tag": 4050,
                  "value": "npy_cdouble c;\n  npy_csetreal(&c, 1.0);\n  npy_csetimag(&c, 0.0);\n  printf(\"%d + %di\\n\", npy_creal(c), npy_cimag(c));",
                  "execution_status": null
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "To ease cross-version compatibility, equivalent macros and a compatibility   layer have been added which can be used by downstream packages to continue   to support both NumPy 1.x and 2.x. See "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "complex-numbers",
                      "reference": {
                        "__type": "LocalRef",
                        "__tag": 4022,
                        "kind": "docs",
                        "path": "reference:c-api:coremath"
                      },
                      "kind": "exists"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " for more info."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "numpy/npy_common.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " now includes "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "complex.h"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", which means that "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "complex"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "   is now a reserved keyword."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24085"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24085",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Complex types - underlying C type changes"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Previously, users would have to define their own custom "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2cmap"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " file to use type mappings defined by the Fortran2003 "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "iso_c_binding"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " intrinsic module. These type maps are now natively supported by "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24555"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24555",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f2py"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now handles "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "common"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " blocks which have "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "kind"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " specifications from modules. This further expands the usability of intrinsics like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "iso_fortran_env"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "iso_c_binding"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25186"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25186",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "iso_c_binding"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " support and improved common blocks for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "f2py"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The third argument to functions like "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "assert_equal",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.testing._private.utils:assert_equal"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now has "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "str"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " called on it automatically. This way it mimics the built-in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "assert"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " statement, where "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "assert_equal(a, b, obj)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " works like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "assert a == b, obj"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24877"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24877",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Call "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "str"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " automatically on third argument to functions like "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "assert_equal"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The keywords "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "atol"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "rtol"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " in "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "isclose",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:isclose"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "allclose",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:allclose"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now accept both scalars and arrays. An array, if given, must broadcast to the shapes of the first two array arguments."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24878"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24878",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Support for array-like "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "atol"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "/"
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "rtol"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " in "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "isclose"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": ", "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "allclose"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Previously, some "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.testing",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.testing"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " assertions printed messages that referred to the actual and desired results as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "x"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "y"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Now, these values are consistently referred to as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "ACTUAL"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "DESIRED"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24931"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24931",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Consistent failure messages in test functions"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "fftn",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:fftn"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "ifftn",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:ifftn"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "rfftn",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:rfftn"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "irfftn",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:irfftn"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "fft2",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:fft2"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "ifft2",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:ifft2"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "rfft2",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:rfft2"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "irfft2",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft:irfft2"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " functions now use the whole input array along the axis "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "i"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " if "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "s[i] == -1"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", in line with the array API standard."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25495"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25495",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "n-D FFT transforms allow "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "s[i] == -1"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyUnicodeScalarObject"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " holds a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyUnicodeObject"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", which is not available when using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "Py_LIMITED_API"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Add guards to hide it and consequently also make the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "PyArrayScalar_VAL"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " macro hidden."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25531"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25531",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Guard PyArrayScalar_VAL and PyUnicodeScalarObject for the limited API"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.gradient()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " now returns a tuple rather than a list making the   return value immutable."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23861"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23861",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Being fully context and thread-safe, "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.errstate"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " can only   be entered once now."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.setbufsize"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is now tied to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.errstate()"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ": leaving an   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.errstate"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " context will also reset the "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "bufsize"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-23936"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/23936",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "A new public "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.lib.array_utils"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " submodule has been introduced and it   currently contains three functions: "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "byte_bounds"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " (moved from   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.lib.utils"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "), "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "normalize_axis_tuple"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "normalize_axis_index"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-24540"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/24540",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Introduce "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.bool",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:bool"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " as the new canonical name for NumPy's boolean dtype,   and make "
                    },
                    {
                      "__type": "CrossRef",
                      "__tag": 4002,
                      "value": "numpy.bool_",
                      "reference": {
                        "__type": "RefInfo",
                        "__tag": 4000,
                        "module": "numpy",
                        "version": "*",
                        "kind": "api",
                        "path": "numpy:bool"
                      },
                      "kind": "module"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " an alias to it. Note that until NumPy 1.24,   "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.bool"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " was an alias to Python's builtin "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "bool"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ". The new name helps   with array API standard compatibility and is a more intuitive name."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25080"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25080",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "dtype.flags"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " value was previously stored as a signed integer.   This means that the aligned dtype struct flag lead to negative flags being   set (-128 rather than 128). This flag is now stored unsigned (positive). Code   which checks flags manually may need to adapt.  This may include code   compiled with Cython 0.29.x."
                    }
                  ]
                },
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "("
                    },
                    {
                      "__type": "Link",
                      "__tag": 4049,
                      "children": [
                        {
                          "__type": "Text",
                          "__tag": 4046,
                          "value": "gh-25816"
                        }
                      ],
                      "url": "https://github.com/numpy/numpy/pull/25816",
                      "title": ""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ")"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Changes"
        }
      ],
      "level": 1,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "As per "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "NEP 51 <NEP51>",
              "domain": null,
              "role": "ref",
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", the scalar representation has been updated to include the type information to avoid confusion with Python scalars."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Scalars are now printed as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.float64(3.0)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " rather than just "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "3.0"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". This may disrupt workflows that store representations of numbers (e.g., to files) making it harder to read them. They should be stored as explicit strings, for example by using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "str()"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "f\"{scalar!s}\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". For the time being, affected users can use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.set_printoptions(legacy=\"1.25\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to get the old behavior (with possibly a few exceptions). Documentation of downstream projects may require larger updates, if code snippets are tested.  We are working on tooling for "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "doctest-plus"
                }
              ],
              "url": "https://github.com/scientific-python/pytest-doctestplus/issues/107",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to facilitate updates."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-22449"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/22449",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Representation of NumPy scalars changed"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy strings previously were inconsistent about how they defined if the string is "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and the definition did not match the one used by Python. Strings are now considered "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " when they are non-empty and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " when they are empty. This changes the following distinct cases:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Casts from string to boolean were previously roughly equivalent   to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "string_array.astype(np.int64).astype(bool)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ", meaning that only   valid integers could be cast.   Now a string of "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "\"0\""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " will be considered "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "True"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " since it is not empty.   If you need the old behavior, you may use the above step (casting   to integer first) or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "string_array == \"0\""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " (if the input is only ever "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "0"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "1"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ").   To get the new result on old NumPy versions use "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "string_array != \"\""
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "np.nonzero(string_array)"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " previously ignored whitespace so that   a string only containing whitespace was considered "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "False"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": ".   Whitespace is now considered "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "True"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "This change does not affect "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.loadtxt"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.fromstring"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.genfromtxt"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". The first two still use the integer definition, while "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "genfromtxt"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " continues to match for "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "\"true\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (ignoring case). However, if "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.bool_"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " is used as a converter the result will change."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The change does affect "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.fromregex"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " as it uses direct assignments."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-23871"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/23871",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Truthiness of NumPy strings changed"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Often when the standard deviation is needed the mean is also needed. The same holds for the variance and the mean. Until now the mean is then calculated twice, the change introduced here for the "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "var",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:var"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "std",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:std"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " functions allows for passing in a precalculated mean as an keyword argument. See the docstrings for details and an example illustrating the speed-up."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24126"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24126",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "A "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "mean"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " keyword was added to var and std function"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.datetime64",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:datetime64"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " method now issues a UserWarning rather than a DeprecationWarning whenever a timezone is included in the datetime string that is provided."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24193"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24193",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Remove datetime64 deprecation warning when constructing with timezone"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The default NumPy integer is now 64-bit on all 64-bit systems as the historic 32-bit default on Windows was a common source of issues. Most users should not notice this. The main issues may occur with code interfacing with libraries written in a compiled language like C.  For more information see "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "migration_windows_int64",
              "reference": {
                "__type": "LocalRef",
                "__tag": 4022,
                "kind": "docs",
                "path": "numpy_2_0_migration_guide"
              },
              "kind": "exists"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24224"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24224",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Default integer dtype is now 64-bit on 64-bit Windows"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Accessing "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.core"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " now emits a DeprecationWarning. In practice we have found that most downstream usage of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.core"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was to access functionality that is available in the main "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " namespace. If for some reason you are using functionality in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.core"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " that is not available in the main "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " namespace, this means you are likely using private NumPy internals. You can still access these internals via "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy._core"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " without a deprecation warning but we do not provide any backward compatibility guarantees for NumPy internals. Please open an issue if you think a mistake was made and something needs to be made public."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24634"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24634",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The \"relaxed strides\" debug build option, which was previously enabled through the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "NPY_RELAXED_STRIDES_DEBUG"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " environment variable or the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "-Drelaxed-strides-debug"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " config-settings flag has been removed."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24717"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24717",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Renamed "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.core"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " to "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy._core"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Due to the actual use of these types almost always matching the use of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "size_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "/"
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "Py_ssize_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " this is now the definition in C. Previously, it matched "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "intptr_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "uintptr_t"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " which would often have been subtly incorrect. This has no effect on the vast majority of machines since the size of these types only differ on extremely niche platforms."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "However, it means that:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Pointers may not necessarily fit into an "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "intp"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " typed array anymore.   The "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "p"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " and "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "P"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " character codes can still be used, however."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "Creating "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "intptr_t"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " or "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "uintptr_t"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " typed arrays in C remains possible   in a cross-platform way via "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "PyArray_DescrFromType('p')"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "The new character codes "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "nN"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " were introduced."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": "It is now correct to use the Python C-API functions when parsing   to "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "npy_intp"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " typed arguments."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24888"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24888",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Redefinition of "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.intp"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "/"
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.uintp"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " (almost never a change)"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.fft.helper"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was renamed to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.fft._helper"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to indicate that it is a private submodule. All public functions exported by it should be accessed from "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.fft",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.fft"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24945"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24945",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.fft.helper"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " made private"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.linalg.linalg"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " was renamed to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "numpy.linalg._linalg"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to indicate that it is a private submodule. All public functions exported by it should be accessed from "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.linalg",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy.linalg"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-24946"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/24946",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.linalg.linalg"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " made private"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "In some cases "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axis=32"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or for concatenate any large value was the same as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axis=None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Except for "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "concatenate"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " this was deprecate. Any out of bound axis value will now error, make sure to use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axis=None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25149"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25149",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Out-of-bound axis not the same as "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "axis=None"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Now "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.array",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:array"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.asarray",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:asarray"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " support three values for "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "copy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " parameter:"
            }
          ]
        },
        {
          "__type": "BulletList",
          "__tag": 4053,
          "ordered": false,
          "start": 1,
          "children": [
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "None"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - A copy will only be made if it is necessary."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "True"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Always make a copy."
                    }
                  ]
                }
              ]
            },
            {
              "__type": "ListItem",
              "__tag": 4054,
              "children": [
                {
                  "__type": "Paragraph",
                  "__tag": 4045,
                  "children": [
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "False"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " - Never make a copy. If a copy is required a "
                    },
                    {
                      "__type": "InlineCode",
                      "__tag": 4051,
                      "value": "ValueError"
                    },
                    {
                      "__type": "Text",
                      "__tag": 4046,
                      "value": " is raised."
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The meaning of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "False"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " changed as it now raises an exception if a copy is needed."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25168"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25168",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "New "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "copy"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " keyword meaning for "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "array"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "asarray"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " constructors"
        }
      ],
      "level": 2,
      "target": "copy-keyword-changes-2.0"
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "NumPy will pass "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "copy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " special method in situations where it would be set to a non-default value (e.g. in a call to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.asarray(some_object, copy=False)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "). Currently, if an unexpected keyword argument error is raised after this, NumPy will print a warning and re-try without the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "copy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " keyword argument. Implementations of objects implementing the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "__array__"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " protocol should accept a "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "copy"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " keyword argument with the same meaning as when passed to "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.array",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:array"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "numpy.asarray",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:asarray"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25168"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25168",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "The "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "__array__"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " special method now takes a "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "copy"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " keyword argument."
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The interpretation of strings with commas is changed slightly, in that a trailing comma will now always create a structured dtype.  E.g., where previously "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"i\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"i,\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " were treated as identical, now "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"i,\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " will create a structured dtype, with a single field. This is analogous to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"i,i\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " creating a structured dtype with two fields, and makes the behaviour consistent with that expected of tuples."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "At the same time, the use of single number surrounded by parenthesis to indicate a sub-array shape, like in "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"(2)i,\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", is deprecated. Instead; one should use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"(2,)i\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"2i\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ". Eventually, using a number in parentheses will raise an exception, like is the case for initializations without a comma, like "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.dtype(\"(2)i\")"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25434"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25434",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Cleanup of initialization of "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "numpy.dtype"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " with strings with commas"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Following the array API standard, the complex sign is now calculated as "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "z / |z|"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " (instead of the rather less logical case where the sign of the real part was taken, unless the real part was zero, in which case the sign of the imaginary part was returned).  Like for real numbers, zero is returned if "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "z==0"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25441"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25441",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Change in how complex sign is calculated"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "Functions that returned a list of ndarrays have been changed to return a tuple of ndarrays instead. Returning tuples consistently whenever a sequence of arrays is returned makes it easier for JIT compilers like Numba, as well as for static type checkers in some cases, to support these functions. Changed functions are: "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "atleast_1d",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:atleast_1d"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "atleast_2d",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:atleast_2d"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "atleast_3d",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:atleast_3d"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "broadcast_arrays",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:broadcast_arrays"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "meshgrid",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:meshgrid"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "InlineRole",
              "__tag": 4003,
              "value": "~numpy.ogrid",
              "domain": null,
              "role": null,
              "inventory": null
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "CrossRef",
              "__tag": 4002,
              "value": "histogramdd",
              "reference": {
                "__type": "RefInfo",
                "__tag": 4000,
                "module": "numpy",
                "version": "*",
                "kind": "api",
                "path": "numpy:histogramdd"
              },
              "kind": "module"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "Text",
          "__tag": 4046,
          "value": "Return types of functions that returned a list of arrays"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "When multi-dimensional inputs are passed to "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.unique"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " with "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "return_inverse=True"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", the "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "unique_inverse"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " output is now shaped such that the input can be reconstructed directly using "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.take(unique, unique_inverse)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " when "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "axis=None"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.take_along_axis(unique, unique_inverse, axis=axis)"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " otherwise."
            }
          ]
        },
        {
          "__type": "Admonition",
          "__tag": 4056,
          "kind": "note",
          "base_type": "note",
          "children": [
            {
              "__type": "AdmonitionTitle",
              "__tag": 4055,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "note "
                }
              ]
            },
            {
              "__type": "Paragraph",
              "__tag": 4045,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "This change was reverted in 2.0.1 except for "
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "axis=None"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": ".  The correct reconstruction is always "
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "np.take(unique, unique_inverse, axis=axis)"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": ". When 2.0.0 needs to be supported, add "
                },
                {
                  "__type": "InlineCode",
                  "__tag": 4051,
                  "value": "unique_inverse.reshape(-1)"
                },
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": " to code."
                }
              ]
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25553"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25553",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ", "
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25570"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25570",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.unique"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "return_inverse"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " shape for multi-dimensional inputs"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "The "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "any"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "all"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " functions and methods now return booleans also for object arrays.  Previously, they did a reduction which behaved like the Python "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "or"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "and"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " operators which evaluates to one of the arguments. You can use "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.logical_or.reduce"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " and "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.logical_and.reduce"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " to achieve the previous behavior."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-25712"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/25712",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "any"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " and "
        },
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "all"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " return booleans for object arrays"
        }
      ],
      "level": 2,
      "target": null
    },
    {
      "__type": "Section",
      "__tag": 4015,
      "children": [
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "np.can_cast"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " cannot be called with Python int, float, or complex instances anymore.  This is because NEP 50 means that the result of "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "can_cast"
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " must not depend on the value passed in. Unfortunately, for Python scalars whether a cast should be considered "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "\"same_kind\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " or "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "\"safe\""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": " may depend on the context and value so that this is currently not implemented. In some cases, this means you may have to add a specific path for: "
            },
            {
              "__type": "InlineCode",
              "__tag": 4051,
              "value": "if type(obj) in (int, float, complex): ..."
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "."
            }
          ]
        },
        {
          "__type": "Paragraph",
          "__tag": 4045,
          "children": [
            {
              "__type": "Text",
              "__tag": 4046,
              "value": "("
            },
            {
              "__type": "Link",
              "__tag": 4049,
              "children": [
                {
                  "__type": "Text",
                  "__tag": 4046,
                  "value": "gh-26393"
                }
              ],
              "url": "https://github.com/numpy/numpy/pull/26393",
              "title": ""
            },
            {
              "__type": "Text",
              "__tag": 4046,
              "value": ")"
            }
          ]
        }
      ],
      "title": [
        {
          "__type": "InlineCode",
          "__tag": 4051,
          "value": "np.can_cast"
        },
        {
          "__type": "Text",
          "__tag": 4046,
          "value": " cannot be called on Python int, float, or complex"
        }
      ],
      "level": 2,
      "target": null
    }
  ],
  "local_refs": []
}