fa45d8aa5f
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
Privoxy对node122:18003返回500,直连正常
70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
import zoneinfo
|
|
|
|
import pytest
|
|
|
|
from pandas.compat import (
|
|
pa_version_under18p0,
|
|
pa_version_under23p0,
|
|
)
|
|
|
|
import pandas as pd
|
|
import pandas._testing as tm
|
|
|
|
from pandas.io._util import arrow_table_to_pandas
|
|
|
|
pa = pytest.importorskip("pyarrow")
|
|
pytz = pytest.importorskip("pytz")
|
|
|
|
|
|
pytestmark = pytest.mark.filterwarnings(
|
|
"ignore:Passing a BlockManager to DataFrame:DeprecationWarning"
|
|
)
|
|
|
|
|
|
def test_arrow_table_to_pandas_normalize_timezones():
|
|
df = pd.DataFrame(
|
|
{"ts": pd.date_range("2024-03-01", periods=2, tz="America/New_York")},
|
|
index=pd.date_range("2024-01-01", periods=2, tz="US/Eastern"),
|
|
)
|
|
expected = df.copy()
|
|
expected.index = expected.index._with_freq(None)
|
|
|
|
table = pa.Table.from_pandas(df)
|
|
result = arrow_table_to_pandas(table)
|
|
|
|
tm.assert_frame_equal(result, expected)
|
|
assert isinstance(result["ts"].dtype.tz, zoneinfo.ZoneInfo)
|
|
assert isinstance(result.index.tz, zoneinfo.ZoneInfo)
|
|
|
|
|
|
def test_arrow_table_to_pandas_normalize_timezones_columns():
|
|
df = pd.DataFrame(
|
|
[[1, 2], [3, 4]],
|
|
columns=pd.date_range("2024-02-01", periods=2, tz="Europe/Berlin"),
|
|
)
|
|
expected = df.copy()
|
|
|
|
table = pa.Table.from_pandas(df)
|
|
result = arrow_table_to_pandas(table)
|
|
|
|
if pa_version_under23p0 and not pa_version_under18p0:
|
|
expected.columns = expected.columns.as_unit("ns")
|
|
|
|
tm.assert_frame_equal(result, expected)
|
|
assert isinstance(result.columns.tz, zoneinfo.ZoneInfo)
|
|
|
|
|
|
def test_arrow_table_to_pandas_normalize_timezones_multiindex():
|
|
df = pd.DataFrame(
|
|
{"ts": pd.date_range("2024-03-01", periods=2, tz="America/New_York")},
|
|
index=pd.Index([1, 2], name="index"),
|
|
).set_index("ts", append=True, drop=False)
|
|
expected = df.copy()
|
|
|
|
table = pa.Table.from_pandas(df)
|
|
result = arrow_table_to_pandas(table)
|
|
|
|
tm.assert_frame_equal(result, expected)
|
|
assert isinstance(result["ts"].dtype.tz, zoneinfo.ZoneInfo)
|
|
assert isinstance(result.index.get_level_values("ts").tz, zoneinfo.ZoneInfo)
|