This is an automated email from the ASF dual-hosted git repository.
blaginin pushed a change to branch db/runs-on-2
in repository https://gitbox.apache.org/repos/asf/datafusion.git
from 2cbe74df01 Merge branch 'main' into db/runs-on-2
add 6b6f64d7fb chore(deps): bump the arrow-parquet group with 7 updates
(#20256)
add 17416bf92f Cleanup example metadata parsing utilities(#20251) (#20252)
add 4e2c0f1fea perf: improve performance of
`array_union`/`array_intersect` with batched row conversion (#20243)
add ecf3b502cf Add `StructArray` and `RunArray` benchmark tests to
`with_hashes` (#20182)
add a544b8fc08 fix: disable dynamic filter pushdown for non min/max
aggregates (#20279)
add aa9520e6e2 feat: Add `partition_stats()` for `EmptyExec` (#20203)
add 5fccac12cc Add protoc support for ArrowScanExecNode (#20280) (#20284)
add 85cdf53fab perf: various optimizations to eliminate branch
misprediction in hash_utils (#20168)
add 0401a4732f fix: Avoid integer overflow in substr() (#20199)
add 73bce15f29 fix: Fix scalar broadcast for to_timestamp() (#20224)
add 4d06c40d8d Improve ExternalSorter ResourcesExhausted Error Message
(#20226)
add 9fd84e796a Introduce ProjectionExprs::unproject_exprs/project_exprs
and improve docs (#20193)
add e4e8598be4 fix: Add integer check for bitwise coercion (#20241)
add 2cca3fad33 chore: Remove "extern crate criterion" in benches (#20299)
add af5f470465 Support pushing down empty projections into joins (#20191)
add 2e202fd6fe docs: fix typos and improve wording in README (#20301)
add a3d46510f1 chore: change width_bucket buckets parameter from i32 to
i64 (#20330)
add 51e5c98cf5 fix null handling for `nanvl` & implement fast path (#20205)
add f48dc72220 Remove the statistics() api in execution plan (#20319)
add 9c6a35ffea feat: add ExtractLeafExpressions optimizer rule for
get_field pushdown (#20117)
add 682da846b5 feat: Push limit into hash join (#20228)
add 4ad5c3dab7 perf: Optimize strpos() for ASCII-only inputs (#20295)
add f5a2ac3ec9 fix: percentile_cont interpolation causes NaN for f16 input
(#20208)
add e9bcfb449c perf: Optimize compare_element_to_list (#20323)
add 80485d7516 unify the prettier version adv(#20024) (#20311)
add bdad206a3d chore: Make memchr a workspace dependency (#20345)
add 7d217b1ec3 Reduce ExtractLeafExpressions optimizer overhead with fast
pre-scan (#20341)
add f471aaf275 feat(datafusion-cli): enhance CLI helper with default hint
(#20310)
add 3f38609277 perf: Optimize replace() fastpath by avoiding alloc (#20344)
add 98cc75361f Adds support for ANSI mode in negative function (#20189)
add 53b0ffb93d fix: validate inter-file ordering in eq_properties()
(#20329)
add d47bd599ee Support parent dynamic filters for more join types (#20192)
add b0566c57cc fix: update filter predicates for min/max aggregates only
if bounds change (#20380)
add 132b04369d Fix incorrect `SortExec` removal before `AggregateExec`
(option 2) (#20247)
add 6798dff0d7 Fix `try_shrink` not freeing back to pool (#20382)
add bd31db9d16 chore(deps): bump sysinfo from 0.38.1 to 0.38.2 (#20411)
add 5f0408c55d chore(deps): bump indicatif from 0.18.3 to 0.18.4 (#20410)
add a829b216da chore(deps): bump liblzma from 0.4.5 to 0.4.6 (#20409)
add 9acf387a21 chore(deps): bump aws-config from 1.8.13 to 1.8.14 (#20407)
add abe5d9862d chore(deps): bump tonic from 0.14.3 to 0.14.4 (#20406)
add 833635557b chore(deps): bump clap from 4.5.57 to 4.5.59 (#20404)
add 939621f790 chore(deps): bump sqllogictest from 0.29.0 to 0.29.1
(#20405)
add 2325aaad25 chore(deps): bump env_logger from 0.11.8 to 0.11.9 (#20402)
add 35588bc183 chore(deps): bump actions/stale from 10.1.1 to 10.2.0
(#20397)
add 4e43ac5a06 chore(deps): bump maturin from 1.11.5 to 1.12.2 in /docs
(#20400)
add 8172526134 chore(deps): bump uuid from 1.20.0 to 1.21.0 (#20401)
add ea51d9049a [Minor] Update object_store to 0.12.5 (#20378)
add 468b690d71 perf: optimize `array_distinct` with batched row conversion
(#20364)
add b6e4f95a5c chore(deps): bump syn from 2.0.114 to 2.0.116 (#20399)
add d692df0358 feat: Optimize hash util for `MapArray` (#20179)
add c0e80edc30 perf: Optimize scalar fast path of atan2 (#20336)
add 726d73067f chore(deps): bump taiki-e/install-action from 2.67.27 to
2.68.0 (#20398)
add 5bfcf9500c feat: Implement Spark `bitmap_bit_position` function
(#20275)
add 08c09db5e5 feat: support sqllogictest output coloring (#20368)
add c699361cb4 fix: Handle Utf8View and LargeUtf8 separators in concat_ws
(#20361)
add 4f4e814ce3 perf: Optimize concat()/concat_ws() UDFs (#20317)
add c3f080774c perf: Optimize translate() UDF for scalar inputs (#20305)
add 0022d8e503 chore: Cleanup returning null arrays (#20423)
add 0294a22cf9 perf: Optimize `array_has()` for scalar needle (#20374)
add 3157a2e131 chore: fix labeler for `datafusion-functions-nested`
(#20442)
add b7f6090874 perf: Optimize lpad, rpad for ASCII strings (#20278)
add ba267acf8f build: update Rust toolchain version from 1.92.0 to 1.93.0
in `rust-toolchain.toml` (#20309)
add ace9cd44b7 perf: Optimize trim UDFs for single-character trims (#20328)
add 1ee782f783 Migrate Python usage to uv workspace (#20414)
add 0f7a405b8c feat: support Spark-compatible `json_tuple` function
(#20412)
add a936d0de95 test: Extend Spark Array functions: `array_repeat `,
`shuffle` and `slice` test coverage (#20420)
add 7f99947390 chore: Cleanup "!is_valid(i)" -> "is_null(i)" (#20453)
add fc98d5c282 feat: Implement Spark `bitmap_bucket_number` function
(#20288)
add 1736fd2a40 refactor: Extract sort-merge join filter logic into
separate module (#19614)
add 0d63ced04a Implement FFI table provider factory (#20326)
add e90e5cf24f Merge branch 'main' into db/runs-on-2
add dc9034afa7 Switch more actions
No new revisions were added by this update.
Summary of changes:
.github/workflows/audit.yml | 2 +-
.github/workflows/docs.yaml | 15 +-
.github/workflows/docs_pr.yaml | 15 +-
.github/workflows/labeler/labeler-config.yml | 2 +-
.github/workflows/rust.yml | 22 +-
.github/workflows/stale.yml | 2 +-
Cargo.lock | 462 ++++--
Cargo.toml | 13 +-
README.md | 16 +-
benchmarks/Cargo.toml | 2 +-
benchmarks/bench.sh | 143 +-
benchmarks/pyproject.toml | 6 +
benchmarks/requirements.txt | 18 -
ci/scripts/check_examples_docs.sh | 5 +-
ci/scripts/doc_prettier_check.sh | 10 +-
.../{rust_docs.sh => utils/tool_versions.sh} | 8 +-
datafusion-cli/Cargo.toml | 4 +-
datafusion-cli/src/helper.rs | 14 +-
datafusion-cli/src/highlighter.rs | 10 +-
.../cli_top_memory_consumers@no_track.snap | 2 +-
.../snapshots/[email protected] | 2 +-
.../cli_top_memory_consumers@top3_default.snap | 2 +-
.../memory_pool_execution_plan.rs | 6 +-
.../execution_monitoring/memory_pool_tracking.rs | 3 +-
datafusion-examples/src/utils/csv_to_parquet.rs | 3 +-
datafusion-examples/src/utils/datasets/mod.rs | 8 +-
.../src/utils/example_metadata/discover.rs | 32 +-
.../src/utils/example_metadata/model.rs | 11 +-
.../src/utils/example_metadata/parser.rs | 29 +-
.../src/utils/example_metadata/render.rs | 9 -
datafusion/common/benches/with_hashes.rs | 416 ++++-
datafusion/common/src/config.rs | 6 +
datafusion/common/src/hash_utils.rs | 334 +++-
datafusion/common/src/scalar/mod.rs | 2 +-
datafusion/core/Cargo.toml | 2 +-
datafusion/core/benches/aggregate_query_sql.rs | 7 +-
datafusion/core/benches/csv_load.rs | 7 +-
datafusion/core/benches/dataframe.rs | 7 +-
datafusion/core/benches/distinct_query_sql.rs | 8 +-
datafusion/core/benches/math_query_sql.rs | 7 +-
datafusion/core/benches/physical_plan.rs | 6 +-
.../core/benches/range_and_generate_series.rs | 6 +-
datafusion/core/benches/sort_limit_query_sql.rs | 7 +-
datafusion/core/benches/sql_planner.rs | 7 +-
datafusion/core/benches/window_query_sql.rs | 7 +-
datafusion/core/tests/custom_sources_cases/mod.rs | 4 -
.../provider_filter_pushdown.rs | 8 +-
.../core/tests/custom_sources_cases/statistics.rs | 4 -
.../physical_optimizer/enforce_distribution.rs | 7 +-
.../tests/physical_optimizer/filter_pushdown.rs | 240 ++-
.../tests/physical_optimizer/join_selection.rs | 4 -
.../tests/physical_optimizer/limit_pushdown.rs | 167 +-
.../physical_optimizer/partition_statistics.rs | 62 +-
.../physical_optimizer/projection_pushdown.rs | 44 +
.../core/tests/user_defined/user_defined_plan.rs | 8 +-
datafusion/datasource/src/file_scan_config.rs | 194 ++-
datafusion/datasource/src/source.rs | 10 -
datafusion/datasource/src/statistics.rs | 3 +-
datafusion/execution/src/memory_pool/mod.rs | 76 +-
datafusion/expr-common/src/type_coercion/binary.rs | 4 +-
.../src/type_coercion/binary/tests/arithmetic.rs | 47 +
datafusion/ffi/src/execution_plan.rs | 4 -
datafusion/ffi/src/lib.rs | 1 +
datafusion/ffi/src/table_provider_factory.rs | 429 +++++
datafusion/ffi/src/tests/mod.rs | 19 +-
datafusion/ffi/src/tests/table_provider_factory.rs | 58 +
datafusion/ffi/tests/ffi_integration.rs | 46 +-
.../benches/accumulate.rs | 2 -
datafusion/functions-aggregate/Cargo.toml | 1 +
.../functions-aggregate/src/percentile_cont.rs | 93 +-
datafusion/functions-nested/Cargo.toml | 4 +
.../functions-nested/benches/array_expression.rs | 6 +-
datafusion/functions-nested/benches/array_has.rs | 681 +++++---
.../functions-nested/benches/array_remove.rs | 7 +-
.../functions-nested/benches/array_repeat.rs | 7 +-
.../functions-nested/benches/array_reverse.rs | 6 +-
.../functions-nested/benches/array_set_ops.rs | 259 +++
datafusion/functions-nested/benches/array_slice.rs | 2 -
datafusion/functions-nested/benches/map.rs | 2 -
datafusion/functions-nested/src/array_has.rs | 47 +-
datafusion/functions-nested/src/position.rs | 1 -
datafusion/functions-nested/src/set_ops.rs | 228 ++-
datafusion/functions-nested/src/utils.rs | 5 +-
datafusion/functions/Cargo.toml | 11 +
datafusion/functions/benches/ascii.rs | 1 -
datafusion/functions/benches/{cot.rs => atan2.rs} | 79 +-
datafusion/functions/benches/character_length.rs | 2 -
datafusion/functions/benches/chr.rs | 2 -
datafusion/functions/benches/contains.rs | 2 -
datafusion/functions/benches/cot.rs | 2 -
datafusion/functions/benches/crypto.rs | 2 -
datafusion/functions/benches/date_bin.rs | 2 -
datafusion/functions/benches/date_trunc.rs | 2 -
datafusion/functions/benches/encoding.rs | 2 -
datafusion/functions/benches/ends_with.rs | 2 -
datafusion/functions/benches/factorial.rs | 2 -
datafusion/functions/benches/find_in_set.rs | 2 -
datafusion/functions/benches/floor_ceil.rs | 2 -
datafusion/functions/benches/gcd.rs | 2 -
datafusion/functions/benches/initcap.rs | 2 -
datafusion/functions/benches/isnan.rs | 2 -
datafusion/functions/benches/iszero.rs | 2 -
datafusion/functions/benches/left_right.rs | 2 -
datafusion/functions/benches/levenshtein.rs | 2 -
datafusion/functions/benches/lower.rs | 2 -
datafusion/functions/benches/make_date.rs | 2 -
datafusion/functions/benches/nanvl.rs | 114 ++
datafusion/functions/benches/nullif.rs | 2 -
datafusion/functions/benches/pad.rs | 184 ++-
datafusion/functions/benches/random.rs | 2 -
datafusion/functions/benches/regexp_count.rs | 2 -
datafusion/functions/benches/regx.rs | 2 -
datafusion/functions/benches/repeat.rs | 2 -
datafusion/functions/benches/replace.rs | 2 -
datafusion/functions/benches/reverse.rs | 1 -
datafusion/functions/benches/round.rs | 2 -
datafusion/functions/benches/signum.rs | 2 -
datafusion/functions/benches/split_part.rs | 2 -
datafusion/functions/benches/starts_with.rs | 2 -
datafusion/functions/benches/strpos.rs | 11 +-
datafusion/functions/benches/substr.rs | 2 -
datafusion/functions/benches/substr_index.rs | 2 -
datafusion/functions/benches/to_char.rs | 2 -
datafusion/functions/benches/to_hex.rs | 2 -
datafusion/functions/benches/to_timestamp.rs | 2 -
datafusion/functions/benches/translate.rs | 50 +-
datafusion/functions/benches/trim.rs | 134 +-
datafusion/functions/benches/trunc.rs | 2 -
datafusion/functions/benches/upper.rs | 2 -
datafusion/functions/benches/uuid.rs | 2 -
datafusion/functions/src/datetime/to_timestamp.rs | 71 +-
datafusion/functions/src/macros.rs | 102 +-
datafusion/functions/src/math/gcd.rs | 7 +-
datafusion/functions/src/math/nanvl.rs | 96 +-
datafusion/functions/src/string/btrim.rs | 6 +-
datafusion/functions/src/string/common.rs | 82 +-
datafusion/functions/src/string/concat.rs | 15 +-
datafusion/functions/src/string/concat_ws.rs | 182 ++-
datafusion/functions/src/string/ltrim.rs | 6 +-
datafusion/functions/src/string/replace.rs | 20 +-
datafusion/functions/src/string/rtrim.rs | 6 +-
datafusion/functions/src/strings.rs | 23 +-
datafusion/functions/src/unicode/find_in_set.rs | 26 +-
datafusion/functions/src/unicode/lpad.rs | 104 +-
datafusion/functions/src/unicode/rpad.rs | 112 +-
datafusion/functions/src/unicode/strpos.rs | 68 +-
datafusion/functions/src/unicode/substr.rs | 29 +-
datafusion/functions/src/unicode/translate.rs | 186 ++-
datafusion/macros/Cargo.toml | 2 +-
.../optimizer/src/extract_leaf_expressions.rs | 1692 +++++++++++++++++++-
.../optimizer/src/optimize_projections/mod.rs | 14 +-
datafusion/optimizer/src/optimizer.rs | 3 +
.../physical-expr-common/src/binary_view_map.rs | 2 +-
datafusion/physical-expr-common/src/datum.rs | 4 +-
datafusion/physical-expr/src/expressions/cast.rs | 4 +-
.../physical-expr/src/expressions/try_cast.rs | 4 +-
datafusion/physical-expr/src/projection.rs | 115 +-
.../src/enforce_sorting/sort_pushdown.rs | 74 +
.../physical-optimizer/src/output_requirements.rs | 4 -
datafusion/physical-plan/src/aggregates/mod.rs | 15 +-
.../physical-plan/src/aggregates/no_grouping.rs | 21 +-
datafusion/physical-plan/src/coalesce_batches.rs | 4 -
.../physical-plan/src/coalesce_partitions.rs | 4 -
datafusion/physical-plan/src/display.rs | 4 -
datafusion/physical-plan/src/empty.rs | 36 +-
datafusion/physical-plan/src/execution_plan.rs | 19 -
datafusion/physical-plan/src/filter.rs | 4 -
datafusion/physical-plan/src/filter_pushdown.rs | 174 +-
datafusion/physical-plan/src/joins/cross_join.rs | 4 -
.../physical-plan/src/joins/hash_join/exec.rs | 286 +++-
.../physical-plan/src/joins/hash_join/stream.rs | 43 +-
.../physical-plan/src/joins/nested_loop_join.rs | 4 -
.../src/joins/sort_merge_join/exec.rs | 4 -
.../src/joins/sort_merge_join/filter.rs | 595 +++++++
.../physical-plan/src/joins/sort_merge_join/mod.rs | 1 +
.../src/joins/sort_merge_join/stream.rs | 517 +-----
.../src/joins/sort_merge_join/tests.rs | 70 +-
.../physical-plan/src/joins/symmetric_hash_join.rs | 7 +-
datafusion/physical-plan/src/joins/utils.rs | 55 +-
datafusion/physical-plan/src/limit.rs | 8 -
datafusion/physical-plan/src/memory.rs | 6 +-
datafusion/physical-plan/src/placeholder_row.rs | 4 -
datafusion/physical-plan/src/projection.rs | 47 +-
datafusion/physical-plan/src/recursive_query.rs | 6 +-
datafusion/physical-plan/src/repartition/mod.rs | 4 -
datafusion/physical-plan/src/sorts/partial_sort.rs | 4 -
datafusion/physical-plan/src/sorts/sort.rs | 24 +-
.../src/sorts/sort_preserving_merge.rs | 4 -
datafusion/physical-plan/src/test.rs | 4 -
datafusion/physical-plan/src/test/exec.rs | 12 -
datafusion/physical-plan/src/union.rs | 8 -
.../src/windows/bounded_window_agg_exec.rs | 4 -
.../physical-plan/src/windows/window_agg_exec.rs | 4 -
datafusion/physical-plan/src/work_table.rs | 4 -
datafusion/proto/proto/datafusion.proto | 5 +
datafusion/proto/src/generated/pbjson.rs | 106 ++
datafusion/proto/src/generated/prost.rs | 9 +-
datafusion/proto/src/physical_plan/mod.rs | 42 +
.../proto/tests/cases/roundtrip_physical_plan.rs | 28 +-
datafusion/spark/Cargo.toml | 1 +
datafusion/spark/benches/char.rs | 2 -
datafusion/spark/benches/hex.rs | 2 -
datafusion/spark/benches/sha2.rs | 2 -
datafusion/spark/benches/slice.rs | 2 -
datafusion/spark/benches/space.rs | 2 -
datafusion/spark/benches/substring.rs | 2 -
datafusion/spark/benches/unhex.rs | 2 -
.../src/function/bitmap/bitmap_bit_position.rs | 141 ++
.../src/function/bitmap/bitmap_bucket_number.rs | 141 ++
datafusion/spark/src/function/bitmap/mod.rs | 23 +-
datafusion/spark/src/function/datetime/next_day.rs | 7 +-
datafusion/spark/src/function/hash/sha2.rs | 9 +-
datafusion/spark/src/function/json/json_tuple.rs | 244 +++
datafusion/spark/src/function/json/mod.rs | 17 +-
datafusion/spark/src/function/math/negative.rs | 430 +++--
datafusion/spark/src/function/math/width_bucket.rs | 100 +-
datafusion/sqllogictest/Cargo.toml | 4 +-
datafusion/sqllogictest/bin/sqllogictests.rs | 62 +-
.../src/engines/datafusion_engine/normalize.rs | 2 +-
datafusion/sqllogictest/test_files/aggregate.slt | 2 +-
datafusion/sqllogictest/test_files/array.slt | 58 +-
.../test_files/datetime/arith_date_time.slt | 1 -
.../datetime/arith_timestamp_duration.slt | 2 +-
.../test_files/datetime/timestamps.slt | 30 +
.../test_files/dynamic_filter_pushdown_config.slt | 301 ++++
datafusion/sqllogictest/test_files/explain.slt | 8 +
datafusion/sqllogictest/test_files/expr.slt | 21 +-
datafusion/sqllogictest/test_files/functions.slt | 14 +
.../sqllogictest/test_files/information_schema.slt | 2 +
datafusion/sqllogictest/test_files/insert.slt | 2 +-
.../test_files/join_disable_repartition_joins.slt | 4 +-
.../test_files/join_limit_pushdown.slt | 269 ++++
datafusion/sqllogictest/test_files/joins.slt | 112 +-
datafusion/sqllogictest/test_files/limit.slt | 2 +-
.../test_files/limit_single_row_batches.slt | 2 +-
.../test_files/parquet_sorted_statistics.slt | 2 +-
datafusion/sqllogictest/test_files/projection.slt | 13 +-
.../test_files/projection_pushdown.slt | 539 ++++---
.../sqllogictest/test_files/push_down_filter.slt | 9 +-
datafusion/sqllogictest/test_files/scalar.slt | 12 +-
.../sqllogictest/test_files/sort_pushdown.slt | 748 +++++++++
.../test_files/spark/array/array_repeat.slt | 20 +
.../test_files/spark/array/shuffle.slt | 20 +
.../sqllogictest/test_files/spark/array/slice.slt | 15 +
.../spark/bitmap/bitmap_bit_position.slt | 112 ++
.../spark/bitmap/bitmap_bucket_number.slt | 122 ++
.../test_files/spark/collection/size.slt | 1 -
.../test_files/spark/datetime/time_trunc.slt | 1 -
.../test_files/spark/datetime/trunc.slt | 1 -
.../test_files/spark/json/json_tuple.slt | 154 ++
.../test_files/spark/math/negative.slt | 52 +
datafusion/sqllogictest/test_files/truncate.slt | 2 +-
datafusion/sqllogictest/test_files/unnest.slt | 2 +-
dev/pyproject.toml | 5 +
dev/release/README.md | 6 +-
dev/requirements.txt | 2 -
dev/update_arrow_deps.py | 2 +-
dev/update_config_docs.sh | 10 +-
dev/update_datafusion_versions.py | 2 +-
dev/update_function_docs.sh | 9 +-
docs/README.md | 15 +-
docs/pyproject.toml | 13 +
docs/requirements.txt | 24 -
docs/source/contributor-guide/testing.md | 4 +-
docs/source/download.md | 2 +-
docs/source/user-guide/configs.md | 1 +
docs/source/user-guide/crate-configuration.md | 2 +-
docs/source/user-guide/example-usage.md | 2 +-
docs/source/user-guide/sql/scalar_functions.md | 24 +-
pyproject.toml | 2 +
rust-toolchain.toml | 2 +-
uv.lock | 1149 +++++++++++++
272 files changed, 12473 insertions(+), 3068 deletions(-)
create mode 100644 benchmarks/pyproject.toml
delete mode 100644 benchmarks/requirements.txt
copy ci/scripts/{rust_docs.sh => utils/tool_versions.sh} (80%)
mode change 100755 => 100644
create mode 100644 datafusion/ffi/src/table_provider_factory.rs
create mode 100644 datafusion/ffi/src/tests/table_provider_factory.rs
create mode 100644 datafusion/functions-nested/benches/array_set_ops.rs
copy datafusion/functions/benches/{cot.rs => atan2.rs} (63%)
create mode 100644 datafusion/functions/benches/nanvl.rs
create mode 100644 datafusion/physical-plan/src/joins/sort_merge_join/filter.rs
create mode 100644 datafusion/spark/src/function/bitmap/bitmap_bit_position.rs
create mode 100644 datafusion/spark/src/function/bitmap/bitmap_bucket_number.rs
create mode 100644 datafusion/spark/src/function/json/json_tuple.rs
create mode 100644 datafusion/sqllogictest/test_files/join_limit_pushdown.slt
create mode 100644
datafusion/sqllogictest/test_files/spark/bitmap/bitmap_bit_position.slt
create mode 100644
datafusion/sqllogictest/test_files/spark/bitmap/bitmap_bucket_number.slt
create mode 100644 datafusion/sqllogictest/test_files/spark/json/json_tuple.slt
create mode 100644 dev/pyproject.toml
delete mode 100644 dev/requirements.txt
create mode 100644 docs/pyproject.toml
delete mode 100644 docs/requirements.txt
create mode 100644 pyproject.toml
create mode 100644 uv.lock
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]