I'm trying to use mimesis to generate mock data for tests I'm going to develop and am writing schema to do so.
I set the locale when instantiating an object of class Field(), but on calling business.currency_iso_code() I get random ISO currency codes, whilst I was expecting (or hoping!) to get those for the current locale.
import random
from mimesis.schema import Field, Schema
class SlotData2():
def __init__(self, locale, max_currency=10):
self.field = Field(locale)
self.max_currency = max_currency
def _generate_cost(self):
cost = (
lambda: {
'amount': self.field('business.price'),
'currency': self.field('business.currency_iso_code'),
}
)
cost_schema = Schema(schema=cost)
return cost_schema.create(random.randint(1, self.max_currency))
The business.price is always the correct locale, but the business.currency_iso_code varies as the following shows...
In [200]: test2 = SlotData2('en-gb', 10)
In [201]: test2._generate_cost()
Out[201]:
[{'amount': '196.66 £', 'currency': 'BZD'},
{'amount': '223.12 £', 'currency': 'VUV'}]
In [202]: test2._generate_cost()
Out[202]:
[{'amount': '626.08 £', 'currency': 'XCD'},
{'amount': '904.78 £', 'currency': 'BOV'},
{'amount': '836.96 £', 'currency': 'XUA'},
{'amount': '529.19 £', 'currency': 'LYD'},
{'amount': '341.14 £', 'currency': 'ILS'},
{'amount': '136.68 £', 'currency': 'MGA'},
{'amount': '691.84 £', 'currency': 'KHR'},
{'amount': '493.02 £', 'currency': 'SDG'},
{'amount': '250.04 £', 'currency': 'BGN'},
{'amount': '649.36 £', 'currency': 'AUD'}]
In [203]: test2._generate_cost()
Out[203]:
[{'amount': '963.86 £', 'currency': 'MNT'},
{'amount': '707.13 £', 'currency': 'TRY'},
{'amount': '322.74 £', 'currency': 'SHP'}]
I checked with Generic('en-gb') and it too returns random ISO currency codes rather than the expected GBP...
In [204]: g = Generic('en-gb')
In [205]: g.business.currency_iso_code()
Out[205]: 'AFN'
In [206]: g.business.currency_iso_code()
Out[206]: 'USD'
In [207]: g.business.currency_iso_code()
Out[207]: 'ALL'
I would expect business.currency_iso_code() to return the code for the specified locale.
python --version
Python 3.6.7
In [209]: mimesis.__version__
Out[209]: '3.1.0'
@slackline Hi! Thanks for your interest. It seems like at this moment we do not count locale on generating currency iso code.
@ceccoemi Are you interesting? It's can be done easily, but I'm busy until this weekends.
@slackline We will work on it ASAP. Thanks again for your report.
Thanks for the rapid response @lk-geimfari. I've started looking at the code to see if I could come up with a solution, if I can work it out before then I'll submit a PR.
What we need to do:
business.jsonallow_random=True to have availability of support much more currency codes (so as not to limit their number - the number of languages supported.).@lk-geimfari @slackline I'm working on this
@ceccoemi Great! Thank you very much!
Thanks @ceccoemi
Most helpful comment
@lk-geimfari @slackline I'm working on this