timeprice 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +52 -0
  3. data/DATA_LICENSES.md +16 -1
  4. data/README.md +29 -5
  5. data/data/cpi/eu.json +406 -403
  6. data/data/cpi/jp.json +78 -75
  7. data/data/cpi/uk.json +513 -510
  8. data/data/cpi/us.json +488 -485
  9. data/data/cpi/vn.json +342 -339
  10. data/data/fx/usd/1999.json +23 -7
  11. data/data/fx/usd/2000.json +23 -7
  12. data/data/fx/usd/2001.json +23 -7
  13. data/data/fx/usd/2002.json +23 -7
  14. data/data/fx/usd/2003.json +23 -7
  15. data/data/fx/usd/2004.json +23 -7
  16. data/data/fx/usd/2005.json +23 -7
  17. data/data/fx/usd/2006.json +23 -7
  18. data/data/fx/usd/2007.json +23 -7
  19. data/data/fx/usd/2008.json +23 -7
  20. data/data/fx/usd/2009.json +23 -7
  21. data/data/fx/usd/2010.json +23 -7
  22. data/data/fx/usd/2011.json +23 -7
  23. data/data/fx/usd/2012.json +23 -7
  24. data/data/fx/usd/2013.json +23 -7
  25. data/data/fx/usd/2014.json +23 -7
  26. data/data/fx/usd/2015.json +23 -7
  27. data/data/fx/usd/2016.json +23 -7
  28. data/data/fx/usd/2017.json +23 -7
  29. data/data/fx/usd/2018.json +23 -7
  30. data/data/fx/usd/2019.json +23 -7
  31. data/data/fx/usd/2020.json +23 -7
  32. data/data/fx/usd/2021.json +23 -7
  33. data/data/fx/usd/2022.json +23 -7
  34. data/data/fx/usd/2023.json +23 -7
  35. data/data/fx/usd/2024.json +23 -7
  36. data/data/fx/usd/2025.json +24 -5
  37. data/data/fx/usd/2026.json +24 -5
  38. data/data/fx/usd/_annual.json +145 -0
  39. data/data/manifest.json +90 -0
  40. data/lib/timeprice/cli.rb +3 -3
  41. data/lib/timeprice/compare.rb +1 -1
  42. data/lib/timeprice/cpi_lookup.rb +64 -18
  43. data/lib/timeprice/data_loader.rb +47 -8
  44. data/lib/timeprice/errors.rb +4 -4
  45. data/lib/timeprice/exchange.rb +8 -8
  46. data/lib/timeprice/granularity.rb +41 -10
  47. data/lib/timeprice/inflation.rb +5 -5
  48. data/lib/timeprice/sources/coverage.rb +27 -32
  49. data/lib/timeprice/supported.rb +39 -22
  50. data/lib/timeprice/version.rb +1 -1
  51. data/lib/timeprice.rb +2 -2
  52. metadata +3 -15
  53. data/data/fx/usd/1983.json +0 -11
  54. data/data/fx/usd/1986.json +0 -11
  55. data/data/fx/usd/1987.json +0 -11
  56. data/data/fx/usd/1988.json +0 -11
  57. data/data/fx/usd/1989.json +0 -11
  58. data/data/fx/usd/1990.json +0 -11
  59. data/data/fx/usd/1991.json +0 -11
  60. data/data/fx/usd/1992.json +0 -11
  61. data/data/fx/usd/1993.json +0 -11
  62. data/data/fx/usd/1994.json +0 -11
  63. data/data/fx/usd/1995.json +0 -11
  64. data/data/fx/usd/1996.json +0 -11
  65. data/data/fx/usd/1997.json +0 -11
  66. data/data/fx/usd/1998.json +0 -11
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2015,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2015-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2015-12-31"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2015-01-02": {
9
26
  "EUR": 0.83036,
@@ -1286,7 +1303,6 @@
1286
1303
  "JPY": 120.39
1287
1304
  }
1288
1305
  },
1289
- "annual": {
1290
- "VND": 21697.57
1291
- }
1306
+ "schema_version": 4,
1307
+ "year": 2015
1292
1308
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2016,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2016-01-04",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2016-12-30"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2016-01-04": {
9
26
  "EUR": 0.9176,
@@ -1291,7 +1308,6 @@
1291
1308
  "JPY": 117.07
1292
1309
  }
1293
1310
  },
