parquet Module

The public API of parquet-fortran, and the only module a user needs to name: a single use parquet brings the whole library into scope.

This module is a facade. It re-exports, unchanged, every public entity of the modules that actually implement the library:

  • parquet_io -- readers, writers, schemas, MAML parsing/validation, filters, sort keys, read-time qc, file metadata. Itself a facade over the internal parquet_core.
  • parquet_tables -- the parquet_table container: lazy columnar reads, slices, row handles, mutation, table write-out.
  • parquet_columns -- the parquet_column foundation and the PK_* kind constants.
  • parquet_strings -- parquet_string_column/parquet_string.
  • parquet_temporal-- parquet_date/parquet_time/parquet_timestamp and the parquet_unit_*/parquet_ns_* constants.
  • parquet_sorting -- pf_sort/pf_argsort/pf_permute/pf_is_sorted and the pf_sort_keys multi-key builder.
  • parquet_random -- counter-based random numbers: pf_random_at and friends, reproducible under any OpenMP schedule.
  • parquet_settings-- process-global settings: thread caps, writer defaults, terminal verbosity and message stream, plus the read-only parquet_max_* limits.
  • parquet_maml_base -- parquet_maml_file, for embedded MAML schemas.
  • parquet_version -- parquet_get_version, this library's own version string. This facade is the ONLY module that re-exports it: an Arrow-free tier deliberately does not, so a program importing one of those writes its own use parquet_version line.

Those modules remain individually usable (use parquet_temporal still works and still costs less to compile against), but nothing requires it -- every name they export is reachable through this one. The exception is parquet_bindings, the raw C interop layer, which is deliberately NOT re-exported: it is an implementation detail, not user API.

This module holds no code of its own. Both version queries are re-exported from elsewhere: parquet_get_version from the leaf parquet_version, and parquet_get_arrow_version -- the linked Arrow/Parquet C++ versions, which need the C++ boundary -- from parquet_settings.