AXLR / Catalog / finance

inflation_adjust

Adjust an amount for inflation between two years or two months with a consumer price index: bundled dated series (US CPI-U from BLS, euro-area HICP from Eurostat, Spain's IPC from INE), each answer naming its source, series id, base and fetch date, or any index given in the input. Returns the adjusted amount, the factor, cumulative and annualised inflation. Decimal arithmetic.

Install

/tools install inflation_adjust
/tools install inflation_adjust@1.0.0

In a console session, or let the model find it in normal mode: axlr_catalog describes it and axlr_install_tool asks for the same install card. The card reads catalog axlr · inflation_adjust 1.0.0 · verified once the index signature, the manifest digest and every file digest check out. Then the model runs it with axlr_run_tool inflation_adjust; each run is approved as a local_exec.

Arguments

One JSON object on stdin, validated against the schema before the program starts.

nametyperequireddefaultmeaning
amountnumber | stringno
frominteger | stringnoA year (2020) or a month ("2020-06")
tointeger | stringnoSame kind as from
seriesstringnoone of "us_cpi_u", "ea_hicp", "es_ipc"
indexobject of ['number', 'string']noYour own index values keyed by year or YYYY-MM, instead of series
list_seriesbooleannoOnly list the bundled series, their coverage and sources
Input schema (JSON)
{
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "amount": {
      "type": [
        "number",
        "string"
      ]
    },
    "from": {
      "type": [
        "integer",
        "string"
      ],
      "description": "A year (2020) or a month (\"2020-06\")"
    },
    "to": {
      "type": [
        "integer",
        "string"
      ],
      "description": "Same kind as from"
    },
    "series": {
      "type": "string",
      "enum": [
        "us_cpi_u",
        "ea_hicp",
        "es_ipc"
      ]
    },
    "index": {
      "type": "object",
      "additionalProperties": {
        "type": [
          "number",
          "string"
        ]
      },
      "description": "Your own index values keyed by year or YYYY-MM, instead of series"
    },
    "list_series": {
      "type": "boolean",
      "description": "Only list the bundled series, their coverage and sources"
    }
  }
}

Example

Input

{
  "amount": 100,
  "from": 2020,
  "to": 2022,
  "series": "us_cpi_u"
}

Output (stdout)

{
  "from_index": "258.811",
  "to_index": "292.655",
  "adjusted_amount": "113.08",
  "cumulative_inflation_pct": "13.08"
}

Files

The command the install card registers is python3 inflation_adjust.py, run in the workspace with PATH and HOME as its only environment. Each file's SHA-256 is in the signed index; the console checks them before showing the card and again before writing.

