Add hereditary option to as_object_map. This automatically apply as_object_map to the values of the map when the values are "plain old objects".

This behavior is slightly naive but I think it will satisfy most people who have requested this feature.


- [x] Add a [CHANGELOG](https://github.com/pyodide/pyodide/blob/main/docs/project/changelog.md) entry
- [x] Add / update tests
- [x] Add new / update outdated documentation

export type {
  PyProxy,
  PyProxyWithLength,
  PyProxyWithGet,
  PyProxyWithSet,
  PyProxyWithHas,
  PyDict,
  PyIterable,
  PyAsyncIterable,
  PyIterator,
  PyAsyncIterator,
  PyGenerator,
  PyAsyncGenerator,
  PyAwaitable,
  PyCallable,
  PyBuffer,
  PyBufferView,
  TypedArray,
} from "./pyproxy.gen";

export type { PythonError } from "./error_handling.gen";

import {
  PyProxy,
  PyProxyWithLength,
  PyProxyWithGet,
  PyProxyWithSet,
  PyProxyWithHas,
  PyDict,
  PyIterable,
  PyAsyncIterable,
  PyIterator,
  PyAsyncIterator,
  PyGenerator,
  PyAsyncGenerator,
  PyAwaitable,
  PyCallable,
  PyBuffer,
  PyBufferView,
} from "./pyproxy.gen";

import { PythonError } from "./error_handling.gen";

/**
 * See :ref:`js-api-pyodide-ffi`
 * @hidetype
 */
export const ffi = {
  PyProxy,
  PyProxyWithLength,
  PyProxyWithGet,
  PyProxyWithSet,
  PyProxyWithHas,
  PyDict,
  PyIterable,
  PyAsyncIterable,
  PyIterator,
  PyAsyncIterator,
  PyGenerator,
  PyAsyncGenerator,
  PyAwaitable,
  PyCallable,
  PyBuffer,
  PyBufferView,
  PythonError,
};

export type {
  PyProxy,
  PyProxyWithLength,
  PyProxyWithGet,
  PyProxyWithSet,
  PyProxyWithHas,
  PyDict,
  PyIterable,
  PyAsyncIterable,
  PyIterator,
  PyAsyncIterator,
  PyGenerator,
  PyAsyncGenerator,
  PyAwaitable,
  PyCallable,
  PyBuffer,
  PyBufferView,
  TypedArray,
} from "./pyproxy.gen";

export type { PythonError } from "./error_handling.gen";

import {
  PyProxy,
  PyProxyWithLength,
  PyProxyWithGet,
  PyProxyWithSet,
  PyProxyWithHas,
  PyDict,
  PyIterable,
  PyAsyncIterable,
  PyIterator,
  PyAsyncIterator,
  PyGenerator,
  PyAsyncGenerator,
  PyAwaitable,
  PyCallable,
  PyBuffer,
  PyBufferView,
} from "./pyproxy.gen";

import { PythonError } from "./error_handling.gen";

/**
 * See :ref:`js-api-pyodide-ffi`
 * @hidetype
 */
export const ffi = {
  PyProxy,
  PyProxyWithLength,
  PyProxyWithGet,
  PyProxyWithSet,
  PyProxyWithHas,
  PyDict,
  PyIterable,
  PyAsyncIterable,
  PyIterator,
  PyAsyncIterator,
  PyGenerator,
  PyAsyncGenerator,
  PyAwaitable,
  PyCallable,
  PyBuffer,
  PyBufferView,
  PythonError,
};
