diff --git a/README.rst b/README.rst index 6bac3cdf..7c008b6b 100644 --- a/README.rst +++ b/README.rst @@ -62,8 +62,6 @@ Extra packages: +---------------+---------------------------------------+------------------+ | Arrow | ``pip install PyAthena[Arrow]`` | >=10.0.0 | +---------------+---------------------------------------+------------------+ -| fastparquet | ``pip install PyAthena[fastparquet]`` | >=0.4.0 | -+---------------+---------------------------------------+------------------+ .. _usage: diff --git a/docs/introduction.rst b/docs/introduction.rst index 0dc7ae60..e126065c 100644 --- a/docs/introduction.rst +++ b/docs/introduction.rst @@ -32,8 +32,6 @@ Extra packages: +---------------+---------------------------------------+------------------+ | Arrow | ``pip install PyAthena[Arrow]`` | >=7.0.0 | +---------------+---------------------------------------+------------------+ -| fastparquet | ``pip install PyAthena[fastparquet]`` | >=0.4.0 | -+---------------+---------------------------------------+------------------+ .. _features: diff --git a/pyathena/fastparquet/__init__.py b/pyathena/fastparquet/__init__.py deleted file mode 100644 index 40a96afc..00000000 --- a/pyathena/fastparquet/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# -*- coding: utf-8 -*- diff --git a/pyathena/fastparquet/util.py b/pyathena/fastparquet/util.py deleted file mode 100644 index 45d53db3..00000000 --- a/pyathena/fastparquet/util.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import annotations - -from typing import TYPE_CHECKING, Any, Dict, Tuple - -if TYPE_CHECKING: - from fastparquet.parquet_thrift import SchemaElement - from fastparquet.schema import SchemaHelper - - -def to_column_info(schema: "SchemaHelper") -> Tuple[Dict[str, Any], ...]: - from fastparquet.parquet_thrift import FieldRepetitionType - - columns = [] - for k, v in schema.schema_elements[0]["children"].items(): - type_, precision, scale = get_athena_type(v) - if type_ == "row": - # In the case of fastparquet, child elements of struct types are handled - # as fields separated by dots. - continue - columns.append( - { - "Name": k, - "Type": type_, - "Precision": precision, - "Scale": scale, - "Nullable": "NOT_NULL" - if v.repetition_type == FieldRepetitionType.REQUIRED - else "NULLABLE", - } - ) - return tuple(columns) - - -def get_athena_type(type_: "SchemaElement") -> Tuple[str, int, int]: - from fastparquet.parquet_thrift import ConvertedType, Type - - if type_.type in [Type.BOOLEAN]: - return "boolean", 0, 0 - if type_.type in [Type.INT32]: - if type_.converted_type == ConvertedType.DATE: - return "date", 0, 0 - return "integer", 10, 0 - if type_.type in [Type.INT64]: - return "bigint", 19, 0 - if type_.type in [Type.INT96]: - return "timestamp", 3, 0 - if type_.type in [Type.FLOAT]: - return "float", 17, 0 - if type_.type in [Type.DOUBLE]: - return "double", 17, 0 - if type_.type in [Type.BYTE_ARRAY, Type.FIXED_LEN_BYTE_ARRAY]: - if type_.converted_type == ConvertedType.UTF8: - return "varchar", 2147483647, 0 - if type_.converted_type == ConvertedType.DECIMAL: - return "decimal", type_.precision, type_.scale - return "varbinary", 1073741824, 0 - if type_.converted_type == ConvertedType.LIST: - return "array", 0, 0 - if type_.converted_type == ConvertedType.MAP: - return "map", 0, 0 - children = getattr(type_, "children", []) - if type_.type is None and type_.converted_type is None and children: - return "row", 0, 0 - return "string", 2147483647, 0 diff --git a/pyathena/pandas/result_set.py b/pyathena/pandas/result_set.py index 8d8a7261..89c55535 100644 --- a/pyathena/pandas/result_set.py +++ b/pyathena/pandas/result_set.py @@ -222,13 +222,13 @@ def _get_parquet_engine(self) -> str: """Get the parquet engine to use, handling auto-detection. Returns: - Name of the parquet engine to use ('pyarrow' or 'fastparquet'). + Name of the parquet engine to use ('pyarrow'). Raises: - ImportError: If no suitable parquet engine is available. + ImportError: If pyarrow is not available. """ if self._engine == "auto": - return self._get_available_engine(["pyarrow", "fastparquet"]) + return self._get_available_engine(["pyarrow"]) return self._engine def _get_csv_engine( @@ -554,11 +554,8 @@ def _read_parquet(self, engine) -> "DataFrame": kwargs = { "use_threads": True, } - elif engine == "fastparquet": - unload_location = f"{self._unload_location}*" - kwargs = {} else: - raise ProgrammingError("Engine must be one of `pyarrow`, `fastparquet`.") + raise ProgrammingError("Engine must be `pyarrow`.") kwargs.update(self._kwargs) try: @@ -592,23 +589,8 @@ def _read_parquet_schema(self, engine) -> Tuple[Dict[str, Any], ...]: except Exception as e: _logger.exception(f"Failed to read schema {bucket}/{key}.") raise OperationalError(*e.args) from e - elif engine == "fastparquet": - from fastparquet import ParquetFile - - # TODO: https://github.com/python/mypy/issues/1153 - from pyathena.fastparquet.util import to_column_info # type: ignore - - if not self._data_manifest: - self._data_manifest = self._read_data_manifest() - bucket, key = parse_output_location(self._data_manifest[0]) - try: - file = ParquetFile(f"{bucket}/{key}", open_with=self._fs.open) - return to_column_info(file.schema) - except Exception as e: - _logger.exception(f"Failed to read schema {bucket}/{key}.") - raise OperationalError(*e.args) from e else: - raise ProgrammingError("Engine must be one of `pyarrow`, `fastparquet`.") + raise ProgrammingError("Engine must be `pyarrow`.") def _as_pandas(self) -> Union["TextFileReader", "DataFrame"]: if self.is_unload: diff --git a/pyproject.toml b/pyproject.toml index 3779ac5c..fdc57e1e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,6 @@ awsathena = "pyathena.sqlalchemy.base:AthenaDialect" sqlalchemy = ["sqlalchemy>=1.0.0"] pandas = ["pandas>=1.3.0"] arrow = ["pyarrow>=10.0.0"] -fastparquet = ["fastparquet>=0.4.0"] [dependency-groups] dev = [ @@ -50,7 +49,6 @@ dev = [ "pandas>=1.3.0", "numpy>=1.26.0", "pyarrow>=10.0.0", - "fastparquet>=0.4.0", "Jinja2>=3.1.0", "mypy>=0.900", "pytest>=3.5", diff --git a/tests/pyathena/fastparquet/__init__.py b/tests/pyathena/fastparquet/__init__.py deleted file mode 100644 index 40a96afc..00000000 --- a/tests/pyathena/fastparquet/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# -*- coding: utf-8 -*- diff --git a/tests/pyathena/fastparquet/test_util.py b/tests/pyathena/fastparquet/test_util.py deleted file mode 100644 index 37762499..00000000 --- a/tests/pyathena/fastparquet/test_util.py +++ /dev/null @@ -1,402 +0,0 @@ -# -*- coding: utf-8 -*- -from fastparquet.parquet_thrift import ( - ConvertedType, - FieldRepetitionType, - SchemaElement, - Type, -) -from fastparquet.schema import SchemaHelper - -from pyathena.fastparquet.util import to_column_info - - -def test_to_column_info(): - schema = SchemaHelper( - [ - SchemaElement( - type=None, - type_length=None, - repetition_type=None, - name="hive_schema", - num_children=16, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.BOOLEAN, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_boolean", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_tinyint", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_smallint", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_int", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT64, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_bigint", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.FLOAT, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_float", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.DOUBLE, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_double", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.BYTE_ARRAY, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_string", - num_children=None, - converted_type=ConvertedType.UTF8, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.BYTE_ARRAY, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_varchar", - num_children=None, - converted_type=ConvertedType.UTF8, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT96, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_timestamp", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_date", - num_children=None, - converted_type=ConvertedType.DATE, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.BYTE_ARRAY, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_binary", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=None, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_array", - num_children=1, - converted_type=ConvertedType.LIST, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=None, - type_length=None, - repetition_type=FieldRepetitionType.REPEATED, - name="bag", - num_children=1, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="array_element", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=None, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_map", - num_children=1, - converted_type=ConvertedType.MAP, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=None, - type_length=None, - repetition_type=FieldRepetitionType.REPEATED, - name="key_value", - num_children=2, - converted_type=ConvertedType.MAP_KEY_VALUE, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.REQUIRED, - name="key", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="value", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=None, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_struct", - num_children=2, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="a", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.INT32, - type_length=None, - repetition_type=FieldRepetitionType.OPTIONAL, - name="b", - num_children=None, - converted_type=None, - scale=None, - precision=None, - field_id=None, - ), - SchemaElement( - type=Type.FIXED_LEN_BYTE_ARRAY, - type_length=5, - repetition_type=FieldRepetitionType.OPTIONAL, - name="col_decimal", - num_children=None, - converted_type=ConvertedType.DECIMAL, - scale=1, - precision=10, - field_id=None, - ), - ] - ) - assert to_column_info(schema) == ( - { - "Name": "col_boolean", - "Nullable": "NULLABLE", - "Precision": 0, - "Scale": 0, - "Type": "boolean", - }, - { - "Name": "col_tinyint", - "Nullable": "NULLABLE", - "Precision": 10, - "Scale": 0, - "Type": "integer", - }, - { - "Name": "col_smallint", - "Nullable": "NULLABLE", - "Precision": 10, - "Scale": 0, - "Type": "integer", - }, - { - "Name": "col_int", - "Nullable": "NULLABLE", - "Precision": 10, - "Scale": 0, - "Type": "integer", - }, - { - "Name": "col_bigint", - "Nullable": "NULLABLE", - "Precision": 19, - "Scale": 0, - "Type": "bigint", - }, - { - "Name": "col_float", - "Nullable": "NULLABLE", - "Precision": 17, - "Scale": 0, - "Type": "float", - }, - { - "Name": "col_double", - "Nullable": "NULLABLE", - "Precision": 17, - "Scale": 0, - "Type": "double", - }, - { - "Name": "col_string", - "Nullable": "NULLABLE", - "Precision": 2147483647, - "Scale": 0, - "Type": "varchar", - }, - { - "Name": "col_varchar", - "Nullable": "NULLABLE", - "Precision": 2147483647, - "Scale": 0, - "Type": "varchar", - }, - { - "Name": "col_timestamp", - "Nullable": "NULLABLE", - "Precision": 3, - "Scale": 0, - "Type": "timestamp", - }, - { - "Name": "col_date", - "Nullable": "NULLABLE", - "Precision": 0, - "Scale": 0, - "Type": "date", - }, - { - "Name": "col_binary", - "Nullable": "NULLABLE", - "Precision": 1073741824, - "Scale": 0, - "Type": "varbinary", - }, - { - "Name": "col_array", - "Nullable": "NULLABLE", - "Precision": 0, - "Scale": 0, - "Type": "array", - }, - { - "Name": "col_map", - "Nullable": "NULLABLE", - "Precision": 0, - "Scale": 0, - "Type": "map", - }, - { - "Name": "col_decimal", - "Nullable": "NULLABLE", - "Precision": 10, - "Scale": 1, - "Type": "decimal", - }, - { - "Name": "col_struct.a", - "Nullable": "NULLABLE", - "Precision": 10, - "Scale": 0, - "Type": "integer", - }, - { - "Name": "col_struct.b", - "Nullable": "NULLABLE", - "Precision": 10, - "Scale": 0, - "Type": "integer", - }, - ) diff --git a/tests/pyathena/pandas/test_async_cursor.py b/tests/pyathena/pandas/test_async_cursor.py index 5c226669..b88af8b1 100644 --- a/tests/pyathena/pandas/test_async_cursor.py +++ b/tests/pyathena/pandas/test_async_cursor.py @@ -28,7 +28,6 @@ class TestAsyncPandasCursor: ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -50,7 +49,6 @@ def test_fetchone(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -93,7 +91,6 @@ def test_get_chunk(self, async_pandas_cursor, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -117,7 +114,6 @@ def test_fetchall(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -139,7 +135,6 @@ def test_iterator(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -170,7 +165,6 @@ def test_invalid_arraysize(self, async_pandas_cursor): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -199,7 +193,6 @@ def test_description(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -284,7 +277,6 @@ def test_query_execution(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -311,7 +303,6 @@ def test_poll(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000), ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -335,7 +326,6 @@ def test_bad_query(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -360,7 +350,6 @@ def test_as_pandas(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -411,7 +400,6 @@ def test_no_ops(self): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -431,7 +419,6 @@ def test_show_columns(self, async_pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["async_pandas_cursor"], ) @@ -461,7 +448,6 @@ def test_empty_result_ddl(self, async_pandas_cursor, parquet_engine, chunksize): [ ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["async_pandas_cursor"], ) @@ -482,7 +468,6 @@ def test_empty_result_dml_unload(self, async_pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["async_pandas_cursor"], ) @@ -514,7 +499,6 @@ def test_integer_na_values(self, async_pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["async_pandas_cursor"], ) @@ -535,7 +519,6 @@ def test_float_na_values(self, async_pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["async_pandas_cursor"], ) @@ -547,18 +530,8 @@ def test_boolean_na_values(self, async_pandas_cursor, parquet_engine): engine=parquet_engine, ) df = future.result().as_pandas() - if parquet_engine == "fastparquet": - rows = [ - ( - True if math.isnan(row["a"]) else row["a"], - True if math.isnan(row["b"]) else row["b"], - ) - for _, row in df.iterrows() - ] - assert rows == [(1.0, 0.0), (0.0, True), (True, True)] - else: - rows = [(row["a"], row["b"]) for _, row in df.iterrows()] - assert rows == [(True, False), (False, None), (None, None)] + rows = [(row["a"], row["b"]) for _, row in df.iterrows()] + assert rows == [(True, False), (False, None), (None, None)] @pytest.mark.parametrize( "async_pandas_cursor, parquet_engine", @@ -566,7 +539,6 @@ def test_boolean_na_values(self, async_pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["async_pandas_cursor"], ) @@ -586,7 +558,6 @@ def test_not_skip_blank_lines(self, async_pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["async_pandas_cursor"], ) @@ -633,7 +604,6 @@ def test_empty_and_null_string(self, async_pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["async_pandas_cursor"], ) @@ -643,8 +613,4 @@ def test_null_decimal_value(self, async_pandas_cursor, parquet_engine): engine=parquet_engine, ) result_set = future.result() - if parquet_engine == "fastparquet": - rows = [(True if math.isnan(row[0]) else row[0],) for row in result_set.fetchall()] - assert rows == [(True,)] - else: - assert result_set.fetchall() == [(None,)] + assert result_set.fetchall() == [(None,)] diff --git a/tests/pyathena/pandas/test_cursor.py b/tests/pyathena/pandas/test_cursor.py index 5a45102e..afaada6e 100644 --- a/tests/pyathena/pandas/test_cursor.py +++ b/tests/pyathena/pandas/test_cursor.py @@ -29,7 +29,6 @@ class TestPandasCursor: ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -48,7 +47,6 @@ def test_fetchone(self, pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -90,7 +88,6 @@ def test_get_chunk(self, pandas_cursor, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -108,7 +105,6 @@ def test_fetchall(self, pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -125,7 +121,6 @@ def test_iterator(self, pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -339,124 +334,6 @@ def test_complex_unload_pyarrow(self, pandas_cursor, parquet_engine): ) ] - @pytest.mark.parametrize( - "pandas_cursor", - [ - { - "cursor_kwargs": {"unload": True}, - }, - ], - indirect=["pandas_cursor"], - ) - def test_complex_unload_fastparquet(self, pandas_cursor): - # NOT_SUPPORTED: Unsupported Hive type: time, json - pandas_cursor.execute( - """ - SELECT - col_boolean - ,col_tinyint - ,col_smallint - ,col_int - ,col_bigint - ,col_float - ,col_double - ,col_string - ,col_varchar - ,col_timestamp - ,col_date - ,col_binary - ,col_array - ,col_map - ,col_struct - ,col_decimal - FROM one_row_complex - """, - engine="fastparquet", - ) - assert pandas_cursor.description == [ - ("col_boolean", "boolean", None, None, 0, 0, "NULLABLE"), - ( - "col_tinyint", - "integer", - None, - None, - 10, - 0, - "NULLABLE", - ), - ( - "col_smallint", - "integer", - None, - None, - 10, - 0, - "NULLABLE", - ), - ("col_int", "integer", None, None, 10, 0, "NULLABLE"), - ("col_bigint", "bigint", None, None, 19, 0, "NULLABLE"), - ("col_float", "float", None, None, 17, 0, "NULLABLE"), - ("col_double", "double", None, None, 17, 0, "NULLABLE"), - ("col_string", "varchar", None, None, 2147483647, 0, "NULLABLE"), - ("col_varchar", "varchar", None, None, 2147483647, 0, "NULLABLE"), - ("col_timestamp", "timestamp", None, None, 3, 0, "NULLABLE"), - ("col_date", "date", None, None, 0, 0, "NULLABLE"), - ("col_binary", "varbinary", None, None, 1073741824, 0, "NULLABLE"), - ("col_array", "array", None, None, 0, 0, "NULLABLE"), - ("col_map", "map", None, None, 0, 0, "NULLABLE"), - ("col_decimal", "decimal", None, None, 10, 1, "NULLABLE"), - # In the case of fastparquet, child elements of struct types are handled - # as fields separated by dots. - ("col_struct.a", "integer", None, None, 10, 0, "NULLABLE"), - ("col_struct.b", "integer", None, None, 10, 0, "NULLABLE"), - ] - rows = [ - ( - row[0], - row[1], - row[2], - row[3], - row[4], - row[5], - row[6], - row[7], - row[8], - row[9], - row[10], - row[11], - list(row[12]), - row[13], - row[14], - row[15], - row[16], - ) - for row in pandas_cursor.fetchall() - ] - assert rows == [ - ( - True, - 127, - 32767, - 2147483647, - 9223372036854775807, - 0.5, - 0.25, - "a string", - "varchar", - pd.Timestamp(2017, 1, 1, 0, 0, 0), - pd.Timestamp(2017, 1, 2, 0, 0, 0), - b"123", - # ValueError: The truth value of an array with more than one element is ambiguous. - # Use a.any() or a.all() - list(np.array([1, 2], dtype=np.int32)), - {1: 2, 3: 4}, - # In the case of fastparquet, decimal types are handled as floats. - 0.1, - 1, - 2, - ) - ] - def test_fetch_no_data(self, pandas_cursor): pytest.raises(ProgrammingError, pandas_cursor.fetchone) pytest.raises(ProgrammingError, pandas_cursor.fetchmany) @@ -471,7 +348,6 @@ def test_fetch_no_data(self, pandas_cursor): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -493,7 +369,6 @@ def test_as_pandas(self, pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -752,129 +627,6 @@ def test_complex_unload_as_pandas_pyarrow(self, pandas_cursor, parquet_engine): ) ] - @pytest.mark.parametrize( - "pandas_cursor", - [ - { - "cursor_kwargs": {"unload": True}, - }, - ], - indirect=["pandas_cursor"], - ) - def test_complex_unload_as_pandas_fastparquet(self, pandas_cursor): - # NOT_SUPPORTED: Unsupported Hive type: time, json - df = pandas_cursor.execute( - """ - SELECT - col_boolean - ,col_tinyint - ,col_smallint - ,col_int - ,col_bigint - ,col_float - ,col_double - ,col_string - ,col_varchar - ,col_timestamp - ,col_date - ,col_binary - ,col_array - ,col_map - ,col_struct - ,col_decimal - FROM one_row_complex - """, - engine="fastparquet", - ).as_pandas() - assert df.shape[0] == 1 - assert df.shape[1] == 17 - dtypes = ( - df["col_boolean"].dtype.type, - df["col_tinyint"].dtype.type, - df["col_smallint"].dtype.type, - df["col_int"].dtype.type, - df["col_bigint"].dtype.type, - df["col_float"].dtype.type, - df["col_double"].dtype.type, - df["col_string"].dtype.type, - df["col_varchar"].dtype.type, - df["col_timestamp"].dtype.type, - df["col_date"].dtype.type, - df["col_binary"].dtype.type, - df["col_array"].dtype.type, - df["col_map"].dtype.type, - df["col_decimal"].dtype.type, - # In the case of fastparquet, child elements of struct types are handled - # as fields separated by dots. - df["col_struct.a"].dtype.type, - df["col_struct.b"].dtype.type, - ) - assert dtypes == ( - np.bool_, - np.int8, - np.int16, - np.int32, - np.int64, - np.float32, - np.float64, - np.object_, - np.object_, - np.datetime64, - np.datetime64, - np.object_, - np.object_, - np.object_, - np.float64, - np.int32, - np.int32, - ) - rows = [ - ( - row["col_boolean"], - row["col_tinyint"], - row["col_smallint"], - row["col_int"], - row["col_bigint"], - row["col_float"], - row["col_double"], - row["col_string"], - row["col_varchar"], - row["col_timestamp"], - row["col_date"], - row["col_binary"], - list(row["col_array"]), - row["col_map"], - row["col_decimal"], - row["col_struct.a"], - row["col_struct.b"], - ) - for _, row in df.iterrows() - ] - assert rows == [ - ( - True, - 127, - 32767, - 2147483647, - 9223372036854775807, - 0.5, - 0.25, - "a string", - "varchar", - pd.Timestamp(2017, 1, 1, 0, 0, 0), - pd.Timestamp(2017, 1, 2, 0, 0, 0), - b"123", - # ValueError: The truth value of an array with more than one element is ambiguous. - # Use a.any() or a.all() - list(np.array([1, 2], dtype=np.int32)), - {1: 2, 3: 4}, - # In the case of fastparquet, decimal types are handled as floats. - 0.1, - 1, - 2, - ) - ] - def test_cancel(self, pandas_cursor): def cancel(c): time.sleep(random.randint(5, 10)) @@ -1069,7 +821,6 @@ def test_get_csv_engine_explicit_specification(self): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -1086,7 +837,6 @@ def test_show_columns(self, pandas_cursor, parquet_engine, chunksize): ({"cursor_kwargs": {"unload": False}}, "auto", 1_000_000), ({"cursor_kwargs": {"unload": True}}, "auto", None), ({"cursor_kwargs": {"unload": True}}, "pyarrow", None), - ({"cursor_kwargs": {"unload": True}}, "fastparquet", None), ], indirect=["pandas_cursor"], ) @@ -1115,7 +865,6 @@ def test_empty_result_ddl(self, pandas_cursor, parquet_engine, chunksize): [ ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1135,7 +884,6 @@ def test_empty_result_dml_unload(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1166,7 +914,6 @@ def test_integer_na_values(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1186,7 +933,6 @@ def test_float_na_values(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1197,18 +943,8 @@ def test_boolean_na_values(self, pandas_cursor, parquet_engine): """, engine=parquet_engine, ).as_pandas() - if parquet_engine == "fastparquet": - rows = [ - ( - True if math.isnan(row["a"]) else row["a"], - True if math.isnan(row["b"]) else row["b"], - ) - for _, row in df.iterrows() - ] - assert rows == [(1.0, 0.0), (0.0, True), (True, True)] - else: - rows = [(row["a"], row["b"]) for _, row in df.iterrows()] - assert rows == [(True, False), (False, None), (None, None)] + rows = [(row["a"], row["b"]) for _, row in df.iterrows()] + assert rows == [(True, False), (False, None), (None, None)] @pytest.mark.parametrize( "pandas_cursor, parquet_engine", @@ -1216,7 +952,6 @@ def test_boolean_na_values(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1238,7 +973,6 @@ def test_executemany(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1256,7 +990,6 @@ def test_executemany_fetch(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1275,7 +1008,6 @@ def test_not_skip_blank_lines(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) @@ -1320,17 +1052,12 @@ def test_empty_and_null_string(self, pandas_cursor, parquet_engine): ({"cursor_kwargs": {"unload": False}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "auto"), ({"cursor_kwargs": {"unload": True}}, "pyarrow"), - ({"cursor_kwargs": {"unload": True}}, "fastparquet"), ], indirect=["pandas_cursor"], ) def test_null_decimal_value(self, pandas_cursor, parquet_engine): pandas_cursor.execute("SELECT CAST(null AS DECIMAL) AS col_decimal", engine=parquet_engine) - if parquet_engine == "fastparquet": - rows = [(True if math.isnan(row[0]) else row[0],) for row in pandas_cursor.fetchall()] - assert rows == [(True,)] - else: - assert pandas_cursor.fetchall() == [(None,)] + assert pandas_cursor.fetchall() == [(None,)] def test_iceberg_table(self, pandas_cursor): iceberg_table = "test_iceberg_table_pandas_cursor" diff --git a/tests/resources/queries/create_table.sql.jinja2 b/tests/resources/queries/create_table.sql.jinja2 index 5e3a259f..7c4f427f 100644 --- a/tests/resources/queries/create_table.sql.jinja2 +++ b/tests/resources/queries/create_table.sql.jinja2 @@ -91,14 +91,6 @@ CREATE EXTERNAL TABLE IF NOT EXISTS {{ schema }}.execute_many_pandas_unload_pyar ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '{{ s3_staging_dir }}{{ schema }}/execute_many_pandas_unload_pyarrow/'; -DROP TABLE IF EXISTS {{ schema }}.execute_many_pandas_unload_fastparquet; -CREATE EXTERNAL TABLE IF NOT EXISTS {{ schema }}.execute_many_pandas_unload_fastparquet ( - a INT, - b STRING -) -ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE -LOCATION '{{ s3_staging_dir }}{{ schema }}/execute_many_pandas_unload_fastparquet/'; - DROP TABLE IF EXISTS {{ schema }}.execute_many_arrow; CREATE EXTERNAL TABLE IF NOT EXISTS {{ schema }}.execute_many_arrow ( a INT, diff --git a/uv.lock b/uv.lock index 56675ec4..5eab4c20 100644 --- a/uv.lock +++ b/uv.lock @@ -220,75 +220,6 @@ toml = [ { name = "tomli", marker = "python_full_version <= '3.11'" }, ] -[[package]] -name = "cramjam" -version = "2.9.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c9/68/09b6b5603d21a0c7d4362d513217a5079c47b1b7a88967c52dbef13db183/cramjam-2.9.1.tar.gz", hash = "sha256:336cc591d86cbd225d256813779f46624f857bc9c779db126271eff9ddc524ae", size = 47892 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/5d/0b03115fa6a95a6dd9be344cd186879b763f1a6fab57ae55ffe2777aa0a7/cramjam-2.9.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:8e82464d1e00fbbb12958999b8471ba5e9f3d9711954505a0a7b378762332e6f", size = 2136622 }, - { url = "https://files.pythonhosted.org/packages/6f/ac/a17644e182ede7e8e24fb3af038bc2c1cf3dd0447c935cb10409f21d099b/cramjam-2.9.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6d2df8a6511cc08ef1fccd2e0c65e2ebc9f57574ec8376052a76851af5398810", size = 1927947 }, - { url = "https://files.pythonhosted.org/packages/9e/1e/e6c4f9695e4ba7b9c63160dcbfa76428bd3221930eedeb8f16364ab6f642/cramjam-2.9.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:21ea784e6c3f1843d3523ae0f03651dd06058b39eeb64beb82ee3b100fa83662", size = 2268766 }, - { url = "https://files.pythonhosted.org/packages/ab/37/4c81e5d039bdfc75a695abd426e6cdd9ab18a87f65d57837d78936cfa226/cramjam-2.9.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e0c5d98a4e791f0bbd0ffcb7dae879baeb2dcc357348a8dc2be0a8c10403a2a", size = 2108762 }, - { url = "https://files.pythonhosted.org/packages/b9/bb/3bf3a8877b9a4105b625d710410bd2bc83ef38d4a7fe4eaeb3895d997b2d/cramjam-2.9.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e076fd87089197cb61117c63dbe7712ad5eccb93968860eb3bae09b767bac813", size = 2086694 }, - { url = "https://files.pythonhosted.org/packages/c3/78/317b7ab6a9b0f24c45d56305a8288cdb6408f855034dc80530ed16a5cc6c/cramjam-2.9.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6d86b44933aea0151e4a2e1e6935448499849045c38167d288ca4c59d5b8cd4e", size = 2441698 }, - { url = "https://files.pythonhosted.org/packages/c5/2d/bc98992c29eb8647196b3bda814fd7ecfba6aff85177d44180be2aa320e8/cramjam-2.9.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7eb032549dec897b942ddcf80c1cdccbcb40629f15fc902731dbe6362da49326", size = 2759280 }, - { url = "https://files.pythonhosted.org/packages/dd/64/a4e54d74110c22477e467586935167d61fc7bae5284d393e76779b214a3e/cramjam-2.9.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf29b4def86ec503e329fe138842a9b79a997e3beb6c7809b05665a0d291edff", size = 2385128 }, - { url = "https://files.pythonhosted.org/packages/b0/1a/6ee093bf8a41cf31980175310abbbcdd1a39dadadbe96843112f42cef0fe/cramjam-2.9.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a36adf7d13b7accfa206e1c917f08924eb905b45aa8e62176509afa7b14db71e", size = 2373494 }, - { url = "https://files.pythonhosted.org/packages/9d/a6/1ae1f1a8ef559c2fab9d6d7f09b19995684e6727e617bf1b73967ee1c6be/cramjam-2.9.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:cf4ea758d98b6fad1b4b2d808d0de690d3162ac56c26968aea0af6524e3eb736", size = 2386900 }, - { url = "https://files.pythonhosted.org/packages/d9/e6/cf18deeaa0a96e7fc87f0eacde3c97e2893b573ac148ec746655570c18fc/cramjam-2.9.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4826d6d81ea490fa7a3ae7a4b9729866a945ffac1f77fe57b71e49d6e1b21efd", size = 2400609 }, - { url = "https://files.pythonhosted.org/packages/90/97/98a8fa24249dc72a936a9a51a81407a399070ba4ceb528d0af291c760eff/cramjam-2.9.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:335103317475bf992953c58838152a4761fc3c87354000edbfc4d7e57cf05909", size = 2553159 }, - { url = "https://files.pythonhosted.org/packages/ae/6b/4f71f72bc3405f221ec8bd2ba869e324d5f87ddd58c14bf59f7937ea37ab/cramjam-2.9.1-cp310-cp310-win32.whl", hash = "sha256:258120cb1e3afc3443f756f9de161ed63eed56a2c31f6093e81c571c0f2dc9f6", size = 1817873 }, - { url = "https://files.pythonhosted.org/packages/8e/f4/32639916897d59e94d286b5b22263ce8c2903ecc93a868ebe9443ece8f12/cramjam-2.9.1-cp310-cp310-win_amd64.whl", hash = "sha256:c60e5996aa02547d12bc2740d44e90e006b0f93100f53206f7abe6732ad56e69", size = 2092168 }, - { url = "https://files.pythonhosted.org/packages/6c/28/dd2b62be30ffe1fa8df10c99ba7b46abfbfb2fc6ace6acbbf9264a1a6b48/cramjam-2.9.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b9db1debe48060e41a5b91af9193c524e473c57f6105462c5524a41f5aabdb88", size = 2136699 }, - { url = "https://files.pythonhosted.org/packages/03/c9/fcebeb6f06879af4226337715fbc42ffe543158bcba8c244bba144767897/cramjam-2.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f6f18f0242212d3409d26ce3874937b5b979cebd61f08b633a6ea893c32fc7b6", size = 1927934 }, - { url = "https://files.pythonhosted.org/packages/e8/f3/77032e4f5db4dfcc2b0365f92655b7d6f3fc1527ea5b637f9fb9f8156a65/cramjam-2.9.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b5b1cd7d39242b2b903cf09cd4696b3a6e04dc537ffa9f3ac8668edae76eecb6", size = 2268584 }, - { url = "https://files.pythonhosted.org/packages/38/16/52175e94390f57196382783a3386c122ace7656b57339abaacdc9433b609/cramjam-2.9.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a47de0a68f5f4d9951250ef5af31f2a7228132caa9ed60994234f7eb98090d33", size = 2108599 }, - { url = "https://files.pythonhosted.org/packages/99/25/5f7476d127a8d18cd19a2f3fd25c0fe09ef7848069d23aac70bc96385eb6/cramjam-2.9.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e13c9a697881e5e38148958612dc6856967f5ff8cd7bba5ff751f2d6ac020aa4", size = 2086632 }, - { url = "https://files.pythonhosted.org/packages/7b/97/76ff3e1209add6acb7e2aa7997be48dc1f92ad66ee3e8fa1179eb2bb9b44/cramjam-2.9.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba560244bc1335b420b74e91e35f9d4e7f307a3be3a4603ce0f0d7e15a0acdf0", size = 2441757 }, - { url = "https://files.pythonhosted.org/packages/69/c4/228e74c30576556d11e54d86f356955cd86ff5e11bbfec74b66ed0dd237d/cramjam-2.9.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d47fd41ce260cf4f0ff0e788de961fab9e9c6844a05ce55d06ce31e06107bdc", size = 2758144 }, - { url = "https://files.pythonhosted.org/packages/4b/e7/0fd22e12c6a2879abc501979779d4b8cfe8fe692c708c2c0d1664e88fd79/cramjam-2.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84d154fbadece82935396eb6bcb502085d944d2fd13b07a94348364344370c2c", size = 2385062 }, - { url = "https://files.pythonhosted.org/packages/dd/9c/845592ddf9eb7130ae8bc5958a01d469304a43f8071effe164e2d239e3fa/cramjam-2.9.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:038df668ffb94d64d67b6ecc59cbd206745a425ffc0402897dde12d89fa6a870", size = 2373473 }, - { url = "https://files.pythonhosted.org/packages/10/c2/287cc94b7f8e87e3b0c21819d3a5deead99ebfdcb2b2d85cd04011b37292/cramjam-2.9.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:4125d8cd86fa08495d310e80926c2f0563f157b76862e7479f9b2cf94823ea0c", size = 2386816 }, - { url = "https://files.pythonhosted.org/packages/7c/22/869a1eeea53db4d9fbde6693a2465909762bffeab1a671e193c95b26f99f/cramjam-2.9.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4206ebdd1d1ef0f3f86c8c2f7c426aa4af6094f4f41e274601fd4c4569f37454", size = 2400713 }, - { url = "https://files.pythonhosted.org/packages/3f/89/ff988bd6427f01041ccb1a9104c05b6373ae476682d317b6844f4b40af92/cramjam-2.9.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ab687bef5c493732b9a4ab870542ee43f5eae0025f9c684c7cb399c3a85cb380", size = 2553081 }, - { url = "https://files.pythonhosted.org/packages/2e/68/13fa8561335de609f3cd40b132c1a3abbaf26d3c277e8b8a7446de34ef2c/cramjam-2.9.1-cp311-cp311-win32.whl", hash = "sha256:dda7698b6d7caeae1047adafebc4b43b2a82478234f6c2b45bc3edad854e0600", size = 1817782 }, - { url = "https://files.pythonhosted.org/packages/94/75/f3506ee802460e3b86a91e53bba1f67cf457fa04e4316fe7d5823ba5d28b/cramjam-2.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:872b00ff83e84bcbdc7e951af291ebe65eed20b09c47e7c4af21c312f90b796f", size = 2092227 }, - { url = "https://files.pythonhosted.org/packages/56/66/69a1c17331e38b02c78c923262fc315272de7c2618ef7eac8b3358969d90/cramjam-2.9.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:79417957972553502b217a0093532e48893c8b4ca30ccc941cefe9c72379df7c", size = 2132273 }, - { url = "https://files.pythonhosted.org/packages/3d/17/23d0b1d3301480e924545cdd27f2b949c50438949f64c74e800a09c12c37/cramjam-2.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce2b94117f373defc876f88e74e44049a9969223dbca3240415b71752d0422fb", size = 1926919 }, - { url = "https://files.pythonhosted.org/packages/8e/da/e9565f4abbbaa14645ccd7ce83f9631e90955454b87dc3ef9208aebc72e6/cramjam-2.9.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:67040e0fd84404885ec716a806bee6110f9960c3647e0ef1670aab3b7375a70a", size = 2271776 }, - { url = "https://files.pythonhosted.org/packages/88/ac/e6e0794ac01deb52e7a6a3e59720699abdee08d9b9c63a8d8874201d8155/cramjam-2.9.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bedb84e068b53c944bd08dcb501fd00d67daa8a917922356dd559b484ce7eab", size = 2109248 }, - { url = "https://files.pythonhosted.org/packages/22/0f/c3724b2dcdfbe7e07917803cf7a6db4a874818a6f8d2b95ca1ceaf177170/cramjam-2.9.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:06e3f97a379386d97debf08638a78b3d3850fdf6124755eb270b54905a169930", size = 2088611 }, - { url = "https://files.pythonhosted.org/packages/ce/16/929a5ae899ad6298f58e66622dc223476fe8e1d4e8dae608f4e1a34bfd09/cramjam-2.9.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11118675e9c7952ececabc62f023290ee4f8ecf0bee0d2c7eb8d1c402ee9769d", size = 2438373 }, - { url = "https://files.pythonhosted.org/packages/2a/2a/ad473f1ca65d3285e8c1d99fc0289f5856224c0d452dabcf856fd4dcdd77/cramjam-2.9.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6b7de6b61b11545570e4d6033713f3599525efc615ee353a822be8f6b0c65b77", size = 2836669 }, - { url = "https://files.pythonhosted.org/packages/9b/5a/e9b4868ee27099a2a21646cf5ea5cf08c660eae90b55a395ada974dcf3fb/cramjam-2.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:57ca8f3775324a9de3ee6f05ca172687ba258c0dea79f7e3a6b4112834982f2a", size = 2343995 }, - { url = "https://files.pythonhosted.org/packages/5f/c4/870a9b4524107bf85a207b82a42613318881238b20f2d237e62815af646a/cramjam-2.9.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9847dd6f288f1c56359f52acb48ff2df848ff3e3bff34d23855bbcf7016427cc", size = 2374270 }, - { url = "https://files.pythonhosted.org/packages/70/4b/b69e8e3951b7cec5e7da2539b7573bb396bed66af07d760b1878b00fd120/cramjam-2.9.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:8d1248dfa7f151e893ce819670f00879e4b7650b8d4c01279ce4f12140d68dd2", size = 2388789 }, - { url = "https://files.pythonhosted.org/packages/05/1a/af02f6192060413314735c0db61259d7279b0d8d99eee29eff2af09c5892/cramjam-2.9.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:9da6d970281083bae91b914362de325414aa03c01fc806f6bb2cc006322ec834", size = 2402459 }, - { url = "https://files.pythonhosted.org/packages/20/9a/a4ab3e90d72eb4f2c1b983fa32b4050ba676f533ba15bd78158f0632295a/cramjam-2.9.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1c33bc095db5733c841a102b8693062be5db8cdac17b9782ebc00577c6a94480", size = 2518440 }, - { url = "https://files.pythonhosted.org/packages/35/3b/e632dd7e2c5c8a2af2d83144b00d6840f1afcf9c6959ed59ec5b0f925288/cramjam-2.9.1-cp312-cp312-win32.whl", hash = "sha256:9e9193cd4bb57e7acd3af24891526299244bfed88168945efdaa09af4e50720f", size = 1822630 }, - { url = "https://files.pythonhosted.org/packages/0e/a2/d1c46618b81b83578d58a62f3709046c4f3b4ddba10df4b9797cfe096b98/cramjam-2.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:15955dd75e80f66c1ea271167a5347661d9bdc365f894a57698c383c9b7d465c", size = 2094684 }, - { url = "https://files.pythonhosted.org/packages/85/45/f1d1e6ffdceb3b0c18511df2f8e779e03972459fb71d7c1ab0f6a5c063a3/cramjam-2.9.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:5a7797a2fff994fc5e323f7a967a35a3e37e3006ed21d64dcded086502f482af", size = 2131814 }, - { url = "https://files.pythonhosted.org/packages/3a/96/36bbd431fbf0fa2ff51fd2db4c3bead66e9e373693a8455d411d45125a68/cramjam-2.9.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d51b9b140b1df39a44bff7896d98a10da345b7d5f5ce92368d328c1c2c829167", size = 1926380 }, - { url = "https://files.pythonhosted.org/packages/67/c4/99b6507ec697d5f56d32c9c04614775004b05b7fa870725a492dc6b639eb/cramjam-2.9.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:07ac76b7f992556e7aa910244be11ece578cdf84f4d5d5297461f9a895e18312", size = 2271581 }, - { url = "https://files.pythonhosted.org/packages/cb/1b/6d55dff244fb22c0b686dd5a96a754c0638f8a94056beb27c457c6035cc5/cramjam-2.9.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d90a72608c7550cd7eba914668f6277bfb0b24f074d1f1bd9d061fcb6f2adbd6", size = 2109255 }, - { url = "https://files.pythonhosted.org/packages/ca/fb/b9fcf492a21a8d978c6f999025fce2c6656399448c017ed2fc859425f37f/cramjam-2.9.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:56495975401b1821dbe1f29cf222e23556232209a2fdb809fe8156d120ca9c7f", size = 2088323 }, - { url = "https://files.pythonhosted.org/packages/88/1f/69b523395aeaa201dbd53d203453288205a0c651e7c910161892d694eb4d/cramjam-2.9.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b695259e71fde6d5be66b77a4474523ced9ffe9fe8a34cb9b520ec1241a14d3", size = 2437930 }, - { url = "https://files.pythonhosted.org/packages/b0/2c/d07e802f1786c4082e8286db1087563e4fab31cd6534ed31523f1f9584d1/cramjam-2.9.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab1e69dc4831bbb79b6d547077aae89074c83e8ad94eba1a3d80e94d2424fd02", size = 2836655 }, - { url = "https://files.pythonhosted.org/packages/1f/f5/6b425e82395c078bc95a7437b685e6bdba39d28c2b2986d79374fc1681aa/cramjam-2.9.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440b489902bfb7a26d3fec1ca888007615336ff763d2a32a2fc40586548a0dbf", size = 2387107 }, - { url = "https://files.pythonhosted.org/packages/33/65/7bf97d89ba7607aaea5464af6f249e3d94c291acf73d72768367a3e361c0/cramjam-2.9.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:217fe22b41f8c3dce03852f828b059abfad11d1344a1df2f43d3eb8634b18d75", size = 2374006 }, - { url = "https://files.pythonhosted.org/packages/29/11/8b6c82eda6d0affbc15d7ab4dc758856eb4308e8ddae73300c1648f5aa0f/cramjam-2.9.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:95f3646ddc98af25af25d5692ae65966488a283813336ea9cf41b22e542e7c0d", size = 2388731 }, - { url = "https://files.pythonhosted.org/packages/48/25/6cdd57c0b1a83c98aec9029310d09a6c1a31e9e9fb8efd9001bd0cbea992/cramjam-2.9.1-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:6b19fc60ead1cae9795a5b359599da3a1c95d38f869bdfb51c441fd76b04e926", size = 2402131 }, - { url = "https://files.pythonhosted.org/packages/b4/e7/cbf80c9647fa582432aa833c4bdd20cf437917c8066ce653e3b78deff658/cramjam-2.9.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:8dc5207567459d049696f62a1fdfb220f3fe6aa0d722285d44753e12504dac6c", size = 2555296 }, - { url = "https://files.pythonhosted.org/packages/18/a6/fabe1959a980f5d2783a6c138311509dd168bd76e62018624a91cd1cbb41/cramjam-2.9.1-cp313-cp313-win32.whl", hash = "sha256:fbfe35929a61b914de9e5dbacde0cfbba86cbf5122f9285a24c14ed0b645490b", size = 1822484 }, - { url = "https://files.pythonhosted.org/packages/55/d5/24e4562771711711c466768c92097640ed97b0283abe9043ffb6c6d4cf04/cramjam-2.9.1-cp313-cp313-win_amd64.whl", hash = "sha256:06068bd191a82ad4fc1ac23d6f8627fb5e37ec4be0431711b9a2dbacaccfeddb", size = 2094445 }, - { url = "https://files.pythonhosted.org/packages/bc/91/3f7884172573072a4280bc8bc19b7562b2cd66d2a65576b11e72115cd5fe/cramjam-2.9.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:86824c695688fcd06c5ac9bbd3fea9bdfb4cca194b1e706fbf11a629df48d2b4", size = 2159537 }, - { url = "https://files.pythonhosted.org/packages/ef/49/a0a89e9c45413e89a1e408d4ab416c0f88f19f6db7571fd5c517e429e276/cramjam-2.9.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:27571bfa5a5d618604696747d0dc1d2a99b5906c967c8dee53c13a7107edfde6", size = 1936244 }, - { url = "https://files.pythonhosted.org/packages/26/f7/6422b9e4d148f1a351c0358a95d59023f25cab76609b180804f6a3ed17e9/cramjam-2.9.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb01f6e38719818778144d3165a89ea1ad9dc58c6342b7f20aa194c70f34cbd1", size = 2119487 }, - { url = "https://files.pythonhosted.org/packages/b5/59/6fc930217f7ae085eca6d22d3477cd0145a105cdc39e63b834cb0c1b25e3/cramjam-2.9.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b5cef5cf40725fe64592af9ec163e7389855077700678a1d94bec549403a74d", size = 2400910 }, - { url = "https://files.pythonhosted.org/packages/2d/36/7e53cf5aaed4b446490e298f7571e69ce15d0dfb148feabe8bf02e58827f/cramjam-2.9.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ac48b978aa0675f62b642750e798c394a64d25ce852e4e541f69bef9a564c2f0", size = 2100860 }, -] - [[package]] name = "docutils" version = "0.21.2" @@ -316,53 +247,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612 }, ] -[[package]] -name = "fastparquet" -version = "2024.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cramjam" }, - { name = "fsspec" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "pandas" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b4/66/862da14f5fde4eff2cedc0f51a8dc34ba145088e5041b45b2d57ac54f922/fastparquet-2024.11.0.tar.gz", hash = "sha256:e3b1fc73fd3e1b70b0de254bae7feb890436cb67e99458b88cb9bd3cc44db419", size = 467192 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/56/476f5b83476a256489879b78513bee737691a80905e246a2daa30ebcc362/fastparquet-2024.11.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:60ccf587410f0979105e17036df61bb60e1c2b81880dc91895cdb4ee65b71e7f", size = 910272 }, - { url = "https://files.pythonhosted.org/packages/3b/ad/4ce73440df874479f7205fe5445090f71ed4e9bd77fdb3b740253ce82703/fastparquet-2024.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5ad5fc14b0567e700bea3cd528a0bd45a6f9371370b49de8889fb3d10a6574a", size = 684095 }, - { url = "https://files.pythonhosted.org/packages/20/37/c3164261d6183d529a59afef2749821b262c8581d837faa91043837c6f76/fastparquet-2024.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b74333914f454344458dab9d1432fda9b70d62e28dc7acb1512d937ef1424ee", size = 1700355 }, - { url = "https://files.pythonhosted.org/packages/e6/95/cf4b175c22160ec21e4664830763bfaa80b2cf05133ef854c3f436d01c16/fastparquet-2024.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41d1610130b5cb1ce36467766191c5418cba8631e2bfe3affffaf13f9be4e7a8", size = 1714663 }, - { url = "https://files.pythonhosted.org/packages/2c/31/b6c8cdb6d5df964a192e4e8c8ecd979718afb9ca7e2dc9243a4368b370e9/fastparquet-2024.11.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d281edd625c33628ba028d3221180283d6161bc5ceb55eae1f0ca1678f864f26", size = 1666729 }, - { url = "https://files.pythonhosted.org/packages/31/e5/8a0575c46a7973849f8f2a88af16618b9c7efe98f249f03e3e3de69c2b86/fastparquet-2024.11.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fa56b19a29008c34cfe8831e810f770080debcbffc69aabd1df4d47572181f9c", size = 1741669 }, - { url = "https://files.pythonhosted.org/packages/bb/6a/669f8c9cf2fc6e30c9353832f870e5a2e170b458d12c5080837f742d963d/fastparquet-2024.11.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5914ecfa766b7763201b9f49d832a5e89c2dccad470ca4f9c9b228d9a8349756", size = 1782359 }, - { url = "https://files.pythonhosted.org/packages/70/c0/1374cb43924739f4542e39d972481c1f4c7dd96808a1947450808e4e7df7/fastparquet-2024.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:561202e8f0e859ccc1aa77c4aaad1d7901b2d50fd6f624ca018bae4c3c7a62ce", size = 670700 }, - { url = "https://files.pythonhosted.org/packages/7c/51/e0d6e702523ac923ede6c05e240f4a02533ccf2cea9fec7a43491078e920/fastparquet-2024.11.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:374cdfa745aa7d5188430528d5841cf823eb9ad16df72ad6dadd898ccccce3be", size = 909934 }, - { url = "https://files.pythonhosted.org/packages/0a/c8/5c0fb644c19a8d80b2ae4d8aa7d90c2d85d0bd4a948c5c700bea5c2802ea/fastparquet-2024.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c8401bfd86cccaf0ab7c0ade58c91ae19317ff6092e1d4ad96c2178197d8124", size = 683844 }, - { url = "https://files.pythonhosted.org/packages/33/4a/1e532fd1a0d4d8af7ffc7e3a8106c0bcd13ed914a93a61e299b3832dd3d2/fastparquet-2024.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f9cca4c6b5969df5561c13786f9d116300db1ec22c7941e237cfca4ce602f59b", size = 1791698 }, - { url = "https://files.pythonhosted.org/packages/8d/e8/e1ede861bea68394a755d8be1aa2e2d60a3b9f6b551bfd56aeca74987e2e/fastparquet-2024.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a9387e77ac608d8978774caaf1e19de67eaa1386806e514dcb19f741b19cfe5", size = 1804289 }, - { url = "https://files.pythonhosted.org/packages/4f/1e/957090cccaede805583ca3f3e46e2762d0f9bf8860ecbce65197e47d84c1/fastparquet-2024.11.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6595d3771b3d587a31137e985f751b4d599d5c8e9af9c4858e373fdf5c3f8720", size = 1753638 }, - { url = "https://files.pythonhosted.org/packages/85/72/344787c685fd1531f07ae712a855a7c34d13deaa26c3fd4a9231bea7dbab/fastparquet-2024.11.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:053695c2f730b78a2d3925df7cd5c6444d6c1560076af907993361cc7accf3e2", size = 1814407 }, - { url = "https://files.pythonhosted.org/packages/6c/ec/ab9d5685f776a1965797eb68c4364c72edf57cd35beed2df49b34425d1df/fastparquet-2024.11.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0a52eecc6270ae15f0d51347c3f762703dd667ca486f127dc0a21e7e59856ae5", size = 1874462 }, - { url = "https://files.pythonhosted.org/packages/90/4f/7a4ea9a7ddf0a3409873f0787f355806f9e0b73f42f2acecacdd9a8eff0a/fastparquet-2024.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:e29ff7a367fafa57c6896fb6abc84126e2466811aefd3e4ad4070b9e18820e54", size = 671023 }, - { url = "https://files.pythonhosted.org/packages/08/76/068ac7ec9b4fc783be21a75a6a90b8c0654da4d46934d969e524ce287787/fastparquet-2024.11.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dbad4b014782bd38b58b8e9f514fe958cfa7a6c4e187859232d29fd5c5ddd849", size = 915968 }, - { url = "https://files.pythonhosted.org/packages/c7/9e/6d3b4188ad64ed51173263c07109a5f18f9c84a44fa39ab524fca7420cda/fastparquet-2024.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:403d31109d398b6be7ce84fa3483fc277c6a23f0b321348c0a505eb098a041cb", size = 685399 }, - { url = "https://files.pythonhosted.org/packages/8f/6c/809220bc9fbe83d107df2d664c3fb62fb81867be8f5218ac66c2e6b6a358/fastparquet-2024.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbbb9057a26acf0abad7adf58781ee357258b7708ee44a289e3bee97e2f55d42", size = 1758557 }, - { url = "https://files.pythonhosted.org/packages/e0/2c/b3b3e6ca2e531484289024138cd4709c22512b3fe68066d7f9849da4a76c/fastparquet-2024.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63e0e416e25c15daa174aad8ba991c2e9e5b0dc347e5aed5562124261400f87b", size = 1781052 }, - { url = "https://files.pythonhosted.org/packages/21/fe/97ed45092d0311c013996dae633122b7a51c5d9fe8dcbc2c840dc491201e/fastparquet-2024.11.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e2d7f02f57231e6c86d26e9ea71953737202f20e948790e5d4db6d6a1a150dc", size = 1715797 }, - { url = "https://files.pythonhosted.org/packages/24/df/02fa6aee6c0d53d1563b5bc22097076c609c4c5baa47056b0b4bed456fcf/fastparquet-2024.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fbe4468146b633d8f09d7b196fea0547f213cb5ce5f76e9d1beb29eaa9593a93", size = 1795682 }, - { url = "https://files.pythonhosted.org/packages/b0/25/f4f87557589e1923ee0e3bebbc84f08b7c56962bf90f51b116ddc54f2c9f/fastparquet-2024.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:29d5c718817bcd765fc519b17f759cad4945974421ecc1931d3bdc3e05e57fa9", size = 1857842 }, - { url = "https://files.pythonhosted.org/packages/b1/f9/98cd0c39115879be1044d59c9b76e8292776e99bb93565bf990078fd11c4/fastparquet-2024.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:74a0b3c40ab373442c0fda96b75a36e88745d8b138fcc3a6143e04682cbbb8ca", size = 673269 }, - { url = "https://files.pythonhosted.org/packages/47/e3/e7db38704be5db787270d43dde895eaa1a825ab25dc245e71df70860ec12/fastparquet-2024.11.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:59e5c5b51083d5b82572cdb7aed0346e3181e3ac9d2e45759da2e804bdafa7ee", size = 912523 }, - { url = "https://files.pythonhosted.org/packages/d3/66/e3387c99293dae441634e7724acaa425b27de19a00ee3d546775dace54a9/fastparquet-2024.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bdadf7b6bad789125b823bfc5b0a719ba5c4a2ef965f973702d3ea89cff057f6", size = 683779 }, - { url = "https://files.pythonhosted.org/packages/0a/21/d112d0573d086b578bf04302a502e9a7605ea8f1244a7b8577cd945eec78/fastparquet-2024.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46b2db02fc2a1507939d35441c8ab211d53afd75d82eec9767d1c3656402859b", size = 1751113 }, - { url = "https://files.pythonhosted.org/packages/6b/a7/040507cee3a7798954e8fdbca21d2dbc532774b02b882d902b8a4a6849ef/fastparquet-2024.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a3afdef2895c9f459135a00a7ed3ceafebfbce918a9e7b5d550e4fae39c1b64d", size = 1780496 }, - { url = "https://files.pythonhosted.org/packages/bc/75/d0d9f7533d780ec167eede16ad88073ee71696150511126c31940e7f73aa/fastparquet-2024.11.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36b5c9bd2ffaaa26ff45d59a6cefe58503dd748e0c7fad80dd905749da0f2b9e", size = 1713608 }, - { url = "https://files.pythonhosted.org/packages/30/fa/1d95bc86e45e80669c4f374b2ca26a9e5895a1011bb05d6341b4a7414693/fastparquet-2024.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:6b7df5d3b61a19d76e209fe8d3133759af1c139e04ebc6d43f3cc2d8045ef338", size = 1792779 }, - { url = "https://files.pythonhosted.org/packages/13/3d/c076beeb926c79593374c04662a9422a76650eef17cd1c8e10951340764a/fastparquet-2024.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b35823ac7a194134e5f82fa4a9659e42e8f9ad1f2d22a55fbb7b9e4053aabbb", size = 1851322 }, - { url = "https://files.pythonhosted.org/packages/09/5a/1d0d47e64816002824d4a876644e8c65540fa23f91b701f0daa726931545/fastparquet-2024.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:d20632964e65530374ff7cddd42cc06aa0a1388934903693d6d22592a5ba827b", size = 673266 }, -] - [[package]] name = "fsspec" version = "2024.12.0" @@ -749,9 +633,6 @@ dependencies = [ arrow = [ { name = "pyarrow" }, ] -fastparquet = [ - { name = "fastparquet" }, -] pandas = [ { name = "pandas" }, ] @@ -761,7 +642,6 @@ sqlalchemy = [ [package.dev-dependencies] dev = [ - { name = "fastparquet" }, { name = "furo" }, { name = "jinja2" }, { name = "mypy" }, @@ -782,7 +662,6 @@ dev = [ requires-dist = [ { name = "boto3", specifier = ">=1.26.4" }, { name = "botocore", specifier = ">=1.29.4" }, - { name = "fastparquet", marker = "extra == 'fastparquet'", specifier = ">=0.4.0" }, { name = "fsspec" }, { name = "pandas", marker = "extra == 'pandas'", specifier = ">=1.3.0" }, { name = "pyarrow", marker = "extra == 'arrow'", specifier = ">=10.0.0" }, @@ -793,7 +672,6 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ - { name = "fastparquet", specifier = ">=0.4.0" }, { name = "furo" }, { name = "jinja2", specifier = ">=3.1.0" }, { name = "mypy", specifier = ">=0.900" },