def test_deep_replace():
    nested = Object({'key': [{'abc': 123}, {'def': 456}], 'other': 0})
    insert = Object({'xyz': 789})

    assert (
        deep_replace(nested, ['key', 0], insert) ==
        {'key': [{'xyz': 789}, {'def': 456}], 'other': 0}
    )
    assert (
        deep_replace(nested, ['key'], insert) ==
        {'key': {'xyz': 789}, 'other': 0}
    )
    assert deep_replace(nested, [], insert) == {'xyz': 789}
def test_deep_replace_type_error():
    node = {'key': 'value'}
    with pytest.raises(TypeError):
        deep_replace(node, ['key'], 123)