cpi.json · sha256 11d47b8f4a0a75bcfef42c21b196fd6569d0245dc7592b00a9aad9d2085fe7ea
{
 "generated": "2026-10-18",
 "generator": "tools/catalog/data/inflation_adjust.py",
 "series": {
  "us_cpi_u": {
   "title": "United States, CPI-U, U.S. city average, all items, not seasonally adjusted",
   "agency": "U.S. Bureau of Labor Statistics",
   "series_id": "CUUR0000SA0",
   "base": "1982-84=100",
   "currency": "USD",
   "source_url": "https://api.bls.gov/publicAPI/v1/timeseries/data/CUUR0000SA0",
   "annual_method": "BLS annual average (period M13)",
   "fetched": "2026-10-18",
   "annual": {
    "1913": "9.9",
    "1914": "10.0",
    "1915": "10.1",
    "1916": "10.9",
    "1917": "12.8",
    "1918": "15.1",
    "1919": "17.3",
    "1920": "20.0",
    "1921": "17.9",
    "1922": "16.8",
    "1923": "17.1",
    "1924": "17.1",
    "1925": "17.5",
    "1926": "17.7",
    "1927": "17.4",
    "1928": "17.1",
    "1929": "17.1",
    "1930": "16.7",
    "1931": "15.2",
    "1932": "13.7",
    "1933": "13.0",
    "1934": "13.4",
    "1935": "13.7",
    "1936": "13.9",
    "1937": "14.4",
    "1938": "14.1",
    "1939": "13.9",
    "1940": "14.0",
    "1941": "14.7",
    "1942": "16.3",
    "1943": "17.3",
    "1944": "17.6",
    "1945": "18.0",
    "1946": "19.5",
    "1947": "22.3",
    "1948": "24.1",
    "1949": "23.8",
    "1950": "24.1",
    "1951": "26.0",
    "1952": "26.5",
    "1953": "26.7",
    "1954": "26.9",
    "1955": "26.8",
    "1956": "27.2",
    "1957": "28.1",
    "1958": "28.9",
    "1959": "29.1",
    "1960": "29.6",
    "1961": "29.9",
    "1962": "30.2",
    "1963": "30.6",
    "1964": "31.0",
    "1965": "31.5",
    "1966": "32.4",
    "1967": "33.4",
    "1968": "34.8",
    "1969": "36.7",
    "1970": "38.8",
    "1971": "40.5",
    "1972": "41.8",
    "1973": "44.4",
    "1974": "49.3",
    "1975": "53.8",
    "1976": "56.9",
    "1977": "60.6",
    "1978": "65.2",
    "1979": "72.6",
    "1980": "82.4",
    "1981": "90.9",
    "1982": "96.5",
    "1983": "99.6",
    "1984": "103.9",
    "1985": "107.6",
    "1986": "109.6",
    "1987": "113.6",
    "1988": "118.3",
    "1989": "124.0",
    "1990": "130.7",
    "1991": "136.2",
    "1992": "140.3",
    "1993": "144.5",
    "1994": "148.2",
    "1995": "152.4",
    "1996": "156.9",
    "1997": "160.5",
    "1998": "163.0",
    "1999": "166.6",
    "2000": "172.2",
    "2001": "177.1",
    "2002": "179.9",
    "2003": "184.0",
    "2004": "188.9",
    "2005": "195.3",
    "2006": "201.6",
    "2007": "207.342",
    "2008": "215.303",
    "2009": "214.537",
    "2010": "218.056",
    "2011": "224.939",
    "2012": "229.594",
    "2013": "232.957",
    "2014": "236.736",
    "2015": "237.017",
    "2016": "240.007",
    "2017": "245.120",
    "2018": "251.107",
    "2019": "255.657",
    "2020": "258.811",
    "2021": "270.970",
    "2022": "292.655",
    "2023": "304.702",
    "2024": "313.689",
    "2025": "321.943"
   },
   "monthly": {
    "1913-01": "9.8",
    "1913-02": "9.8",
    "1913-03": "9.8",
    "1913-04": "9.8",
    "1913-05": "9.7",
    "1913-06": "9.8",
    "1913-07": "9.9",
    "1913-08": "9.9",
    "1913-09": "10.0",
    "1913-10": "10.0",
    "1913-11": "10.1",
    "1913-12": "10.0",
    "1914-01": "10.0",
    "1914-02": "9.9",
    "1914-03": "9.9",
    "1914-04": "9.8",
    "1914-05": "9.9",
    "1914-06": "9.9",
    "1914-07": "10.0",
    "1914-08": "10.2",
    "1914-09": "10.2",
    "1914-10": "10.1",
    "1914-11": "10.2",
    "1914-12": "10.1",
    "1915-01": "10.1",
    "1915-02": "10.0",
    "1915-03": "9.9",
    "1915-04": "10.0",
    "1915-05": "10.1",
    "1915-06": "10.1",
    "1915-07": "10.1",
    "1915-08": "10.1",
    "1915-09": "10.1",
    "1915-10": "10.2",
    "1915-11": "10.3",
    "1915-12": "10.3",
    "1916-01": "10.4",
    "1916-02": "10.4",
    "1916-03": "10.5",
    "1916-04": "10.6",
    "1916-05": "10.7",
    "1916-06": "10.8",
    "1916-07": "10.8",
    "1916-08": "10.9",
    "1916-09": "11.1",
    "1916-10": "11.3",
    "1916-11": "11.5",
    "1916-12": "11.6",
    "1917-01": "11.7",
    "1917-02": "12.0",
    "1917-03": "12.0",
    "1917-04": "12.6",
    "1917-05": "12.8",
    "1917-06": "13.0",
    "1917-07": "12.8",
    "1917-08": "13.0",
    "1917-09": "13.3",
    "1917-10": "13.5",
    "1917-11": "13.5",
    "1917-12": "13.7",
    "1918-01": "14.0",
    "1918-02": "14.1",
    "1918-03": "14.0",
    "1918-04": "14.2",
    "1918-05": "14.5",
    "1918-06": "14.7",
    "1918-07": "15.1",
    "1918-08": "15.4",
    "1918-09": "15.7",
    "1918-10": "16.0",
    "1918-11": "16.3",
    "1918-12": "16.5",
    "1919-01": "16.5",
    "1919-02": "16.2",
    "1919-03": "16.4",
    "1919-04": "16.7",
    "1919-05": "16.9",
    "1919-06": "16.9",
    "1919-07": "17.4",
    "1919-08": "17.7",
    "1919-09": "17.8",
    "1919-10": "18.1",
    "1919-11": "18.5",
    "1919-12": "18.9",
    "1920-01": "19.3",
    "1920-02": "19.5",
    "1920-03": "19.7",
    "1920-04": "20.3",
    "1920-05": "20.6",
    "1920-06": "20.9",
    "1920-07": "20.8",
    "1920-08": "20.3",
    "1920-09": "20.0",
    "1920-10": "19.9",
    "1920-11": "19.8",
    "1920-12": "19.4",
    "1921-01": "19.0",
    "1921-02": "18.4",
    "1921-03": "18.3",
    "1921-04": "18.1",
    "1921-05": "17.7",
    "1921-06": "17.6",
    "1921-07": "17.7",
    "1921-08": "17.7",
    "1921-09": "17.5",
    "1921-10": "17.5",
    "1921-11": "17.4",
    "1921-12": "17.3",
    "1922-01": "16.9",
    "1922-02": "16.9",
    "1922-03": "16.7",
    "1922-04": "16.7",
    "1922-05": "16.7",
    "1922-06": "16.7",
    "1922-07": "16.8",
    "1922-08": "16.6",
    "1922-09": "16.6",
    "1922-10": "16.7",
    "1922-11": "16.8",
    "1922-12": "16.9",
    "1923-01": "16.8",
    "1923-02": "16.8",
    "1923-03": "16.8",
    "1923-04": "16.9",
    "1923-05": "16.9",
    "1923-06": "17.0",
    "1923-07": "17.2",
    "1923-08": "17.1",
    "1923-09": "17.2",
    "1923-10": "17.3",
    "1923-11": "17.3",
    "1923-12": "17.3",
    "1924-01": "17.3",
    "1924-02": "17.2",
    "1924-03": "17.1",
    "1924-04": "17.0",
    "1924-05": "17.0",
    "1924-06": "17.0",
    "1924-07": "17.1",
    "1924-08": "17.0",
    "1924-09": "17.1",
    "1924-10": "17.2",
    "1924-11": "17.2",
    "1924-12": "17.3",
    "1925-01": "17.3",
    "1925-02": "17.2",
    "1925-03": "17.3",
    "1925-04": "17.2",
    "1925-05": "17.3",
    "1925-06": "17.5",
    "1925-07": "17.7",
    "1925-08": "17.7",
    "1925-09": "17.7",
    "1925-10": "17.7",
    "1925-11": "18.0",
    "1925-12": "17.9",
    "1926-01": "17.9",
    "1926-02": "17.9",
    "1926-03": "17.8",
    "1926-04": "17.9",
    "1926-05": "17.8",
    "1926-06": "17.7",
    "1926-07": "17.5",
    "1926-08": "17.4",
    "1926-09": "17.5",
    "1926-10": "17.6",
    "1926-11": "17.7",
    "1926-12": "17.7",
    "1927-01": "17.5",
    "1927-02": "17.4",
    "1927-03": "17.3",
    "1927-04": "17.3",
    "1927-05": "17.4",
    "1927-06": "17.6",
    "1927-07": "17.3",
    "1927-08": "17.2",
    "1927-09": "17.3",
    "1927-10": "17.4",
    "1927-11": "17.3",
    "1927-12": "17.3",
    "1928-01": "17.3",
    "1928-02": "17.1",
    "1928-03": "17.1",
    "1928-04": "17.1",
    "1928-05": "17.2",
    "1928-06": "17.1",
    "1928-07": "17.1",
    "1928-08": "17.1",
    "1928-09": "17.3",
    "1928-10": "17.2",
    "1928-11": "17.2",
    "1928-12": "17.1",
    "1929-01": "17.1",
    "1929-02": "17.1",
    "1929-03": "17.0",
    "1929-04": "16.9",
    "1929-05": "17.0",
    "1929-06": "17.1",
    "1929-07": "17.3",
    "1929-08": "17.3",
    "1929-09": "17.3",
    "1929-10": "17.3",
    "1929-11": "17.3",
    "1929-12": "17.2",
    "1930-01": "17.1",
    "1930-02": "17.0",
    "1930-03": "16.9",
    "1930-04": "17.0",
    "1930-05": "16.9",
    "1930-06": "16.8",
    "1930-07": "16.6",
    "1930-08": "16.5",
    "1930-09": "16.6",
    "1930-10": "16.5",
    "1930-11": "16.4",
    "1930-12": "16.1",
    "1931-01": "15.9",
    "1931-02": "15.7",
    "1931-03": "15.6",
    "1931-04": "15.5",
    "1931-05": "15.3",
    "1931-06": "15.1",
    "1931-07": "15.1",
    "1931-08": "15.1",
    "1931-09": "15.0",
    "1931-10": "14.9",
    "1931-11": "14.7",
    "1931-12": "14.6",
    "1932-01": "14.3",
    "1932-02": "14.1",
    "1932-03": "14.0",
    "1932-04": "13.9",
    "1932-05": "13.7",
    "1932-06": "13.6",
    "1932-07": "13.6",
    "1932-08": "13.5",
    "1932-09": "13.4",
    "1932-10": "13.3",
    "1932-11": "13.2",
    "1932-12": "13.1",
    "1933-01": "12.9",
    "1933-02": "12.7",
    "1933-03": "12.6",
    "1933-04": "12.6",
    "1933-05": "12.6",
    "1933-06": "12.7",
    "1933-07": "13.1",
    "1933-08": "13.2",
    "1933-09": "13.2",
    "1933-10": "13.2",
    "1933-11": "13.2",
    "1933-12": "13.2",
    "1934-01": "13.2",
    "1934-02": "13.3",
    "1934-03": "13.3",
    "1934-04": "13.3",
    "1934-05": "13.3",
    "1934-06": "13.4",
    "1934-07": "13.4",
    "1934-08": "13.4",
    "1934-09": "13.6",
    "1934-10": "13.5",
    "1934-11": "13.5",
    "1934-12": "13.4",
    "1935-01": "13.6",
    "1935-02": "13.7",
    "1935-03": "13.7",
    "1935-04": "13.8",
    "1935-05": "13.8",
    "1935-06": "13.7",
    "1935-07": "13.7",
    "1935-08": "13.7",
    "1935-09": "13.7",
    "1935-10": "13.7",
    "1935-11": "13.8",
    "1935-12": "13.8",
    "1936-01": "13.8",
    "1936-02": "13.8",
    "1936-03": "13.7",
    "1936-04": "13.7",
    "1936-05": "13.7",
    "1936-06": "13.8",
    "1936-07": "13.9",
    "1936-08": "14.0",
    "1936-09": "14.0",
    "1936-10": "14.0",
    "1936-11": "14.0",
    "1936-12": "14.0",
    "1937-01": "14.1",
    "1937-02": "14.1",
    "1937-03": "14.2",
    "1937-04": "14.3",
    "1937-05": "14.4",
    "1937-06": "14.4",
    "1937-07": "14.5",
    "1937-08": "14.5",
    "1937-09": "14.6",
    "1937-10": "14.6",
    "1937-11": "14.5",
    "1937-12": "14.4",
    "1938-01": "14.2",
    "1938-02": "14.1",
    "1938-03": "14.1",
    "1938-04": "14.2",
    "1938-05": "14.1",
    "1938-06": "14.1",
    "1938-07": "14.1",
    "1938-08": "14.1",
    "1938-09": "14.1",
    "1938-10": "14.0",
    "1938-11": "14.0",
    "1938-12": "14.0",
    "1939-01": "14.0",
    "1939-02": "13.9",
    "1939-03": "13.9",
    "1939-04": "13.8",
    "1939-05": "13.8",
    "1939-06": "13.8",
    "1939-07": "13.8",
    "1939-08": "13.8",
    "1939-09": "14.1",
    "1939-10": "14.0",
    "1939-11": "14.0",
    "1939-12": "14.0",
    "1940-01": "13.9",
    "1940-02": "14.0",
    "1940-03": "14.0",
    "1940-04": "14.0",
    "1940-05": "14.0",
    "1940-06": "14.1",
    "1940-07": "14.0",
    "1940-08": "14.0",
    "1940-09": "14.0",
    "1940-10": "14.0",
    "1940-11": "14.0",
    "1940-12": "14.1",
    "1941-01": "14.1",
    "1941-02": "14.1",
    "1941-03": "14.2",
    "1941-04": "14.3",
    "1941-05": "14.4",
    "1941-06": "14.7",
    "1941-07": "14.7",
    "1941-08": "14.9",
    "1941-09": "15.1",
    "1941-10": "15.3",
    "1941-11": "15.4",
    "1941-12": "15.5",
    "1942-01": "15.7",
    "1942-02": "15.8",
    "1942-03": "16.0",
    "1942-04": "16.1",
    "1942-05": "16.3",
    "1942-06": "16.3",
    "1942-07": "16.4",
    "1942-08": "16.5",
    "1942-09": "16.5",
    "1942-10": "16.7",
    "1942-11": "16.8",
    "1942-12": "16.9",
    "1943-01": "16.9",
    "1943-02": "16.9",
    "1943-03": "17.2",
    "1943-04": "17.4",
    "1943-05": "17.5",
    "1943-06": "17.5",
    "1943-07": "17.4",
    "1943-08": "17.3",
    "1943-09": "17.4",
    "1943-10": "17.4",
    "1943-11": "17.4",
    "1943-12": "17.4",
    "1944-01": "17.4",
    "1944-02": "17.4",
    "1944-03": "17.4",
    "1944-04": "17.5",
    "1944-05": "17.5",
    "1944-06": "17.6",
    "1944-07": "17.7",
    "1944-08": "17.7",
    "1944-09": "17.7",
    "1944-10": "17.7",
    "1944-11": "17.7",
    "1944-12": "17.8",
    "1945-01": "17.8",
    "1945-02": "17.8",
    "1945-03": "17.8",
    "1945-04": "17.8",
    "1945-05": "17.9",
    "1945-06": "18.1",
    "1945-07": "18.1",
    "1945-08": "18.1",
    "1945-09": "18.1",
    "1945-10": "18.1",
    "1945-11": "18.1",
    "1945-12": "18.2",
    "1946-01": "18.2",
    "1946-02": "18.1",
    "1946-03": "18.3",
    "1946-04": "18.4",
    "1946-05": "18.5",
    "1946-06": "18.7",
    "1946-07": "19.8",
    "1946-08": "20.2",
    "1946-09": "20.4",
    "1946-10": "20.8",
    "1946-11": "21.3",
    "1946-12": "21.5",
    "1947-01": "21.5",
    "1947-02": "21.5",
    "1947-03": "21.9",
    "1947-04": "21.9",
    "1947-05": "21.9",
    "1947-06": "22.0",
    "1947-07": "22.2",
    "1947-08": "22.5",
    "1947-09": "23.0",
    "1947-10": "23.0",
    "1947-11": "23.1",
    "1947-12": "23.4",
    "1948-01": "23.7",
    "1948-02": "23.5",
    "1948-03": "23.4",
    "1948-04": "23.8",
    "1948-05": "23.9",
    "1948-06": "24.1",
    "1948-07": "24.4",
    "1948-08": "24.5",
    "1948-09": "24.5",
    "1948-10": "24.4",
    "1948-11": "24.2",
    "1948-12": "24.1",
    "1949-01": "24.0",
    "1949-02": "23.8",
    "1949-03": "23.8",
    "1949-04": "23.9",
    "1949-05": "23.8",
    "1949-06": "23.9",
    "1949-07": "23.7",
    "1949-08": "23.8",
    "1949-09": "23.9",
    "1949-10": "23.7",
    "1949-11": "23.8",
    "1949-12": "23.6",
    "1950-01": "23.5",
    "1950-02": "23.5",
    "1950-03": "23.6",
    "1950-04": "23.6",
    "1950-05": "23.7",
    "1950-06": "23.8",
    "1950-07": "24.1",
    "1950-08": "24.3",
    "1950-09": "24.4",
    "1950-10": "24.6",
    "1950-11": "24.7",
    "1950-12": "25.0",
    "1951-01": "25.4",
    "1951-02": "25.7",
    "1951-03": "25.8",
    "1951-04": "25.8",
    "1951-05": "25.9",
    "1951-06": "25.9",
    "1951-07": "25.9",
    "1951-08": "25.9",
    "1951-09": "26.1",
    "1951-10": "26.2",
    "1951-11": "26.4",
    "1951-12": "26.5",
    "1952-01": "26.5",
    "1952-02": "26.3",
    "1952-03": "26.3",
    "1952-04": "26.4",
    "1952-05": "26.4",
    "1952-06": "26.5",
    "1952-07": "26.7",
    "1952-08": "26.7",
    "1952-09": "26.7",
    "1952-10": "26.7",
    "1952-11": "26.7",
    "1952-12": "26.7",
    "1953-01": "26.6",
    "1953-02": "26.5",
    "1953-03": "26.6",
    "1953-04": "26.6",
    "1953-05": "26.7",
    "1953-06": "26.8",
    "1953-07": "26.8",
    "1953-08": "26.9",
    "1953-09": "26.9",
    "1953-10": "27.0",
    "1953-11": "26.9",
    "1953-12": "26.9",
    "1954-01": "26.9",
    "1954-02": "26.9",
    "1954-03": "26.9",
    "1954-04": "26.8",
    "1954-05": "26.9",
    "1954-06": "26.9",
    "1954-07": "26.9",
    "1954-08": "26.9",
    "1954-09": "26.8",
    "1954-10": "26.8",
    "1954-11": "26.8",
    "1954-12": "26.7",
    "1955-01": "26.7",
    "1955-02": "26.7",
    "1955-03": "26.7",
    "1955-04": "26.7",
    "1955-05": "26.7",
    "1955-06": "26.7",
    "1955-07": "26.8",
    "1955-08": "26.8",
    "1955-09": "26.9",
    "1955-10": "26.9",
    "1955-11": "26.9",
    "1955-12": "26.8",
    "1956-01": "26.8",
    "1956-02": "26.8",
    "1956-03": "26.8",
    "1956-04": "26.9",
    "1956-05": "27.0",
    "1956-06": "27.2",
    "1956-07": "27.4",
    "1956-08": "27.3",
    "1956-09": "27.4",
    "1956-10": "27.5",
    "1956-11": "27.5",
    "1956-12": "27.6",
    "1957-01": "27.6",
    "1957-02": "27.7",
    "1957-03": "27.8",
    "1957-04": "27.9",
    "1957-05": "28.0",
    "1957-06": "28.1",
    "1957-07": "28.3",
    "1957-08": "28.3",
    "1957-09": "28.3",
    "1957-10": "28.3",
    "1957-11": "28.4",
    "1957-12": "28.4",
    "1958-01": "28.6",
    "1958-02": "28.6",
    "1958-03": "28.8",
    "1958-04": "28.9",
    "1958-05": "28.9",
    "1958-06": "28.9",
    "1958-07": "29.0",
    "1958-08": "28.9",
    "1958-09": "28.9",
    "1958-10": "28.9",
    "1958-11": "29.0",
    "1958-12": "28.9",
    "1959-01": "29.0",
    "1959-02": "28.9",
    "1959-03": "28.9",
    "1959-04": "29.0",
    "1959-05": "29.0",
    "1959-06": "29.1",
    "1959-07": "29.2",
    "1959-08": "29.2",
    "1959-09": "29.3",
    "1959-10": "29.4",
    "1959-11": "29.4",
    "1959-12": "29.4",
    "1960-01": "29.3",
    "1960-02": "29.4",
    "1960-03": "29.4",
    "1960-04": "29.5",
    "1960-05": "29.5",
    "1960-06": "29.6",
    "1960-07": "29.6",
    "1960-08": "29.6",
    "1960-09": "29.6",
    "1960-10": "29.8",
    "1960-11": "29.8",
    "1960-12": "29.8",
    "1961-01": "29.8",
    "1961-02": "29.8",
    "1961-03": "29.8",
    "1961-04": "29.8",
    "1961-05": "29.8",
    "1961-06": "29.8",
    "1961-07": "30.0",
    "1961-08": "29.9",
    "1961-09": "30.0",
    "1961-10": "30.0",
    "1961-11": "30.0",
    "1961-12": "30.0",
    "1962-01": "30.0",
    "1962-02": "30.1",
    "1962-03": "30.1",
    "1962-04": "30.2",
    "1962-05": "30.2",
    "1962-06": "30.2",
    "1962-07": "30.3",
    "1962-08": "30.3",
    "1962-09": "30.4",
    "1962-10": "30.4",
    "1962-11": "30.4",
    "1962-12": "30.4",
    "1963-01": "30.4",
    "1963-02": "30.4",
    "1963-03": "30.5",
    "1963-04": "30.5",
    "1963-05": "30.5",
    "1963-06": "30.6",
    "1963-07": "30.7",
    "1963-08": "30.7",
    "1963-09": "30.7",
    "1963-10": "30.8",
    "1963-11": "30.8",
    "1963-12": "30.9",
    "1964-01": "30.9",
    "1964-02": "30.9",
    "1964-03": "30.9",
    "1964-04": "30.9",
    "1964-05": "30.9",
    "1964-06": "31.0",
    "1964-07": "31.1",
    "1964-08": "31.0",
    "1964-09": "31.1",
    "1964-10": "31.1",
    "1964-11": "31.2",
    "1964-12": "31.2",
    "1965-01": "31.2",
    "1965-02": "31.2",
    "1965-03": "31.3",
    "1965-04": "31.4",
    "1965-05": "31.4",
    "1965-06": "31.6",
    "1965-07": "31.6",
    "1965-08": "31.6",
    "1965-09": "31.6",
    "1965-10": "31.7",
    "1965-11": "31.7",
    "1965-12": "31.8",
    "1966-01": "31.8",
    "1966-02": "32.0",
    "1966-03": "32.1",
    "1966-04": "32.3",
    "1966-05": "32.3",
    "1966-06": "32.4",
    "1966-07": "32.5",
    "1966-08": "32.7",
    "1966-09": "32.7",
    "1966-10": "32.9",
    "1966-11": "32.9",
    "1966-12": "32.9",
    "1967-01": "32.9",
    "1967-02": "32.9",
    "1967-03": "33.0",
    "1967-04": "33.1",
    "1967-05": "33.2",
    "1967-06": "33.3",
    "1967-07": "33.4",
    "1967-08": "33.5",
    "1967-09": "33.6",
    "1967-10": "33.7",
    "1967-11": "33.8",
    "1967-12": "33.9",
    "1968-01": "34.1",
    "1968-02": "34.2",
    "1968-03": "34.3",
    "1968-04": "34.4",
    "1968-05": "34.5",
    "1968-06": "34.7",
    "1968-07": "34.9",
    "1968-08": "35.0",
    "1968-09": "35.1",
    "1968-10": "35.3",
    "1968-11": "35.4",
    "1968-12": "35.5",
    "1969-01": "35.6",
    "1969-02": "35.8",
    "1969-03": "36.1",
    "1969-04": "36.3",
    "1969-05": "36.4",
    "1969-06": "36.6",
    "1969-07": "36.8",
    "1969-08": "37.0",
    "1969-09": "37.1",
    "1969-10": "37.3",
    "1969-11": "37.5",
    "1969-12": "37.7",
    "1970-01": "37.8",
    "1970-02": "38.0",
    "1970-03": "38.2",
    "1970-04": "38.5",
    "1970-05": "38.6",
    "1970-06": "38.8",
    "1970-07": "39.0",
    "1970-08": "39.0",
    "1970-09": "39.2",
    "1970-10": "39.4",
    "1970-11": "39.6",
    "1970-12": "39.8",
    "1971-01": "39.8",
    "1971-02": "39.9",
    "1971-03": "40.0",
    "1971-04": "40.1",
    "1971-05": "40.3",
    "1971-06": "40.6",
    "1971-07": "40.7",
    "1971-08": "40.8",
    "1971-09": "40.8",
    "1971-10": "40.9",
    "1971-11": "40.9",
    "1971-12": "41.1",
    "1972-01": "41.1",
    "1972-02": "41.3",
    "1972-03": "41.4",
    "1972-04": "41.5",
    "1972-05": "41.6",
    "1972-06": "41.7",
    "1972-07": "41.9",
    "1972-08": "42.0",
    "1972-09": "42.1",
    "1972-10": "42.3",
    "1972-11": "42.4",
    "1972-12": "42.5",
    "1973-01": "42.6",
    "1973-02": "42.9",
    "1973-03": "43.3",
    "1973-04": "43.6",
    "1973-05": "43.9",
    "1973-06": "44.2",
    "1973-07": "44.3",
    "1973-08": "45.1",
    "1973-09": "45.2",
    "1973-10": "45.6",
    "1973-11": "45.9",
    "1973-12": "46.2",
    "1974-01": "46.6",
    "1974-02": "47.2",
    "1974-03": "47.8",
    "1974-04": "48.0",
    "1974-05": "48.6",
    "1974-06": "49.0",
    "1974-07": "49.4",
    "1974-08": "50.0",
    "1974-09": "50.6",
    "1974-10": "51.1",
    "1974-11": "51.5",
    "1974-12": "51.9",
    "1975-01": "52.1",
    "1975-02": "52.5",
    "1975-03": "52.7",
    "1975-04": "52.9",
    "1975-05": "53.2",
    "1975-06": "53.6",
    "1975-07": "54.2",
    "1975-08": "54.3",
    "1975-09": "54.6",
    "1975-10": "54.9",
    "1975-11": "55.3",
    "1975-12": "55.5",
    "1976-01": "55.6",
    "1976-02": "55.8",
    "1976-03": "55.9",
    "1976-04": "56.1",
    "1976-05": "56.5",
    "1976-06": "56.8",
    "1976-07": "57.1",
    "1976-08": "57.4",
    "1976-09": "57.6",
    "1976-10": "57.9",
    "1976-11": "58.0",
    "1976-12": "58.2",
    "1977-01": "58.5",
    "1977-02": "59.1",
    "1977-03": "59.5",
    "1977-04": "60.0",
    "1977-05": "60.3",
    "1977-06": "60.7",
    "1977-07": "61.0",
    "1977-08": "61.2",
    "1977-09": "61.4",
    "1977-10": "61.6",
    "1977-11": "61.9",
    "1977-12": "62.1",
    "1978-01": "62.5",
    "1978-02": "62.9",
    "1978-03": "63.4",
    "1978-04": "63.9",
    "1978-05": "64.5",
    "1978-06": "65.2",
    "1978-07": "65.7",
    "1978-08": "66.0",
    "1978-09": "66.5",
    "1978-10": "67.1",
    "1978-11": "67.4",
    "1978-12": "67.7",
    "1979-01": "68.3",
    "1979-02": "69.1",
    "1979-03": "69.8",
    "1979-04": "70.6",
    "1979-05": "71.5",
    "1979-06": "72.3",
    "1979-07": "73.1",
    "1979-08": "73.8",
    "1979-09": "74.6",
    "1979-10": "75.2",
    "1979-11": "75.9",
    "1979-12": "76.7",
    "1980-01": "77.8",
    "1980-02": "78.9",
    "1980-03": "80.1",
    "1980-04": "81.0",
    "1980-05": "81.8",
    "1980-06": "82.7",
    "1980-07": "82.7",
    "1980-08": "83.3",
    "1980-09": "84.0",
    "1980-10": "84.8",
    "1980-11": "85.5",
    "1980-12": "86.3",
    "1981-01": "87.0",
    "1981-02": "87.9",
    "1981-03": "88.5",
    "1981-04": "89.1",
    "1981-05": "89.8",
    "1981-06": "90.6",
    "1981-07": "91.6",
    "1981-08": "92.3",
    "1981-09": "93.2",
    "1981-10": "93.4",
    "1981-11": "93.7",
    "1981-12": "94.0",
    "1982-01": "94.3",
    "1982-02": "94.6",
    "1982-03": "94.5",
    "1982-04": "94.9",
    "1982-05": "95.8",
    "1982-06": "97.0",
    "1982-07": "97.5",
    "1982-08": "97.7",
    "1982-09": "97.9",
    "1982-10": "98.2",
    "1982-11": "98.0",
    "1982-12": "97.6",
    "1983-01": "97.8",
    "1983-02": "97.9",
    "1983-03": "97.9",
    "1983-04": "98.6",
    "1983-05": "99.2",
    "1983-06": "99.5",
    "1983-07": "99.9",
    "1983-08": "100.2",
    "1983-09": "100.7",
    "1983-10": "101.0",
    "1983-11": "101.2",
    "1983-12": "101.3",
    "1984-01": "101.9",
    "1984-02": "102.4",
    "1984-03": "102.6",
    "1984-04": "103.1",
    "1984-05": "103.4",
    "1984-06": "103.7",
    "1984-07": "104.1",
    "1984-08": "104.5",
    "1984-09": "105.0",
    "1984-10": "105.3",
    "1984-11": "105.3",
    "1984-12": "105.3",
    "1985-01": "105.5",
    "1985-02": "106.0",
    "1985-03": "106.4",
    "1985-04": "106.9",
    "1985-05": "107.3",
    "1985-06": "107.6",
    "1985-07": "107.8",
    "1985-08": "108.0",
    "1985-09": "108.3",
    "1985-10": "108.7",
    "1985-11": "109.0",
    "1985-12": "109.3",
    "1986-01": "109.6",
    "1986-02": "109.3",
    "1986-03": "108.8",
    "1986-04": "108.6",
    "1986-05": "108.9",
    "1986-06": "109.5",
    "1986-07": "109.5",
    "1986-08": "109.7",
    "1986-09": "110.2",
    "1986-10": "110.3",
    "1986-11": "110.4",
    "1986-12": "110.5",
    "1987-01": "111.2",
    "1987-02": "111.6",
    "1987-03": "112.1",
    "1987-04": "112.7",
    "1987-05": "113.1",
    "1987-06": "113.5",
    "1987-07": "113.8",
    "1987-08": "114.4",
    "1987-09": "115.0",
    "1987-10": "115.3",
    "1987-11": "115.4",
    "1987-12": "115.4",
    "1988-01": "115.7",
    "1988-02": "116.0",
    "1988-03": "116.5",
    "1988-04": "117.1",
    "1988-05": "117.5",
    "1988-06": "118.0",
    "1988-07": "118.5",
    "1988-08": "119.0",
    "1988-09": "119.8",
    "1988-10": "120.2",
    "1988-11": "120.3",
    "1988-12": "120.5",
    "1989-01": "121.1",
    "1989-02": "121.6",
    "1989-03": "122.3",
    "1989-04": "123.1",
    "1989-05": "123.8",
    "1989-06": "124.1",
    "1989-07": "124.4",
    "1989-08": "124.6",
    "1989-09": "125.0",
    "1989-10": "125.6",
    "1989-11": "125.9",
    "1989-12": "126.1",
    "1990-01": "127.4",
    "1990-02": "128.0",
    "1990-03": "128.7",
    "1990-04": "128.9",
    "1990-05": "129.2",
    "1990-06": "129.9",
    "1990-07": "130.4",
    "1990-08": "131.6",
    "1990-09": "132.7",
    "1990-10": "133.5",
    "1990-11": "133.8",
    "1990-12": "133.8",
    "1991-01": "134.6",
    "1991-02": "134.8",
    "1991-03": "135.0",
    "1991-04": "135.2",
    "1991-05": "135.6",
    "1991-06": "136.0",
    "1991-07": "136.2",
    "1991-08": "136.6",
    "1991-09": "137.2",
    "1991-10": "137.4",
    "1991-11": "137.8",
    "1991-12": "137.9",
    "1992-01": "138.1",
    "1992-02": "138.6",
    "1992-03": "139.3",
    "1992-04": "139.5",
    "1992-05": "139.7",
    "1992-06": "140.2",
    "1992-07": "140.5",
    "1992-08": "140.9",
    "1992-09": "141.3",
    "1992-10": "141.8",
    "1992-11": "142.0",
    "1992-12": "141.9",
    "1993-01": "142.6",
    "1993-02": "143.1",
    "1993-03": "143.6",
    "1993-04": "144.0",
    "1993-05": "144.2",
    "1993-06": "144.4",
    "1993-07": "144.4",
    "1993-08": "144.8",
    "1993-09": "145.1",
    "1993-10": "145.7",
    "1993-11": "145.8",
    "1993-12": "145.8",
    "1994-01": "146.2",
    "1994-02": "146.7",
    "1994-03": "147.2",
    "1994-04": "147.4",
    "1994-05": "147.5",
    "1994-06": "148.0",
    "1994-07": "148.4",
    "1994-08": "149.0",
    "1994-09": "149.4",
    "1994-10": "149.5",
    "1994-11": "149.7",
    "1994-12": "149.7",
    "1995-01": "150.3",
    "1995-02": "150.9",
    "1995-03": "151.4",
    "1995-04": "151.9",
    "1995-05": "152.2",
    "1995-06": "152.5",
    "1995-07": "152.5",
    "1995-08": "152.9",
    "1995-09": "153.2",
    "1995-10": "153.7",
    "1995-11": "153.6",
    "1995-12": "153.5",
    "1996-01": "154.4",
    "1996-02": "154.9",
    "1996-03": "155.7",
    "1996-04": "156.3",
    "1996-05": "156.6",
    "1996-06": "156.7",
    "1996-07": "157.0",
    "1996-08": "157.3",
    "1996-09": "157.8",
    "1996-10": "158.3",
    "1996-11": "158.6",
    "1996-12": "158.6",
    "1997-01": "159.1",
    "1997-02": "159.6",
    "1997-03": "160.0",
    "1997-04": "160.2",
    "1997-05": "160.1",
    "1997-06": "160.3",
    "1997-07": "160.5",
    "1997-08": "160.8",
    "1997-09": "161.2",
    "1997-10": "161.6",
    "1997-11": "161.5",
    "1997-12": "161.3",
    "1998-01": "161.6",
    "1998-02": "161.9",
    "1998-03": "162.2",
    "1998-04": "162.5",
    "1998-05": "162.8",
    "1998-06": "163.0",
    "1998-07": "163.2",
    "1998-08": "163.4",
    "1998-09": "163.6",
    "1998-10": "164.0",
    "1998-11": "164.0",
    "1998-12": "163.9",
    "1999-01": "164.3",
    "1999-02": "164.5",
    "1999-03": "165.0",
    "1999-04": "166.2",
    "1999-05": "166.2",
    "1999-06": "166.2",
    "1999-07": "166.7",
    "1999-08": "167.1",
    "1999-09": "167.9",
    "1999-10": "168.2",
    "1999-11": "168.3",
    "1999-12": "168.3",
    "2000-01": "168.8",
    "2000-02": "169.8",
    "2000-03": "171.2",
    "2000-04": "171.3",
    "2000-05": "171.5",
    "2000-06": "172.4",
    "2000-07": "172.8",
    "2000-08": "172.8",
    "2000-09": "173.7",
    "2000-10": "174.0",
    "2000-11": "174.1",
    "2000-12": "174.0",
    "2001-01": "175.1",
    "2001-02": "175.8",
    "2001-03": "176.2",
    "2001-04": "176.9",
    "2001-05": "177.7",
    "2001-06": "178.0",
    "2001-07": "177.5",
    "2001-08": "177.5",
    "2001-09": "178.3",
    "2001-10": "177.7",
    "2001-11": "177.4",
    "2001-12": "176.7",
    "2002-01": "177.1",
    "2002-02": "177.8",
    "2002-03": "178.8",
    "2002-04": "179.8",
    "2002-05": "179.8",
    "2002-06": "179.9",
    "2002-07": "180.1",
    "2002-08": "180.7",
    "2002-09": "181.0",
    "2002-10": "181.3",
    "2002-11": "181.3",
    "2002-12": "180.9",
    "2003-01": "181.7",
    "2003-02": "183.1",
    "2003-03": "184.2",
    "2003-04": "183.8",
    "2003-05": "183.5",
    "2003-06": "183.7",
    "2003-07": "183.9",
    "2003-08": "184.6",
    "2003-09": "185.2",
    "2003-10": "185.0",
    "2003-11": "184.5",
    "2003-12": "184.3",
    "2004-01": "185.2",
    "2004-02": "186.2",
    "2004-03": "187.4",
    "2004-04": "188.0",
    "2004-05": "189.1",
    "2004-06": "189.7",
    "2004-07": "189.4",
    "2004-08": "189.5",
    "2004-09": "189.9",
    "2004-10": "190.9",
    "2004-11": "191.0",
    "2004-12": "190.3",
    "2005-01": "190.7",
    "2005-02": "191.8",
    "2005-03": "193.3",
    "2005-04": "194.6",
    "2005-05": "194.4",
    "2005-06": "194.5",
    "2005-07": "195.4",
    "2005-08": "196.4",
    "2005-09": "198.8",
    "2005-10": "199.2",
    "2005-11": "197.6",
    "2005-12": "196.8",
    "2006-01": "198.3",
    "2006-02": "198.7",
    "2006-03": "199.8",
    "2006-04": "201.5",
    "2006-05": "202.5",
    "2006-06": "202.9",
    "2006-07": "203.5",
    "2006-08": "203.9",
    "2006-09": "202.9",
    "2006-10": "201.8",
    "2006-11": "201.5",
    "2006-12": "201.8",
    "2007-01": "202.416",
    "2007-02": "203.499",
    "2007-03": "205.352",
    "2007-04": "206.686",
    "2007-05": "207.949",
    "2007-06": "208.352",
    "2007-07": "208.299",
    "2007-08": "207.917",
    "2007-09": "208.490",
    "2007-10": "208.936",
    "2007-11": "210.177",
    "2007-12": "210.036",
    "2008-01": "211.080",
    "2008-02": "211.693",
    "2008-03": "213.528",
    "2008-04": "214.823",
    "2008-05": "216.632",
    "2008-06": "218.815",
    "2008-07": "219.964",
    "2008-08": "219.086",
    "2008-09": "218.783",
    "2008-10": "216.573",
    "2008-11": "212.425",
    "2008-12": "210.228",
    "2009-01": "211.143",
    "2009-02": "212.193",
    "2009-03": "212.709",
    "2009-04": "213.240",
    "2009-05": "213.856",
    "2009-06": "215.693",
    "2009-07": "215.351",
    "2009-08": "215.834",
    "2009-09": "215.969",
    "2009-10": "216.177",
    "2009-11": "216.330",
    "2009-12": "215.949",
    "2010-01": "216.687",
    "2010-02": "216.741",
    "2010-03": "217.631",
    "2010-04": "218.009",
    "2010-05": "218.178",
    "2010-06": "217.965",
    "2010-07": "218.011",
    "2010-08": "218.312",
    "2010-09": "218.439",
    "2010-10": "218.711",
    "2010-11": "218.803",
    "2010-12": "219.179",
    "2011-01": "220.223",
    "2011-02": "221.309",
    "2011-03": "223.467",
    "2011-04": "224.906",
    "2011-05": "225.964",
    "2011-06": "225.722",
    "2011-07": "225.922",
    "2011-08": "226.545",
    "2011-09": "226.889",
    "2011-10": "226.421",
    "2011-11": "226.230",
    "2011-12": "225.672",
    "2012-01": "226.665",
    "2012-02": "227.663",
    "2012-03": "229.392",
    "2012-04": "230.085",
    "2012-05": "229.815",
    "2012-06": "229.478",
    "2012-07": "229.104",
    "2012-08": "230.379",
    "2012-09": "231.407",
    "2012-10": "231.317",
    "2012-11": "230.221",
    "2012-12": "229.601",
    "2013-01": "230.280",
    "2013-02": "232.166",
    "2013-03": "232.773",
    "2013-04": "232.531",
    "2013-05": "232.945",
    "2013-06": "233.504",
    "2013-07": "233.596",
    "2013-08": "233.877",
    "2013-09": "234.149",
    "2013-10": "233.546",
    "2013-11": "233.069",
    "2013-12": "233.049",
    "2014-01": "233.916",
    "2014-02": "234.781",
    "2014-03": "236.293",
    "2014-04": "237.072",
    "2014-05": "237.900",
    "2014-06": "238.343",
    "2014-07": "238.250",
    "2014-08": "237.852",
    "2014-09": "238.031",
    "2014-10": "237.433",
    "2014-11": "236.151",
    "2014-12": "234.812",
    "2015-01": "233.707",
    "2015-02": "234.722",
    "2015-03": "236.119",
    "2015-04": "236.599",
    "2015-05": "237.805",
    "2015-06": "238.638",
    "2015-07": "238.654",
    "2015-08": "238.316",
    "2015-09": "237.945",
    "2015-10": "237.838",
    "2015-11": "237.336",
    "2015-12": "236.525",
    "2016-01": "236.916",
    "2016-02": "237.111",
    "2016-03": "238.132",
    "2016-04": "239.261",
    "2016-05": "240.229",
    "2016-06": "241.018",
    "2016-07": "240.628",
    "2016-08": "240.849",
    "2016-09": "241.428",
    "2016-10": "241.729",
    "2016-11": "241.353",
    "2016-12": "241.432",
    "2017-01": "242.839",
    "2017-02": "243.603",
    "2017-03": "243.801",
    "2017-04": "244.524",
    "2017-05": "244.733",
    "2017-06": "244.955",
    "2017-07": "244.786",
    "2017-08": "245.519",
    "2017-09": "246.819",
    "2017-10": "246.663",
    "2017-11": "246.669",
    "2017-12": "246.524",
    "2018-01": "247.867",
    "2018-02": "248.991",
    "2018-03": "249.554",
    "2018-04": "250.546",
    "2018-05": "251.588",
    "2018-06": "251.989",
    "2018-07": "252.006",
    "2018-08": "252.146",
    "2018-09": "252.439",
    "2018-10": "252.885",
    "2018-11": "252.038",
    "2018-12": "251.233",
    "2019-01": "251.712",
    "2019-02": "252.776",
    "2019-03": "254.202",
    "2019-04": "255.548",
    "2019-05": "256.092",
    "2019-06": "256.143",
    "2019-07": "256.571",
    "2019-08": "256.558",
    "2019-09": "256.759",
    "2019-10": "257.346",
    "2019-11": "257.208",
    "2019-12": "256.974",
    "2020-01": "257.971",
    "2020-02": "258.678",
    "2020-03": "258.115",
    "2020-04": "256.389",
    "2020-05": "256.394",
    "2020-06": "257.797",
    "2020-07": "259.101",
    "2020-08": "259.918",
    "2020-09": "260.280",
    "2020-10": "260.388",
    "2020-11": "260.229",
    "2020-12": "260.474",
    "2021-01": "261.582",
    "2021-02": "263.014",
    "2021-03": "264.877",
    "2021-04": "267.054",
    "2021-05": "269.195",
    "2021-06": "271.696",
    "2021-07": "273.003",
    "2021-08": "273.567",
    "2021-09": "274.310",
    "2021-10": "276.589",
    "2021-11": "277.948",
    "2021-12": "278.802",
    "2022-01": "281.148",
    "2022-02": "283.716",
    "2022-03": "287.504",
    "2022-04": "289.109",
    "2022-05": "292.296",
    "2022-06": "296.311",
    "2022-07": "296.276",
    "2022-08": "296.171",
    "2022-09": "296.808",
    "2022-10": "298.012",
    "2022-11": "297.711",
    "2022-12": "296.797",
    "2023-01": "299.170",
    "2023-02": "300.840",
    "2023-03": "301.836",
    "2023-04": "303.363",
    "2023-05": "304.127",
    "2023-06": "305.109",
    "2023-07": "305.691",
    "2023-08": "307.026",
    "2023-09": "307.789",
    "2023-10": "307.671",
    "2023-11": "307.051",
    "2023-12": "306.746",
    "2024-01": "308.417",
    "2024-02": "310.326",
    "2024-03": "312.332",
    "2024-04": "313.548",
    "2024-05": "314.069",
    "2024-06": "314.175",
    "2024-07": "314.540",
    "2024-08": "314.796",
    "2024-09": "315.301",
    "2024-10": "315.664",
    "2024-11": "315.493",
    "2024-12": "315.605",
    "2025-01": "317.671",
    "2025-02": "319.082",
    "2025-03": "319.799",
    "2025-04": "320.795",
    "2025-05": "321.465",
    "2025-06": "322.561",
    "2025-07": "323.048",
    "2025-08": "323.976",
    "2025-09": "324.800",
    "2025-11": "324.122",
    "2025-12": "324.054",
    "2026-01": "325.252",
    "2026-02": "326.785",
    "2026-03": "330.213",
    "2026-04": "333.020",
    "2026-05": "335.123",
    "2026-06": "333.952",
    "2026-07": "333.918",
    "2026-08": "334.980",
    "2026-09": "336.940"
   }
  },
  "ea_hicp": {
   "title": "Euro area (changing composition), HICP, all items",
   "agency": "Eurostat",
   "series_id": "prc_hicp_aind INX_A_AVG CP00 EA; prc_hicp_midx I15 CP00 EA",
   "base": "2015=100",
   "currency": "EUR",
   "source_url": "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/prc_hicp_aind?format=JSON&unit=INX_A_AVG&coicop=CP00&geo=EA",
   "source_url_monthly": "https://ec.europa.eu/eurostat/api/dissemination/statistics/1.0/data/prc_hicp_midx?format=JSON&unit=I15&coicop=CP00&geo=EA",
   "annual_method": "Eurostat annual average index (INX_A_AVG)",
   "dataset_updated": "2026-02-06T23:00:00+0100",
   "fetched": "2026-10-18",
   "annual": {
    "1996": "71.74",
    "1997": "72.87",
    "1998": "73.67",
    "1999": "74.48",
    "2000": "76.05",
    "2001": "77.83",
    "2002": "79.58",
    "2003": "81.24",
    "2004": "82.98",
    "2005": "84.79",
    "2006": "86.64",
    "2007": "88.49",
    "2008": "91.38",
    "2009": "91.65",
    "2010": "93.14",
    "2011": "95.66",
    "2012": "98.05",
    "2013": "99.38",
    "2014": "99.81",
    "2015": "100.00",
    "2016": "100.23",
    "2017": "101.78",
    "2018": "103.56",
    "2019": "104.80",
    "2020": "105.06",
    "2021": "107.78",
    "2022": "116.82",
    "2023": "123.15",
    "2024": "126.07",
    "2025": "128.75"
   },
   "monthly": {
    "1996-01": "70.97",
    "1996-02": "71.29",
    "1996-03": "71.54",
    "1996-04": "71.66",
    "1996-05": "71.83",
    "1996-06": "71.84",
    "1996-07": "71.84",
    "1996-08": "71.80",
    "1996-09": "71.93",
    "1996-10": "72.00",
    "1996-11": "72.01",
    "1996-12": "72.19",
    "1997-01": "72.42",
    "1997-02": "72.59",
    "1997-03": "72.65",
    "1997-04": "72.60",
    "1997-05": "72.80",
    "1997-06": "72.83",
    "1997-07": "72.90",
    "1997-08": "73.02",
    "1997-09": "73.07",
    "1997-10": "73.09",
    "1997-11": "73.18",
    "1997-12": "73.26",
    "1998-01": "73.20",
    "1998-02": "73.40",
    "1998-03": "73.46",
    "1998-04": "73.61",
    "1998-05": "73.76",
    "1998-06": "73.80",
    "1998-07": "73.83",
    "1998-08": "73.85",
    "1998-09": "73.79",
    "1998-10": "73.77",
    "1998-11": "73.77",
    "1998-12": "73.81",
    "1999-01": "73.76",
    "1999-02": "73.94",
    "1999-03": "74.15",
    "1999-04": "74.40",
    "1999-05": "74.45",
    "1999-06": "74.45",
    "1999-07": "74.58",
    "1999-08": "74.67",
    "1999-09": "74.71",
    "1999-10": "74.74",
    "1999-11": "74.84",
    "1999-12": "75.09",
    "2000-01": "75.13",
    "2000-02": "75.37",
    "2000-03": "75.60",
    "2000-04": "75.67",
    "2000-05": "75.76",
    "2000-06": "76.04",
    "2000-07": "76.14",
    "2000-08": "76.20",
    "2000-09": "76.50",
    "2000-10": "76.52",
    "2000-11": "76.68",
    "2000-12": "76.96",
    "2001-01": "76.63",
    "2001-02": "76.86",
    "2001-03": "77.27",
    "2001-04": "77.73",
    "2001-05": "78.10",
    "2001-06": "78.21",
    "2001-07": "78.03",
    "2001-08": "77.97",
    "2001-09": "78.18",
    "2001-10": "78.24",
    "2001-11": "78.19",
    "2001-12": "78.54",
    "2002-01": "78.63",
    "2002-02": "78.76",
    "2002-03": "79.21",
    "2002-04": "79.56",
    "2002-05": "79.71",
    "2002-06": "79.67",
    "2002-07": "79.59",
    "2002-08": "79.64",
    "2002-09": "79.84",
    "2002-10": "80.03",
    "2002-11": "79.97",
    "2002-12": "80.36",
    "2003-01": "80.30",
    "2003-02": "80.62",
    "2003-03": "81.08",
    "2003-04": "81.21",
    "2003-05": "81.15",
    "2003-06": "81.25",
    "2003-07": "81.13",
    "2003-08": "81.25",
    "2003-09": "81.54",
    "2003-10": "81.66",
    "2003-11": "81.70",
    "2003-12": "81.95",
    "2004-01": "81.75",
    "2004-02": "81.94",
    "2004-03": "82.46",
    "2004-04": "82.88",
    "2004-05": "83.14",
    "2004-06": "83.18",
    "2004-07": "83.00",
    "2004-08": "83.17",
    "2004-09": "83.26",
    "2004-10": "83.59",
    "2004-11": "83.53",
    "2004-12": "83.85",
    "2005-01": "83.32",
    "2005-02": "83.62",
    "2005-03": "84.25",
    "2005-04": "84.60",
    "2005-05": "84.78",
    "2005-06": "84.87",
    "2005-07": "84.78",
    "2005-08": "84.98",
    "2005-09": "85.42",
    "2005-10": "85.64",
    "2005-11": "85.45",
    "2005-12": "85.74",
    "2006-01": "85.35",
    "2006-02": "85.59",
    "2006-03": "86.09",
    "2006-04": "86.66",
    "2006-05": "86.89",
    "2006-06": "86.96",
    "2006-07": "86.85",
    "2006-08": "86.93",
    "2006-09": "86.93",
    "2006-10": "87.00",
    "2006-11": "87.03",
    "2006-12": "87.37",
    "2007-01": "86.92",
    "2007-02": "87.17",
    "2007-03": "87.75",
    "2007-04": "88.31",
    "2007-05": "88.52",
    "2007-06": "88.61",
    "2007-07": "88.39",
    "2007-08": "88.45",
    "2007-09": "88.78",
    "2007-10": "89.21",
    "2007-11": "89.69",
    "2007-12": "90.05",
    "2008-01": "89.70",
    "2008-02": "90.02",
    "2008-03": "90.90",
    "2008-04": "91.19",
    "2008-05": "91.76",
    "2008-06": "92.11",
    "2008-07": "91.97",
    "2008-08": "91.84",
    "2008-09": "92.01",
    "2008-10": "92.04",
    "2008-11": "91.59",
    "2008-12": "91.47",
    "2009-01": "90.71",
    "2009-02": "91.08",
    "2009-03": "91.42",
    "2009-04": "91.75",
    "2009-05": "91.80",
    "2009-06": "91.98",
    "2009-07": "91.38",
    "2009-08": "91.69",
    "2009-09": "91.71",
    "2009-10": "91.92",
    "2009-11": "92.03",
    "2009-12": "92.32",
    "2010-01": "91.57",
    "2010-02": "91.85",
    "2010-03": "92.87",
    "2010-04": "93.25",
    "2010-05": "93.35",
    "2010-06": "93.35",
    "2010-07": "92.95",
    "2010-08": "93.14",
    "2010-09": "93.43",
    "2010-10": "93.71",
    "2010-11": "93.79",
    "2010-12": "94.36",
    "2011-01": "93.68",
    "2011-02": "94.08",
    "2011-03": "95.35",
    "2011-04": "95.88",
    "2011-05": "95.89",
    "2011-06": "95.88",
    "2011-07": "95.33",
    "2011-08": "95.51",
    "2011-09": "96.21",
    "2011-10": "96.55",
    "2011-11": "96.63",
    "2011-12": "96.96",
    "2012-01": "96.17",
    "2012-02": "96.65",
    "2012-03": "97.90",
    "2012-04": "98.36",
    "2012-05": "98.22",
    "2012-06": "98.15",
    "2012-07": "97.63",
    "2012-08": "98.01",
    "2012-09": "98.72",
    "2012-10": "98.95",
    "2012-11": "98.76",
    "2012-12": "99.11",
    "2013-01": "98.08",
    "2013-02": "98.44",
    "2013-03": "99.60",
    "2013-04": "99.51",
    "2013-05": "99.62",
    "2013-06": "99.73",
    "2013-07": "99.20",
    "2013-08": "99.32",
    "2013-09": "99.80",
    "2013-10": "99.68",
    "2013-11": "99.60",
    "2013-12": "99.95",
    "2014-01": "98.83",
    "2014-02": "99.14",
    "2014-03": "100.07",
    "2014-04": "100.22",
    "2014-05": "100.11",
    "2014-06": "100.22",
    "2014-07": "99.57",
    "2014-08": "99.68",
    "2014-09": "100.12",
    "2014-10": "100.06",
    "2014-11": "99.88",
    "2014-12": "99.78",
    "2015-01": "98.24",
    "2015-02": "98.85",
    "2015-03": "100.00",
    "2015-04": "100.43",
    "2015-05": "100.71",
    "2015-06": "100.72",
    "2015-07": "100.11",
    "2015-08": "100.12",
    "2015-09": "100.32",
    "2015-10": "100.45",
    "2015-11": "100.01",
    "2015-12": "100.03",
    "2016-01": "98.56",
    "2016-02": "98.73",
    "2016-03": "99.96",
    "2016-04": "100.17",
    "2016-05": "100.59",
    "2016-06": "100.77",
    "2016-07": "100.28",
    "2016-08": "100.34",
    "2016-09": "100.72",
    "2016-10": "100.96",
    "2016-11": "100.60",
    "2016-12": "101.13",
    "2017-01": "100.26",
    "2017-02": "100.66",
    "2017-03": "101.49",
    "2017-04": "102.07",
    "2017-05": "101.98",
    "2017-06": "102.08",
    "2017-07": "101.62",
    "2017-08": "101.89",
    "2017-09": "102.29",
    "2017-10": "102.34",
    "2017-11": "102.14",
    "2017-12": "102.49",
    "2018-01": "101.56",
    "2018-02": "101.78",
    "2018-03": "102.91",
    "2018-04": "103.32",
    "2018-05": "103.97",
    "2018-06": "104.09",
    "2018-07": "103.85",
    "2018-08": "104.01",
    "2018-09": "104.42",
    "2018-10": "104.68",
    "2018-11": "104.10",
    "2018-12": "104.05",
    "2019-01": "102.97",
    "2019-02": "103.30",
    "2019-03": "104.35",
    "2019-04": "105.10",
    "2019-05": "105.24",
    "2019-06": "105.41",
    "2019-07": "104.91",
    "2019-08": "105.06",
    "2019-09": "105.29",
    "2019-10": "105.44",
    "2019-11": "105.10",
    "2019-12": "105.43",
    "2020-01": "104.37",
    "2020-02": "104.56",
    "2020-03": "105.13",
    "2020-04": "105.43",
    "2020-05": "105.33",
    "2020-06": "105.69",
    "2020-07": "105.32",
    "2020-08": "104.88",
    "2020-09": "104.96",
    "2020-10": "105.15",
    "2020-11": "104.80",
    "2020-12": "105.15",
    "2021-01": "105.32",
    "2021-02": "105.54",
    "2021-03": "106.53",
    "2021-04": "107.14",
    "2021-05": "107.42",
    "2021-06": "107.70",
    "2021-07": "107.60",
    "2021-08": "107.98",
    "2021-09": "108.49",
    "2021-10": "109.41",
    "2021-11": "109.90",
    "2021-12": "110.37",
    "2022-01": "110.70",
    "2022-02": "111.74",
    "2022-03": "114.46",
    "2022-04": "115.11",
    "2022-05": "116.07",
    "2022-06": "117.01",
    "2022-07": "117.14",
    "2022-08": "117.85",
    "2022-09": "119.26",
    "2022-10": "121.03",
    "2022-11": "120.95",
    "2022-12": "120.52",
    "2023-01": "120.27",
    "2023-02": "121.24",
    "2023-03": "122.34",
    "2023-04": "123.12",
    "2023-05": "123.15",
    "2023-06": "123.47",
    "2023-07": "123.36",
    "2023-08": "124.03",
    "2023-09": "124.43",
    "2023-10": "124.54",
    "2023-11": "123.85",
    "2023-12": "124.05",
    "2024-01": "123.60",
    "2024-02": "124.37",
    "2024-03": "125.31",
    "2024-04": "126.04",
    "2024-05": "126.31",
    "2024-06": "126.58",
    "2024-07": "126.54",
    "2024-08": "126.72",
    "2024-09": "126.60",
    "2024-10": "127.03",
    "2024-11": "126.62",
    "2024-12": "127.07",
    "2025-01": "126.72",
    "2025-02": "127.26",
    "2025-03": "128.04",
    "2025-04": "128.77",
    "2025-05": "128.70",
    "2025-06": "129.09",
    "2025-07": "129.12",
    "2025-08": "129.31",
    "2025-09": "129.42",
    "2025-10": "129.70",
    "2025-11": "129.33",
    "2025-12": "129.56"
   }
  },
  "es_ipc": {
   "title": "Spain, IPC (índice de precios de consumo), national general index",
   "agency": "Instituto Nacional de Estadística (INE)",
   "series_id": "IPC290751",
   "base": "2025=100",
   "currency": "EUR",
   "source_url": "https://servicios.ine.es/wstempus/js/ES/DATOS_SERIE/IPC290751?nult=5000",
   "annual_method": "mean of the twelve monthly indexes, rounded to 3 decimals (complete years only)",
   "fetched": "2026-10-18",
   "annual": {
    "2002": "60.036",
    "2003": "61.861",
    "2004": "63.741",
    "2005": "65.888",
    "2006": "68.205",
    "2007": "70.105",
    "2008": "72.962",
    "2009": "72.752",
    "2010": "74.062",
    "2011": "76.429",
    "2012": "78.298",
    "2013": "79.401",
    "2014": "79.281",
    "2015": "78.885",
    "2016": "78.725",
    "2017": "80.265",
    "2018": "81.609",
    "2019": "82.180",
    "2020": "81.915",
    "2021": "84.449",
    "2022": "91.534",
    "2023": "94.768",
    "2024": "97.396",
    "2025": "100.000"
   },
   "monthly": {
    "2002-01": "58.717",
    "2002-02": "58.768",
    "2002-03": "59.253",
    "2002-04": "60.058",
    "2002-05": "60.274",
    "2002-06": "60.277",
    "2002-07": "59.858",
    "2002-08": "60.03",
    "2002-09": "60.255",
    "2002-10": "60.851",
    "2002-11": "60.946",
    "2002-12": "61.148",
    "2003-01": "60.896",
    "2003-02": "61.026",
    "2003-03": "61.449",
    "2003-04": "61.949",
    "2003-05": "61.892",
    "2003-06": "61.933",
    "2003-07": "61.545",
    "2003-08": "61.827",
    "2003-09": "62.011",
    "2003-10": "62.429",
    "2003-11": "62.633",
    "2003-12": "62.74",
    "2004-01": "62.3",
    "2004-02": "62.329",
    "2004-03": "62.764",
    "2004-04": "63.623",
    "2004-05": "63.999",
    "2004-06": "64.1",
    "2004-07": "63.614",
    "2004-08": "63.895",
    "2004-09": "64.009",
    "2004-10": "64.667",
    "2004-11": "64.828",
    "2004-12": "64.765",
    "2005-01": "64.219",
    "2005-02": "64.386",
    "2005-03": "64.895",
    "2005-04": "65.83",
    "2005-05": "65.956",
    "2005-06": "66.11",
    "2005-07": "65.705",
    "2005-08": "65.994",
    "2005-09": "66.399",
    "2005-10": "66.939",
    "2005-11": "67.04",
    "2005-12": "67.184",
    "2006-01": "66.912",
    "2006-02": "66.944",
    "2006-03": "67.418",
    "2006-04": "68.369",
    "2006-05": "68.615",
    "2006-06": "68.719",
    "2006-07": "68.31",
    "2006-08": "68.45",
    "2006-09": "68.337",
    "2006-10": "68.618",
    "2006-11": "68.787",
    "2006-12": "68.976",
    "2007-01": "68.512",
    "2007-02": "68.559",
    "2007-03": "69.079",
    "2007-04": "70.033",
    "2007-05": "70.225",
    "2007-06": "70.354",
    "2007-07": "69.843",
    "2007-08": "69.938",
    "2007-09": "70.168",
    "2007-10": "71.077",
    "2007-11": "71.587",
    "2007-12": "71.887",
    "2008-01": "71.442",
    "2008-02": "71.553",
    "2008-03": "72.188",
    "2008-04": "72.965",
    "2008-05": "73.458",
    "2008-06": "73.881",
    "2008-07": "73.526",
    "2008-08": "73.368",
    "2008-09": "73.353",
    "2008-10": "73.605",
    "2008-11": "73.293",
    "2008-12": "72.917",
    "2009-01": "72.018",
    "2009-02": "72.026",
    "2009-03": "72.144",
    "2009-04": "72.849",
    "2009-05": "72.823",
    "2009-06": "73.144",
    "2009-07": "72.52",
    "2009-08": "72.773",
    "2009-09": "72.601",
    "2009-10": "73.119",
    "2009-11": "73.515",
    "2009-12": "73.496",
    "2010-01": "72.759",
    "2010-02": "72.627",
    "2010-03": "73.165",
    "2010-04": "73.944",
    "2010-05": "74.109",
    "2010-06": "74.241",
    "2010-07": "73.909",
    "2010-08": "74.095",
    "2010-09": "74.146",
    "2010-10": "74.824",
    "2010-11": "75.23",
    "2010-12": "75.692",
    "2011-01": "75.138",
    "2011-02": "75.234",
    "2011-03": "75.796",
    "2011-04": "76.739",
    "2011-05": "76.714",
    "2011-06": "76.606",
    "2011-07": "76.194",
    "2011-08": "76.289",
    "2011-09": "76.475",
    "2011-10": "77.078",
    "2011-11": "77.391",
    "2011-12": "77.492",
    "2012-01": "76.639",
    "2012-02": "76.719",
    "2012-03": "77.235",
    "2012-04": "78.32",
    "2012-05": "78.204",
    "2012-06": "78.058",
    "2012-07": "77.876",
    "2012-08": "78.314",
    "2012-09": "79.085",
    "2012-10": "79.757",
    "2012-11": "79.658",
    "2012-12": "79.714",
    "2013-01": "78.695",
    "2013-02": "78.832",
    "2013-03": "79.109",
    "2013-04": "79.405",
    "2013-05": "79.551",
    "2013-06": "79.669",
    "2013-07": "79.258",
    "2013-08": "79.504",
    "2013-09": "79.355",
    "2013-10": "79.678",
    "2013-11": "79.844",
    "2013-12": "79.915",
    "2014-01": "78.852",
    "2014-02": "78.818",
    "2014-03": "78.994",
    "2014-04": "79.697",
    "2014-05": "79.715",
    "2014-06": "79.737",
    "2014-07": "78.987",
    "2014-08": "79.112",
    "2014-09": "79.233",
    "2014-10": "79.602",
    "2014-11": "79.547",
    "2014-12": "79.083",
    "2015-01": "77.812",
    "2015-02": "77.972",
    "2015-03": "78.47",
    "2015-04": "79.191",
    "2015-05": "79.569",
    "2015-06": "79.782",
    "2015-07": "79.041",
    "2015-08": "78.779",
    "2015-09": "78.536",
    "2015-10": "79.039",
    "2015-11": "79.329",
    "2015-12": "79.097",
    "2016-01": "77.588",
    "2016-02": "77.314",
    "2016-03": "77.81",
    "2016-04": "78.355",
    "2016-05": "78.783",
    "2016-06": "79.148",
    "2016-07": "78.572",
    "2016-08": "78.673",
    "2016-09": "78.677",
    "2016-10": "79.576",
    "2016-11": "79.864",
    "2016-12": "80.338",
    "2017-01": "79.896",
    "2017-02": "79.608",
    "2017-03": "79.592",
    "2017-04": "80.356",
    "2017-05": "80.308",
    "2017-06": "80.343",
    "2017-07": "79.788",
    "2017-08": "79.947",
    "2017-09": "80.086",
    "2017-10": "80.825",
    "2017-11": "81.194",
    "2017-12": "81.231",
    "2018-01": "80.355",
    "2018-02": "80.463",
    "2018-03": "80.558",
    "2018-04": "81.224",
    "2018-05": "81.956",
    "2018-06": "82.17",
    "2018-07": "81.581",
    "2018-08": "81.697",
    "2018-09": "81.897",
    "2018-10": "82.654",
    "2018-11": "82.563",
    "2018-12": "82.193",
    "2019-01": "81.142",
    "2019-02": "81.34",
    "2019-03": "81.636",
    "2019-04": "82.459",
    "2019-05": "82.619",
    "2019-06": "82.522",
    "2019-07": "82.011",
    "2019-08": "81.965",
    "2019-09": "81.965",
    "2019-10": "82.76",
    "2019-11": "82.9",
    "2019-12": "82.84",
    "2020-01": "82.032",
    "2020-02": "81.935",
    "2020-03": "81.621",
    "2020-04": "81.868",
    "2020-05": "81.863",
    "2020-06": "82.24",
    "2020-07": "81.502",
    "2020-08": "81.54",
    "2020-09": "81.662",
    "2020-10": "82.09",
    "2020-11": "82.225",
    "2020-12": "82.4",
    "2021-01": "82.407",
    "2021-02": "81.922",
    "2021-03": "82.716",
    "2021-04": "83.693",
    "2021-05": "84.087",
    "2021-06": "84.487",
    "2021-07": "83.85",
    "2021-08": "84.232",
    "2021-09": "84.934",
    "2021-10": "86.496",
    "2021-11": "86.761",
    "2021-12": "87.797",
    "2022-01": "87.46",
    "2022-02": "88.167",
    "2022-03": "90.837",
    "2022-04": "90.676",
    "2022-05": "91.426",
    "2022-06": "93.118",
    "2022-07": "92.881",
    "2022-08": "93.117",
    "2022-09": "92.47",
    "2022-10": "92.78",
    "2022-11": "92.669",
    "2022-12": "92.808",
    "2023-01": "92.613",
    "2023-02": "93.487",
    "2023-03": "93.831",
    "2023-04": "94.39",
    "2023-05": "94.345",
    "2023-06": "94.881",
    "2023-07": "95.042",
    "2023-08": "95.552",
    "2023-09": "95.721",
    "2023-10": "95.998",
    "2023-11": "95.663",
    "2023-12": "95.687",
    "2024-01": "95.768",
    "2024-02": "96.108",
    "2024-03": "96.84",
    "2024-04": "97.514",
    "2024-05": "97.771",
    "2024-06": "98.139",
    "2024-07": "97.673",
    "2024-08": "97.713",
    "2024-09": "97.123",
    "2024-10": "97.729",
    "2024-11": "97.968",
    "2024-12": "98.411",
    "2025-01": "98.579",
    "2025-02": "98.966",
    "2025-03": "99.024",
    "2025-04": "99.647",
    "2025-05": "99.714",
    "2025-06": "100.382",
    "2025-07": "100.305",
    "2025-08": "100.345",
    "2025-09": "100.059",
    "2025-10": "100.748",
    "2025-11": "100.943",
    "2025-12": "101.289",
    "2026-01": "100.836",
    "2026-02": "101.261",
    "2026-03": "102.44",
    "2026-04": "102.883",
    "2026-05": "102.951",
    "2026-06": "103.598",
    "2026-07": "103.899",
    "2026-08": "104.638",
    "2026-09": "104.978"
   }
  }
 },
 "not_fetched": {}
}
inflation_adjust.py · sha256 dc807553fad24879b8c4c81ed8cd5c6733814b8ea7dbd8846a9d430a1f074d10
#!/usr/bin/env python3
"""Adjust an amount for inflation between two years or two months with a consumer price index:
amount x index(to) / index(from). Bundled series (cpi.json, fetched from BLS, Eurostat and INE
by tools/catalog/data/inflation_adjust.py; each answer names the source and the fetch date)
or any index given in the input. Decimal arithmetic, cents rounded half up.

Input (JSON on stdin):
  amount       number or decimal string
  from, to     a year (2020 or "2020") or a month ("2020-06"); both of the same kind
  series       "us_cpi_u" | "ea_hicp" | "es_ipc"                                or
  index        {"2020": 100, "2021": 103.2, ...}   your own index, keyed by year or "YYYY-MM"
  list_series  true: only list the bundled series and the periods they cover
"""
import json
import pathlib
import re
import sys
from decimal import ROUND_HALF_UP, Decimal, InvalidOperation, getcontext

