cursorMark. Pages are read by the sort key (id), not by
position: documents added or removed while reading no longer shift the
pages. Checked live: the same 185 documents for PE in 2024-01 as paging by
start. The checks for a stable total, no repeated id and nothing
missing remain.nature, nature_basis in
mds_fields()): estoque, fluxo, fluxo anual, acumulado, taxa,
média or índice, with the rule for summing across municipalities and
months in the help page. 18 fields were measured on the monthly series
(PE, 2024-10 to 2025-12), 33 follow a measured field of the same group and
81 come from the label and unit...._ano_f equals the monthly
one in 14,755 of 14,755 municipality-month pairs (Brazil, 2013–2026); it
is the longest monthly series, not a yearly total.options(misocialr.cache_ttl = seconds): optional cache validity (the
default remains the session).cli (>= 3.6.1) and dplyr (>= 1.1.1) — the declared
minimum versions were not usable together today: testthat 3.2.1
requires cli >= 3.6.1, and dplyr 1.1.0 calls the vctrs C routine
vec_is_vector, removed in vctrs 0.7.0 (checked in the CI job that
installs the minimum versions).Fixes from the final report on 0.3.0 and the parallel verification.
mds_drop_unpublished(action = "flag") keeps the three classification
columns also on an empty table (F2); a datetime today is read as a
date; the period follows the same calendar rule as documents and facets."NaN", "Inf", "1e999") are a response error; in
deduplication, a missing value never replaces a known one, in any order
(F4).numFound and incoherent facets (n_nonzero
larger than n_localities, with a fresh read of the pair before the
error) are errors and do not enter the cache (F5).misocialr_error_response, with the original
error in parent (F6).Retry-After capped at 30 s per attempt and 120 s in total;
options(misocialr.retry_backoff = ). Retries tested against a real local
HTTP server (webfakes).parse_periods(): years from 2000 to the year after the current one.parse_localities(): states always character; round numeric codes
without scientific notation in messages.tests/testthat/paridade/casos.json).LICENSE.md with the full MIT text; data-raw/record_fixtures.R
validates each recorded response and restores the previous fixtures if
the replacement fails.jsonlite, webfakes.Fixes from the in-depth analysis of 0.2.1.
check_response()): a partial result, a
responseHeader$status other than 0, an invalid numFound and missing
docs or facet_counts are errors, including in mds_periods(),
mds_localities() and the field check. Only complete responses enter the
cache (B1, B2, B8).mds_localities() pages, checks codes and repetitions and gains period
and refresh (B2).mds_drop_unpublished() never removes a non-zero value: a contradictory
national reference is queried again and, if still contradictory, the
month is kept with a warning (B3). The period is normalised and checked
as month 01 to 12, including factor and numeric (B6); field, today
and infinite values are validated; a missing value is never treated as
zero (B7). New action = "flag" (M2).codigo_ibge or anomes_s is an error (B4);
a non-scalar value is an error, without flattening lists (B5); two
different values for the same key are a conflict error (B4). A requested
municipality inside a requested state is not queried twice.numFound that changes between pages and a repeated id are
errors (M5).mds_periods() sums facets of disjoint blocks of up to 200 codes (M4)
and gains refresh; canonical cache keys (M1).misocialr_error_validation, _response, _conflict,
_http), with status and parent on the HTTP error; retry on
connection failure; version in the user agent;
options(misocialr.quiet = TRUE) (M8).storage_type in mds_fields() and mds_api_fields(); unit "unknown"
for _s and fields without suffix (M3).validate = FALSE (M7); warning for a
municipality without documents (M9); ibge_code7() computes each code
once (M6).httr2 (>= 1.0.4), testthat (>= 3.2.1) (B9).data-raw/record_fixtures.R records into a temporary folder and only
replaces the fixtures after checking the result, keeping a copy in
api.bak/ (B10)..github/workflows/ (M10).Fixes from the external review of 0.2.0.
NA or empty-string locality is an error; it used to become a
query for the whole of Brazil."BR".2611600 queried Recife).NA, non-integer or negative period mixed with others is an
error.regiao); its values used to become NA and
vanish. Identification fields (municipio, anomes_s...) cannot be
requested as a measure.numFound, a partial Solr result and a response
without response are errors; reading used to finish with missing data.mds_api_fields() pages through the whole history (previously up to
1,000 documents) and returns an empty table, with a warning, for a
municipality without documents.mds_drop_unpublished() validates period and value and gains
reference = "brazil", which decides by the whole country.options(misocialr.timeout = ) and attr(x, "retrieved_at").fields = NULL, as in Python; mds_themes() help page
with the seven shortcuts.dplyr (>= 1.1.0) and purrr (>= 1.0.0).mds_data() reach the user without purrr's "In index: 1"
wrapper.mds_suas_rede(),
mds_suas_financiamento(), mds_pbf_condicionalidades() and
mds_seguranca_alimentar(). The dictionary grows from 35 to 130 fields._l suffix (long integer) now have unit count.mds_data(), shortcuts mds_cadunico(),
mds_bolsa_familia() and mds_bpc_suas(); discovery with
mds_themes(), mds_fields(), mds_api_fields(), mds_periods() and
mds_localities(); mds_drop_unpublished(), ibge_code7() and
mds_clear_cache().