def test_datetime_to_numeric_potential_overflow():
    import cftime

    times = pd.date_range("2000", periods=5,
                          freq="7D").values.astype("datetime64[us]")
    cftimes = cftime_range("2000",
                           periods=5,
                           freq="7D",
                           calendar="proleptic_gregorian").values

    offset = np.datetime64("0001-01-01")
    cfoffset = cftime.DatetimeProlepticGregorian(1, 1, 1)

    result = duck_array_ops.datetime_to_numeric(times,
                                                offset=offset,
                                                datetime_unit="D",
                                                dtype=int)
    cfresult = duck_array_ops.datetime_to_numeric(cftimes,
                                                  offset=cfoffset,
                                                  datetime_unit="D",
                                                  dtype=int)

    expected = 730119 + np.arange(0, 35, 7)

    np.testing.assert_array_equal(result, expected)
    np.testing.assert_array_equal(cfresult, expected)
Esempio n. 2
0
def test_datetime_to_numeric_cftime(dask):
    if dask and not has_dask:
        pytest.skip("requires dask")

    times = cftime_range("2000", periods=5, freq="7D",
                         calendar="standard").values
    if dask:
        import dask.array

        times = dask.array.from_array(times, chunks=-1)
    with raise_if_dask_computes():
        result = duck_array_ops.datetime_to_numeric(times,
                                                    datetime_unit="h",
                                                    dtype=int)
    expected = 24 * np.arange(0, 35, 7)
    np.testing.assert_array_equal(result, expected)

    offset = times[1]
    with raise_if_dask_computes():
        result = duck_array_ops.datetime_to_numeric(times,
                                                    offset=offset,
                                                    datetime_unit="h",
                                                    dtype=int)
    expected = 24 * np.arange(-7, 28, 7)
    np.testing.assert_array_equal(result, expected)

    dtype = np.float32
    with raise_if_dask_computes():
        result = duck_array_ops.datetime_to_numeric(times,
                                                    datetime_unit="h",
                                                    dtype=dtype)
    expected = 24 * np.arange(0, 35, 7).astype(dtype)
    np.testing.assert_array_equal(result, expected)
Esempio n. 3
0
def test_datetime_to_numeric_datetime64():
    times = pd.date_range("2000", periods=5, freq="7D").values
    result = duck_array_ops.datetime_to_numeric(times, datetime_unit="h")
    expected = 24 * np.arange(0, 35, 7)
    np.testing.assert_array_equal(result, expected)

    offset = times[1]
    result = duck_array_ops.datetime_to_numeric(times, offset=offset, datetime_unit="h")
    expected = 24 * np.arange(-7, 28, 7)
    np.testing.assert_array_equal(result, expected)

    dtype = np.float32
    result = duck_array_ops.datetime_to_numeric(times, datetime_unit="h", dtype=dtype)
    expected = 24 * np.arange(0, 35, 7).astype(dtype)
    np.testing.assert_array_equal(result, expected)
Esempio n. 4
0
def test_datetime_to_numeric_cftime():
    times = cftime_range('2000', periods=5, freq='7D').values
    result = duck_array_ops.datetime_to_numeric(times, datetime_unit='h')
    expected = 24 * np.arange(0, 35, 7)
    np.testing.assert_array_equal(result, expected)

    offset = times[1]
    result = duck_array_ops.datetime_to_numeric(
        times, offset=offset, datetime_unit='h')
    expected = 24 * np.arange(-7, 28, 7)
    np.testing.assert_array_equal(result, expected)

    dtype = np.float32
    result = duck_array_ops.datetime_to_numeric(
        times, datetime_unit='h', dtype=dtype)
    expected = 24 * np.arange(0, 35, 7).astype(dtype)
    np.testing.assert_array_equal(result, expected)
Esempio n. 5
0
def test_datetime_to_numeric_cftime():
    times = cftime_range('2000', periods=5, freq='7D').values
    result = duck_array_ops.datetime_to_numeric(times, datetime_unit='h')
    expected = 24 * np.arange(0, 35, 7)
    np.testing.assert_array_equal(result, expected)

    offset = times[1]
    result = duck_array_ops.datetime_to_numeric(
        times, offset=offset, datetime_unit='h')
    expected = 24 * np.arange(-7, 28, 7)
    np.testing.assert_array_equal(result, expected)

    dtype = np.float32
    result = duck_array_ops.datetime_to_numeric(
        times, datetime_unit='h', dtype=dtype)
    expected = 24 * np.arange(0, 35, 7).astype(dtype)
    np.testing.assert_array_equal(result, expected)