getcontext().prec = 40
META = ("title", "agency", "series_id", "base", "currency", "source_url", "annual_method", "fetched", "dataset_updated")


def fail(message):
    print(json.dumps({"error": message}))
    sys.exit(2)


def dec(value, field, positive=False):
    if isinstance(value, bool) or not isinstance(value, (int, float, str)):
        fail(f"{field} must be a number or a decimal string")
    try:
        number = Decimal(str(value).strip())
    except InvalidOperation:
        fail(f"{field} must be a number or a decimal string")
    if not number.is_finite() or (positive and number <= 0):
        fail(f"{field} must be a {'positive' if positive else 'finite'} number")
    return number


def period(value, field):
    if isinstance(value, int) and not isinstance(value, bool):
        value = str(value)
    if not isinstance(value, str):
        fail(f"{field} must be a year (2020) or a month (\"2020-06\")")
    value = value.strip()
    if re.fullmatch(r"\d{4}", value):
        return value, "annual"
    match = re.fullmatch(r"(\d{4})-(\d{1,2})", value)
    if match and 1 <= int(match.group(2)) <= 12:
        return f"{match.group(1)}-{int(match.group(2)):02d}", "monthly"
    fail(f"{field} must be a year (2020) or a month (\"2020-06\")")


def years_between(a, b, kind):
    if kind == "annual":
        return Decimal(int(b) - int(a))
    months = (int(b[:4]) * 12 + int(b[5:])) - (int(a[:4]) * 12 + int(a[5:]))
    return Decimal(months) / 12


