pybcsv 1.5.11.dev0__tar.gz → 1.5.12__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/CMakeLists.txt +74 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/MANIFEST.in +5 -1
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/PKG-INFO +35 -1
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/README.md +34 -0
- pybcsv-1.5.12/VERSION.txt +1 -0
- pybcsv-1.5.12/include/CLI11-2.6.2/CLI11.hpp +12216 -0
- pybcsv-1.5.12/include/CLI11-2.6.2/LICENSE +25 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/csv_reader.h +13 -2
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/csv_reader.hpp +133 -53
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/__init__.py +5 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/_version.py +3 -3
- pybcsv-1.5.12/pybcsv/tools.py +84 -0
- pybcsv-1.5.12/src/shared/comparison.h +656 -0
- pybcsv-1.5.12/src/shared/test_datasets.hpp +2036 -0
- pybcsv-1.5.12/src/shared/validation.h +193 -0
- pybcsv-1.5.12/src/tools/bcsv2csv.cpp +535 -0
- pybcsv-1.5.12/src/tools/bcsvCast.cpp +944 -0
- pybcsv-1.5.12/src/tools/bcsvCompare.cpp +330 -0
- pybcsv-1.5.12/src/tools/bcsvGenerator.cpp +221 -0
- pybcsv-1.5.12/src/tools/bcsvHead.cpp +110 -0
- pybcsv-1.5.12/src/tools/bcsvHeader.cpp +120 -0
- pybcsv-1.5.12/src/tools/bcsvRepair.cpp +1218 -0
- pybcsv-1.5.12/src/tools/bcsvSampler.cpp +299 -0
- pybcsv-1.5.12/src/tools/bcsvTail.cpp +202 -0
- pybcsv-1.5.12/src/tools/bcsvValidate.cpp +634 -0
- pybcsv-1.5.12/src/tools/cli_app.h +148 -0
- pybcsv-1.5.12/src/tools/cli_common.h +661 -0
- pybcsv-1.5.12/src/tools/csv2bcsv.cpp +1143 -0
- pybcsv-1.5.12/src/tools/spec_parse.h +249 -0
- pybcsv-1.5.12/src/tools/type_probe.h +809 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/sync_headers.py +30 -0
- pybcsv-1.5.12/tests/test_tools.py +72 -0
- pybcsv-1.5.11.dev0/VERSION.txt +0 -1
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/BUILD_NOTES.md +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/LICENSE +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/benchmarks/README.md +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/benchmarks/run_pybcsv_benchmarks.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/examples/README.md +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/examples/advanced_usage.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/examples/basic_usage.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/examples/pandas_integration.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/examples/performance_benchmark.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/bcsv.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/bcsv.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/bcsv_c_api.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/bitset.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/bitset.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/byte_buffer.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/checksum.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_file/file_codec_concept.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_file/file_codec_dispatch.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_file/file_codec_packet001.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_file/file_codec_packet_lz4_001.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_file/file_codec_packet_lz4_batch001.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_file/file_codec_stream001.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_file/file_codec_stream_lz4_001.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_row/row_codec_delta002.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_row/row_codec_delta002.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_row/row_codec_dispatch.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_row/row_codec_flat001.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_row/row_codec_flat001.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_row/row_codec_zoh001.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/codec_row/row_codec_zoh001.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/column_name_index.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/column_name_index.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/csv_writer.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/csv_writer.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/definitions.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/file_footer.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/file_header.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/file_header.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/layout.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/layout.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/layout_guard.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/lz4_block.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/lz4_stream.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/packet_header.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/reader.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/reader.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/reader_concept.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/row.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/row.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/row_visitors.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_ast.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_compiler.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_parser.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_tokenizer.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_types.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_vm.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_vm.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/sampler/sampler_window.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/std_charconv_compat.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/vle.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/writer.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/writer.hpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/bcsv/writer_concept.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4.c +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4file.c +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4file.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4frame.c +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4frame.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4frame_static.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4hc.c +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/lz4hc.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/xxhash.c +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/lz4-1.10.0/xxhash.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/xxHash-0.8.3/xxhash.c +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/include/xxHash-0.8.3/xxhash.h +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/__init__.pyi +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/__version__.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/_bcsv.pyi +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/bindings.cpp +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/pandas_utils.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/parquet_utils.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/polars_utils.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pybcsv/py.typed +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/pyproject.toml +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/README.md +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/conftest.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_basic_functionality.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_count_rows.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_csv_writer_reader.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_cycle4_python_hardening.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_data_types.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_interoperability.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_minimal_string.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_parquet_conversion.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_performance_edge_cases.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_arrow.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_codecs.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_columnar.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_core.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_direct_access.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_errors.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_pandas.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_performance.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_polars.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_pybcsv_sampler.py +0 -0
- {pybcsv-1.5.11.dev0 → pybcsv-1.5.12}/tests/test_streaming_bindings.py +0 -0
|
@@ -159,3 +159,77 @@ target_compile_definitions(_bcsv PRIVATE BCSV_HAS_BATCH_CODEC=1)
|
|
|
159
159
|
|
|
160
160
|
# ── Install ─────────────────────────────────────────────────────────────
|
|
161
161
|
install(TARGETS _bcsv LIBRARY DESTINATION pybcsv)
|
|
162
|
+
|
|
163
|
+
# ── Bundled CLI tools ───────────────────────────────────────────────────
|
|
164
|
+
# A curated subset of the BCSV CLI tools is compiled into the wheel and
|
|
165
|
+
# installed into the environment's scripts dir (on PATH in every venv), so
|
|
166
|
+
# `pip install pybcsv` ships the high-performance converters with a version
|
|
167
|
+
# that always matches the bundled library. Sources come from the parent
|
|
168
|
+
# checkout (CI / full clone) or from the copies sync_headers.py places under
|
|
169
|
+
# python/src/ for standalone sdist builds.
|
|
170
|
+
option(PYBCSV_BUILD_TOOLS "Build and bundle the BCSV CLI tools" ON)
|
|
171
|
+
|
|
172
|
+
set(PARENT_TOOLS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../src/tools")
|
|
173
|
+
set(LOCAL_TOOLS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/tools")
|
|
174
|
+
set(PARENT_SHARED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../src/shared")
|
|
175
|
+
set(LOCAL_SHARED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/shared")
|
|
176
|
+
|
|
177
|
+
if(EXISTS "${PARENT_TOOLS_DIR}/csv2bcsv.cpp")
|
|
178
|
+
set(BCSV_TOOLS_DIR "${PARENT_TOOLS_DIR}")
|
|
179
|
+
set(BCSV_SHARED_DIR "${PARENT_SHARED_DIR}")
|
|
180
|
+
elseif(EXISTS "${LOCAL_TOOLS_DIR}/csv2bcsv.cpp")
|
|
181
|
+
set(BCSV_TOOLS_DIR "${LOCAL_TOOLS_DIR}")
|
|
182
|
+
set(BCSV_SHARED_DIR "${LOCAL_SHARED_DIR}")
|
|
183
|
+
else()
|
|
184
|
+
set(BCSV_TOOLS_DIR "")
|
|
185
|
+
endif()
|
|
186
|
+
|
|
187
|
+
set(CLI11_INCLUDE_DIR "${BCSV_INCLUDE_DIR}/CLI11-2.6.2")
|
|
188
|
+
|
|
189
|
+
if(PYBCSV_BUILD_TOOLS AND BCSV_TOOLS_DIR AND EXISTS "${CLI11_INCLUDE_DIR}/CLI11.hpp")
|
|
190
|
+
# Keep in sync with pybcsv/tools.py::TOOLS.
|
|
191
|
+
set(PYBCSV_TOOLS
|
|
192
|
+
csv2bcsv bcsv2csv bcsvHeader bcsvCast bcsvValidate
|
|
193
|
+
bcsvHead bcsvTail bcsvSampler bcsvCompare bcsvRepair bcsvGenerator)
|
|
194
|
+
|
|
195
|
+
# Compile the vendored LZ4 once, shared by every tool (the extension
|
|
196
|
+
# module compiles its own copy because nanobind owns that target).
|
|
197
|
+
add_library(pybcsv_tools_lz4 STATIC ${LZ4_SOURCES})
|
|
198
|
+
target_include_directories(pybcsv_tools_lz4 PUBLIC ${LZ4_DIR})
|
|
199
|
+
|
|
200
|
+
foreach(tool IN LISTS PYBCSV_TOOLS)
|
|
201
|
+
add_executable(${tool} "${BCSV_TOOLS_DIR}/${tool}.cpp")
|
|
202
|
+
target_include_directories(${tool} PRIVATE
|
|
203
|
+
${CMAKE_CURRENT_BINARY_DIR}/include
|
|
204
|
+
${BCSV_INCLUDE_DIR}
|
|
205
|
+
${BCSV_TOOLS_DIR}
|
|
206
|
+
${BCSV_SHARED_DIR}
|
|
207
|
+
)
|
|
208
|
+
target_include_directories(${tool} SYSTEM PRIVATE ${CLI11_INCLUDE_DIR})
|
|
209
|
+
target_link_libraries(${tool} PRIVATE pybcsv_tools_lz4)
|
|
210
|
+
target_compile_definitions(${tool} PRIVATE BCSV_HAS_BATCH_CODEC=1)
|
|
211
|
+
set_target_properties(${tool} PROPERTIES
|
|
212
|
+
CXX_STANDARD 20
|
|
213
|
+
CXX_STANDARD_REQUIRED ON
|
|
214
|
+
)
|
|
215
|
+
if(MSVC)
|
|
216
|
+
target_compile_options(${tool} PRIVATE /O2 /std:c++20)
|
|
217
|
+
elseif(APPLE)
|
|
218
|
+
target_compile_options(${tool} PRIVATE
|
|
219
|
+
-O3 -fexperimental-library -mmacosx-version-min=13.3)
|
|
220
|
+
else()
|
|
221
|
+
target_compile_options(${tool} PRIVATE -O3)
|
|
222
|
+
target_link_libraries(${tool} PRIVATE pthread)
|
|
223
|
+
target_link_options(${tool} PRIVATE -s) # strip: ~60% smaller wheels
|
|
224
|
+
endif()
|
|
225
|
+
endforeach()
|
|
226
|
+
|
|
227
|
+
if(DEFINED SKBUILD_SCRIPTS_DIR)
|
|
228
|
+
install(TARGETS ${PYBCSV_TOOLS} RUNTIME DESTINATION "${SKBUILD_SCRIPTS_DIR}")
|
|
229
|
+
else()
|
|
230
|
+
install(TARGETS ${PYBCSV_TOOLS} RUNTIME DESTINATION bin)
|
|
231
|
+
endif()
|
|
232
|
+
message(STATUS "[pybcsv] Bundling CLI tools: ${PYBCSV_TOOLS}")
|
|
233
|
+
else()
|
|
234
|
+
message(STATUS "[pybcsv] CLI tools not bundled (sources or CLI11 not found, or disabled)")
|
|
235
|
+
endif()
|
|
@@ -17,4 +17,8 @@ prune tests
|
|
|
17
17
|
prune examples
|
|
18
18
|
global-exclude *.pyc
|
|
19
19
|
global-exclude __pycache__
|
|
20
|
-
global-exclude .DS_Store
|
|
20
|
+
global-exclude .DS_Store
|
|
21
|
+
# Bundled CLI tool sources (synced by sync_headers.py; compiled into the wheel)
|
|
22
|
+
recursive-include src *.cpp
|
|
23
|
+
recursive-include src *.h
|
|
24
|
+
recursive-include src *.hpp
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pybcsv
|
|
3
|
-
Version: 1.5.
|
|
3
|
+
Version: 1.5.12
|
|
4
4
|
Summary: High-performance Python bindings for the BCSV (Binary CSV) library with pandas integration
|
|
5
5
|
Keywords: csv,binary,data-science,compression,performance,pandas,numpy,big-data,data-processing
|
|
6
6
|
Author-Email: Tobias Weber <weber.tobias.md@gmail.com>
|
|
@@ -156,6 +156,40 @@ with pybcsv.ReaderDirectAccess() as da:
|
|
|
156
156
|
print(da.read(100)) # alternative syntax
|
|
157
157
|
```
|
|
158
158
|
|
|
159
|
+
## Bundled Native CLI Tools
|
|
160
|
+
|
|
161
|
+
The wheel ships the core BCSV command-line tools as native, version-matched
|
|
162
|
+
binaries — installed into the environment's scripts directory, so they are on
|
|
163
|
+
PATH in an activated venv with no compiler or CMake required:
|
|
164
|
+
|
|
165
|
+
| Tool | Purpose |
|
|
166
|
+
|------|---------|
|
|
167
|
+
| `csv2bcsv` | CSV → BCSV with validated type inference (see the main CLI docs) |
|
|
168
|
+
| `bcsv2csv` | BCSV → CSV with row/column selection |
|
|
169
|
+
| `bcsvHeader` | Show a file's schema |
|
|
170
|
+
| `bcsvHead` / `bcsvTail` | Show the first/last N rows |
|
|
171
|
+
| `bcsvCast` | Change/narrow column types |
|
|
172
|
+
| `bcsvSampler` | Filter/project rows with a condition expression |
|
|
173
|
+
| `bcsvValidate` | Integrity-check a file |
|
|
174
|
+
| `bcsvRepair` | Recover data from truncated/corrupted files |
|
|
175
|
+
| `bcsvCompare` | Compare two files (with float tolerance) |
|
|
176
|
+
| `bcsvGenerator` | Generate synthetic test datasets |
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
csv2bcsv data.csv data.bcsv # from an activated environment
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
```python
|
|
183
|
+
import pybcsv
|
|
184
|
+
|
|
185
|
+
pybcsv.tools.run("csv2bcsv", "data.csv", "data.bcsv", "--overwrite")
|
|
186
|
+
print(pybcsv.tools.run("bcsvHeader", "data.bcsv").stdout)
|
|
187
|
+
pybcsv.tools.path("csv2bcsv") # absolute path, e.g. for custom pipelines
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Source builds can opt out with `-DPYBCSV_BUILD_TOOLS=OFF`; the full tool suite
|
|
191
|
+
(and docs) live in the main repository under `src/tools/`.
|
|
192
|
+
|
|
159
193
|
## Parquet Conversion Tools (CLI)
|
|
160
194
|
|
|
161
195
|
Installing `pybcsv` provides two streaming command-line converters (require the
|
|
@@ -110,6 +110,40 @@ with pybcsv.ReaderDirectAccess() as da:
|
|
|
110
110
|
print(da.read(100)) # alternative syntax
|
|
111
111
|
```
|
|
112
112
|
|
|
113
|
+
## Bundled Native CLI Tools
|
|
114
|
+
|
|
115
|
+
The wheel ships the core BCSV command-line tools as native, version-matched
|
|
116
|
+
binaries — installed into the environment's scripts directory, so they are on
|
|
117
|
+
PATH in an activated venv with no compiler or CMake required:
|
|
118
|
+
|
|
119
|
+
| Tool | Purpose |
|
|
120
|
+
|------|---------|
|
|
121
|
+
| `csv2bcsv` | CSV → BCSV with validated type inference (see the main CLI docs) |
|
|
122
|
+
| `bcsv2csv` | BCSV → CSV with row/column selection |
|
|
123
|
+
| `bcsvHeader` | Show a file's schema |
|
|
124
|
+
| `bcsvHead` / `bcsvTail` | Show the first/last N rows |
|
|
125
|
+
| `bcsvCast` | Change/narrow column types |
|
|
126
|
+
| `bcsvSampler` | Filter/project rows with a condition expression |
|
|
127
|
+
| `bcsvValidate` | Integrity-check a file |
|
|
128
|
+
| `bcsvRepair` | Recover data from truncated/corrupted files |
|
|
129
|
+
| `bcsvCompare` | Compare two files (with float tolerance) |
|
|
130
|
+
| `bcsvGenerator` | Generate synthetic test datasets |
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
csv2bcsv data.csv data.bcsv # from an activated environment
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
import pybcsv
|
|
138
|
+
|
|
139
|
+
pybcsv.tools.run("csv2bcsv", "data.csv", "data.bcsv", "--overwrite")
|
|
140
|
+
print(pybcsv.tools.run("bcsvHeader", "data.bcsv").stdout)
|
|
141
|
+
pybcsv.tools.path("csv2bcsv") # absolute path, e.g. for custom pipelines
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Source builds can opt out with `-DPYBCSV_BUILD_TOOLS=OFF`; the full tool suite
|
|
145
|
+
(and docs) live in the main repository under `src/tools/`.
|
|
146
|
+
|
|
113
147
|
## Parquet Conversion Tools (CLI)
|
|
114
148
|
|
|
115
149
|
Installing `pybcsv` provides two streaming command-line converters (require the
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1.5.11
|