1294
- "annual": {
1295
- "VND": 21935.0
1296
- }
1311
+ "schema_version": 4,
1312
+ "year": 2016
1297
1313
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2017,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2017-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2017-12-29"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2017-01-02": {
9
26
  "EUR": 0.95557,
@@ -1281,7 +1298,6 @@
1281
1298
  "JPY": 112.57
1282
1299
  }
1283
1300
  },
1284
- "annual": {
1285
- "VND": 22370.09
1286
- }
1301
+ "schema_version": 4,
1302
+ "year": 2017
1287
1303
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2018,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2018-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2018-12-31"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2018-01-02": {
9
26
  "EUR": 0.82884,
@@ -1281,7 +1298,6 @@
1281
1298
  "JPY": 109.91
1282
1299
  }
1283
1300
  },
1284
- "annual": {
1285
- "VND": 22602.05
1286
- }
1301
+ "schema_version": 4,
1302
+ "year": 2018
1287
1303
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2019,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2019-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2019-12-31"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2019-01-02": {
9
26
  "EUR": 0.87742,
@@ -1281,7 +1298,6 @@
1281
1298
  "JPY": 108.55
1282
1299
  }
1283
1300
  },
1284
- "annual": {
1285
- "VND": 23050.24
1286
- }
1301
+ "schema_version": 4,
1302
+ "year": 2019
1287
1303
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2020,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2020-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2020-12-31"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2020-01-02": {
9
26
  "EUR": 0.89342,
@@ -1291,7 +1308,6 @@
1291
1308
  "JPY": 103.08
1292
1309
  }
1293
1310
  },
1294
- "annual": {
1295
- "VND": 23208.37
1296
- }
1311
+ "schema_version": 4,
1312
+ "year": 2020
1297
1313
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2021,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2021-01-04",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2021-12-31"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2021-01-04": {
9
26
  "EUR": 0.81327,
@@ -1296,7 +1313,6 @@
1296
1313
  "JPY": 115.12
1297
1314
  }
1298
1315
  },
1299
- "annual": {
1300
- "VND": 23159.78
1301
- }
1316
+ "schema_version": 4,
1317
+ "year": 2021
1302
1318
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2022,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2022-01-03",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2022-12-30"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2022-01-03": {
9
26
  "EUR": 0.88067,
@@ -1291,7 +1308,6 @@
1291
1308
  "JPY": 131.88
1292
1309
  }
1293
1310
  },
1294
- "annual": {
1295
- "VND": 23271.21
1296
- }
1311
+ "schema_version": 4,
1312
+ "year": 2022
1297
1313
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2023,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2023-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2023-12-29"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2023-01-02": {
9
26
  "EUR": 0.93607,
@@ -1281,7 +1298,6 @@
1281
1298
  "JPY": 141.48
1282
1299
  }
1283
1300
  },
1284
- "annual": {
1285
- "VND": 23787.32
1286
- }
1301
+ "schema_version": 4,
1302
+ "year": 2023
1287
1303
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2024,
5
- "source": "Frankfurter (ECB) for EUR/GBP/JPY (daily); World Bank PA.NUS.FCRF for VND (annual)",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2024-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2024-12-31"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2024-01-02": {
9
26
  "EUR": 0.91274,
@@ -1286,7 +1303,6 @@
1286
1303
  "JPY": 156.95
1287
1304
  }
1288
1305
  },
1289
- "annual": {
1290
- "VND": 24164.89
1291
- }
1306
+ "schema_version": 4,
1307
+ "year": 2024
1292
1308
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2025,
5
- "source": "Frankfurter (ECB) — daily reference rates",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2025-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2025-12-31"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2025-01-02": {
9
26
  "EUR": 0.9689,
@@ -1280,5 +1297,7 @@
1280
1297
  "GBP": 0.74264,
1281
1298
  "JPY": 156.67
1282
1299
  }
1283
- }
1300
+ },
1301
+ "schema_version": 4,
1302
+ "year": 2025
1284
1303
  }