def main():
    try:
        request = json.load(sys.stdin)
    except ValueError as error:
        fail(f"stdin is not JSON: {error}")
    if not isinstance(request, dict):
        fail("input must be a JSON object")
    known = {"amount", "from", "to", "series", "index", "list_series"}
    extra = sorted(set(request) - known)
    if extra:
        fail(f"unknown field: {extra[0]}")
    data = json.loads((pathlib.Path(__file__).parent / "cpi.json").read_text())
    bundled = data["series"]
    if request.get("list_series"):
        listing = {}
        for name, s in bundled.items():
            item = {k: s[k] for k in META if k in s}
            annual, monthly = list(s["annual"]), list(s["monthly"])
            item["years"] = f"{annual[0]}-{annual[-1]}" if annual else None
            item["months"] = f"{monthly[0]} to {monthly[-1]}" if monthly else None
            listing[name] = item
        print(json.dumps({"series": listing, "not_fetched": data.get("not_fetched", {}), "generated": data["generated"]}))
        return
    if "amount" not in request:
        fail("amount is required")
    amount = dec(request["amount"], "amount")
    start, kind = period(request.get("from"), "from")
    end, kind_to = period(request.get("to"), "to")
    if kind != kind_to:
        fail("from and to must both be years or both be months")
    if ("series" in request) == ("index" in request):
        fail("give either series (a bundled one) or index (your own values)")
    if "series" in request:
        name = request["series"]
        if name not in bundled:
            missing = data.get("not_fetched", {})
            why = f" (not bundled: {missing[name]})" if name in missing else ""
            fail(f"unknown series {name!r}{why}; bundled: {', '.join(bundled)}")
        chosen = bundled[name]
        table = chosen[kind]
        meta = {k: chosen[k] for k in META if k in chosen}
        meta["generated_by"] = data["generator"]
    else:
        raw = request["index"]
        if not isinstance(raw, dict) or not raw:
            fail("index must be an object of period: value")
        table = {}
        for key, value in raw.items():
            norm, key_kind = period(key, f"index key {key!r}")
            if key_kind != kind:
                fail(f"index key {key!r} is not of the same kind as from and to")
            table[norm] = dec(value, f"index[{key!r}]", positive=True)
        name, meta = "given in the input", {"title": "index given in the input"}
    for label, key in (("from", start), ("to", end)):
        if key not in table:
            have = list(table)
            if have and min(have) <= key <= max(have):
                fail(f"{label} {key} is not in the {kind} series {name}: the agency published no value for it")
            span = f"{min(have)} to {max(have)}" if have else "none"
            fail(f"{label} {key} is not in the {kind} series {name} (available: {span})")
    first, last = Decimal(str(table[start])), Decimal(str(table[end]))
    if first <= 0 or last <= 0:
        fail("index values must be positive")
    factor = last / first
    result = {
        "amount": format(amount, "f"), "from": start, "to": end, "frequency": kind, "series": name,
        "from_index": format(first, "f"), "to_index": format(last, "f"),
        "factor": format(factor.quantize(Decimal("0.000001"), ROUND_HALF_UP), "f"),
        "adjusted_amount": format((amount * factor).quantize(Decimal("0.01"), ROUND_HALF_UP), "f"),
        "cumulative_inflation_pct": format(((factor - 1) * 100).quantize(Decimal("0.01"), ROUND_HALF_UP), "f"),
    }
    span = years_between(start, end, kind)
    if span != 0:
        rate = (factor.ln() / span).exp() - 1
        result["annualised_inflation_pct"] = format((rate * 100).quantize(Decimal("0.01"), ROUND_HALF_UP), "f")
    result["years"] = format(span.quantize(Decimal("0.01")) if kind == "monthly" else span, "f")
    result["source"] = meta
    print(json.dumps(result, ensure_ascii=False))


if __name__ == "__main__":
    try:
        main()
    except ArithmeticError:
        fail("the numbers are out of the range this tool can compute")

Where it is served

The registry serves only AXLR clients, so a browser gets 403; fetch with a User-Agent that starts with axlr:

curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/inflation_adjust/1.0.0/manifest.json
curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/inflation_adjust/1.0.0/cpi.json
curl -A axlr-docs/1.0 -O https://registry.underpassai.com/tools/inflation_adjust/1.0.0/inflation_adjust.py