def test_modify_view_component(matrix_type, mapping_name):
    adata = ad.AnnData(
        np.zeros((10, 10)),
        **{mapping_name: dict(m=matrix_type(asarray(sparse.random(10, 10))))},
    )
    init_hash = joblib.hash(adata)

    subset = adata[:5, :][:, :5]
    assert subset.is_view
    m = getattr(subset, mapping_name)["m"]
    m[0, 0] = 100
    assert not subset.is_view
    assert getattr(subset, mapping_name)["m"][0, 0] == 100

    assert init_hash == joblib.hash(adata)
def from_json(self, filename: str, silent: bool = False) -> bool:
        """Update the values in the config from a JSON file. The loaded
        data is passed to the :meth:`from_mapping` method.

        :param filename: The path to the JSON file. This can be an
            absolute path or relative to the config root path.
        :param silent: Ignore the file if it doesn't exist.

        .. deprecated:: 2.0.0
            Will be removed in Flask 2.1. Use :meth:`from_file` instead.
            This was removed early in 2.0.0, was added back in 2.0.1.

        .. versionadded:: 0.11
        """
        import warnings
        from . import json

        warnings.warn(
            "'from_json' is deprecated and will be removed in Flask"
            " 2.1. Use 'from_file(path, json.load)' instead.",
            DeprecationWarning,
            stacklevel=2,
        )
        return self.from_file(filename, json.load, silent=silent)