(tempdir)
| 4915 | @pytest.mark.numpy |
| 4916 | @pytest.mark.parquet |
| 4917 | def test_write_dataset_parquet(tempdir): |
| 4918 | table = pa.table([ |
| 4919 | pa.array(range(20), type="uint32"), |
| 4920 | pa.array(np.arange("2012-01-01", 20, dtype="datetime64[D]").astype( |
| 4921 | "datetime64[ns]")), |
| 4922 | pa.array(np.repeat(['a', 'b'], 10)) |
| 4923 | ], names=["f1", "f2", "part"]) |
| 4924 | |
| 4925 | # using default "parquet" format string |
| 4926 | |
| 4927 | base_dir = tempdir / 'parquet_dataset' |
| 4928 | ds.write_dataset(table, base_dir, format="parquet") |
| 4929 | # check that all files are present |
| 4930 | file_paths = list(base_dir.rglob("*")) |
| 4931 | expected_paths = [base_dir / "part-0.parquet"] |
| 4932 | assert set(file_paths) == set(expected_paths) |
| 4933 | # check Table roundtrip with default version |
| 4934 | result = ds.dataset(base_dir, format="parquet").to_table() |
| 4935 | assert result.equals(table) |
| 4936 | |
| 4937 | # using custom options |
| 4938 | for version in ["1.0", "2.4", "2.6"]: |
| 4939 | format = ds.ParquetFileFormat() |
| 4940 | opts = format.make_write_options(version=version) |
| 4941 | assert "<pyarrow.dataset.ParquetFileWriteOptions" in repr(opts) |
| 4942 | base_dir = tempdir / f'parquet_dataset_version{version}' |
| 4943 | ds.write_dataset(table, base_dir, format=format, file_options=opts) |
| 4944 | meta = pq.read_metadata(base_dir / "part-0.parquet") |
| 4945 | expected_version = "1.0" if version == "1.0" else "2.6" |
| 4946 | assert meta.format_version == expected_version |
| 4947 | |
| 4948 | # ensure version is actually honored based on supported datatypes |
| 4949 | result = ds.dataset(base_dir, format="parquet").to_table() |
| 4950 | schema = table.schema |
| 4951 | if version == "1.0": |
| 4952 | # uint32 is written as int64 |
| 4953 | schema = schema.set(0, schema.field(0).with_type(pa.int64())) |
| 4954 | if version in ("1.0", "2.4"): |
| 4955 | schema = schema.set(1, schema.field(1).with_type(pa.timestamp("us"))) |
| 4956 | expected = table.cast(schema) |
| 4957 | assert result.equals(expected) |
| 4958 | |
| 4959 | |
| 4960 | def test_write_dataset_csv(tempdir): |
nothing calls this directly
no test coverage detected