parquet_version Module

The version of parquet-fortran itself, and nothing else.

This module is a LEAF: it imports parquet_settings_base for the library's informational output channel and nothing further, so it reaches neither parquet_bindings nor the Arrow/Parquet C++ stack. That is what lets a program built on one of the Arrow-free tiers -- parquet_random, parquet_argsort, parquet_sampling, parquet_columns, parquet_strings, parquet_temporal, parquet_sorting -- report which parquet-fortran it was built against, with use parquet_version and no other cost.

Only use parquet re-exports this procedure. Every other entry module leaves it here deliberately, so that none of them grows a dependency for a string that is fixed at compile time; a program importing one of those writes a second use parquet_version line. This is a deliberate exception to the rule that each module re-exports the settings its own code reads -- a version string is not a setting, and nothing in this library reads it.

It does re-export the two OUTPUT settings, verbosity and message_stream, because this module can print: parquet_get_version emits a remark on a development build whose RELEASE_VERSION substitution did not happen, and a program importing nothing else has to be able to quiet or redirect it. That is the ordinary rule applying, not a second exception to it.

For the version of the Arrow and Parquet C++ libraries actually linked, call parquet_get_arrow_version instead (parquet_settings, and so also parquet_io and parquet). That query needs the C++ boundary, which is exactly what this module is defined not to have.



Subroutines

public subroutine parquet_get_version(ver_string, mode)

Returns this library's own version string. Default (mode absent): the RELEASE_VERSION build macro's bare release number; emits an informational remark first if that disagrees with cversion (a hand-maintained "vX.Y.Z (date)" string), which signals a build that skipped fpm's macro substitution or a version bump missed on one side. mode="internal" instead returns cversion verbatim. Any other mode value is an error -- in particular the linked Arrow and Parquet C++ library versions are reported by parquet_get_arrow_version, not by this procedure.

Arguments

Type IntentOptional Attributes Name
character(len=:), intent(out), allocatable :: ver_string

resulting version string.

character(len=*), intent(in), optional :: mode

"internal"; absent = default RELEASE_VERSION behavior.