| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| from pyiceberg.table.statistics import BlobMetadata, PartitionStatisticsFile, StatisticsFile | |
| def test_partition_statistics_file() -> None: | |
| partition_statistics_file_json = ( | |
| """{"snapshot-id":123,"statistics-path":"s3://bucket/statistics.parquet","file-size-in-bytes":345}""" | |
| ) | |
| partition_statistics_file = PartitionStatisticsFile.model_validate_json(partition_statistics_file_json) | |
| assert partition_statistics_file == PartitionStatisticsFile( | |
| snapshot_id=123, statistics_path="s3://bucket/statistics.parquet", file_size_in_bytes=345 | |
| ) | |
| assert partition_statistics_file.model_dump_json() == partition_statistics_file_json | |
| def test_statistics_file() -> None: | |
| statistics_file_json = """{"snapshot-id":123,"statistics-path":"s3://bucket/statistics.parquet","file-size-in-bytes":345,"file-footer-size-in-bytes":456,"blob-metadata":[{"type":"apache-datasketches-theta-v1","snapshot-id":567,"sequence-number":22,"fields":[1,2,3],"properties":{"foo":"bar"}}]}""" | |
| statistics_file = StatisticsFile.model_validate_json(statistics_file_json) | |
| assert statistics_file == StatisticsFile( | |
| snapshot_id=123, | |
| statistics_path="s3://bucket/statistics.parquet", | |
| file_size_in_bytes=345, | |
| file_footer_size_in_bytes=456, | |
| key_metadata=None, | |
| blob_metadata=[ | |
| BlobMetadata( | |
| type="apache-datasketches-theta-v1", | |
| snapshot_id=567, | |
| sequence_number=22, | |
| fields=[1, 2, 3], | |
| properties={"foo": "bar"}, | |
| ) | |
| ], | |
| ) | |
| assert statistics_file.model_dump_json() == statistics_file_json |