5.0.3
[5.0.3] - 2025-05-22 "The Geo Release" π
qsv 5.0.3 represents a major milestone with significant enhancements to its geospatial data processing capabilities.
They're targeted to support the Datapusher+ Data Resource Upload First (DRUF) workflow for "automagical metadata inferencing" - focusing on DCAT-US v3 recommended spatial and temporal properties that would otherwise be too tedious to manually compile:
New Geocoding Capabilities
- Added IP geolocation with new
--iplookupand--iplookupnowsubcommands in thegeocodecommand - Integrated Maxmind GeoLite2 database support for accurate IP-to-location mapping
- Enhanced geocoding performance (up to 5x faster) with rkyv serialization (contributed by @estin)
Enhanced geoconvert Command
- Added CSV input support alongside existing geospatial formats
- Introduced GeoJSONL output format for streaming workflows
- Added stdin support for all formats except SHP input
- New coordinate handling options:
--latitudeand--longitudeparameters - Added
--max-lengthoption for output control - Comprehensive test coverage additions
- all contributed by @rzmk!
π Performance & Infrastructure Improvements
Polars Integration
- Upgraded Polars from 0.46.0 to 0.48.1 with intermediate releases
- Enhanced Polars schema support across multiple commands (
schema,joinp,pivotp,sqlp) - Added
--polarsmode to theschemacommand to explicitly create a polars schema file on demand, rather than as a side-effect of thesqlpcommand using its--cache-schemaoption.
Core Performance
- Microoptimizations in the
sortcommand - Improved file handling with tempfile usage in
edit --in-place - Enhanced auto-decompression support now available suite-wide for gz, zlib, and zst files
π οΈ New Features & Usability
Enhanced Commands
edit: New--in-placeoption for direct file modification with automatic backup (.bak) creationforeach: Added "/" to splitter pattern for improved path handlingstats: NewQSV_STATS_STRING_MAX_LENGTHenvironment variable for string analysis controlto: Added--all-stringsoption for simplified data type handling
Distribution & Installation
- Added conda package support with installation instructions
- New download badges and streamlined installation documentation
- Retired older glibc-2.31 and musl-1.2.3 "prebuilt-older" binaries as Ubuntu 20.04 has been retired and no longer supported with GitHub Actions.
- Discontinued MSI installer in favor of the easier qsv Windows Easy Installer (thanks @rzmk!)
Quality & Stability
- Applied multiple clippy lint suggestions for code quality
- Enhanced test coverage, particularly for geospatial functions
- Improved documentation with better examples and clearer explanations
- Fixed stdin handling issues in the
splitcommand
π― Default Feature Changes
The qsvdp variant now includes geocode and geoconvert commands by default, making geospatial functionality more accessible to Datapusher+ users with Jinja2-powered metadata formulas.
NOTE:
- for qsv v5.0.3,
cargo installwill NOT worked as the calamine crate (which powers theexcelcommand) is pinned to zip 2.5.0 which was yanked.- unfortunately, the broken zip dependency also prevents us from publishing qsv 5.0.3 to
crates.io- for both cases, either install the prebuilts or compile from source with
cargo build.
Added
edit: add--in-place(and test) which uses tempfile by @rzmk in #2744foreach: add "/" to splitter pattern #2754geoconvert: add CSV input and GeoJSONL output and use buf by @rzmk in #2690geoconvert: add stdin support (except for SHP input) by @rzmk in #2699geoconvert: add--latitudeand--longitudeoptions by @rzmk in #2707geoconvert: add--max-lengthoption #2711geocode: addiplookupandiplookupnowsubcommands #2741- tests:
geoconvert- add basic tests and move tests to test_geoconvert.rs by @rzmk in #2717 qsvdpnow include geocode & geoconvert commands by default #2697stats: QSV_STATS_STRING_MAX_LENGTH env var #2709to: add--all-stringsoption #2746- docs: add conda install command by @rzmk in #2718
- docs: add qsv download badges and update install instructions by @rzmk in #2721
Changed
geocode: bump geosuggest crate to use much faster rkyv serialization by @estin in #2734sort: microoptimize #2748- feat: update completions for qsv v5.0 by @rzmk in #2752
- Improved Polars Schema support #2703
- Bump polars from 0.46.0 to 0.47.0 87bf7b7
- Bump polars py-1.30.0-beta-1 #2747
- Bump polars to 0.48.0 5a037ee
- build(deps): bump polars from 0.48.0 to 0.48.1 by @dependabot in #2750
- build(deps): bump polars-ops from 0.48.0 to 0.48.1 by @dependabot in #2751
- build(deps): bump actions/setup-python from 5.5.0 to 5.6.0 by @dependabot in #2713
- build(deps): bump actix-web from 4.10.2 to 4.11.0 by @dependabot in #2742
- build(deps): bump bytemuck from 1.22.0 to 1.23.0 by @dependabot in #2719
- build(deps): bump chrono from 0.4.40 to 0.4.41 by @dependabot in #2722
- build(deps): bump ext-sort from 0.1.4 to 0.1.5 by @dependabot in #2736
- build(deps): bump file-format from 0.26.0 to 0.27.0 by @dependabot in #2735
- build(deps): bump pyo3 from 0.24.1 to 0.24.2 by @dependabot in #2708
- build(deps): bump jaq-json from 1.1.1 to 1.1.2 by @dependabot in #2714
- build(deps): bump jaq-std from 2.1.0 to 2.1.1 by @dependabot in #2715
- build(deps): bump jaq-core from 2.1.1 to 2.2.0 by @dependabot in #2716
- build(deps): bump jsonschema from 0.29.1 to 0.30.0 by @dependabot in #2704
- build(deps): bump libc from 0.2.171 to 0.2.172 by @dependabot in #2696
- build(deps): bump sysinfo from 0.34.2 to 0.35.0 by @dependabot in #2724
- build(deps): bump minijinja from 2.9.0 to 2.10.0 by @dependabot in #2727
- build(deps): bump minijinja from 2.10.1 to 2.10.2 by @dependabot in #2732
- build(deps): bump minijinja-contrib from 2.9.0 to 2.10.0 by @dependabot in #2728
- build(deps): bump minijinja-contrib from 2.10.1 to 2.10.2 by @dependabot in #2733
- build(deps): bump pyo3 from 0.24.2 to 0.25.0 by @dependabot in #2745
- build(deps): bump rand from 0.9.0 to 0.9.1 by @dependabot in #2702
- build(deps): bump simd-json from 0.15.0 to 0.15.1 by @dependabot in #2701
- build(deps): bump sysinfo from 0.35.0 to 0.35.1 by @dependabot in #2740
- build(deps): bump tempfile from 3.19.1 to 3.20.0 by @dependabot in #2739
- build(deps): bump tokio from 1.44.2 to 1.45.0 by @dependabot in #2731
- bump indirect dependencies
- apply select clippy lint suggestions
- bump MRSV to 1.87.0
Fixed:
- docs: fix typo in apply operations replace example by @HarrisonMc555 in #2743
- fix:
splitsave stdin to tempfile #2706
New Contributors
- @estin made their first contribution in #2734
- @HarrisonMc555 made their first contribution in #2743
Full Changelog: 4.0.0...5.0.3