diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e72c4805a..1fce8dbda 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,7 +47,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10"] + python-version: ["3.11"] os: [macos-latest, windows-latest] steps: - uses: actions/checkout@v3 @@ -106,7 +106,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.10"] + python-version: ["3.11"] steps: - uses: actions/checkout@v3 diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index 16dfd7a4e..ff2212cc9 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -72,7 +72,7 @@ jobs: with: miniforge-variant: Mambaforge use-mamba: true - python-version: "3.8" + python-version: "3.11" channel-priority: strict - name: Install dependencies run: | diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 05cf8ce68..6457ff401 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -29,6 +29,6 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.11" - name: Audit licenses run: ./dev/release/run-rat.sh . diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index d9e7ad4ad..264293257 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -35,12 +35,12 @@ jobs: - name: Setup Python uses: actions/setup-python@v4 with: - python-version: "3.10" + python-version: "3.11" - name: Install Protoc uses: arduino/setup-protoc@v1 with: - version: '3.x' + version: "3.x" repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install dependencies @@ -48,8 +48,8 @@ jobs: set -x python3 -m venv venv source venv/bin/activate - pip install -r requirements-310.txt - pip install -r docs/requirements.txt + pip install --require-hashes --no-deps -r requirements.txt + pip install --require-hashes --no-deps -r docs/requirements.txt - name: Build Datafusion run: | set -x diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index f672c8129..5fc489462 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -33,15 +33,13 @@ jobs: fail-fast: false matrix: python-version: + - "3.7" + - "3.8" + - "3.9" - "3.10" + - "3.11" toolchain: - "stable" - # we are not that much eager in walking on the edge yet - # - nightly - # build stable for only 3.7 - include: - - python-version: "3.7" - toolchain: "stable" steps: - uses: actions/checkout@v3 @@ -55,7 +53,7 @@ jobs: - name: Install Protoc uses: arduino/setup-protoc@v1 with: - version: '3.x' + version: "3.x" repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Setup Python @@ -71,34 +69,38 @@ jobs: - name: Check Formatting uses: actions-rs/cargo@v1 - if: ${{ matrix.python-version == '3.10' && matrix.toolchain == 'stable' }} + if: ${{ matrix.python-version == '3.11' && matrix.toolchain == 'stable' }} with: command: fmt args: -- --check - name: Run Clippy uses: actions-rs/cargo@v1 - if: ${{ matrix.python-version == '3.10' && matrix.toolchain == 'stable' }} + if: ${{ matrix.python-version == '3.11' && matrix.toolchain == 'stable' }} with: command: clippy args: --all-targets --all-features -- -D clippy::all -A clippy::redundant_closure - - name: Create Virtualenv (3.10) - if: ${{ matrix.python-version == '3.10' }} + - name: Create Virtualenv (>= 3.8) + if: ${{ matrix.python-version != '3.7' }} run: | python -m venv venv source venv/bin/activate - pip install -r requirements-310.txt + pip install -U pip + # only required on versions < 3.11 because of Pytest 7 + pip install 'exceptiongroup>=1.0.0rc8;python_version<"3.11"' + pip install --require-hashes --no-deps -r requirements.txt - name: Create Virtualenv (3.7) if: ${{ matrix.python-version == '3.7' }} run: | python -m venv venv source venv/bin/activate - pip install -r requirements-37.txt + pip install -U pip + pip install --require-hashes --no-deps -r requirements-37.txt - name: Run Python Linters - if: ${{ matrix.python-version == '3.10' && matrix.toolchain == 'stable' }} + if: ${{ matrix.python-version == '3.11' && matrix.toolchain == 'stable' }} run: | source venv/bin/activate flake8 --exclude venv,benchmarks/db-benchmark --ignore=E501,W503 diff --git a/README.md b/README.md index a682f73d5..ca3399b30 100644 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ source venv/bin/activate # update pip itself if necessary python -m pip install -U pip # install dependencies (for Python 3.8+) -python -m pip install -r requirements-310.txt +python -m pip install --require-hashes --no-deps -r requirements.txt ``` The tests rely on test data in git submodules. @@ -235,13 +235,13 @@ To change test dependencies, change the `requirements.in` and run ```bash # install pip-tools (this can be done only once), also consider running in venv python -m pip install pip-tools -python -m piptools compile --generate-hashes -o requirements-310.txt +python -m piptools compile --generate-hashes -o requirements.txt ``` To update dependencies, run with `-U` ```bash -python -m piptools compile -U --generate-hashes -o requirements-310.txt +python -m piptools compile -U --generate-hashes -o requirements.txt ``` More details [here](https://github.com/jazzband/pip-tools) diff --git a/benchmarks/db-benchmark/groupby-datafusion.py b/benchmarks/db-benchmark/groupby-datafusion.py index 2c35259e8..3a4399f7d 100644 --- a/benchmarks/db-benchmark/groupby-datafusion.py +++ b/benchmarks/db-benchmark/groupby-datafusion.py @@ -79,17 +79,13 @@ def execute(df): data = pacsv.read_csv( src_grp, - convert_options=pacsv.ConvertOptions( - auto_dict_encode=True, column_types=schema - ), + convert_options=pacsv.ConvertOptions(auto_dict_encode=True, column_types=schema), ) print("dataset loaded") # create a session context with explicit runtime and config settings runtime = ( - RuntimeConfig() - .with_disk_manager_os() - .with_fair_spill_pool(64 * 1024 * 1024 * 1024) + RuntimeConfig().with_disk_manager_os().with_fair_spill_pool(64 * 1024 * 1024 * 1024) ) config = ( SessionConfig() @@ -116,9 +112,7 @@ def execute(df): if sql: df = ctx.sql("SELECT id1, SUM(v1) AS v1 FROM x GROUP BY id1") else: - df = ctx.table("x").aggregate( - [f.col("id1")], [f.sum(f.col("v1")).alias("v1")] - ) + df = ctx.table("x").aggregate([f.col("id1")], [f.sum(f.col("v1")).alias("v1")]) ans = execute(df) shape = ans_shape(ans) @@ -197,9 +191,7 @@ def execute(df): gc.collect() t_start = timeit.default_timer() if sql: - df = ctx.sql( - "SELECT id3, SUM(v1) AS v1, AVG(v3) AS v3 FROM x GROUP BY id3" - ) + df = ctx.sql("SELECT id3, SUM(v1) AS v1, AVG(v3) AS v3 FROM x GROUP BY id3") else: df = ctx.table("x").aggregate( [f.col("id3")], diff --git a/benchmarks/db-benchmark/join-datafusion.py b/benchmarks/db-benchmark/join-datafusion.py index 602cee697..4d59c7dc2 100755 --- a/benchmarks/db-benchmark/join-datafusion.py +++ b/benchmarks/db-benchmark/join-datafusion.py @@ -152,11 +152,7 @@ def ans_shape(batches): print(f"q2: {t}") t_start = timeit.default_timer() df = ctx.create_dataframe([ans]) -chk = ( - df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]) - .collect()[0] - .column(0)[0] -) +chk = df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]).collect()[0].column(0)[0] chkt = timeit.default_timer() - t_start m = memory_usage() write_log( @@ -193,11 +189,7 @@ def ans_shape(batches): print(f"q3: {t}") t_start = timeit.default_timer() df = ctx.create_dataframe([ans]) -chk = ( - df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]) - .collect()[0] - .column(0)[0] -) +chk = df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]).collect()[0].column(0)[0] chkt = timeit.default_timer() - t_start m = memory_usage() write_log( @@ -234,11 +226,7 @@ def ans_shape(batches): print(f"q4: {t}") t_start = timeit.default_timer() df = ctx.create_dataframe([ans]) -chk = ( - df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]) - .collect()[0] - .column(0)[0] -) +chk = df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]).collect()[0].column(0)[0] chkt = timeit.default_timer() - t_start m = memory_usage() write_log( @@ -275,11 +263,7 @@ def ans_shape(batches): print(f"q5: {t}") t_start = timeit.default_timer() df = ctx.create_dataframe([ans]) -chk = ( - df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]) - .collect()[0] - .column(0)[0] -) +chk = df.aggregate([], [f.sum(col("v1")), f.sum(col("v2"))]).collect()[0].column(0)[0] chkt = timeit.default_timer() - t_start m = memory_usage() write_log( diff --git a/benchmarks/tpch/tpch.py b/benchmarks/tpch/tpch.py index ea830a1ff..7f104a4cb 100644 --- a/benchmarks/tpch/tpch.py +++ b/benchmarks/tpch/tpch.py @@ -83,9 +83,7 @@ def bench(data_path, query_path): time_millis = (end - start) * 1000 total_time_millis += time_millis print("q{},{}".format(query, round(time_millis, 1))) - results.write( - "q{},{}\n".format(query, round(time_millis, 1)) - ) + results.write("q{},{}\n".format(query, round(time_millis, 1))) results.flush() except Exception as e: print("query", query, "failed", e) diff --git a/datafusion/__init__.py b/datafusion/__init__.py index c854f3f9d..a995dddf1 100644 --- a/datafusion/__init__.py +++ b/datafusion/__init__.py @@ -208,9 +208,7 @@ def udaf(accum, input_type, return_type, state_type, volatility, name=None): Create a new User Defined Aggregate Function """ if not issubclass(accum, Accumulator): - raise TypeError( - "`accum` must implement the abstract base class Accumulator" - ) + raise TypeError("`accum` must implement the abstract base class Accumulator") if name is None: name = accum.__qualname__.lower() return AggregateUDF( diff --git a/datafusion/cudf.py b/datafusion/cudf.py index e39daea31..d8bc8e6d0 100644 --- a/datafusion/cudf.py +++ b/datafusion/cudf.py @@ -68,9 +68,7 @@ def to_cudf_df(self, plan): elif isinstance(node, TableScan): return cudf.read_parquet(self.parquet_tables[node.table_name()]) else: - raise Exception( - "unsupported logical operator: {}".format(type(node)) - ) + raise Exception("unsupported logical operator: {}".format(type(node))) def create_schema(self, schema_name: str, **kwargs): logger.debug(f"Creating schema: {schema_name}") diff --git a/datafusion/input/base.py b/datafusion/input/base.py index fb1207896..efcaf7697 100644 --- a/datafusion/input/base.py +++ b/datafusion/input/base.py @@ -31,13 +31,9 @@ class BaseInputSource(ABC): """ @abstractmethod - def is_correct_input( - self, input_item: Any, table_name: str, **kwargs - ) -> bool: + def is_correct_input(self, input_item: Any, table_name: str, **kwargs) -> bool: pass @abstractmethod - def build_table( - self, input_item: Any, table_name: str, **kwarg - ) -> SqlTable: + def build_table(self, input_item: Any, table_name: str, **kwarg) -> SqlTable: pass diff --git a/datafusion/input/location.py b/datafusion/input/location.py index 939c7f415..16e632d1b 100644 --- a/datafusion/input/location.py +++ b/datafusion/input/location.py @@ -72,9 +72,7 @@ def build_table( for _ in reader: num_rows += 1 # TODO: Need to actually consume this row into resonable columns - raise RuntimeError( - "TODO: Currently unable to support CSV input files." - ) + raise RuntimeError("TODO: Currently unable to support CSV input files.") else: raise RuntimeError( f"Input of format: `{format}` is currently not supported.\ diff --git a/datafusion/pandas.py b/datafusion/pandas.py index c2da83ff6..cf1fa6f7b 100644 --- a/datafusion/pandas.py +++ b/datafusion/pandas.py @@ -64,9 +64,7 @@ def to_pandas_df(self, plan): elif isinstance(node, TableScan): return pd.read_parquet(self.parquet_tables[node.table_name()]) else: - raise Exception( - "unsupported logical operator: {}".format(type(node)) - ) + raise Exception("unsupported logical operator: {}".format(type(node))) def create_schema(self, schema_name: str, **kwargs): logger.debug(f"Creating schema: {schema_name}") diff --git a/datafusion/polars.py b/datafusion/polars.py index e4eb966fc..ac5e26e3e 100644 --- a/datafusion/polars.py +++ b/datafusion/polars.py @@ -51,9 +51,7 @@ def to_polars_df(self, plan): args = [self.to_polars_expr(expr) for expr in node.projections()] return inputs[0].select(*args) elif isinstance(node, Aggregate): - groupby_expr = [ - self.to_polars_expr(expr) for expr in node.group_by_exprs() - ] + groupby_expr = [self.to_polars_expr(expr) for expr in node.group_by_exprs()] aggs = [] for expr in node.aggregate_exprs(): expr = expr.to_variant() @@ -67,17 +65,13 @@ def to_polars_df(self, plan): ) ) else: - raise Exception( - "Unsupported aggregate function {}".format(expr) - ) + raise Exception("Unsupported aggregate function {}".format(expr)) df = inputs[0].groupby(groupby_expr).agg(aggs) return df elif isinstance(node, TableScan): return polars.read_parquet(self.parquet_tables[node.table_name()]) else: - raise Exception( - "unsupported logical operator: {}".format(type(node)) - ) + raise Exception("unsupported logical operator: {}".format(type(node))) def create_schema(self, schema_name: str, **kwargs): logger.debug(f"Creating schema: {schema_name}") diff --git a/datafusion/tests/generic.py b/datafusion/tests/generic.py index 1f984a40a..07399792c 100644 --- a/datafusion/tests/generic.py +++ b/datafusion/tests/generic.py @@ -50,9 +50,7 @@ def data_datetime(f): datetime.datetime.now() - datetime.timedelta(days=1), datetime.datetime.now() + datetime.timedelta(days=1), ] - return pa.array( - data, type=pa.timestamp(f), mask=np.array([False, True, False]) - ) + return pa.array(data, type=pa.timestamp(f), mask=np.array([False, True, False])) def data_date32(): @@ -61,9 +59,7 @@ def data_date32(): datetime.date(1980, 1, 1), datetime.date(2030, 1, 1), ] - return pa.array( - data, type=pa.date32(), mask=np.array([False, True, False]) - ) + return pa.array(data, type=pa.date32(), mask=np.array([False, True, False])) def data_timedelta(f): @@ -72,9 +68,7 @@ def data_timedelta(f): datetime.timedelta(days=1), datetime.timedelta(seconds=1), ] - return pa.array( - data, type=pa.duration(f), mask=np.array([False, True, False]) - ) + return pa.array(data, type=pa.duration(f), mask=np.array([False, True, False])) def data_binary_other(): diff --git a/datafusion/tests/test_aggregation.py b/datafusion/tests/test_aggregation.py index 0a6c90c32..99a470b6b 100644 --- a/datafusion/tests/test_aggregation.py +++ b/datafusion/tests/test_aggregation.py @@ -81,9 +81,7 @@ def test_built_in_aggregation(df): assert result.column(2) == pa.array([4]) assert result.column(3) == pa.array([6]) assert result.column(4) == pa.array([[4, 4, 6]]) - np.testing.assert_array_almost_equal( - result.column(5), np.average(values_a) - ) + np.testing.assert_array_almost_equal(result.column(5), np.average(values_a)) np.testing.assert_array_almost_equal( result.column(6), np.corrcoef(values_a, values_b)[0][1] ) @@ -101,35 +99,20 @@ def test_built_in_aggregation(df): ) np.testing.assert_array_almost_equal(result.column(11), np.max(values_a)) np.testing.assert_array_almost_equal(result.column(12), np.mean(values_b)) - np.testing.assert_array_almost_equal( - result.column(13), np.median(values_b) - ) + np.testing.assert_array_almost_equal(result.column(13), np.median(values_b)) np.testing.assert_array_almost_equal(result.column(14), np.min(values_a)) np.testing.assert_array_almost_equal( result.column(15), np.sum(values_b.to_pylist()) ) - np.testing.assert_array_almost_equal( - result.column(16), np.std(values_a, ddof=1) - ) - np.testing.assert_array_almost_equal( - result.column(17), np.std(values_b, ddof=0) - ) - np.testing.assert_array_almost_equal( - result.column(18), np.std(values_c, ddof=1) - ) - np.testing.assert_array_almost_equal( - result.column(19), np.var(values_a, ddof=1) - ) - np.testing.assert_array_almost_equal( - result.column(20), np.var(values_b, ddof=0) - ) - np.testing.assert_array_almost_equal( - result.column(21), np.var(values_c, ddof=1) - ) + np.testing.assert_array_almost_equal(result.column(16), np.std(values_a, ddof=1)) + np.testing.assert_array_almost_equal(result.column(17), np.std(values_b, ddof=0)) + np.testing.assert_array_almost_equal(result.column(18), np.std(values_c, ddof=1)) + np.testing.assert_array_almost_equal(result.column(19), np.var(values_a, ddof=1)) + np.testing.assert_array_almost_equal(result.column(20), np.var(values_b, ddof=0)) + np.testing.assert_array_almost_equal(result.column(21), np.var(values_c, ddof=1)) def test_bit_add_or_xor(df): - df = df.aggregate( [], [ @@ -147,7 +130,6 @@ def test_bit_add_or_xor(df): def test_bool_and_or(df): - df = df.aggregate( [], [ diff --git a/datafusion/tests/test_config.py b/datafusion/tests/test_config.py index 960e72c94..12d9fc3ff 100644 --- a/datafusion/tests/test_config.py +++ b/datafusion/tests/test_config.py @@ -35,10 +35,7 @@ def test_get_then_set(config): def test_get_all(config): config_dict = config.get_all() - assert ( - config_dict["datafusion.catalog.create_default_catalog_and_schema"] - == "true" - ) + assert config_dict["datafusion.catalog.create_default_catalog_and_schema"] == "true" def test_get_invalid_config(config): diff --git a/datafusion/tests/test_context.py b/datafusion/tests/test_context.py index 97bff9bb9..d48bdd929 100644 --- a/datafusion/tests/test_context.py +++ b/datafusion/tests/test_context.py @@ -36,9 +36,7 @@ def test_create_context_no_args(): def test_create_context_with_all_valid_args(): - runtime = ( - RuntimeConfig().with_disk_manager_os().with_fair_spill_pool(10000000) - ) + runtime = RuntimeConfig().with_disk_manager_os().with_fair_spill_pool(10000000) config = ( SessionConfig() .with_create_default_catalog_and_schema(True) @@ -357,9 +355,7 @@ def test_read_json_compressed(ctx, tmp_path): with gzip.open(gzip_path, "wb") as gzipped_file: gzipped_file.writelines(csv_file) - df = ctx.read_json( - gzip_path, file_extension=".gz", file_compression_type="gz" - ) + df = ctx.read_json(gzip_path, file_extension=".gz", file_compression_type="gz") result = df.collect() assert result[0].column(0) == pa.array(["a", "b", "c"]) @@ -381,9 +377,7 @@ def test_read_csv_compressed(ctx, tmp_path): with gzip.open(gzip_path, "wb") as gzipped_file: gzipped_file.writelines(csv_file) - csv_df = ctx.read_csv( - gzip_path, file_extension=".gz", file_compression_type="gz" - ) + csv_df = ctx.read_csv(gzip_path, file_extension=".gz", file_compression_type="gz") csv_df.select(column("c1")).show() diff --git a/datafusion/tests/test_dataframe.py b/datafusion/tests/test_dataframe.py index c9b0f076f..a06263223 100644 --- a/datafusion/tests/test_dataframe.py +++ b/datafusion/tests/test_dataframe.py @@ -151,9 +151,7 @@ def test_with_column(df): def test_with_column_renamed(df): - df = df.with_column("c", column("a") + column("b")).with_column_renamed( - "c", "sum" - ) + df = df.with_column("c", column("a") + column("b")).with_column_renamed("c", "sum") result = df.collect()[0] @@ -218,9 +216,7 @@ def test_distinct(): [pa.array([1, 2, 3]), pa.array([4, 5, 6])], names=["a", "b"], ) - df_b = ctx.create_dataframe([[batch]]).sort( - column("a").sort(ascending=True) - ) + df_b = ctx.create_dataframe([[batch]]).sort(column("a").sort(ascending=True)) assert df_a.collect() == df_b.collect() @@ -251,9 +247,7 @@ def test_window_functions(df): "cume_dist", ), f.alias( - f.window( - "ntile", [literal(2)], order_by=[f.order_by(column("c"))] - ), + f.window("ntile", [literal(2)], order_by=[f.order_by(column("c"))]), "ntile", ), f.alias( @@ -261,9 +255,7 @@ def test_window_functions(df): "previous", ), f.alias( - f.window( - "lead", [column("b")], order_by=[f.order_by(column("b"))] - ), + f.window("lead", [column("b")], order_by=[f.order_by(column("b"))]), "next", ), f.alias( @@ -275,9 +267,7 @@ def test_window_functions(df): "first_value", ), f.alias( - f.window( - "last_value", [column("b")], order_by=[f.order_by(column("b"))] - ), + f.window("last_value", [column("b")], order_by=[f.order_by(column("b"))]), "last_value", ), f.alias( @@ -477,9 +467,7 @@ def test_intersect(): [pa.array([3]), pa.array([6])], names=["a", "b"], ) - df_c = ctx.create_dataframe([[batch]]).sort( - column("a").sort(ascending=True) - ) + df_c = ctx.create_dataframe([[batch]]).sort(column("a").sort(ascending=True)) df_a_i_b = df_a.intersect(df_b).sort(column("a").sort(ascending=True)) @@ -505,9 +493,7 @@ def test_except_all(): [pa.array([1, 2]), pa.array([4, 5])], names=["a", "b"], ) - df_c = ctx.create_dataframe([[batch]]).sort( - column("a").sort(ascending=True) - ) + df_c = ctx.create_dataframe([[batch]]).sort(column("a").sort(ascending=True)) df_a_e_b = df_a.except_all(df_b).sort(column("a").sort(ascending=True)) @@ -542,9 +528,7 @@ def test_union(ctx): [pa.array([1, 2, 3, 3, 4, 5]), pa.array([4, 5, 6, 6, 7, 8])], names=["a", "b"], ) - df_c = ctx.create_dataframe([[batch]]).sort( - column("a").sort(ascending=True) - ) + df_c = ctx.create_dataframe([[batch]]).sort(column("a").sort(ascending=True)) df_a_u_b = df_a.union(df_b).sort(column("a").sort(ascending=True)) @@ -568,9 +552,7 @@ def test_union_distinct(ctx): [pa.array([1, 2, 3, 4, 5]), pa.array([4, 5, 6, 7, 8])], names=["a", "b"], ) - df_c = ctx.create_dataframe([[batch]]).sort( - column("a").sort(ascending=True) - ) + df_c = ctx.create_dataframe([[batch]]).sort(column("a").sort(ascending=True)) df_a_u_b = df_a.union(df_b, True).sort(column("a").sort(ascending=True)) @@ -702,9 +684,7 @@ def test_write_parquet(df, tmp_path): "compression, compression_level", [("gzip", 6), ("brotli", 7), ("zstd", 15)], ) -def test_write_compressed_parquet( - df, tmp_path, compression, compression_level -): +def test_write_compressed_parquet(df, tmp_path, compression, compression_level): path = tmp_path df.write_parquet( @@ -744,9 +724,7 @@ def test_write_compressed_parquet_wrong_compression_level( @pytest.mark.parametrize("compression", ["brotli", "zstd", "wrong"]) -def test_write_compressed_parquet_missing_compression_level( - df, tmp_path, compression -): +def test_write_compressed_parquet_missing_compression_level(df, tmp_path, compression): path = tmp_path with pytest.raises(ValueError): diff --git a/datafusion/tests/test_functions.py b/datafusion/tests/test_functions.py index be2a2f1f5..907ecd977 100644 --- a/datafusion/tests/test_functions.py +++ b/datafusion/tests/test_functions.py @@ -72,9 +72,7 @@ def test_lit_arith(df): """ Test literals with arithmetic operations """ - df = df.select( - literal(1) + column("b"), f.concat(column("a"), literal("!")) - ) + df = df.select(literal(1) + column("b"), f.concat(column("a"), literal("!"))) result = df.collect() assert len(result) == 1 result = result[0] @@ -146,28 +144,16 @@ def test_math_functions(): np.testing.assert_array_almost_equal(result.column(4), np.arcsin(values)) np.testing.assert_array_almost_equal(result.column(5), np.arccos(values)) np.testing.assert_array_almost_equal(result.column(6), np.exp(values)) - np.testing.assert_array_almost_equal( - result.column(7), np.log(values + 1.0) - ) - np.testing.assert_array_almost_equal( - result.column(8), np.log2(values + 1.0) - ) - np.testing.assert_array_almost_equal( - result.column(9), np.log10(values + 1.0) - ) + np.testing.assert_array_almost_equal(result.column(7), np.log(values + 1.0)) + np.testing.assert_array_almost_equal(result.column(8), np.log2(values + 1.0)) + np.testing.assert_array_almost_equal(result.column(9), np.log10(values + 1.0)) np.testing.assert_array_less(result.column(10), np.ones_like(values)) np.testing.assert_array_almost_equal(result.column(11), np.arctan(values)) - np.testing.assert_array_almost_equal( - result.column(12), np.arctan2(values, 1.1) - ) + np.testing.assert_array_almost_equal(result.column(12), np.arctan2(values, 1.1)) np.testing.assert_array_almost_equal(result.column(13), np.ceil(values)) np.testing.assert_array_almost_equal(result.column(14), np.floor(values)) - np.testing.assert_array_almost_equal( - result.column(15), np.power(values, 3) - ) - np.testing.assert_array_almost_equal( - result.column(16), np.power(values, 4) - ) + np.testing.assert_array_almost_equal(result.column(15), np.power(values, 3)) + np.testing.assert_array_almost_equal(result.column(16), np.power(values, 4)) np.testing.assert_array_almost_equal(result.column(17), np.round(values)) np.testing.assert_array_almost_equal(result.column(18), np.sqrt(values)) np.testing.assert_array_almost_equal(result.column(19), np.sign(values)) @@ -188,9 +174,7 @@ def test_math_functions(): np.testing.assert_array_almost_equal(result.column(32), np.sinh(values)) np.testing.assert_array_almost_equal(result.column(33), np.tanh(values)) np.testing.assert_array_almost_equal(result.column(34), math.factorial(6)) - np.testing.assert_array_almost_equal( - result.column(35), np.isnan(na_values) - ) + np.testing.assert_array_almost_equal(result.column(35), np.isnan(na_values)) np.testing.assert_array_almost_equal(result.column(36), na_values == 0) np.testing.assert_array_almost_equal( result.column(37), np.emath.logn(3, values + 1.0) @@ -309,18 +293,9 @@ def test_hash_functions(df): ) assert result.column(2) == pa.array( [ - b( - "185F8DB32271FE25F561A6FC938B2E26" - "4306EC304EDA518007D1764826381969" - ), - b( - "78AE647DC5544D227130A0682A51E30B" - "C7777FBB6D8A8F17007463A3ECD1D524" - ), - b( - "BB7208BC9B5D7C04F1236A82A0093A5E" - "33F40423D5BA8D4266F7092C3BA43B62" - ), + b("185F8DB32271FE25F561A6FC938B2E26" "4306EC304EDA518007D1764826381969"), + b("78AE647DC5544D227130A0682A51E30B" "C7777FBB6D8A8F17007463A3ECD1D524"), + b("BB7208BC9B5D7C04F1236A82A0093A5E" "33F40423D5BA8D4266F7092C3BA43B62"), ] ) assert result.column(3) == pa.array( @@ -366,34 +341,16 @@ def test_hash_functions(df): ) assert result.column(5) == pa.array( [ - b( - "F73A5FBF881F89B814871F46E26AD3FA" - "37CB2921C5E8561618639015B3CCBB71" - ), - b( - "B792A0383FB9E7A189EC150686579532" - "854E44B71AC394831DAED169BA85CCC5" - ), - b( - "27988A0E51812297C77A433F63523334" - "6AEE29A829DCF4F46E0F58F402C6CFCB" - ), + b("F73A5FBF881F89B814871F46E26AD3FA" "37CB2921C5E8561618639015B3CCBB71"), + b("B792A0383FB9E7A189EC150686579532" "854E44B71AC394831DAED169BA85CCC5"), + b("27988A0E51812297C77A433F63523334" "6AEE29A829DCF4F46E0F58F402C6CFCB"), ] ) assert result.column(6) == pa.array( [ - b( - "FBC2B0516EE8744D293B980779178A35" - "08850FDCFE965985782C39601B65794F" - ), - b( - "BF73D18575A736E4037D45F9E316085B" - "86C19BE6363DE6AA789E13DEAACC1C4E" - ), - b( - "C8D11B9F7237E4034ADBCD2005735F9B" - "C4C597C75AD89F4492BEC8F77D15F7EB" - ), + b("FBC2B0516EE8744D293B980779178A35" "08850FDCFE965985782C39601B65794F"), + b("BF73D18575A736E4037D45F9E316085B" "86C19BE6363DE6AA789E13DEAACC1C4E"), + b("C8D11B9F7237E4034ADBCD2005735F9B" "C4C597C75AD89F4492BEC8F77D15F7EB"), ] ) assert result.column(7) == result.column(1) # SHA-224 @@ -459,9 +416,7 @@ def test_temporal_functions(df): def test_case(df): df = df.select( - f.case(column("b")) - .when(literal(4), literal(10)) - .otherwise(literal(8)), + f.case(column("b")).when(literal(4), literal(10)).otherwise(literal(8)), f.case(column("a")) .when(literal("Hello"), literal("Hola")) .when(literal("World"), literal("Mundo")) diff --git a/datafusion/tests/test_input.py b/datafusion/tests/test_input.py index 5b1decf26..fb53d86e5 100644 --- a/datafusion/tests/test_input.py +++ b/datafusion/tests/test_input.py @@ -23,9 +23,7 @@ def test_location_input(): location_input = LocationInputPlugin() cwd = os.getcwd() - input_file = ( - cwd + "/testing/data/parquet/generated_simple_numerics/blogs.parquet" - ) + input_file = cwd + "/testing/data/parquet/generated_simple_numerics/blogs.parquet" table_name = "blog" tbl = location_input.build_table(input_file, table_name) assert "blog" == tbl.name diff --git a/datafusion/tests/test_sql.py b/datafusion/tests/test_sql.py index 19a2ad2cf..8f2c97e45 100644 --- a/datafusion/tests/test_sql.py +++ b/datafusion/tests/test_sql.py @@ -86,9 +86,7 @@ def test_register_csv(ctx, tmp_path): result = pa.Table.from_batches(result) assert result.schema == alternative_schema - with pytest.raises( - ValueError, match="Delimiter must be a single character" - ): + with pytest.raises(ValueError, match="Delimiter must be a single character"): ctx.register_csv("csv4", path, delimiter="wrong") with pytest.raises( @@ -134,9 +132,7 @@ def test_register_parquet_partitioned(ctx, tmp_path): ) assert ctx.tables() == {"datapp"} - result = ctx.sql( - "SELECT grp, COUNT(*) AS cnt FROM datapp GROUP BY grp" - ).collect() + result = ctx.sql("SELECT grp, COUNT(*) AS cnt FROM datapp GROUP BY grp").collect() result = pa.Table.from_batches(result) rd = result.to_pydict() @@ -241,9 +237,7 @@ def test_execute(ctx, tmp_path): assert ctx.tables() == {"t"} # count - result = ctx.sql( - "SELECT COUNT(a) AS cnt FROM t WHERE a IS NOT NULL" - ).collect() + result = ctx.sql("SELECT COUNT(a) AS cnt FROM t WHERE a IS NOT NULL").collect() expected = pa.array([7], pa.int64()) expected = [pa.RecordBatch.from_arrays([expected], ["cnt"])] @@ -281,9 +275,7 @@ def test_execute(ctx, tmp_path): ).collect() expected_a = pa.array([50.0219, 50.0152], pa.float64()) expected_cast = pa.array([50, 50], pa.int32()) - expected = [ - pa.RecordBatch.from_arrays([expected_a, expected_cast], ["a", "a_int"]) - ] + expected = [pa.RecordBatch.from_arrays([expected_a, expected_cast], ["a", "a_int"])] np.testing.assert_equal(expected[0].column(1), expected[0].column(1)) @@ -303,9 +295,7 @@ def test_cast(ctx, tmp_path): "float", ] - select = ", ".join( - [f"CAST(9 AS {t}) AS A{i}" for i, t in enumerate(valid_types)] - ) + select = ", ".join([f"CAST(9 AS {t}) AS A{i}" for i, t in enumerate(valid_types)]) # can execute, which implies that we can cast ctx.sql(f"SELECT {select} FROM t").collect() @@ -334,14 +324,10 @@ def test_udf( ctx, tmp_path, fn, input_types, output_type, input_values, expected_values ): # write to disk - path = helpers.write_parquet( - tmp_path / "a.parquet", pa.array(input_values) - ) + path = helpers.write_parquet(tmp_path / "a.parquet", pa.array(input_values)) ctx.register_parquet("t", path) - func = udf( - fn, input_types, output_type, name="func", volatility="immutable" - ) + func = udf(fn, input_types, output_type, name="func", volatility="immutable") ctx.register_udf(func) batches = ctx.sql("SELECT func(a) AS tt FROM t").collect() diff --git a/datafusion/tests/test_substrait.py b/datafusion/tests/test_substrait.py index 7c7a2c1f2..0ea7ab263 100644 --- a/datafusion/tests/test_substrait.py +++ b/datafusion/tests/test_substrait.py @@ -38,22 +38,14 @@ def test_substrait_serialization(ctx): assert ctx.tables() == {"t"} # For now just make sure the method calls blow up - substrait_plan = ss.substrait.serde.serialize_to_plan( - "SELECT * FROM t", ctx - ) + substrait_plan = ss.substrait.serde.serialize_to_plan("SELECT * FROM t", ctx) substrait_bytes = substrait_plan.encode() assert type(substrait_bytes) is bytes - substrait_bytes = ss.substrait.serde.serialize_bytes( - "SELECT * FROM t", ctx - ) + substrait_bytes = ss.substrait.serde.serialize_bytes("SELECT * FROM t", ctx) substrait_plan = ss.substrait.serde.deserialize_bytes(substrait_bytes) - logical_plan = ss.substrait.consumer.from_substrait_plan( - ctx, substrait_plan - ) + logical_plan = ss.substrait.consumer.from_substrait_plan(ctx, substrait_plan) # demonstrate how to create a DataFrame from a deserialized logical plan df = ctx.create_dataframe_from_logical_plan(logical_plan) - substrait_plan = ss.substrait.producer.to_substrait_plan( - df.logical_plan(), ctx - ) + substrait_plan = ss.substrait.producer.to_substrait_plan(df.logical_plan(), ctx) diff --git a/dev/release/check-rat-report.py b/dev/release/check-rat-report.py index 30a01116b..d3dd7c5dd 100644 --- a/dev/release/check-rat-report.py +++ b/dev/release/check-rat-report.py @@ -23,9 +23,7 @@ import xml.etree.ElementTree as ET if len(sys.argv) != 3: - sys.stderr.write( - "Usage: %s exclude_globs.lst rat_report.xml\n" % sys.argv[0] - ) + sys.stderr.write("Usage: %s exclude_globs.lst rat_report.xml\n" % sys.argv[0]) sys.exit(1) exclude_globs_filename = sys.argv[1] diff --git a/dev/release/generate-changelog.py b/dev/release/generate-changelog.py index e97f00304..01d640669 100755 --- a/dev/release/generate-changelog.py +++ b/dev/release/generate-changelog.py @@ -27,9 +27,7 @@ def print_pulls(repo_name, title, pulls): print("**{}:**".format(title)) print() for pull, commit in pulls: - url = "https://github.com/{}/pull/{}".format( - repo_name, pull.number - ) + url = "https://github.com/{}/pull/{}".format(repo_name, pull.number) print( "- {} [#{}]({}) ({})".format( pull.title, pull.number, url, commit.author.login @@ -40,9 +38,7 @@ def print_pulls(repo_name, title, pulls): def generate_changelog(repo, repo_name, tag1, tag2): # get a list of commits between two tags - print( - f"Fetching list of commits between {tag1} and {tag2}", file=sys.stderr - ) + print(f"Fetching list of commits between {tag1} and {tag2}", file=sys.stderr) comparison = repo.compare(tag1, tag2) # get the pull requests for these commits diff --git a/dev/release/verify-release-candidate.sh b/dev/release/verify-release-candidate.sh index be86f69e0..7a3f553f8 100755 --- a/dev/release/verify-release-candidate.sh +++ b/dev/release/verify-release-candidate.sh @@ -128,7 +128,7 @@ test_source_distribution() { python3 -m venv venv source venv/bin/activate python3 -m pip install -U pip - python3 -m pip install -r requirements-310.txt + python3 -m pip install --require-hashes --no-deps -r requirements.txt maturin develop #TODO: we should really run tests here as well diff --git a/docs/README.md b/docs/README.md index 85278588e..2aaccbac0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -29,7 +29,7 @@ It's recommended to install build dependencies and build the documentation inside a Python `venv`. ```bash -python -m pip install -r requirements-310.txt +python -m pip install -r requirements.txt ``` ## Build & Preview diff --git a/examples/sql-on-polars.py b/examples/sql-on-polars.py index dd7a9e021..ffcb12b70 100644 --- a/examples/sql-on-polars.py +++ b/examples/sql-on-polars.py @@ -20,7 +20,5 @@ ctx = SessionContext() ctx.register_table("taxi", "yellow_tripdata_2021-01.parquet") -df = ctx.sql( - "select passenger_count, count(*) from taxi group by passenger_count" -) +df = ctx.sql("select passenger_count, count(*) from taxi group by passenger_count") print(df) diff --git a/examples/sql-using-python-udaf.py b/examples/sql-using-python-udaf.py index 3326c4a1c..7ccf5d3cb 100644 --- a/examples/sql-using-python-udaf.py +++ b/examples/sql-using-python-udaf.py @@ -30,15 +30,11 @@ def __init__(self): def update(self, values: pa.Array) -> None: # not nice since pyarrow scalars can't be summed yet. This breaks on `None` - self._sum = pa.scalar( - self._sum.as_py() + pa.compute.sum(values).as_py() - ) + self._sum = pa.scalar(self._sum.as_py() + pa.compute.sum(values).as_py()) def merge(self, states: pa.Array) -> None: # not nice since pyarrow scalars can't be summed yet. This breaks on `None` - self._sum = pa.scalar( - self._sum.as_py() + pa.compute.sum(states).as_py() - ) + self._sum = pa.scalar(self._sum.as_py() + pa.compute.sum(states).as_py()) def state(self) -> pa.Array: return pa.array([self._sum.as_py()]) diff --git a/examples/substrait.py b/examples/substrait.py index c579751d2..23cd74649 100644 --- a/examples/substrait.py +++ b/examples/substrait.py @@ -23,9 +23,7 @@ ctx = SessionContext() # Register table with context -ctx.register_csv( - "aggregate_test_data", "./testing/data/csv/aggregate_test_100.csv" -) +ctx.register_csv("aggregate_test_data", "./testing/data/csv/aggregate_test_100.csv") substrait_plan = ss.substrait.serde.serialize_to_plan( "SELECT * FROM aggregate_test_data", ctx @@ -49,9 +47,7 @@ substrait_plan = ss.substrait.serde.deserialize_bytes(substrait_bytes) # type(df_logical_plan) -> -df_logical_plan = ss.substrait.consumer.from_substrait_plan( - ctx, substrait_plan -) +df_logical_plan = ss.substrait.consumer.from_substrait_plan(ctx, substrait_plan) # Back to Substrait Plan just for demonstration purposes # type(substrait_plan) -> diff --git a/pyproject.toml b/pyproject.toml index d35360519..7f3682c12 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,7 +24,7 @@ name = "datafusion" description = "Build and run queries against data" readme = "README.md" license = {file = "LICENSE.txt"} -requires-python = ">=3.6" +requires-python = ">=3.7" keywords = ["datafusion", "dataframe", "rust", "query-engine"] classifier = [ "Development Status :: 2 - Pre-Alpha", @@ -39,13 +39,20 @@ classifier = [ "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", "Programming Language :: Python", "Programming Language :: Rust", ] dependencies = [ "pyarrow>=11.0.0", + "importlib-metadata==4.2.0; python_version < '3.8'", ] +[project.optional-dependencies] +cudf = ["cudf"] +polars = ["polars>=0.17"] +pandas = ["pandas>=1.5"] + [project.urls] homepage = "https://arrow.apache.org/datafusion-python" documentation = "https://arrow.apache.org/datafusion-python" diff --git a/requirements-310.txt b/requirements-310.txt deleted file mode 100644 index 517c31905..000000000 --- a/requirements-310.txt +++ /dev/null @@ -1,249 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.10 -# by the following command: -# -# pip-compile --generate-hashes --resolver=backtracking requirements.in -# -attrs==21.2.0 \ - --hash=sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1 \ - --hash=sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb - # via pytest -black==21.9b0 \ - --hash=sha256:380f1b5da05e5a1429225676655dddb96f5ae8c75bdf91e53d798871b902a115 \ - --hash=sha256:7de4cfc7eb6b710de325712d40125689101d21d25283eed7e9998722cf10eb91 - # via -r requirements.in -click==8.0.3 \ - --hash=sha256:353f466495adaeb40b6b5f592f9f91cb22372351c84caeb068132442a4518ef3 \ - --hash=sha256:410e932b050f5eed773c4cda94de75971c89cdb3155a72a0831139a79e5ecb5b - # via black -flake8==4.0.1 \ - --hash=sha256:479b1304f72536a55948cb40a32dce8bb0ffe3501e26eaf292c7e60eb5e0428d \ - --hash=sha256:806e034dda44114815e23c16ef92f95c91e4c71100ff52813adf7132a6ad870d - # via -r requirements.in -iniconfig==1.1.1 \ - --hash=sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3 \ - --hash=sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32 - # via pytest -isort==5.9.3 \ - --hash=sha256:9c2ea1e62d871267b78307fe511c0838ba0da28698c5732d54e2790bf3ba9899 \ - --hash=sha256:e17d6e2b81095c9db0a03a8025a957f334d6ea30b26f9ec70805411e5c7c81f2 - # via -r requirements.in -maturin==0.15.1 \ - --hash=sha256:0e89a87549d671056f9358832c8aa1bb522abcf13eeca83327a58b091d4f5a98 \ - --hash=sha256:229d7eb6e14455a3c69a10a4546f082c7bd5490b8ec7f50d5d10edcea600dc64 \ - --hash=sha256:247bec13d82021972e5cb4eb38e7a7aea0e7a034beab60f0e0464ffe7423f24b \ - --hash=sha256:37ddbc261db778c73829173f43624b6178dd4244fae8e4b278323e050e899a14 \ - --hash=sha256:3b4c296b12736756d1d084c04b5a60281011e77b763eb9c69c39444d2421ad31 \ - --hash=sha256:616220c8c875526b22605bbb0be189ff859956abad8fe6e49c9ad2caa761ebca \ - --hash=sha256:61eda19c37394660c3b0b9c6dbfa7d411a5dca1a93c9dcf7baa718f3a03fda04 \ - --hash=sha256:7a7e02f265c30bac9f16e65c9d14184b3228c26b03dbe83a15220ab09fceabd7 \ - --hash=sha256:a40c96dc135e1571159155bdbd8c06509dea14a9317ca0e5b7cae4c8d2016b93 \ - --hash=sha256:ab5f8d8858440f35d833bce8bbf8233e595afa23fe00c513f7b671183946ea02 \ - --hash=sha256:b54421ae71e1e3dde92105d300187b9ac3b257a5b33c1d670ff9ee5266a1bd81 \ - --hash=sha256:dabb8ff46461c6fb1d68e8972a172cf1dede3c9825a41e4a6caecc95c26ca3b4 \ - --hash=sha256:f604b65fd9f0b94856e88cf8b345e21a27276297e6df4ad9305937887feda13b - # via -r requirements.in -mccabe==0.6.1 \ - --hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 \ - --hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f - # via flake8 -mypy==0.910 \ - --hash=sha256:088cd9c7904b4ad80bec811053272986611b84221835e079be5bcad029e79dd9 \ - --hash=sha256:0aadfb2d3935988ec3815952e44058a3100499f5be5b28c34ac9d79f002a4a9a \ - --hash=sha256:119bed3832d961f3a880787bf621634ba042cb8dc850a7429f643508eeac97b9 \ - --hash=sha256:1a85e280d4d217150ce8cb1a6dddffd14e753a4e0c3cf90baabb32cefa41b59e \ - --hash=sha256:3c4b8ca36877fc75339253721f69603a9c7fdb5d4d5a95a1a1b899d8b86a4de2 \ - --hash=sha256:3e382b29f8e0ccf19a2df2b29a167591245df90c0b5a2542249873b5c1d78212 \ - --hash=sha256:42c266ced41b65ed40a282c575705325fa7991af370036d3f134518336636f5b \ - --hash=sha256:53fd2eb27a8ee2892614370896956af2ff61254c275aaee4c230ae771cadd885 \ - --hash=sha256:704098302473cb31a218f1775a873b376b30b4c18229421e9e9dc8916fd16150 \ - --hash=sha256:7df1ead20c81371ccd6091fa3e2878559b5c4d4caadaf1a484cf88d93ca06703 \ - --hash=sha256:866c41f28cee548475f146aa4d39a51cf3b6a84246969f3759cb3e9c742fc072 \ - --hash=sha256:a155d80ea6cee511a3694b108c4494a39f42de11ee4e61e72bc424c490e46457 \ - --hash=sha256:adaeee09bfde366d2c13fe6093a7df5df83c9a2ba98638c7d76b010694db760e \ - --hash=sha256:b6fb13123aeef4a3abbcfd7e71773ff3ff1526a7d3dc538f3929a49b42be03f0 \ - --hash=sha256:b94e4b785e304a04ea0828759172a15add27088520dc7e49ceade7834275bedb \ - --hash=sha256:c0df2d30ed496a08de5daed2a9ea807d07c21ae0ab23acf541ab88c24b26ab97 \ - --hash=sha256:c6c2602dffb74867498f86e6129fd52a2770c48b7cd3ece77ada4fa38f94eba8 \ - --hash=sha256:ceb6e0a6e27fb364fb3853389607cf7eb3a126ad335790fa1e14ed02fba50811 \ - --hash=sha256:d9dd839eb0dc1bbe866a288ba3c1afc33a202015d2ad83b31e875b5905a079b6 \ - --hash=sha256:e4dab234478e3bd3ce83bac4193b2ecd9cf94e720ddd95ce69840273bf44f6de \ - --hash=sha256:ec4e0cd079db280b6bdabdc807047ff3e199f334050db5cbb91ba3e959a67504 \ - --hash=sha256:ecd2c3fe726758037234c93df7e98deb257fd15c24c9180dacf1ef829da5f921 \ - --hash=sha256:ef565033fa5a958e62796867b1df10c40263ea9ded87164d67572834e57a174d - # via -r requirements.in -mypy-extensions==0.4.3 \ - --hash=sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d \ - --hash=sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8 - # via - # black - # mypy -numpy==1.21.3 \ - --hash=sha256:043e83bfc274649c82a6f09836943e4a4aebe5e33656271c7dbf9621dd58b8ec \ - --hash=sha256:160ccc1bed3a8371bf0d760971f09bfe80a3e18646620e9ded0ad159d9749baa \ - --hash=sha256:188031f833bbb623637e66006cf75e933e00e7231f67e2b45cf8189612bb5dc3 \ - --hash=sha256:28f15209fb535dd4c504a7762d3bc440779b0e37d50ed810ced209e5cea60d96 \ - --hash=sha256:29fb3dcd0468b7715f8ce2c0c2d9bbbaf5ae686334951343a41bd8d155c6ea27 \ - --hash=sha256:2a6ee9620061b2a722749b391c0d80a0e2ae97290f1b32e28d5a362e21941ee4 \ - --hash=sha256:300321e3985c968e3ae7fbda187237b225f3ffe6528395a5b7a5407f73cf093e \ - --hash=sha256:32437f0b275c1d09d9c3add782516413e98cd7c09e6baf4715cbce781fc29912 \ - --hash=sha256:3c09418a14471c7ae69ba682e2428cae5b4420a766659605566c0fa6987f6b7e \ - --hash=sha256:49c6249260890e05b8111ebfc391ed58b3cb4b33e63197b2ec7f776e45330721 \ - --hash=sha256:4cc9b512e9fb590797474f58b7f6d1f1b654b3a94f4fa8558b48ca8b3cfc97cf \ - --hash=sha256:508b0b513fa1266875524ba8a9ecc27b02ad771fe1704a16314dc1a816a68737 \ - --hash=sha256:50cd26b0cf6664cb3b3dd161ba0a09c9c1343db064e7c69f9f8b551f5104d654 \ - --hash=sha256:5c4193f70f8069550a1788bd0cd3268ab7d3a2b70583dfe3b2e7f421e9aace06 \ - --hash=sha256:5dfe9d6a4c39b8b6edd7990091fea4f852888e41919d0e6722fe78dd421db0eb \ - --hash=sha256:63571bb7897a584ca3249c86dd01c10bcb5fe4296e3568b2e9c1a55356b6410e \ - --hash=sha256:75621882d2230ab77fb6a03d4cbccd2038511491076e7964ef87306623aa5272 \ - --hash=sha256:75eb7cadc8da49302f5b659d40ba4f6d94d5045fbd9569c9d058e77b0514c9e4 \ - --hash=sha256:88a5d6b268e9ad18f3533e184744acdaa2e913b13148160b1152300c949bbb5f \ - --hash=sha256:8a10968963640e75cc0193e1847616ab4c718e83b6938ae74dea44953950f6b7 \ - --hash=sha256:90bec6a86b348b4559b6482e2b684db4a9a7eed1fa054b86115a48d58fbbf62a \ - --hash=sha256:98339aa9911853f131de11010f6dd94c8cec254d3d1f7261528c3b3e3219f139 \ - --hash=sha256:a99a6b067e5190ac6d12005a4d85aa6227c5606fa93211f86b1dafb16233e57d \ - --hash=sha256:bffa2eee3b87376cc6b31eee36d05349571c236d1de1175b804b348dc0941e3f \ - --hash=sha256:c6c2d535a7beb1f8790aaa98fd089ceab2e3dd7ca48aca0af7dc60e6ef93ffe1 \ - --hash=sha256:cc14e7519fab2a4ed87d31f99c31a3796e4e1fe63a86ebdd1c5a1ea78ebd5896 \ - --hash=sha256:dd0482f3fc547f1b1b5d6a8b8e08f63fdc250c58ce688dedd8851e6e26cff0f3 \ - --hash=sha256:dde972a1e11bb7b702ed0e447953e7617723760f420decb97305e66fb4afc54f \ - --hash=sha256:e54af82d68ef8255535a6cdb353f55d6b8cf418a83e2be3569243787a4f4866f \ - --hash=sha256:e606e6316911471c8d9b4618e082635cfe98876007556e89ce03d52ff5e8fcf0 \ - --hash=sha256:f41b018f126aac18583956c54544db437f25c7ee4794bcb23eb38bef8e5e192a \ - --hash=sha256:f8f4625536926a155b80ad2bbff44f8cc59e9f2ad14cdda7acf4c135b4dc8ff2 \ - --hash=sha256:fe52dbe47d9deb69b05084abd4b0df7abb39a3c51957c09f635520abd49b29dd - # via - # -r requirements.in - # pyarrow -packaging==21.0 \ - --hash=sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7 \ - --hash=sha256:c86254f9220d55e31cc94d69bade760f0847da8000def4dfe1c6b872fd14ff14 - # via pytest -pathspec==0.9.0 \ - --hash=sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a \ - --hash=sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1 - # via black -platformdirs==2.4.0 \ - --hash=sha256:367a5e80b3d04d2428ffa76d33f124cf11e8fff2acdaa9b43d545f5c7d661ef2 \ - --hash=sha256:8868bbe3c3c80d42f20156f22e7131d2fb321f5bc86a2a345375c6481a67021d - # via black -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 - # via pytest -py==1.10.0 \ - --hash=sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3 \ - --hash=sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a - # via pytest -pyarrow==6.0.0 \ - --hash=sha256:004185e0babc6f3c3fba6ba4f106e406a0113d0f82bb9ad9a8571a1978c45d04 \ - --hash=sha256:0204e80777ab8f4e9abd3a765a8ec07ed1e3c4630bacda50d2ce212ef0f3826f \ - --hash=sha256:072c1a0fca4509eefd7d018b78542fb7e5c63aaf5698f1c0a6e45628ae17ba44 \ - --hash=sha256:15dc0d673d3f865ca63c877bd7a2eced70b0a08969fb733a28247134b8a1f18b \ - --hash=sha256:1c38263ea438a1666b13372e7565450cfeec32dbcd1c2595749476a58465eaec \ - --hash=sha256:281ce5fa03621d786a9beb514abb09846db7f0221b50eabf543caa24037eaacd \ - --hash=sha256:2d2c681659396c745e4f1988d5dd41dcc3ad557bb8d4a8c2e44030edafc08a91 \ - --hash=sha256:376c4b5f248ae63df21fe15c194e9013753164be2d38f4b3fb8bde63ac5a1958 \ - --hash=sha256:465f87fa0be0b2928b2beeba22b5813a0203fb05d90fd8563eea48e08ecc030e \ - --hash=sha256:477c746ef42c039348a288584800e299456c80c5691401bb9b19aa9c02a427b7 \ - --hash=sha256:5144bd9db2920c7cb566c96462d62443cc239104f94771d110f74393f2fb42a2 \ - --hash=sha256:5408fa8d623e66a0445f3fb0e4027fd219bf99bfb57422d543d7b7876e2c5b55 \ - --hash=sha256:5be62679201c441356d3f2a739895dcc8d4d299f2a6eabcd2163bfb6a898abba \ - --hash=sha256:5c666bc6a1cebf01206e2dc1ab05f25f39f35d3a499e0ef5cd635225e07306ca \ - --hash=sha256:6163d82cca7541774b00503c295fe86a1722820eddb958b57f091bb6f5b0a6db \ - --hash=sha256:6a1d9a2f4ee812ed0bd4182cabef99ea914ac297274f0de086f2488093d284ef \ - --hash=sha256:7a683f71b848eb6310b4ec48c0def55dac839e9994c1ac874c9b2d3d5625def1 \ - --hash=sha256:82fe80309e01acf29e3943a1f6d3c98ec109fe1d356bc1ac37d639bcaadcf684 \ - --hash=sha256:8c23f8cdecd3d9e49f9b0f9a651ae5549d1d32fd4901fb1bdc2d327edfba844f \ - --hash=sha256:8d41dfb09ba9236cca6245f33088eb42f3c54023da281139241e0f9f3b4b754e \ - --hash=sha256:a19e58dfb04e451cd8b7bdec3ac8848373b95dfc53492c9a69789aa9074a3c1b \ - --hash=sha256:a50d2f77b86af38ceabf45617208b9105d20e7a5eebc584e7c8c0acededd82ce \ - --hash=sha256:a5bed4f948c032c40597302e9bdfa65f62295240306976ecbe43a54924c6f94f \ - --hash=sha256:ac941a147d14993987cc8b605b721735a34b3e54d167302501fb4db1ad7382c7 \ - --hash=sha256:b86d175262db1eb46afdceb36d459409eb6f8e532d3dec162f8bf572c7f57623 \ - --hash=sha256:bf3400780c4d3c9cb43b1e8a1aaf2e1b7199a0572d0a645529d2784e4d0d8497 \ - --hash=sha256:c7a6e7e0bf8779e9c3428ced85507541f3da9a0675e2f4781d4eb2c7042cbf81 \ - --hash=sha256:cc1d4a70efd583befe92d4ea6f74ed2e0aa31ccdde767cd5cae8e77c65a1c2d4 \ - --hash=sha256:d046dc78a9337baa6415be915c5a16222505233e238a1017f368243c89817eea \ - --hash=sha256:da7860688c33ca88ac05f1a487d32d96d9caa091412496c35f3d1d832145675a \ - --hash=sha256:ddf2e6e3b321adaaf716f2d5af8e92d205a9671e0cb7c0779710a567fd1dd580 \ - --hash=sha256:e81508239a71943759cee272ce625ae208092dd36ef2c6713fccee30bbcf52bb \ - --hash=sha256:ea64a48a85c631eb2a0ea13ccdec5143c85b5897836b16331ee4289d27a57247 \ - --hash=sha256:ed0be080cf595ea15ff1c9ff4097bbf1fcc4b50847d98c0a3c0412fbc6ede7e9 \ - --hash=sha256:fb701ec4a94b92102606d4e88f0b8eba34f09a5ad8e014eaa4af76f42b7f62ae \ - --hash=sha256:fbda7595f24a639bcef3419ecfac17216efacb09f7b0f1b4c4c97f900d65ca0e - # via -r requirements.in -pycodestyle==2.8.0 \ - --hash=sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20 \ - --hash=sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f - # via flake8 -pyflakes==2.4.0 \ - --hash=sha256:05a85c2872edf37a4ed30b0cce2f6093e1d0581f8c19d7393122da7e25b2b24c \ - --hash=sha256:3bb3a3f256f4b7968c9c788781e4ff07dce46bdf12339dcda61053375426ee2e - # via flake8 -pyparsing==3.0.3 \ - --hash=sha256:9e3511118010f112a4b4b435ae50e1eaa610cda191acb9e421d60cf5fde83455 \ - --hash=sha256:f8d3fe9fc404576c5164f0f0c4e382c96b85265e023c409c43d48f65da9d60d0 - # via packaging -pytest==6.2.5 \ - --hash=sha256:131b36680866a76e6781d13f101efb86cf674ebb9762eb70d3082b6f29889e89 \ - --hash=sha256:7310f8d27bc79ced999e760ca304d69f6ba6c6649c0b60fb0e04a4a77cacc134 - # via -r requirements.in -regex==2021.10.23 \ - --hash=sha256:0c186691a7995ef1db61205e00545bf161fb7b59cdb8c1201c89b333141c438a \ - --hash=sha256:0dcc0e71118be8c69252c207630faf13ca5e1b8583d57012aae191e7d6d28b84 \ - --hash=sha256:0f7552429dd39f70057ac5d0e897e5bfe211629652399a21671e53f2a9693a4e \ - --hash=sha256:129472cd06062fb13e7b4670a102951a3e655e9b91634432cfbdb7810af9d710 \ - --hash=sha256:13ec99df95003f56edcd307db44f06fbeb708c4ccdcf940478067dd62353181e \ - --hash=sha256:1f2b59c28afc53973d22e7bc18428721ee8ca6079becf1b36571c42627321c65 \ - --hash=sha256:2b20f544cbbeffe171911f6ce90388ad36fe3fad26b7c7a35d4762817e9ea69c \ - --hash=sha256:2fb698037c35109d3c2e30f2beb499e5ebae6e4bb8ff2e60c50b9a805a716f79 \ - --hash=sha256:34d870f9f27f2161709054d73646fc9aca49480617a65533fc2b4611c518e455 \ - --hash=sha256:391703a2abf8013d95bae39145d26b4e21531ab82e22f26cd3a181ee2644c234 \ - --hash=sha256:450dc27483548214314640c89a0f275dbc557968ed088da40bde7ef8fb52829e \ - --hash=sha256:45b65d6a275a478ac2cbd7fdbf7cc93c1982d613de4574b56fd6972ceadb8395 \ - --hash=sha256:5095a411c8479e715784a0c9236568ae72509450ee2226b649083730f3fadfc6 \ - --hash=sha256:530fc2bbb3dc1ebb17f70f7b234f90a1dd43b1b489ea38cea7be95fb21cdb5c7 \ - --hash=sha256:56f0c81c44638dfd0e2367df1a331b4ddf2e771366c4b9c5d9a473de75e3e1c7 \ - --hash=sha256:5e9c9e0ce92f27cef79e28e877c6b6988c48b16942258f3bc55d39b5f911df4f \ - --hash=sha256:6d7722136c6ed75caf84e1788df36397efdc5dbadab95e59c2bba82d4d808a4c \ - --hash=sha256:74d071dbe4b53c602edd87a7476ab23015a991374ddb228d941929ad7c8c922e \ - --hash=sha256:7b568809dca44cb75c8ebb260844ea98252c8c88396f9d203f5094e50a70355f \ - --hash=sha256:80bb5d2e92b2258188e7dcae5b188c7bf868eafdf800ea6edd0fbfc029984a88 \ - --hash=sha256:8d1cdcda6bd16268316d5db1038965acf948f2a6f43acc2e0b1641ceab443623 \ - --hash=sha256:9f665677e46c5a4d288ece12fdedf4f4204a422bb28ff05f0e6b08b7447796d1 \ - --hash=sha256:a30513828180264294953cecd942202dfda64e85195ae36c265daf4052af0464 \ - --hash=sha256:a7a986c45d1099a5de766a15de7bee3840b1e0e1a344430926af08e5297cf666 \ - --hash=sha256:a940ca7e7189d23da2bfbb38973832813eab6bd83f3bf89a977668c2f813deae \ - --hash=sha256:ab7c5684ff3538b67df3f93d66bd3369b749087871ae3786e70ef39e601345b0 \ - --hash=sha256:be04739a27be55631069b348dda0c81d8ea9822b5da10b8019b789e42d1fe452 \ - --hash=sha256:c0938ddd60cc04e8f1faf7a14a166ac939aac703745bfcd8e8f20322a7373019 \ - --hash=sha256:cb46b542133999580ffb691baf67410306833ee1e4f58ed06b6a7aaf4e046952 \ - --hash=sha256:d134757a37d8640f3c0abb41f5e68b7cf66c644f54ef1cb0573b7ea1c63e1509 \ - --hash=sha256:de557502c3bec8e634246588a94e82f1ee1b9dfcfdc453267c4fb652ff531570 \ - --hash=sha256:ded0c4a3eee56b57fcb2315e40812b173cafe79d2f992d50015f4387445737fa \ - --hash=sha256:e1dae12321b31059a1a72aaa0e6ba30156fe7e633355e445451e4021b8e122b6 \ - --hash=sha256:eb672217f7bd640411cfc69756ce721d00ae600814708d35c930930f18e8029f \ - --hash=sha256:ee684f139c91e69fe09b8e83d18b4d63bf87d9440c1eb2eeb52ee851883b1b29 \ - --hash=sha256:f3f9a91d3cc5e5b0ddf1043c0ae5fa4852f18a1c0050318baf5fc7930ecc1f9c - # via black -toml==0.10.2 \ - --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ - --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f - # via - # -r requirements.in - # mypy - # pytest -tomli==1.2.2 \ - --hash=sha256:c6ce0015eb38820eaf32b5db832dbc26deb3dd427bd5f6556cf0acac2c214fee \ - --hash=sha256:f04066f68f5554911363063a30b108d2b5a5b1a010aa8b6132af78489fe3aade - # via - # black - # maturin -typing-extensions==3.10.0.2 \ - --hash=sha256:49f75d16ff11f1cd258e1b988ccff82a3ca5570217d7ad8c5f48205dd99a677e \ - --hash=sha256:d8226d10bc02a29bcc81df19a26e56a9647f8b0a6d4a83924139f4a8b01f17b7 \ - --hash=sha256:f1d25edafde516b146ecd0613dabcc61409817af4766fbbcfb8d1ad4ec441a34 - # via - # black - # mypy diff --git a/requirements-311.txt b/requirements-311.txt deleted file mode 100644 index 9161e3f5b..000000000 --- a/requirements-311.txt +++ /dev/null @@ -1,199 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --generate-hashes --output-file=requirements-311.txt -# -black==23.3.0 \ - --hash=sha256:064101748afa12ad2291c2b91c960be28b817c0c7eaa35bec09cc63aa56493c5 \ - --hash=sha256:0945e13506be58bf7db93ee5853243eb368ace1c08a24c65ce108986eac65915 \ - --hash=sha256:11c410f71b876f961d1de77b9699ad19f939094c3a677323f43d7a29855fe326 \ - --hash=sha256:1c7b8d606e728a41ea1ccbd7264677e494e87cf630e399262ced92d4a8dac940 \ - --hash=sha256:1d06691f1eb8de91cd1b322f21e3bfc9efe0c7ca1f0e1eb1db44ea367dff656b \ - --hash=sha256:3238f2aacf827d18d26db07524e44741233ae09a584273aa059066d644ca7b30 \ - --hash=sha256:32daa9783106c28815d05b724238e30718f34155653d4d6e125dc7daec8e260c \ - --hash=sha256:35d1381d7a22cc5b2be2f72c7dfdae4072a3336060635718cc7e1ede24221d6c \ - --hash=sha256:3a150542a204124ed00683f0db1f5cf1c2aaaa9cc3495b7a3b5976fb136090ab \ - --hash=sha256:48f9d345675bb7fbc3dd85821b12487e1b9a75242028adad0333ce36ed2a6d27 \ - --hash=sha256:50cb33cac881766a5cd9913e10ff75b1e8eb71babf4c7104f2e9c52da1fb7de2 \ - --hash=sha256:562bd3a70495facf56814293149e51aa1be9931567474993c7942ff7d3533961 \ - --hash=sha256:67de8d0c209eb5b330cce2469503de11bca4085880d62f1628bd9972cc3366b9 \ - --hash=sha256:6b39abdfb402002b8a7d030ccc85cf5afff64ee90fa4c5aebc531e3ad0175ddb \ - --hash=sha256:6f3c333ea1dd6771b2d3777482429864f8e258899f6ff05826c3a4fcc5ce3f70 \ - --hash=sha256:714290490c18fb0126baa0fca0a54ee795f7502b44177e1ce7624ba1c00f2331 \ - --hash=sha256:7c3eb7cea23904399866c55826b31c1f55bbcd3890ce22ff70466b907b6775c2 \ - --hash=sha256:92c543f6854c28a3c7f39f4d9b7694f9a6eb9d3c5e2ece488c327b6e7ea9b266 \ - --hash=sha256:a6f6886c9869d4daae2d1715ce34a19bbc4b95006d20ed785ca00fa03cba312d \ - --hash=sha256:a8a968125d0a6a404842fa1bf0b349a568634f856aa08ffaff40ae0dfa52e7c6 \ - --hash=sha256:c7ab5790333c448903c4b721b59c0d80b11fe5e9803d8703e84dcb8da56fec1b \ - --hash=sha256:e114420bf26b90d4b9daa597351337762b63039752bdf72bf361364c1aa05925 \ - --hash=sha256:e198cf27888ad6f4ff331ca1c48ffc038848ea9f031a3b40ba36aced7e22f2c8 \ - --hash=sha256:ec751418022185b0c1bb7d7736e6933d40bbb14c14a0abcf9123d1b159f98dd4 \ - --hash=sha256:f0bd2f4a58d6666500542b26354978218a9babcdc972722f4bf90779524515f3 - # via -r requirements.in -click==8.1.3 \ - --hash=sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e \ - --hash=sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48 - # via black -flake8==6.0.0 \ - --hash=sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7 \ - --hash=sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181 - # via -r requirements.in -iniconfig==2.0.0 \ - --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ - --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 - # via pytest -isort==5.12.0 \ - --hash=sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504 \ - --hash=sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6 - # via -r requirements.in -maturin==0.14.17 \ - --hash=sha256:0308d4124311c92ec5c08600f93385a5ff16f7764410585261d1ca0aed739764 \ - --hash=sha256:2684302ded1559a26635ec45e91ae7913aeb386a8b658d5c2eb13ff410df7930 \ - --hash=sha256:3bf173adac3e9f84a84123ec0b5b4b28b2de79446a49da2b4549016614025b83 \ - --hash=sha256:64dd1b017eab2f9c938d833522bb505506908d824388927011dbdfff26ccea2c \ - --hash=sha256:683e1127b54b9fbdbd661ce3b27b073bd5d7c51d7e980870f4caffdb40f364b0 \ - --hash=sha256:7fef3950a34c0b5c1806637169fca12f89b7440d7608832bf7765b34f394b06a \ - --hash=sha256:8076993118089abb19e7d2312b138afea418dccea60be4198ab9f348618b47df \ - --hash=sha256:a7f06984bd3ffa4ab7be67f7352353a486f262d7a0dbd4dc305944e0b09c8f35 \ - --hash=sha256:abfd98529cfab59deb59639962d93df72121013d5151a5f01c66cda19d9c88a9 \ - --hash=sha256:bb8f8ac375d022c5de5da3efed79e712129de13ebdb9f668b96bf5df0673bc03 \ - --hash=sha256:cf1429a7854ecd4830bb42407d30ff0625c3f6480fa7b1e90da2896ba7a1b2fc \ - --hash=sha256:dcd44c2fa66d79497e2f4361654ed0d1c2ef1c58139469e8e0083409f948eea4 \ - --hash=sha256:fb4e3311e8ce707843235fbe8748a05a3ae166c3efd6d2aa335b53dfc2bd3b88 - # via -r requirements.in -mccabe==0.7.0 \ - --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ - --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e - # via flake8 -mypy==1.2.0 \ - --hash=sha256:023fe9e618182ca6317ae89833ba422c411469156b690fde6a315ad10695a521 \ - --hash=sha256:031fc69c9a7e12bcc5660b74122ed84b3f1c505e762cc4296884096c6d8ee140 \ - --hash=sha256:2de7babe398cb7a85ac7f1fd5c42f396c215ab3eff731b4d761d68d0f6a80f48 \ - --hash=sha256:2e93a8a553e0394b26c4ca683923b85a69f7ccdc0139e6acd1354cc884fe0128 \ - --hash=sha256:390bc685ec209ada4e9d35068ac6988c60160b2b703072d2850457b62499e336 \ - --hash=sha256:3a2d219775a120581a0ae8ca392b31f238d452729adbcb6892fa89688cb8306a \ - --hash=sha256:3efde4af6f2d3ccf58ae825495dbb8d74abd6d176ee686ce2ab19bd025273f41 \ - --hash=sha256:4a99fe1768925e4a139aace8f3fb66db3576ee1c30b9c0f70f744ead7e329c9f \ - --hash=sha256:4b41412df69ec06ab141808d12e0bf2823717b1c363bd77b4c0820feaa37249e \ - --hash=sha256:4c8d8c6b80aa4a1689f2a179d31d86ae1367ea4a12855cc13aa3ba24bb36b2d8 \ - --hash=sha256:4d19f1a239d59f10fdc31263d48b7937c585810288376671eaf75380b074f238 \ - --hash=sha256:4e4a682b3f2489d218751981639cffc4e281d548f9d517addfd5a2917ac78119 \ - --hash=sha256:695c45cea7e8abb6f088a34a6034b1d273122e5530aeebb9c09626cea6dca4cb \ - --hash=sha256:701189408b460a2ff42b984e6bd45c3f41f0ac9f5f58b8873bbedc511900086d \ - --hash=sha256:70894c5345bea98321a2fe84df35f43ee7bb0feec117a71420c60459fc3e1eed \ - --hash=sha256:8293a216e902ac12779eb7a08f2bc39ec6c878d7c6025aa59464e0c4c16f7eb9 \ - --hash=sha256:8d26b513225ffd3eacece727f4387bdce6469192ef029ca9dd469940158bc89e \ - --hash=sha256:a197ad3a774f8e74f21e428f0de7f60ad26a8d23437b69638aac2764d1e06a6a \ - --hash=sha256:bea55fc25b96c53affab852ad94bf111a3083bc1d8b0c76a61dd101d8a388cf5 \ - --hash=sha256:c9a084bce1061e55cdc0493a2ad890375af359c766b8ac311ac8120d3a472950 \ - --hash=sha256:d0e9464a0af6715852267bf29c9553e4555b61f5904a4fc538547a4d67617937 \ - --hash=sha256:d8e9187bfcd5ffedbe87403195e1fc340189a68463903c39e2b63307c9fa0394 \ - --hash=sha256:eaeaa0888b7f3ccb7bcd40b50497ca30923dba14f385bde4af78fac713d6d6f6 \ - --hash=sha256:f46af8d162f3d470d8ffc997aaf7a269996d205f9d746124a179d3abe05ac602 \ - --hash=sha256:f70a40410d774ae23fcb4afbbeca652905a04de7948eaf0b1789c8d1426b72d1 \ - --hash=sha256:fe91be1c51c90e2afe6827601ca14353bbf3953f343c2129fa1e247d55fd95ba - # via -r requirements.in -mypy-extensions==1.0.0 \ - --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ - --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 - # via - # black - # mypy -numpy==1.24.2 \ - --hash=sha256:003a9f530e880cb2cd177cba1af7220b9aa42def9c4afc2a2fc3ee6be7eb2b22 \ - --hash=sha256:150947adbdfeceec4e5926d956a06865c1c690f2fd902efede4ca6fe2e657c3f \ - --hash=sha256:2620e8592136e073bd12ee4536149380695fbe9ebeae845b81237f986479ffc9 \ - --hash=sha256:2eabd64ddb96a1239791da78fa5f4e1693ae2dadc82a76bc76a14cbb2b966e96 \ - --hash=sha256:4173bde9fa2a005c2c6e2ea8ac1618e2ed2c1c6ec8a7657237854d42094123a0 \ - --hash=sha256:4199e7cfc307a778f72d293372736223e39ec9ac096ff0a2e64853b866a8e18a \ - --hash=sha256:4cecaed30dc14123020f77b03601559fff3e6cd0c048f8b5289f4eeabb0eb281 \ - --hash=sha256:557d42778a6869c2162deb40ad82612645e21d79e11c1dc62c6e82a2220ffb04 \ - --hash=sha256:63e45511ee4d9d976637d11e6c9864eae50e12dc9598f531c035265991910468 \ - --hash=sha256:6524630f71631be2dabe0c541e7675db82651eb998496bbe16bc4f77f0772253 \ - --hash=sha256:76807b4063f0002c8532cfeac47a3068a69561e9c8715efdad3c642eb27c0756 \ - --hash=sha256:7de8fdde0003f4294655aa5d5f0a89c26b9f22c0a58790c38fae1ed392d44a5a \ - --hash=sha256:889b2cc88b837d86eda1b17008ebeb679d82875022200c6e8e4ce6cf549b7acb \ - --hash=sha256:92011118955724465fb6853def593cf397b4a1367495e0b59a7e69d40c4eb71d \ - --hash=sha256:97cf27e51fa078078c649a51d7ade3c92d9e709ba2bfb97493007103c741f1d0 \ - --hash=sha256:9a23f8440561a633204a67fb44617ce2a299beecf3295f0d13c495518908e910 \ - --hash=sha256:a51725a815a6188c662fb66fb32077709a9ca38053f0274640293a14fdd22978 \ - --hash=sha256:a77d3e1163a7770164404607b7ba3967fb49b24782a6ef85d9b5f54126cc39e5 \ - --hash=sha256:adbdce121896fd3a17a77ab0b0b5eedf05a9834a18699db6829a64e1dfccca7f \ - --hash=sha256:c29e6bd0ec49a44d7690ecb623a8eac5ab8a923bce0bea6293953992edf3a76a \ - --hash=sha256:c72a6b2f4af1adfe193f7beb91ddf708ff867a3f977ef2ec53c0ffb8283ab9f5 \ - --hash=sha256:d0a2db9d20117bf523dde15858398e7c0858aadca7c0f088ac0d6edd360e9ad2 \ - --hash=sha256:e3ab5d32784e843fc0dd3ab6dcafc67ef806e6b6828dc6af2f689be0eb4d781d \ - --hash=sha256:e428c4fbfa085f947b536706a2fc349245d7baa8334f0c5723c56a10595f9b95 \ - --hash=sha256:e8d2859428712785e8a8b7d2b3ef0a1d1565892367b32f915c4a4df44d0e64f5 \ - --hash=sha256:eef70b4fc1e872ebddc38cddacc87c19a3709c0e3e5d20bf3954c147b1dd941d \ - --hash=sha256:f64bb98ac59b3ea3bf74b02f13836eb2e24e48e0ab0145bbda646295769bd780 \ - --hash=sha256:f9006288bcf4895917d02583cf3411f98631275bc67cce355a7f39f8c14338fa - # via - # -r requirements.in - # pyarrow -packaging==23.1 \ - --hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \ - --hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f - # via - # black - # pytest -pathspec==0.11.1 \ - --hash=sha256:2798de800fa92780e33acca925945e9a19a133b715067cf165b8866c15a31687 \ - --hash=sha256:d8af70af76652554bd134c22b3e8a1cc46ed7d91edcdd721ef1a0c51a84a5293 - # via black -platformdirs==3.2.0 \ - --hash=sha256:d5b638ca397f25f979350ff789db335903d7ea010ab28903f57b27e1b16c2b08 \ - --hash=sha256:ebe11c0d7a805086e99506aa331612429a72ca7cd52a1f0d277dc4adc20cb10e - # via black -pluggy==1.0.0 \ - --hash=sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159 \ - --hash=sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3 - # via pytest -pyarrow==11.0.0 \ - --hash=sha256:1cbcfcbb0e74b4d94f0b7dde447b835a01bc1d16510edb8bb7d6224b9bf5bafc \ - --hash=sha256:25aa11c443b934078bfd60ed63e4e2d42461682b5ac10f67275ea21e60e6042c \ - --hash=sha256:2d53ba72917fdb71e3584ffc23ee4fcc487218f8ff29dd6df3a34c5c48fe8c06 \ - --hash=sha256:2d942c690ff24a08b07cb3df818f542a90e4d359381fbff71b8f2aea5bf58841 \ - --hash=sha256:2f51dc7ca940fdf17893227edb46b6784d37522ce08d21afc56466898cb213b2 \ - --hash=sha256:362a7c881b32dc6b0eccf83411a97acba2774c10edcec715ccaab5ebf3bb0835 \ - --hash=sha256:3e99be85973592051e46412accea31828da324531a060bd4585046a74ba45854 \ - --hash=sha256:40bb42afa1053c35c749befbe72f6429b7b5f45710e85059cdd534553ebcf4f2 \ - --hash=sha256:410624da0708c37e6a27eba321a72f29d277091c8f8d23f72c92bada4092eb5e \ - --hash=sha256:41a1451dd895c0b2964b83d91019e46f15b5564c7ecd5dcb812dadd3f05acc97 \ - --hash=sha256:5461c57dbdb211a632a48facb9b39bbeb8a7905ec95d768078525283caef5f6d \ - --hash=sha256:69309be84dcc36422574d19c7d3a30a7ea43804f12552356d1ab2a82a713c418 \ - --hash=sha256:7c28b5f248e08dea3b3e0c828b91945f431f4202f1a9fe84d1012a761324e1ba \ - --hash=sha256:8f40be0d7381112a398b93c45a7e69f60261e7b0269cc324e9f739ce272f4f70 \ - --hash=sha256:a37bc81f6c9435da3c9c1e767324ac3064ffbe110c4e460660c43e144be4ed85 \ - --hash=sha256:aaee8f79d2a120bf3e032d6d64ad20b3af6f56241b0ffc38d201aebfee879d00 \ - --hash=sha256:ad42bb24fc44c48f74f0d8c72a9af16ba9a01a2ccda5739a517aa860fa7e3d56 \ - --hash=sha256:ad7c53def8dbbc810282ad308cc46a523ec81e653e60a91c609c2233ae407689 \ - --hash=sha256:becc2344be80e5dce4e1b80b7c650d2fc2061b9eb339045035a1baa34d5b8f1c \ - --hash=sha256:caad867121f182d0d3e1a0d36f197df604655d0b466f1bc9bafa903aa95083e4 \ - --hash=sha256:ccbf29a0dadfcdd97632b4f7cca20a966bb552853ba254e874c66934931b9841 \ - --hash=sha256:da93340fbf6f4e2a62815064383605b7ffa3e9eeb320ec839995b1660d69f89b \ - --hash=sha256:e217d001e6389b20a6759392a5ec49d670757af80101ee6b5f2c8ff0172e02ca \ - --hash=sha256:f010ce497ca1b0f17a8243df3048055c0d18dcadbcc70895d5baf8921f753de5 \ - --hash=sha256:f12932e5a6feb5c58192209af1d2607d488cb1d404fbc038ac12ada60327fa34 - # via -r requirements.in -pycodestyle==2.10.0 \ - --hash=sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053 \ - --hash=sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610 - # via flake8 -pyflakes==3.0.1 \ - --hash=sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf \ - --hash=sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd - # via flake8 -pytest==7.3.1 \ - --hash=sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362 \ - --hash=sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3 - # via -r requirements.in -toml==0.10.2 \ - --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ - --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f - # via -r requirements.in -typing-extensions==4.5.0 \ - --hash=sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb \ - --hash=sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4 - # via mypy diff --git a/requirements.in b/requirements.in index 09872b03b..9963cd800 100644 --- a/requirements.in +++ b/requirements.in @@ -25,3 +25,4 @@ pyarrow>=11.0.0 pytest toml importlib_metadata; python_version < "3.8" +exceptiongroup; python_version < "3.11" diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..9b5a0c3e7 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,201 @@ +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --generate-hashes +# +black==23.10.0 \ + --hash=sha256:0e232f24a337fed7a82c1185ae46c56c4a6167fb0fe37411b43e876892c76699 \ + --hash=sha256:30b78ac9b54cf87bcb9910ee3d499d2bc893afd52495066c49d9ee6b21eee06e \ + --hash=sha256:31946ec6f9c54ed7ba431c38bc81d758970dd734b96b8e8c2b17a367d7908171 \ + --hash=sha256:31b9f87b277a68d0e99d2905edae08807c007973eaa609da5f0c62def6b7c0bd \ + --hash=sha256:47c4510f70ec2e8f9135ba490811c071419c115e46f143e4dce2ac45afdcf4c9 \ + --hash=sha256:481167c60cd3e6b1cb8ef2aac0f76165843a374346aeeaa9d86765fe0dd0318b \ + --hash=sha256:6901631b937acbee93c75537e74f69463adaf34379a04eef32425b88aca88a23 \ + --hash=sha256:76baba9281e5e5b230c9b7f83a96daf67a95e919c2dfc240d9e6295eab7b9204 \ + --hash=sha256:7fb5fc36bb65160df21498d5a3dd330af8b6401be3f25af60c6ebfe23753f747 \ + --hash=sha256:960c21555be135c4b37b7018d63d6248bdae8514e5c55b71e994ad37407f45b8 \ + --hash=sha256:a3c2ddb35f71976a4cfeca558848c2f2f89abc86b06e8dd89b5a65c1e6c0f22a \ + --hash=sha256:c870bee76ad5f7a5ea7bd01dc646028d05568d33b0b09b7ecfc8ec0da3f3f39c \ + --hash=sha256:d3d9129ce05b0829730323bdcb00f928a448a124af5acf90aa94d9aba6969604 \ + --hash=sha256:db451a3363b1e765c172c3fd86213a4ce63fb8524c938ebd82919bf2a6e28c6a \ + --hash=sha256:e223b731a0e025f8ef427dd79d8cd69c167da807f5710add30cdf131f13dd62e \ + --hash=sha256:f20ff03f3fdd2fd4460b4f631663813e57dc277e37fb216463f3b907aa5a9bdd \ + --hash=sha256:f74892b4b836e5162aa0452393112a574dac85e13902c57dfbaaf388e4eda37c \ + --hash=sha256:f8dc7d50d94063cdfd13c82368afd8588bac4ce360e4224ac399e769d6704e98 + # via -r requirements.in +click==8.1.7 \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de + # via black +flake8==6.1.0 \ + --hash=sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23 \ + --hash=sha256:ffdfce58ea94c6580c77888a86506937f9a1a227dfcd15f245d694ae20a6b6e5 + # via -r requirements.in +iniconfig==2.0.0 \ + --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ + --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + # via pytest +isort==5.12.0 \ + --hash=sha256:8bef7dde241278824a6d83f44a544709b065191b95b6e50894bdc722fcba0504 \ + --hash=sha256:f84c2818376e66cf843d497486ea8fed8700b340f308f076c6fb1229dff318b6 + # via -r requirements.in +maturin==1.3.0 \ + --hash=sha256:05639678b78a0df1abb4542925ee3eb5fc91ff3846878d584db8c7a6dbf2f54f \ + --hash=sha256:1b6b3a4d28c168a7a4773a406effb71c6245400e3d1fb08db3ebc5706669c706 \ + --hash=sha256:2686f747980c9ef4a278542b209504b03c7576487b13b9655a6cbd40f3b98a73 \ + --hash=sha256:329820228baa9158d69c8e36e2fd3d7df3163a66df8ae739caa6cb5289955646 \ + --hash=sha256:416b0a48b8785555c5060d6fec97f69545c92ffe24df074c8a716d83fa8ab66b \ + --hash=sha256:777bd6b5a6b6fdafcef69168c3938f35efba6e8ca3e7657940dfca4fa077920f \ + --hash=sha256:84d9136cd241868a8c57116f6bc20e4560b70e96c60fefc3bcbc7ad15dbb7eb7 \ + --hash=sha256:91ab057ae8d8992ad3a4312e8f379cbe1a8a3289f7d2a58969407e94355bfccc \ + --hash=sha256:d612878b75bb60946a45e9534bfd9e759e84d68cc6afe8d46c572d0c3b17bb4e \ + --hash=sha256:dcc292547986fa93254b07d6d9f01a417b46a3fa55d5c45db65e71b285922f26 \ + --hash=sha256:f2dfe86b37f7747712f3a910e3321e955efabe2c0e1de19563cea8d05bbee5b6 \ + --hash=sha256:f319b89025632099b197a686251f25def39f982f44474b8ba66c6d5f7e6abcde \ + --hash=sha256:f6c69bc7ae147a5effd55587447b35cab1ceb726ba244d08698bc7518b8688ac + # via -r requirements.in +mccabe==0.7.0 \ + --hash=sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325 \ + --hash=sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e + # via flake8 +mypy==1.6.1 \ + --hash=sha256:19f905bcfd9e167159b3d63ecd8cb5e696151c3e59a1742e79bc3bcb540c42c7 \ + --hash=sha256:21a1ad938fee7d2d96ca666c77b7c494c3c5bd88dff792220e1afbebb2925b5e \ + --hash=sha256:40b1844d2e8b232ed92e50a4bd11c48d2daa351f9deee6c194b83bf03e418b0c \ + --hash=sha256:41697773aa0bf53ff917aa077e2cde7aa50254f28750f9b88884acea38a16169 \ + --hash=sha256:49ae115da099dcc0922a7a895c1eec82c1518109ea5c162ed50e3b3594c71208 \ + --hash=sha256:4c46b51de523817a0045b150ed11b56f9fff55f12b9edd0f3ed35b15a2809de0 \ + --hash=sha256:4cbe68ef919c28ea561165206a2dcb68591c50f3bcf777932323bc208d949cf1 \ + --hash=sha256:4d01c00d09a0be62a4ca3f933e315455bde83f37f892ba4b08ce92f3cf44bcc1 \ + --hash=sha256:59a0d7d24dfb26729e0a068639a6ce3500e31d6655df8557156c51c1cb874ce7 \ + --hash=sha256:68351911e85145f582b5aa6cd9ad666c8958bcae897a1bfda8f4940472463c45 \ + --hash=sha256:7274b0c57737bd3476d2229c6389b2ec9eefeb090bbaf77777e9d6b1b5a9d143 \ + --hash=sha256:81af8adaa5e3099469e7623436881eff6b3b06db5ef75e6f5b6d4871263547e5 \ + --hash=sha256:82e469518d3e9a321912955cc702d418773a2fd1e91c651280a1bda10622f02f \ + --hash=sha256:8b27958f8c76bed8edaa63da0739d76e4e9ad4ed325c814f9b3851425582a3cd \ + --hash=sha256:8c223fa57cb154c7eab5156856c231c3f5eace1e0bed9b32a24696b7ba3c3245 \ + --hash=sha256:8f57e6b6927a49550da3d122f0cb983d400f843a8a82e65b3b380d3d7259468f \ + --hash=sha256:925cd6a3b7b55dfba252b7c4561892311c5358c6b5a601847015a1ad4eb7d332 \ + --hash=sha256:a43ef1c8ddfdb9575691720b6352761f3f53d85f1b57d7745701041053deff30 \ + --hash=sha256:a8032e00ce71c3ceb93eeba63963b864bf635a18f6c0c12da6c13c450eedb183 \ + --hash=sha256:b96ae2c1279d1065413965c607712006205a9ac541895004a1e0d4f281f2ff9f \ + --hash=sha256:bb8ccb4724f7d8601938571bf3f24da0da791fe2db7be3d9e79849cb64e0ae85 \ + --hash=sha256:bbaf4662e498c8c2e352da5f5bca5ab29d378895fa2d980630656178bd607c46 \ + --hash=sha256:cfd13d47b29ed3bbaafaff7d8b21e90d827631afda134836962011acb5904b71 \ + --hash=sha256:d4473c22cc296425bbbce7e9429588e76e05bc7342da359d6520b6427bf76660 \ + --hash=sha256:d8fbb68711905f8912e5af474ca8b78d077447d8f3918997fecbf26943ff3cbb \ + --hash=sha256:e5012e5cc2ac628177eaac0e83d622b2dd499e28253d4107a08ecc59ede3fc2c \ + --hash=sha256:eb4f18589d196a4cbe5290b435d135dee96567e07c2b2d43b5c4621b6501531a + # via -r requirements.in +mypy-extensions==1.0.0 \ + --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ + --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 + # via + # black + # mypy +numpy==1.26.1 \ + --hash=sha256:06934e1a22c54636a059215d6da99e23286424f316fddd979f5071093b648668 \ + --hash=sha256:1c59c046c31a43310ad0199d6299e59f57a289e22f0f36951ced1c9eac3665b9 \ + --hash=sha256:1d1bd82d539607951cac963388534da3b7ea0e18b149a53cf883d8f699178c0f \ + --hash=sha256:1e11668d6f756ca5ef534b5be8653d16c5352cbb210a5c2a79ff288e937010d5 \ + --hash=sha256:3649d566e2fc067597125428db15d60eb42a4e0897fc48d28cb75dc2e0454e53 \ + --hash=sha256:59227c981d43425ca5e5c01094d59eb14e8772ce6975d4b2fc1e106a833d5ae2 \ + --hash=sha256:6081aed64714a18c72b168a9276095ef9155dd7888b9e74b5987808f0dd0a974 \ + --hash=sha256:6965888d65d2848e8768824ca8288db0a81263c1efccec881cb35a0d805fcd2f \ + --hash=sha256:76ff661a867d9272cd2a99eed002470f46dbe0943a5ffd140f49be84f68ffc42 \ + --hash=sha256:78ca54b2f9daffa5f323f34cdf21e1d9779a54073f0018a3094ab907938331a2 \ + --hash=sha256:82e871307a6331b5f09efda3c22e03c095d957f04bf6bc1804f30048d0e5e7af \ + --hash=sha256:8ab9163ca8aeb7fd32fe93866490654d2f7dda4e61bc6297bf72ce07fdc02f67 \ + --hash=sha256:9696aa2e35cc41e398a6d42d147cf326f8f9d81befcb399bc1ed7ffea339b64e \ + --hash=sha256:97e5d6a9f0702c2863aaabf19f0d1b6c2628fbe476438ce0b5ce06e83085064c \ + --hash=sha256:9f42284ebf91bdf32fafac29d29d4c07e5e9d1af862ea73686581773ef9e73a7 \ + --hash=sha256:a03fb25610ef560a6201ff06df4f8105292ba56e7cdd196ea350d123fc32e24e \ + --hash=sha256:a5b411040beead47a228bde3b2241100454a6abde9df139ed087bd73fc0a4908 \ + --hash=sha256:af22f3d8e228d84d1c0c44c1fbdeb80f97a15a0abe4f080960393a00db733b66 \ + --hash=sha256:afd5ced4e5a96dac6725daeb5242a35494243f2239244fad10a90ce58b071d24 \ + --hash=sha256:b9d45d1dbb9de84894cc50efece5b09939752a2d75aab3a8b0cef6f3a35ecd6b \ + --hash=sha256:bb894accfd16b867d8643fc2ba6c8617c78ba2828051e9a69511644ce86ce83e \ + --hash=sha256:c8c6c72d4a9f831f328efb1312642a1cafafaa88981d9ab76368d50d07d93cbe \ + --hash=sha256:cd7837b2b734ca72959a1caf3309457a318c934abef7a43a14bb984e574bbb9a \ + --hash=sha256:cdd9ec98f0063d93baeb01aad472a1a0840dee302842a2746a7a8e92968f9575 \ + --hash=sha256:d1cfc92db6af1fd37a7bb58e55c8383b4aa1ba23d012bdbba26b4bcca45ac297 \ + --hash=sha256:d1d2c6b7dd618c41e202c59c1413ef9b2c8e8a15f5039e344af64195459e3104 \ + --hash=sha256:d2984cb6caaf05294b8466966627e80bf6c7afd273279077679cb010acb0e5ab \ + --hash=sha256:d58e8c51a7cf43090d124d5073bc29ab2755822181fcad978b12e144e5e5a4b3 \ + --hash=sha256:d78f269e0c4fd365fc2992c00353e4530d274ba68f15e968d8bc3c69ce5f5244 \ + --hash=sha256:dcfaf015b79d1f9f9c9fd0731a907407dc3e45769262d657d754c3a028586124 \ + --hash=sha256:e44ccb93f30c75dfc0c3aa3ce38f33486a75ec9abadabd4e59f114994a9c4617 \ + --hash=sha256:e509cbc488c735b43b5ffea175235cec24bbc57b227ef1acc691725beb230d1c + # via + # -r requirements.in + # pyarrow +packaging==23.2 \ + --hash=sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5 \ + --hash=sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7 + # via + # black + # pytest +pathspec==0.11.2 \ + --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ + --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 + # via black +platformdirs==3.11.0 \ + --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ + --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e + # via black +pluggy==1.3.0 \ + --hash=sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12 \ + --hash=sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7 + # via pytest +pyarrow==13.0.0 \ + --hash=sha256:09552dad5cf3de2dc0aba1c7c4b470754c69bd821f5faafc3d774bedc3b04bb7 \ + --hash=sha256:0f6eff839a9e40e9c5610d3ff8c5bdd2f10303408312caf4c8003285d0b49565 \ + --hash=sha256:1afcc2c33f31f6fb25c92d50a86b7a9f076d38acbcb6f9e74349636109550148 \ + --hash=sha256:3896ae6c205d73ad192d2fc1489cd0edfab9f12867c85b4c277af4d37383c18c \ + --hash=sha256:47663efc9c395e31d09c6aacfa860f4473815ad6804311c5433f7085415d62a7 \ + --hash=sha256:51be67e29f3cfcde263a113c28e96aa04362ed8229cb7c6e5f5c719003659d33 \ + --hash=sha256:588f0d2da6cf1b1680974d63be09a6530fd1bd825dc87f76e162404779a157dc \ + --hash=sha256:6241afd72b628787b4abea39e238e3ff9f34165273fad306c7acf780dd850956 \ + --hash=sha256:6647444b21cb5e68b593b970b2a9a07748dd74ea457c7dadaa15fd469c48ada1 \ + --hash=sha256:68fcd2dc1b7d9310b29a15949cdd0cb9bc34b6de767aff979ebf546020bf0ba0 \ + --hash=sha256:69b6f9a089d116a82c3ed819eea8fe67dae6105f0d81eaf0fdd5e60d0c6e0944 \ + --hash=sha256:70fa38cdc66b2fc1349a082987f2b499d51d072faaa6b600f71931150de2e0e3 \ + --hash=sha256:83333726e83ed44b0ac94d8d7a21bbdee4a05029c3b1e8db58a863eec8fd8a33 \ + --hash=sha256:868a073fd0ff6468ae7d869b5fc1f54de5c4255b37f44fb890385eb68b68f95d \ + --hash=sha256:8b30a27f1cddf5c6efcb67e598d7823a1e253d743d92ac32ec1eb4b6a1417867 \ + --hash=sha256:aac0ae0146a9bfa5e12d87dda89d9ef7c57a96210b899459fc2f785303dcbb67 \ + --hash=sha256:ab1268db81aeb241200e321e220e7cd769762f386f92f61b898352dd27e402ce \ + --hash=sha256:b9ba6b6d34bd2563345488cf444510588ea42ad5613df3b3509f48eb80250afd \ + --hash=sha256:c51afd87c35c8331b56f796eff954b9c7f8d4b7fef5903daf4e05fcf017d23a8 \ + --hash=sha256:cd57b13a6466822498238877892a9b287b0a58c2e81e4bdb0b596dbb151cbb73 \ + --hash=sha256:d00d374a5625beeb448a7fa23060df79adb596074beb3ddc1838adb647b6ef09 \ + --hash=sha256:d1b4e7176443d12610874bb84d0060bf080f000ea9ed7c84b2801df851320295 \ + --hash=sha256:d7759994217c86c161c6a8060509cfdf782b952163569606bb373828afdd82e8 \ + --hash=sha256:dc6fd330fd574c51d10638e63c0d00ab456498fc804c9d01f2a61b9264f2c5b2 \ + --hash=sha256:e3ad79455c197a36eefbd90ad4aa832bece7f830a64396c15c61a0985e337287 \ + --hash=sha256:e66442e084979a97bb66939e18f7b8709e4ac5f887e636aba29486ffbf373763 \ + --hash=sha256:ee7490f0f3f16a6c38f8c680949551053c8194e68de5046e6c288e396dccee80 \ + --hash=sha256:f8ce69f7bf01de2e2764e14df45b8404fc6f1a5ed9871e8e08a12169f87b7a26 \ + --hash=sha256:fda7857e35993673fcda603c07d43889fca60a5b254052a462653f8656c64f44 + # via -r requirements.in +pycodestyle==2.11.1 \ + --hash=sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f \ + --hash=sha256:44fe31000b2d866f2e41841b18528a505fbd7fef9017b04eff4e2648a0fadc67 + # via flake8 +pyflakes==3.1.0 \ + --hash=sha256:4132f6d49cb4dae6819e5379898f2b8cce3c5f23994194c24b77d5da2e36f774 \ + --hash=sha256:a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc + # via flake8 +pytest==7.4.2 \ + --hash=sha256:1d881c6124e08ff0a1bb75ba3ec0bfd8b5354a01c194ddd5a0a870a48d99b002 \ + --hash=sha256:a766259cfab564a2ad52cb1aae1b881a75c3eb7e34ca3779697c23ed47c47069 + # via -r requirements.in +toml==0.10.2 \ + --hash=sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b \ + --hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f + # via -r requirements.in +typing-extensions==4.8.0 \ + --hash=sha256:8f92fc8806f9a6b641eaa5318da32b44d401efaac0f6678c9bc448ba3605faa0 \ + --hash=sha256:df8e4339e9cb77357558cbdbceca33c303714cf861d1eef15e1070055ae8b7ef + # via mypy