@@ -1,9 +1,26 @@
1
1
  {
2
- "schema_version": 2,
3
2
  "base": "USD",
4
- "year": 2026,
5
- "source": "Frankfurter (ECB) — daily reference rates",
6
- "updated_at": "2026-05-11",
3
+ "provenance": [
4
+ {
5
+ "currencies": [
6
+ "EUR",
7
+ "GBP",
8
+ "JPY"
9
+ ],
10
+ "from": "2026-01-02",
11
+ "provider": "frankfurter",
12
+ "series": "daily",
13
+ "to": "2026-05-08"
14
+ }
15
+ ],
16
+ "providers": [
17
+ {
18
+ "fetched_at": "2026-05-11",
19
+ "id": "frankfurter",
20
+ "label": "Frankfurter (ECB) daily reference rates",
21
+ "status": "ok"
22
+ }
23
+ ],
7
24
  "rates": {
8
25
  "2026-01-02": {
9
26
  "EUR": 0.85317,
@@ -445,5 +462,7 @@
445
462
  "GBP": 0.73472,
446
463
  "JPY": 156.76
447
464
  }
448
- }
465
+ },
466
+ "schema_version": 4,
467
+ "year": 2026
449
468
  }
@@ -0,0 +1,145 @@
1
+ {
2
+ "annual": {
3
+ "1983": {
4
+ "VND": 1.0
5
+ },
6
+ "1986": {
7
+ "VND": 22.94
8
+ },
9
+ "1987": {
10
+ "VND": 78.95
11
+ },
12
+ "1988": {
13
+ "VND": 611.65
14
+ },
15
+ "1989": {
16
+ "VND": 4501.69
17
+ },
18
+ "1990": {
19
+ "VND": 6537.6
20
+ },
21
+ "1991": {
22
+ "VND": 10121.89
23
+ },
24
+ "1992": {
25
+ "VND": 11202.19
26
+ },
27
+ "1993": {
28
+ "VND": 10640.96
29
+ },
30
+ "1994": {
31
+ "VND": 10965.67
32
+ },
33
+ "1995": {
34
+ "VND": 11038.25
35
+ },
36
+ "1996": {
37
+ "VND": 11032.58
38
+ },
39
+ "1997": {
40
+ "VND": 11683.33
41
+ },
42
+ "1998": {
43
+ "VND": 13268.0
44
+ },
45
+ "1999": {
46
+ "VND": 13943.17
47
+ },
48
+ "2000": {
49
+ "VND": 14167.75
50
+ },
51
+ "2001": {
52
+ "VND": 14725.17
53
+ },
54
+ "2002": {
55
+ "VND": 15279.5
56
+ },
57
+ "2003": {
58
+ "VND": 15509.58
59
+ },
60
+ "2004": {
61
+ "VND": 15746.0
62
+ },
63
+ "2005": {
64
+ "VND": 15858.92
65
+ },
66
+ "2006": {
67
+ "VND": 15994.25
68
+ },
69
+ "2007": {
70
+ "VND": 16105.13
71
+ },
72
+ "2008": {
73
+ "VND": 16302.25
74
+ },
75
+ "2009": {
76
+ "VND": 17065.08
77
+ },
78
+ "2010": {
79
+ "VND": 18612.92
80
+ },
81
+ "2011": {
82
+ "VND": 20509.75
83
+ },
84
+ "2012": {
85
+ "VND": 20828.0
86
+ },
87
+ "2013": {
88
+ "VND": 20933.42
89
+ },
90
+ "2014": {
91
+ "VND": 21148.0
92
+ },
93
+ "2015": {
94
+ "VND": 21697.57
95
+ },
96
+ "2016": {
97
+ "VND": 21935.0
98
+ },
99
+ "2017": {
100
+ "VND": 22370.09
101
+ },
102
+ "2018": {
103
+ "VND": 22602.05
104
+ },
105
+ "2019": {
106
+ "VND": 23050.24
107
+ },
108
+ "2020": {
109
+ "VND": 23208.37
110
+ },
111
+ "2021": {
112
+ "VND": 23159.78
113
+ },
114
+ "2022": {
115
+ "VND": 23271.21
116
+ },
117
+ "2023": {
118
+ "VND": 23787.32
119
+ },
120
+ "2024": {
121
+ "VND": 24164.89
122
+ }
123
+ },
124
+ "base": "USD",
125
+ "provenance": [
126
+ {
127
+ "currencies": [
128
+ "VND"
129
+ ],
130
+ "from": "1983",
131
+ "provider": "world_bank",
132
+ "series": "annual",
133
+ "to": "2024"
134
+ }
135
+ ],
136
+ "providers": [
137
+ {
138
+ "fetched_at": "2026-05-11",
139
+ "id": "world_bank",
140
+ "label": "World Bank PA.NUS.FCRF",
141
+ "status": "ok"
142
+ }
143
+ ],
144
+ "schema_version": 4
145
+ }