Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion python/arcticdb/version_store/_normalization.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ def _to_primitive(arr, arr_name, dynamic_strings, string_max_len=None, coerce_co
# See: https://pandas.pydata.org/docs/dev/whatsnew/v2.0.0.html#construction-with-datetime64-or-timedelta64-dtype-with-unsupported-resolution # noqa: E501
# We want to maintain consistent behaviour, so we convert any other resolution
# to `datetime64[ns]`.
arr = arr.astype(DTN64_DTYPE, copy=False)
arr = arr.astype(DTN64_DTYPE)

if arr.dtype.hasobject is False and not (
dynamic_strings and arr.dtype == "float" and coerce_column_type in obj_tokens
Expand Down
15 changes: 15 additions & 0 deletions python/tests/unit/arcticdb/version_store/test_normalization.py
Original file line number Diff line number Diff line change
Expand Up @@ -462,3 +462,18 @@ def test_columns_names_series_dynamic(lmdb_version_store_dynamic_schema, sym):

lmdb_version_store_dynamic_schema.write(sym + "dynamic_schema", date_series)
assert_series_equal(lmdb_version_store_dynamic_schema.read(sym + "dynamic_schema").data, date_series)


@pytest.mark.skipif(not IS_PANDAS_TWO, reason="pandas 2.0-specific test")
@pytest.mark.parametrize("datetime64_dtype", ["datetime64[s]", "datetime64[ms]", "datetime64[us]", "datetime64[ns]"])
@pytest.mark.parametrize("PandasContainer", [pd.DataFrame, pd.Series])
def test_no_inplace_index_array_modification(lmdb_version_store, sym, datetime64_dtype, PandasContainer):
# Normalization must not modify Series' or DataFrames' index array in-place.
pandas_container = PandasContainer(
data={"a": [1, 2, 3]},
index=pd.DatetimeIndex(["2020-01-01", "2020-01-02", "2020-01-03"], dtype=datetime64_dtype),
)
original_index_array = pandas_container.index
lmdb_version_store.write(sym, pandas_container)
assert pandas_container.index is original_index_array
assert pandas_container.index.dtype == datetime64_dtype