Skip to content

Instantly share code, notes, and snippets.

@Andrew-Chen-Wang
Last active July 12, 2020 04:23
Show Gist options
  • Save Andrew-Chen-Wang/97c36ea589d9731bf8c67f6e561aabd4 to your computer and use it in GitHub Desktop.
Save Andrew-Chen-Wang/97c36ea589d9731bf8c67f6e561aabd4 to your computer and use it in GitHub Desktop.
Supported Stripe currencies list in Python (also available as Django choices list)
"""
List of the supported stripe currencies.
Also available as Django CHOICES list
if you'd like to store a product of whatever's
currency in integer form in the db.
"""
# https://stripe.com/docs/currencies
# http://jsfiddle.net/nick_craver/H6Mrt/
SUPPORTED_STRIPE_CURRENCIES = (
"USD",
"AED",
"AFN",
"ALL",
"AMD",
"ANG",
"AOA",
"ARS",
"AUD",
"AWG",
"AZN",
"BAM",
"BBD",
"BDT",
"BGN",
"BIF",
"BMD",
"BND",
"BOB",
"BRL",
"BSD",
"BWP",
"BZD",
"CAD",
"CDF",
"CHF",
"CLP",
"CNY",
"COP",
"CRC",
"CVE",
"CZK",
"DJF",
"DKK",
"DOP",
"DZD",
"EGP",
"ETB",
"EUR",
"FJD",
"FKP",
"GBP",
"GEL",
"GIP",
"GMD",
"GNF",
"GTQ",
"GYD",
"HKD",
"HNL",
"HRK",
"HTG",
"HUF",
"IDR",
"ILS",
"INR",
"ISK",
"JMD",
"JPY",
"KES",
"KGS",
"KHR",
"KMF",
"KRW",
"KYD",
"KZT",
"LAK",
"LBP",
"LKR",
"LRD",
"LSL",
"MAD",
"MDL",
"MGA",
"MKD",
"MMK",
"MNT",
"MOP",
"MRO",
"MUR",
"MVR",
"MWK",
"MXN",
"MYR",
"MZN",
"NAD",
"NGN",
"NIO",
"NOK",
"NPR",
"NZD",
"PAB",
"PEN",
"PGK",
"PHP",
"PKR",
"PLN",
"PYG",
"QAR",
"RON",
"RSD",
"RUB",
"RWF",
"SAR",
"SBD",
"SCR",
"SEK",
"SGD",
"SHP",
"SLL",
"SOS",
"SRD",
"STD",
"SZL",
"THB",
"TJS",
"TOP",
"TRY",
"TTD",
"TWD",
"TZS",
"UAH",
"UGX",
"UYU",
"UZS",
"VND",
"VUV",
"WST",
"XAF",
"XCD",
"XOF",
"XPF",
"YER",
"ZAR",
"ZMW",
)
_SUPPORTED_STRIPE_CURRENCIES_CHOICES = tuple((i, x) for i, x in enumerate(SUPPORTED_STRIPE_CURRENCIES))
SUPPORTED_STRIPE_CURRENCIES_CHOICES = (
(0, "USD"),
(1, "AED"),
(2, "AFN"),
(3, "ALL"),
(4, "AMD"),
(5, "ANG"),
(6, "AOA"),
(7, "ARS"),
(8, "AUD"),
(9, "AWG"),
(10, "AZN"),
(11, "BAM"),
(12, "BBD"),
(13, "BDT"),
(14, "BGN"),
(15, "BIF"),
(16, "BMD"),
(17, "BND"),
(18, "BOB"),
(19, "BRL"),
(20, "BSD"),
(21, "BWP"),
(22, "BZD"),
(23, "CAD"),
(24, "CDF"),
(25, "CHF"),
(26, "CLP"),
(27, "CNY"),
(28, "COP"),
(29, "CRC"),
(30, "CVE"),
(31, "CZK"),
(32, "DJF"),
(33, "DKK"),
(34, "DOP"),
(35, "DZD"),
(36, "EGP"),
(37, "ETB"),
(38, "EUR"),
(39, "FJD"),
(40, "FKP"),
(41, "GBP"),
(42, "GEL"),
(43, "GIP"),
(44, "GMD"),
(45, "GNF"),
(46, "GTQ"),
(47, "GYD"),
(48, "HKD"),
(49, "HNL"),
(50, "HRK"),
(51, "HTG"),
(52, "HUF"),
(53, "IDR"),
(54, "ILS"),
(55, "INR"),
(56, "ISK"),
(57, "JMD"),
(58, "JPY"),
(59, "KES"),
(60, "KGS"),
(61, "KHR"),
(62, "KMF"),
(63, "KRW"),
(64, "KYD"),
(65, "KZT"),
(66, "LAK"),
(67, "LBP"),
(68, "LKR"),
(69, "LRD"),
(70, "LSL"),
(71, "MAD"),
(72, "MDL"),
(73, "MGA"),
(74, "MKD"),
(75, "MMK"),
(76, "MNT"),
(77, "MOP"),
(78, "MRO"),
(79, "MUR"),
(80, "MVR"),
(81, "MWK"),
(82, "MXN"),
(83, "MYR"),
(84, "MZN"),
(85, "NAD"),
(86, "NGN"),
(87, "NIO"),
(88, "NOK"),
(89, "NPR"),
(90, "NZD"),
(91, "PAB"),
(92, "PEN"),
(93, "PGK"),
(94, "PHP"),
(95, "PKR"),
(96, "PLN"),
(97, "PYG"),
(98, "QAR"),
(99, "RON"),
(100, "RSD"),
(101, "RUB"),
(102, "RWF"),
(103, "SAR"),
(104, "SBD"),
(105, "SCR"),
(106, "SEK"),
(107, "SGD"),
(108, "SHP"),
(109, "SLL"),
(110, "SOS"),
(111, "SRD"),
(112, "STD"),
(113, "SZL"),
(114, "THB"),
(115, "TJS"),
(116, "TOP"),
(117, "TRY"),
(118, "TTD"),
(119, "TWD"),
(120, "TZS"),
(121, "UAH"),
(122, "UGX"),
(123, "UYU"),
(124, "UZS"),
(125, "VND"),
(126, "VUV"),
(127, "WST"),
(128, "XAF"),
(129, "XCD"),
(130, "XOF"),
(131, "XPF"),
(132, "YER"),
(133, "ZAR"),
(134, "ZMW"),
)
"""
The purpose of this was to see what was more efficient, indexing
a list of the currencies or just using the generator. It's pretty
obvious which wins (index).
"""
import timeit
setup = """
# https://stripe.com/docs/currencies
# http://jsfiddle.net/nick_craver/H6Mrt/
SUPPORTED_STRIPE_CURRENCIES = (
"USD",
"AED",
"AFN",
"ALL",
"AMD",
"ANG",
"AOA",
"ARS",
"AUD",
"AWG",
"AZN",
"BAM",
"BBD",
"BDT",
"BGN",
"BIF",
"BMD",
"BND",
"BOB",
"BRL",
"BSD",
"BWP",
"BZD",
"CAD",
"CDF",
"CHF",
"CLP",
"CNY",
"COP",
"CRC",
"CVE",
"CZK",
"DJF",
"DKK",
"DOP",
"DZD",
"EGP",
"ETB",
"EUR",
"FJD",
"FKP",
"GBP",
"GEL",
"GIP",
"GMD",
"GNF",
"GTQ",
"GYD",
"HKD",
"HNL",
"HRK",
"HTG",
"HUF",
"IDR",
"ILS",
"INR",
"ISK",
"JMD",
"JPY",
"KES",
"KGS",
"KHR",
"KMF",
"KRW",
"KYD",
"KZT",
"LAK",
"LBP",
"LKR",
"LRD",
"LSL",
"MAD",
"MDL",
"MGA",
"MKD",
"MMK",
"MNT",
"MOP",
"MRO",
"MUR",
"MVR",
"MWK",
"MXN",
"MYR",
"MZN",
"NAD",
"NGN",
"NIO",
"NOK",
"NPR",
"NZD",
"PAB",
"PEN",
"PGK",
"PHP",
"PKR",
"PLN",
"PYG",
"QAR",
"RON",
"RSD",
"RUB",
"RWF",
"SAR",
"SBD",
"SCR",
"SEK",
"SGD",
"SHP",
"SLL",
"SOS",
"SRD",
"STD",
"SZL",
"THB",
"TJS",
"TOP",
"TRY",
"TTD",
"TWD",
"TZS",
"UAH",
"UGX",
"UYU",
"UZS",
"VND",
"VUV",
"WST",
"XAF",
"XCD",
"XOF",
"XPF",
"YER",
"ZAR",
"ZMW",
)
SUPPORTED_STRIPE_CURRENCIES_CHOICES = tuple((i, x) for i, x in enumerate(SUPPORTED_STRIPE_CURRENCIES))
"""
if __name__ == "__main__":
value = "ZMW"
print(min(timeit.Timer(
f'next((i for i, v in enumerate(SUPPORTED_STRIPE_CURRENCIES_CHOICES) if v[1] == "{value}"))',
setup=setup,
).repeat(5, 100000)))
print(min(timeit.Timer(
f'SUPPORTED_STRIPE_CURRENCIES.index("{value}")'
, setup=setup
).repeat(5, 100000)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment