diff --git a/.gitignore b/.gitignore index e43b0f98..68fc6918 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ .DS_Store +/build diff --git a/Makefile b/Makefile index 3ecbd8d6..876254f2 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ -JSONSCHEMA = jsonschema -SHELLCHECK = shellcheck -PYTHON = python3 +JSONSCHEMA ?= jsonschema +SHELLCHECK ?= shellcheck +PYTHON ?= python3 # TODO: Extend `validate` to take a directory as argument SCHEMAS = $(shell find schemas/ -type f -name '*.json') @@ -9,7 +9,8 @@ TESTS = $(shell find test/ -type f -name '*.json') all: common test $(JSONSCHEMA) fmt schemas test meta --verbose -common: .always +.PHONY: common +common: $(JSONSCHEMA) metaschema schemas meta --verbose $(JSONSCHEMA) lint schemas meta --verbose $(JSONSCHEMA) validate meta/schemas.json --verbose $(SCHEMAS) @@ -17,22 +18,14 @@ common: .always $(SHELLCHECK) scripts/*.sh ./scripts/schemas-tests-mirror.sh +.PHONY: lint lint: common $(JSONSCHEMA) fmt schemas test meta --verbose --check -test: .always +.PHONY: test +test: $(JSONSCHEMA) test ./test -generate: .always - $(PYTHON) scripts/generate-iso-currency.py - -fetch: .always - $(PYTHON) scripts/fetch-xml.py \ - "https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/lists/list-one.xml" \ - > data/six-group-iso-currency.json - $(PYTHON) scripts/fetch-xml.py \ - "https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency/lists/list-three.xml" \ - > data/six-group-iso-currency-historical.json - - -.always: +.PHONY: external +include generate/iso/currency/include.mk +external: $(EXTERNAL) diff --git a/external/iso/currency/list-one.xml b/external/iso/currency/list-one.xml new file mode 100644 index 00000000..76e99cde --- /dev/null +++ b/external/iso/currency/list-one.xml @@ -0,0 +1,1956 @@ + + + + + AFGHANISTAN + Afghani + AFN + 971 + 2 + + + ÅLAND ISLANDS + Euro + EUR + 978 + 2 + + + ALBANIA + Lek + ALL + 008 + 2 + + + ALGERIA + Algerian Dinar + DZD + 012 + 2 + + + AMERICAN SAMOA + US Dollar + USD + 840 + 2 + + + ANDORRA + Euro + EUR + 978 + 2 + + + ANGOLA + Kwanza + AOA + 973 + 2 + + + ANGUILLA + East Caribbean Dollar + XCD + 951 + 2 + + + ANTARCTICA + No universal currency + + + ANTIGUA AND BARBUDA + East Caribbean Dollar + XCD + 951 + 2 + + + ARAB MONETARY FUND + Arab Accounting Dinar + XAD + 396 + 2 + + + ARGENTINA + Argentine Peso + ARS + 032 + 2 + + + ARMENIA + Armenian Dram + AMD + 051 + 2 + + + ARUBA + Aruban Florin + AWG + 533 + 2 + + + AUSTRALIA + Australian Dollar + AUD + 036 + 2 + + + AUSTRIA + Euro + EUR + 978 + 2 + + + AZERBAIJAN + Azerbaijan Manat + AZN + 944 + 2 + + + BAHAMAS (THE) + Bahamian Dollar + BSD + 044 + 2 + + + BAHRAIN + Bahraini Dinar + BHD + 048 + 3 + + + BANGLADESH + Taka + BDT + 050 + 2 + + + BARBADOS + Barbados Dollar + BBD + 052 + 2 + + + BELARUS + Belarusian Ruble + BYN + 933 + 2 + + + BELGIUM + Euro + EUR + 978 + 2 + + + BELIZE + Belize Dollar + BZD + 084 + 2 + + + BENIN + CFA Franc BCEAO + XOF + 952 + 0 + + + BERMUDA + Bermudian Dollar + BMD + 060 + 2 + + + BHUTAN + Indian Rupee + INR + 356 + 2 + + + BHUTAN + Ngultrum + BTN + 064 + 2 + + + BOLIVIA (PLURINATIONAL STATE OF) + Boliviano + BOB + 068 + 2 + + + BOLIVIA (PLURINATIONAL STATE OF) + Mvdol + BOV + 984 + 2 + + + BONAIRE, SINT EUSTATIUS AND SABA + US Dollar + USD + 840 + 2 + + + BOSNIA AND HERZEGOVINA + Convertible Mark + BAM + 977 + 2 + + + BOTSWANA + Pula + BWP + 072 + 2 + + + BOUVET ISLAND + Norwegian Krone + NOK + 578 + 2 + + + BRAZIL + Brazilian Real + BRL + 986 + 2 + + + BRITISH INDIAN OCEAN TERRITORY (THE) + US Dollar + USD + 840 + 2 + + + BRUNEI DARUSSALAM + Brunei Dollar + BND + 096 + 2 + + + BULGARIA + Bulgarian Lev + BGN + 975 + 2 + + + BURKINA FASO + CFA Franc BCEAO + XOF + 952 + 0 + + + BURUNDI + Burundi Franc + BIF + 108 + 0 + + + CABO VERDE + Cabo Verde Escudo + CVE + 132 + 2 + + + CAMBODIA + Riel + KHR + 116 + 2 + + + CAMEROON + CFA Franc BEAC + XAF + 950 + 0 + + + CANADA + Canadian Dollar + CAD + 124 + 2 + + + CAYMAN ISLANDS (THE) + Cayman Islands Dollar + KYD + 136 + 2 + + + CENTRAL AFRICAN REPUBLIC (THE) + CFA Franc BEAC + XAF + 950 + 0 + + + CHAD + CFA Franc BEAC + XAF + 950 + 0 + + + CHILE + Chilean Peso + CLP + 152 + 0 + + + CHILE + Unidad de Fomento + CLF + 990 + 4 + + + CHINA + Yuan Renminbi + CNY + 156 + 2 + + + CHRISTMAS ISLAND + Australian Dollar + AUD + 036 + 2 + + + COCOS (KEELING) ISLANDS (THE) + Australian Dollar + AUD + 036 + 2 + + + COLOMBIA + Colombian Peso + COP + 170 + 2 + + + COLOMBIA + Unidad de Valor Real + COU + 970 + 2 + + + COMOROS (THE) + Comorian Franc + KMF + 174 + 0 + + + CONGO (THE DEMOCRATIC REPUBLIC OF THE) + Congolese Franc + CDF + 976 + 2 + + + CONGO (THE) + CFA Franc BEAC + XAF + 950 + 0 + + + COOK ISLANDS (THE) + New Zealand Dollar + NZD + 554 + 2 + + + COSTA RICA + Costa Rican Colon + CRC + 188 + 2 + + + CÔTE D'IVOIRE + CFA Franc BCEAO + XOF + 952 + 0 + + + CROATIA + Euro + EUR + 978 + 2 + + + CUBA + Cuban Peso + CUP + 192 + 2 + + + CURAÇAO + Caribbean Guilder + XCG + 532 + 2 + + + CYPRUS + Euro + EUR + 978 + 2 + + + CZECHIA + Czech Koruna + CZK + 203 + 2 + + + DENMARK + Danish Krone + DKK + 208 + 2 + + + DJIBOUTI + Djibouti Franc + DJF + 262 + 0 + + + DOMINICA + East Caribbean Dollar + XCD + 951 + 2 + + + DOMINICAN REPUBLIC (THE) + Dominican Peso + DOP + 214 + 2 + + + ECUADOR + US Dollar + USD + 840 + 2 + + + EGYPT + Egyptian Pound + EGP + 818 + 2 + + + EL SALVADOR + El Salvador Colon + SVC + 222 + 2 + + + EL SALVADOR + US Dollar + USD + 840 + 2 + + + EQUATORIAL GUINEA + CFA Franc BEAC + XAF + 950 + 0 + + + ERITREA + Nakfa + ERN + 232 + 2 + + + ESTONIA + Euro + EUR + 978 + 2 + + + ESWATINI + Lilangeni + SZL + 748 + 2 + + + ETHIOPIA + Ethiopian Birr + ETB + 230 + 2 + + + EUROPEAN UNION + Euro + EUR + 978 + 2 + + + FALKLAND ISLANDS (THE) [MALVINAS] + Falkland Islands Pound + FKP + 238 + 2 + + + FAROE ISLANDS (THE) + Danish Krone + DKK + 208 + 2 + + + FIJI + Fiji Dollar + FJD + 242 + 2 + + + FINLAND + Euro + EUR + 978 + 2 + + + FRANCE + Euro + EUR + 978 + 2 + + + FRENCH GUIANA + Euro + EUR + 978 + 2 + + + FRENCH POLYNESIA + CFP Franc + XPF + 953 + 0 + + + FRENCH SOUTHERN TERRITORIES (THE) + Euro + EUR + 978 + 2 + + + GABON + CFA Franc BEAC + XAF + 950 + 0 + + + GAMBIA (THE) + Dalasi + GMD + 270 + 2 + + + GEORGIA + Lari + GEL + 981 + 2 + + + GERMANY + Euro + EUR + 978 + 2 + + + GHANA + Ghana Cedi + GHS + 936 + 2 + + + GIBRALTAR + Gibraltar Pound + GIP + 292 + 2 + + + GREECE + Euro + EUR + 978 + 2 + + + GREENLAND + Danish Krone + DKK + 208 + 2 + + + GRENADA + East Caribbean Dollar + XCD + 951 + 2 + + + GUADELOUPE + Euro + EUR + 978 + 2 + + + GUAM + US Dollar + USD + 840 + 2 + + + GUATEMALA + Quetzal + GTQ + 320 + 2 + + + GUERNSEY + Pound Sterling + GBP + 826 + 2 + + + GUINEA + Guinean Franc + GNF + 324 + 0 + + + GUINEA-BISSAU + CFA Franc BCEAO + XOF + 952 + 0 + + + GUYANA + Guyana Dollar + GYD + 328 + 2 + + + HAITI + Gourde + HTG + 332 + 2 + + + HAITI + US Dollar + USD + 840 + 2 + + + HEARD ISLAND AND McDONALD ISLANDS + Australian Dollar + AUD + 036 + 2 + + + HOLY SEE (THE) + Euro + EUR + 978 + 2 + + + HONDURAS + Lempira + HNL + 340 + 2 + + + HONG KONG + Hong Kong Dollar + HKD + 344 + 2 + + + HUNGARY + Forint + HUF + 348 + 2 + + + ICELAND + Iceland Krona + ISK + 352 + 0 + + + INDIA + Indian Rupee + INR + 356 + 2 + + + INDONESIA + Rupiah + IDR + 360 + 2 + + + INTERNATIONAL MONETARY FUND (IMF)  + SDR (Special Drawing Right) + XDR + 960 + N.A. + + + IRAN (ISLAMIC REPUBLIC OF) + Iranian Rial + IRR + 364 + 2 + + + IRAQ + Iraqi Dinar + IQD + 368 + 3 + + + IRELAND + Euro + EUR + 978 + 2 + + + ISLE OF MAN + Pound Sterling + GBP + 826 + 2 + + + ISRAEL + New Israeli Sheqel + ILS + 376 + 2 + + + ITALY + Euro + EUR + 978 + 2 + + + JAMAICA + Jamaican Dollar + JMD + 388 + 2 + + + JAPAN + Yen + JPY + 392 + 0 + + + JERSEY + Pound Sterling + GBP + 826 + 2 + + + JORDAN + Jordanian Dinar + JOD + 400 + 3 + + + KAZAKHSTAN + Tenge + KZT + 398 + 2 + + + KENYA + Kenyan Shilling + KES + 404 + 2 + + + KIRIBATI + Australian Dollar + AUD + 036 + 2 + + + KOREA (THE DEMOCRATIC PEOPLE’S REPUBLIC OF) + North Korean Won + KPW + 408 + 2 + + + KOREA (THE REPUBLIC OF) + Won + KRW + 410 + 0 + + + KUWAIT + Kuwaiti Dinar + KWD + 414 + 3 + + + KYRGYZSTAN + Som + KGS + 417 + 2 + + + LAO PEOPLE’S DEMOCRATIC REPUBLIC (THE) + Lao Kip + LAK + 418 + 2 + + + LATVIA + Euro + EUR + 978 + 2 + + + LEBANON + Lebanese Pound + LBP + 422 + 2 + + + LESOTHO + Loti + LSL + 426 + 2 + + + LESOTHO + Rand + ZAR + 710 + 2 + + + LIBERIA + Liberian Dollar + LRD + 430 + 2 + + + LIBYA + Libyan Dinar + LYD + 434 + 3 + + + LIECHTENSTEIN + Swiss Franc + CHF + 756 + 2 + + + LITHUANIA + Euro + EUR + 978 + 2 + + + LUXEMBOURG + Euro + EUR + 978 + 2 + + + MACAO + Pataca + MOP + 446 + 2 + + + NORTH MACEDONIA + Denar + MKD + 807 + 2 + + + MADAGASCAR + Malagasy Ariary + MGA + 969 + 2 + + + MALAWI + Malawi Kwacha + MWK + 454 + 2 + + + MALAYSIA + Malaysian Ringgit + MYR + 458 + 2 + + + MALDIVES + Rufiyaa + MVR + 462 + 2 + + + MALI + CFA Franc BCEAO + XOF + 952 + 0 + + + MALTA + Euro + EUR + 978 + 2 + + + MARSHALL ISLANDS (THE) + US Dollar + USD + 840 + 2 + + + MARTINIQUE + Euro + EUR + 978 + 2 + + + MAURITANIA + Ouguiya + MRU + 929 + 2 + + + MAURITIUS + Mauritius Rupee + MUR + 480 + 2 + + + MAYOTTE + Euro + EUR + 978 + 2 + + + MEMBER COUNTRIES OF THE AFRICAN DEVELOPMENT BANK GROUP + ADB Unit of Account + XUA + 965 + N.A. + + + MEXICO + Mexican Peso + MXN + 484 + 2 + + + MEXICO + Mexican Unidad de Inversion (UDI) + MXV + 979 + 2 + + + MICRONESIA (FEDERATED STATES OF) + US Dollar + USD + 840 + 2 + + + MOLDOVA (THE REPUBLIC OF) + Moldovan Leu + MDL + 498 + 2 + + + MONACO + Euro + EUR + 978 + 2 + + + MONGOLIA + Tugrik + MNT + 496 + 2 + + + MONTENEGRO + Euro + EUR + 978 + 2 + + + MONTSERRAT + East Caribbean Dollar + XCD + 951 + 2 + + + MOROCCO + Moroccan Dirham + MAD + 504 + 2 + + + MOZAMBIQUE + Mozambique Metical + MZN + 943 + 2 + + + MYANMAR + Kyat + MMK + 104 + 2 + + + NAMIBIA + Namibia Dollar + NAD + 516 + 2 + + + NAMIBIA + Rand + ZAR + 710 + 2 + + + NAURU + Australian Dollar + AUD + 036 + 2 + + + NEPAL + Nepalese Rupee + NPR + 524 + 2 + + + NETHERLANDS (THE) + Euro + EUR + 978 + 2 + + + NEW CALEDONIA + CFP Franc + XPF + 953 + 0 + + + NEW ZEALAND + New Zealand Dollar + NZD + 554 + 2 + + + NICARAGUA + Cordoba Oro + NIO + 558 + 2 + + + NIGER (THE) + CFA Franc BCEAO + XOF + 952 + 0 + + + NIGERIA + Naira + NGN + 566 + 2 + + + NIUE + New Zealand Dollar + NZD + 554 + 2 + + + NORFOLK ISLAND + Australian Dollar + AUD + 036 + 2 + + + NORTHERN MARIANA ISLANDS (THE) + US Dollar + USD + 840 + 2 + + + NORWAY + Norwegian Krone + NOK + 578 + 2 + + + OMAN + Rial Omani + OMR + 512 + 3 + + + PAKISTAN + Pakistan Rupee + PKR + 586 + 2 + + + PALAU + US Dollar + USD + 840 + 2 + + + PALESTINE, STATE OF + No universal currency + + + PANAMA + Balboa + PAB + 590 + 2 + + + PANAMA + US Dollar + USD + 840 + 2 + + + PAPUA NEW GUINEA + Kina + PGK + 598 + 2 + + + PARAGUAY + Guarani + PYG + 600 + 0 + + + PERU + Sol + PEN + 604 + 2 + + + PHILIPPINES (THE) + Philippine Peso + PHP + 608 + 2 + + + PITCAIRN + New Zealand Dollar + NZD + 554 + 2 + + + POLAND + Zloty + PLN + 985 + 2 + + + PORTUGAL + Euro + EUR + 978 + 2 + + + PUERTO RICO + US Dollar + USD + 840 + 2 + + + QATAR + Qatari Rial + QAR + 634 + 2 + + + RÉUNION + Euro + EUR + 978 + 2 + + + ROMANIA + Romanian Leu + RON + 946 + 2 + + + RUSSIAN FEDERATION (THE) + Russian Ruble + RUB + 643 + 2 + + + RWANDA + Rwanda Franc + RWF + 646 + 0 + + + SAINT BARTHÉLEMY + Euro + EUR + 978 + 2 + + + SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA + Saint Helena Pound + SHP + 654 + 2 + + + SAINT KITTS AND NEVIS + East Caribbean Dollar + XCD + 951 + 2 + + + SAINT LUCIA + East Caribbean Dollar + XCD + 951 + 2 + + + SAINT MARTIN (FRENCH PART) + Euro + EUR + 978 + 2 + + + SAINT PIERRE AND MIQUELON + Euro + EUR + 978 + 2 + + + SAINT VINCENT AND THE GRENADINES + East Caribbean Dollar + XCD + 951 + 2 + + + SAMOA + Tala + WST + 882 + 2 + + + SAN MARINO + Euro + EUR + 978 + 2 + + + SAO TOME AND PRINCIPE + Dobra + STN + 930 + 2 + + + SAUDI ARABIA + Saudi Riyal + SAR + 682 + 2 + + + SENEGAL + CFA Franc BCEAO + XOF + 952 + 0 + + + SERBIA + Serbian Dinar + RSD + 941 + 2 + + + SEYCHELLES + Seychelles Rupee + SCR + 690 + 2 + + + SIERRA LEONE + Leone + SLE + 925 + 2 + + + SINGAPORE + Singapore Dollar + SGD + 702 + 2 + + + SINT MAARTEN (DUTCH PART) + Caribbean Guilder + XCG + 532 + 2 + + + SISTEMA UNITARIO DE COMPENSACION REGIONAL DE PAGOS "SUCRE" + Sucre + XSU + 994 + N.A. + + + SLOVAKIA + Euro + EUR + 978 + 2 + + + SLOVENIA + Euro + EUR + 978 + 2 + + + SOLOMON ISLANDS + Solomon Islands Dollar + SBD + 090 + 2 + + + SOMALIA + Somali Shilling + SOS + 706 + 2 + + + SOUTH AFRICA + Rand + ZAR + 710 + 2 + + + SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS + No universal currency + + + SOUTH SUDAN + South Sudanese Pound + SSP + 728 + 2 + + + SPAIN + Euro + EUR + 978 + 2 + + + SRI LANKA + Sri Lanka Rupee + LKR + 144 + 2 + + + SUDAN (THE) + Sudanese Pound + SDG + 938 + 2 + + + SURINAME + Surinam Dollar + SRD + 968 + 2 + + + SVALBARD AND JAN MAYEN + Norwegian Krone + NOK + 578 + 2 + + + SWEDEN + Swedish Krona + SEK + 752 + 2 + + + SWITZERLAND + Swiss Franc + CHF + 756 + 2 + + + SWITZERLAND + WIR Euro + CHE + 947 + 2 + + + SWITZERLAND + WIR Franc + CHW + 948 + 2 + + + SYRIAN ARAB REPUBLIC + Syrian Pound + SYP + 760 + 2 + + + TAIWAN (PROVINCE OF CHINA) + New Taiwan Dollar + TWD + 901 + 2 + + + TAJIKISTAN + Somoni + TJS + 972 + 2 + + + TANZANIA, UNITED REPUBLIC OF + Tanzanian Shilling + TZS + 834 + 2 + + + THAILAND + Baht + THB + 764 + 2 + + + TIMOR-LESTE + US Dollar + USD + 840 + 2 + + + TOGO + CFA Franc BCEAO + XOF + 952 + 0 + + + TOKELAU + New Zealand Dollar + NZD + 554 + 2 + + + TONGA + Pa’anga + TOP + 776 + 2 + + + TRINIDAD AND TOBAGO + Trinidad and Tobago Dollar + TTD + 780 + 2 + + + TUNISIA + Tunisian Dinar + TND + 788 + 3 + + + TÜRKİYE + Turkish Lira + TRY + 949 + 2 + + + TURKMENISTAN + Turkmenistan New Manat + TMT + 934 + 2 + + + TURKS AND CAICOS ISLANDS (THE) + US Dollar + USD + 840 + 2 + + + TUVALU + Australian Dollar + AUD + 036 + 2 + + + UGANDA + Uganda Shilling + UGX + 800 + 0 + + + UKRAINE + Hryvnia + UAH + 980 + 2 + + + UNITED ARAB EMIRATES (THE) + UAE Dirham + AED + 784 + 2 + + + UNITED KINGDOM OF GREAT BRITAIN AND NORTHERN IRELAND (THE) + Pound Sterling + GBP + 826 + 2 + + + UNITED STATES MINOR OUTLYING ISLANDS (THE) + US Dollar + USD + 840 + 2 + + + UNITED STATES OF AMERICA (THE) + US Dollar + USD + 840 + 2 + + + UNITED STATES OF AMERICA (THE) + US Dollar (Next day) + USN + 997 + 2 + + + URUGUAY + Peso Uruguayo + UYU + 858 + 2 + + + URUGUAY + Uruguay Peso en Unidades Indexadas (UI) + UYI + 940 + 0 + + + URUGUAY + Unidad Previsional + UYW + 927 + 4 + + + UZBEKISTAN + Uzbekistan Sum + UZS + 860 + 2 + + + VANUATU + Vatu + VUV + 548 + 0 + + + VENEZUELA (BOLIVARIAN REPUBLIC OF) + Bolívar Soberano + VES + 928 + 2 + + + VENEZUELA (BOLIVARIAN REPUBLIC OF) + Bolívar Soberano + VED + 926 + 2 + + + VIET NAM + Dong + VND + 704 + 0 + + + VIRGIN ISLANDS (BRITISH) + US Dollar + USD + 840 + 2 + + + VIRGIN ISLANDS (U.S.) + US Dollar + USD + 840 + 2 + + + WALLIS AND FUTUNA + CFP Franc + XPF + 953 + 0 + + + WESTERN SAHARA + Moroccan Dirham + MAD + 504 + 2 + + + YEMEN + Yemeni Rial + YER + 886 + 2 + + + ZAMBIA + Zambian Kwacha + ZMW + 967 + 2 + + + ZIMBABWE + Zimbabwe Gold + ZWG + 924 + 2 + + + ZZ01_Bond Markets Unit European_EURCO + Bond Markets Unit European Composite Unit (EURCO) + XBA + 955 + N.A. + + + ZZ02_Bond Markets Unit European_EMU-6 + Bond Markets Unit European Monetary Unit (E.M.U.-6) + XBB + 956 + N.A. + + + ZZ03_Bond Markets Unit European_EUA-9 + Bond Markets Unit European Unit of Account 9 (E.U.A.-9) + XBC + 957 + N.A. + + + ZZ04_Bond Markets Unit European_EUA-17 + Bond Markets Unit European Unit of Account 17 (E.U.A.-17) + XBD + 958 + N.A. + + + ZZ06_Testing_Code + Codes specifically reserved for testing purposes + XTS + 963 + N.A. + + + ZZ07_No_Currency + The codes assigned for transactions where no currency is involved + XXX + 999 + N.A. + + + ZZ08_Gold + Gold + XAU + 959 + N.A. + + + ZZ09_Palladium + Palladium + XPD + 964 + N.A. + + + ZZ10_Platinum + Platinum + XPT + 962 + N.A. + + + ZZ11_Silver + Silver + XAG + 961 + N.A. + + + \ No newline at end of file diff --git a/external/iso/currency/list-three.xml b/external/iso/currency/list-three.xml new file mode 100644 index 00000000..5ea5b9c2 --- /dev/null +++ b/external/iso/currency/list-three.xml @@ -0,0 +1,1178 @@ + + + + + AFGHANISTAN + Afghani + AFA + 004 + 2003-01 + + + ÅLAND ISLANDS + Markka + FIM + 246 + 2002-03 + + + ALBANIA + Old Lek + ALK + 008 + 1989-12 + + + ANDORRA + Andorran Peseta + ADP + 020 + 2003-07 + + + ANDORRA + Spanish Peseta + ESP + 724 + 2002-03 + + + ANDORRA + French Franc + FRF + 250 + 2002-03 + + + ANGOLA + Kwanza + AOK + 024 + 1991-03 + + + ANGOLA + New Kwanza + AON + 024 + 2000-02 + + + ANGOLA + Kwanza Reajustado + AOR + 982 + 2000-02 + + + ARGENTINA + Austral + ARA + 032 + 1992-01 + + + ARGENTINA + Peso Argentino + ARP + 032 + 1985-07 + + + ARGENTINA + Peso + ARY + 032 + 1989 to 1990 + + + ARMENIA + Russian Ruble + RUR + 810 + 1994-08 + + + AUSTRIA + Schilling + ATS + 040 + 2002-03 + + + AZERBAIJAN + Azerbaijan Manat + AYM + 945 + 2005-10 + + + AZERBAIJAN + Azerbaijanian Manat + AZM + 031 + 2005-12 + + + AZERBAIJAN + Russian Ruble + RUR + 810 + 1994-08 + + + BELARUS + Belarusian Ruble + BYB + 112 + 2001-01 + + + BELARUS + Belarusian Ruble + BYR + 974 + 2017-01 + + + BELARUS + Russian Ruble + RUR + 810 + 1994-06 + + + BELGIUM + Convertible Franc + BEC + 993 + 1990-03 + + + BELGIUM + Belgian Franc + BEF + 056 + 2002-03 + + + BELGIUM + Financial Franc + BEL + 992 + 1990-03 + + + BOLIVIA + Peso boliviano + BOP + 068 + 1987-02 + + + BOSNIA AND HERZEGOVINA + Dinar + BAD + 070 + 1998-07 + + + BRAZIL + Cruzeiro + BRB + 076 + 1986-03 + + + BRAZIL + Cruzado + BRC + 076 + 1989-02 + + + BRAZIL + Cruzeiro + BRE + 076 + 1993-03 + + + BRAZIL + New Cruzado + BRN + 076 + 1990-03 + + + BRAZIL + Cruzeiro Real + BRR + 987 + 1994-07 + + + BULGARIA + Lev A/52 + BGJ + 100 + 1989 to 1990 + + + BULGARIA + Lev A/62 + BGK + 100 + 1989 to 1990 + + + BULGARIA + Lev + BGL + 100 + 2003-11 + + + BURMA  + Kyat + BUK + 104 + 1990-02 + + + CROATIA + Croatian Dinar + HRD + 191 + 1995-01 + + + CROATIA + Croatian Kuna + HRK + 191 + 2015-06 + + + CROATIA + Kuna + HRK + 191 + 2023-01 + + + CUBA + Peso Convertible + CUC + 931 + 2021-06 + + + CURAÇAO + Netherlands Antillean Guilder + ANG + 532 + 2025-03 + + + CYPRUS + Cyprus Pound + CYP + 196 + 2008-01 + + + CZECHOSLOVAKIA + Krona A/53 + CSJ + 203 + 1989 to 1990 + + + CZECHOSLOVAKIA + Koruna + CSK + 200 + 1993-03 + + + ECUADOR + Sucre + ECS + 218 + 2000-09 + + + ECUADOR + Unidad de Valor Constante (UVC) + ECV + 983 + 2000-09 + + + EQUATORIAL GUINEA + Ekwele + GQE + 226 + 1986-06 + + + ESTONIA + Kroon + EEK + 233 + 2011-01 + + + EUROPEAN MONETARY CO-OPERATION FUND (EMCF) + European Currency Unit (E.C.U) + XEU + 954 + 1999-01 + + + FINLAND + Markka + FIM + 246 + 2002-03 + + + FRANCE + French Franc + FRF + 250 + 2002-03 + + + FRENCH GUIANA + French Franc + FRF + 250 + 2002-03 + + + FRENCH SOUTHERN TERRITORIES + French Franc + FRF + 250 + 2002-03 + + + GEORGIA + Georgian Coupon + GEK + 268 + 1995-10 + + + GEORGIA + Russian Ruble + RUR + 810 + 1994-04 + + + GERMAN DEMOCRATIC REPUBLIC + Mark der DDR + DDM + 278 + 1990-07 to 1990-09 + + + GERMANY + Deutsche Mark + DEM + 276 + 2002-03 + + + GHANA + Cedi + GHC + 288 + 2008-01 + + + GHANA + Ghana Cedi + GHP + 939 + 2007-06 + + + GREECE + Drachma + GRD + 300 + 2002-03 + + + GUADELOUPE + French Franc + FRF + 250 + 2002-03 + + + GUINEA + Syli + GNE + 324 + 1989-12 + + + GUINEA + Syli + GNS + 324 + 1986-02 + + + GUINEA-BISSAU + Guinea Escudo + GWE + 624 + 1978 to 1981 + + + GUINEA-BISSAU + Guinea-Bissau Peso + GWP + 624 + 1997-05 + + + HOLY SEE (VATICAN CITY STATE) + Italian Lira + ITL + 380 + 2002-03 + + + ICELAND + Old Krona + ISJ + 352 + 1989 to 1990 + + + IRELAND + Irish Pound + IEP + 372 + 2002-03 + + + ISRAEL + Pound + ILP + 376 + 1978 to 1981 + + + ISRAEL + Old Shekel + ILR + 376 + 1989 to 1990 + + + ITALY + Italian Lira + ITL + 380 + 2002-03 + + + KAZAKHSTAN + Russian Ruble + RUR + 810 + 1994-05 + + + KYRGYZSTAN + Russian Ruble + RUR + 810 + 1993-01 + + + LAO + Pathet Lao Kip + LAJ + 418 + 1979-12 + + + LATVIA + Latvian Lats + LVL + 428 + 2014-01 + + + LATVIA + Latvian Ruble + LVR + 428 + 1994-12 + + + LESOTHO + Loti + LSM + 426 + 1985-05 + + + LESOTHO + Financial Rand + ZAL + 991 + 1995-03 + + + LITHUANIA + Lithuanian Litas + LTL + 440 + 2014-12 + + + LITHUANIA + Talonas + LTT + 440 + 1993-07 + + + LUXEMBOURG + Luxembourg Convertible Franc + LUC + 989 + 1990-03 + + + LUXEMBOURG + Luxembourg Franc + LUF + 442 + 2002-03 + + + LUXEMBOURG + Luxembourg Financial Franc + LUL + 988 + 1990-03 + + + MADAGASCAR + Malagasy Franc + MGF + 450 + 2004-12 + + + MALAWI + Kwacha + MWK + 454 + 2016-02 + + + MALDIVES + Maldive Rupee + MVQ + 462 + 1989-12 + + + MALI + Mali Franc + MLF + 466 + 1984-11 + + + MALTA + Maltese Lira + MTL + 470 + 2008-01 + + + MALTA + Maltese Pound + MTP + 470 + 1983-06 + + + MARTINIQUE + French Franc + FRF + 250 + 2002-03 + + + MAURITANIA + Ouguiya + MRO + 478 + 2017-12 + + + MAYOTTE + French Franc + FRF + 250 + 2002-03 + + + MEXICO + Mexican Peso + MXP + 484 + 1993-01 + + + MOLDOVA, REPUBLIC OF + Russian Ruble + RUR + 810 + 1993-12 + + + MONACO + French Franc + FRF + 250 + 2002-03 + + + MOZAMBIQUE + Mozambique Escudo + MZE + 508 + 1978 to 1981 + + + MOZAMBIQUE + Mozambique Metical + MZM + 508 + 2006-06 + + + NETHERLANDS + Netherlands Guilder + NLG + 528 + 2002-03 + + + NETHERLANDS ANTILLES + Netherlands Antillean Guilder + ANG + 532 + 2010-10 + + + NICARAGUA + Cordoba + NIC + 558 + 1990-10 + + + PERU + Sol + PEH + 604 + 1989 to 1990 + + + PERU + Inti + PEI + 604 + 1991-07 + + + PERU + Nuevo Sol + PEN + 604 + 2015-12 + + + PERU + Sol + PES + 604 + 1986-02 + + + POLAND + Zloty + PLZ + 616 + 1997-01 + + + PORTUGAL + Portuguese Escudo + PTE + 620 + 2002-03 + + + RÉUNION + French Franc + FRF + 250 + 2002-03 + + + ROMANIA + Leu A/52 + ROK + 642 + 1989 to 1990 + + + ROMANIA + Old Leu + ROL + 642 + 2005-06 + + + ROMANIA + New Romanian Leu + RON + 946 + 2015-06 + + + RUSSIAN FEDERATION + Russian Ruble + RUR + 810 + 2004-01 + + + SAINT MARTIN + French Franc + FRF + 250 + 1999-01 + + + SAINT PIERRE AND MIQUELON + French Franc + FRF + 250 + 2002-03 + + + SAINT-BARTHÉLEMY + French Franc + FRF + 250 + 1999-01 + + + SAN MARINO + Italian Lira + ITL + 380 + 2002-03 + + + SAO TOME AND PRINCIPE + Dobra + STD + 678 + 2017-12 + + + SERBIA AND MONTENEGRO + Serbian Dinar + CSD + 891 + 2006-10 + + + SERBIA AND MONTENEGRO + Euro + EUR + 978 + 2006-10 + + + SIERRA LEONE + Leone + SLL + 694 + 2023-12 + + + SINT MAARTEN (DUTCH PART) + Netherlands Antillean Guilder + ANG + 532 + 2025-03 + + + SLOVAKIA + Slovak Koruna + SKK + 703 + 2009-01 + + + SLOVENIA + Tolar + SIT + 705 + 2007-01 + + + SOUTH AFRICA + Financial Rand + ZAL + 991 + 1995-03 + + + SOUTH SUDAN + Sudanese Pound + SDG + 938 + 2012-09 + + + SOUTHERN RHODESIA  + Rhodesian Dollar + RHD + 716 + 1978 to 1981 + + + SPAIN + Spanish Peseta + ESA + 996 + 1978 to 1981 + + + SPAIN + "A" Account (convertible Peseta Account) + ESB + 995 + 1994-12 + + + SPAIN + Spanish Peseta + ESP + 724 + 2002-03 + + + SUDAN + Sudanese Dinar + SDD + 736 + 2007-07 + + + SUDAN + Sudanese Pound + SDP + 736 + 1998-06 + + + SURINAME + Surinam Guilder + SRG + 740 + 2003-12 + + + SWAZILAND + Lilangeni + SZL + 748 + 2018-08 + + + SWITZERLAND + WIR Franc (for electronic) + CHC + 948 + 2004-11 + + + TAJIKISTAN + Russian Ruble + RUR + 810 + 1995-05 + + + TAJIKISTAN + Tajik Ruble + TJR + 762 + 2001-04 + + + TIMOR-LESTE + Rupiah + IDR + 360 + 2002-07 + + + TIMOR-LESTE + Timor Escudo + TPE + 626 + 2002-11 + + + TURKEY + Old Turkish Lira + TRL + 792 + 2005-12 + + + TURKEY + New Turkish Lira + TRY + 949 + 2009-01 + + + TURKMENISTAN + Russian Ruble + RUR + 810 + 1993-10 + + + TURKMENISTAN + Turkmenistan Manat + TMM + 795 + 2009-01 + + + UGANDA + Uganda Shilling + UGS + 800 + 1987-05 + + + UGANDA + Old Shilling + UGW + 800 + 1989 to 1990 + + + UKRAINE + Karbovanet + UAK + 804 + 1996-09 + + + UNION OF SOVIET SOCIALIST REPUBLICS + Rouble + SUR + 810 + 1990-12 + + + UNITED STATES + US Dollar (Same day) + USS + 998 + 2014-03 + + + URUGUAY + Old Uruguay Peso + UYN + 858 + 1989-12 + + + URUGUAY + Uruguayan Peso + UYP + 858 + 1993-03 + + + UZBEKISTAN + Russian Ruble + RUR + 810 + 1994-07 + + + VENEZUELA + Bolivar + VEB + 862 + 2008-01 + + + VENEZUELA + Bolivar Fuerte + VEF + 937 + 2011-12 + + + VENEZUELA (BOLIVARIAN REPUBLIC OF) + Bolivar + VEF + 937 + 2016-02 + + + VENEZUELA (BOLIVARIAN REPUBLIC OF) + Bolívar + VEF + 937 + 2018-08 + + + VIETNAM + Old Dong + VNC + 704 + 1989-1990 + + + YEMEN, DEMOCRATIC + Yemeni Dinar + YDD + 720 + 1991-09 + + + YUGOSLAVIA + New Yugoslavian Dinar + YUD + 890 + 1990-01 + + + YUGOSLAVIA + New Dinar + YUM + 891 + 2003-07 + + + YUGOSLAVIA + Yugoslavian Dinar + YUN + 890 + 1995-11 + + + ZAIRE + New Zaire + ZRN + 180 + 1999-06 + + + ZAIRE + Zaire + ZRZ + 180 + 1994-02 + + + ZAMBIA + Zambian Kwacha + ZMK + 894 + 2012-12 + + + ZIMBABWE + Rhodesian Dollar + ZWC + 716 + 1989-12 + + + ZIMBABWE + Zimbabwe Dollar (old) + ZWD + 716 + 2006-08 + + + ZIMBABWE + Zimbabwe Dollar + ZWD + 716 + 2008-08 + + + ZIMBABWE + Zimbabwe Dollar (new) + ZWN + 942 + 2006-09 + + + ZIMBABWE + Zimbabwe Dollar + ZWR + 935 + 2009-06 + + + ZIMBABWE + Zimbabwe Dollar + ZWL + 932 + 2024-09 + + + ZZ01_Gold-Franc + Gold-Franc + XFO + 2006-10 + + + ZZ02_RINET Funds Code + RINET Funds Code + XRE + 1999-11 + + + ZZ05_UIC-Franc + UIC-Franc + XFU + 2013-11 + + + \ No newline at end of file diff --git a/generate/iso/currency/include.mk b/generate/iso/currency/include.mk new file mode 100644 index 00000000..d821fa97 --- /dev/null +++ b/generate/iso/currency/include.mk @@ -0,0 +1,18 @@ +BASE_URL_SIX_GROUP_ISO_CURRENCY = https://www.six-group.com/dam/download/financial-information/data-center/iso-currrency + +.PHONY: external/iso/currency/list-one.xml +external/iso/currency/list-one.xml: scripts/fetch.py + $(PYTHON) $< "$(BASE_URL_SIX_GROUP_ISO_CURRENCY)/lists/list-one.xml" $@ + +.PHONY: external/iso/currency/list-three.xml +external/iso/currency/list-three.xml: scripts/fetch.py + $(PYTHON) $< "$(BASE_URL_SIX_GROUP_ISO_CURRENCY)/lists/list-three.xml" $@ + +build/iso/currency/list-%.json: scripts/xml2json.py external/iso/currency/list-%.xml + $(PYTHON) $< $(word 2,$^) $@ + +external-iso-currency: generate/iso/currency/main.py \ + build/iso/currency/list-one.json build/iso/currency/list-three.json + $(PYTHON) $< + +EXTERNAL += external-iso-currency diff --git a/scripts/generate-iso-currency.py b/generate/iso/currency/main.py old mode 100755 new mode 100644 similarity index 98% rename from scripts/generate-iso-currency.py rename to generate/iso/currency/main.py index 29528357..634b5663 --- a/scripts/generate-iso-currency.py +++ b/generate/iso/currency/main.py @@ -1,10 +1,7 @@ -#!/usr/bin/env python3 - import json import os import sys - def is_fund(entry): if "CcyNm" not in entry: return False @@ -346,9 +343,9 @@ def build_base_schema(): def main(): script_dir = os.path.dirname(os.path.abspath(__file__)) - project_root = os.path.dirname(script_dir) - current_data_file = os.path.join(project_root, "data", "six-group-iso-currency.json") - historical_data_file = os.path.join(project_root, "data", "six-group-iso-currency-historical.json") + project_root = os.path.dirname(os.path.dirname(os.path.dirname(script_dir))) + current_data_file = os.path.join(project_root, "build", "iso", "currency", "list-one.json") + historical_data_file = os.path.join(project_root, "build", "iso", "currency", "list-three.json") output_dir = os.path.join(project_root, "schemas", "iso", "currency") # Generate current schemas diff --git a/scripts/fetch.py b/scripts/fetch.py new file mode 100644 index 00000000..3cf840fa --- /dev/null +++ b/scripts/fetch.py @@ -0,0 +1,30 @@ +import sys +import urllib.request +import pathlib + + +def main(): + if len(sys.argv) != 3: + print("Usage: fetch.py ", file=sys.stderr) + sys.exit(1) + + url = sys.argv[1] + output_file = sys.argv[2] + + try: + with urllib.request.urlopen(url) as response: + data = response.read() + + output_path = pathlib.Path(output_file) + output_path.parent.mkdir(parents=True, exist_ok=True) + + with open(output_path, 'wb') as file: + file.write(data) + + except Exception as error: + print(f"Error: {error}", file=sys.stderr) + sys.exit(1) + + +if __name__ == "__main__": + main() diff --git a/scripts/fetch-xml.py b/scripts/xml2json.py similarity index 70% rename from scripts/fetch-xml.py rename to scripts/xml2json.py index 31c43087..1e79255d 100644 --- a/scripts/fetch-xml.py +++ b/scripts/xml2json.py @@ -1,7 +1,7 @@ import sys -import urllib.request import xml.etree.ElementTree as ET import json +import pathlib def xml_to_dict(element): @@ -33,15 +33,16 @@ def xml_to_dict(element): def main(): - if len(sys.argv) != 2: - print("Usage: fetch-xml ", file=sys.stderr) + if len(sys.argv) != 3: + print("Usage: xml2json.py ", file=sys.stderr) sys.exit(1) - url = sys.argv[1] + input_file = sys.argv[1] + output_file = sys.argv[2] try: - with urllib.request.urlopen(url) as response: - xml_data = response.read() + with open(input_file, 'r') as file: + xml_data = file.read() root = ET.fromstring(xml_data) @@ -49,7 +50,12 @@ def main(): root.tag: xml_to_dict(root) } - print(json.dumps(result, indent=2)) + output_path = pathlib.Path(output_file) + output_path.parent.mkdir(parents=True, exist_ok=True) + + with open(output_path, 'w') as file: + json.dump(result, file, indent=2) + file.write('\n') except Exception as error: print(f"Error: {error}", file=sys.stderr)