Skip to content

Commit

Permalink
added API and CLI for ppp-mer conversion
Browse files Browse the repository at this point in the history
  • Loading branch information
gidden committed Aug 16, 2017
1 parent d6c9f7b commit a80198b
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 1 deletion.
55 changes: 55 additions & 0 deletions salamanca/cli.py
Expand Up @@ -76,13 +76,68 @@ def exchange(**kwargs):
print(ret)
return ret


COMMANDS['exchange'] = (
"""Exchange currency from one country/year to another.""",
exchange_cli,
exchange,
)


def to_ppp_cli(parser):
amt = 'quantity of currency in MER (default: 1.0)'
parser.add_argument('-x', '--amt', help=amt, type=float, default=1.0)
iso = '3-letter ISO code for the country'
parser.add_argument('--iso', help=iso)
year = 'year of conversion'
parser.add_argument('--year', type=int, help=year)


def to_ppp(**kwargs):
amt = kwargs['amt']
iso = kwargs['iso']
year = kwargs['year']

xlator = currency.Translator()
ret = amt * xlator.mer_to_ppp(iso, year)
print(ret)
return ret


COMMANDS['to_ppp'] = (
"""Exchange currency in MER to PPP.""",
to_ppp_cli,
to_ppp,
)


def to_mer_cli(parser):
amt = 'quantity of currency in PPP (default: 1.0)'
parser.add_argument('-x', '--amt', help=amt, type=float, default=1.0)
iso = '3-letter ISO code for the country'
parser.add_argument('--iso', help=iso)
year = 'year of conversion'
parser.add_argument('--year', type=int, help=year)


def to_mer(**kwargs):
amt = kwargs['amt']
iso = kwargs['iso']
year = int(kwargs['year'])

xlator = currency.Translator()
ret = amt / xlator.mer_to_ppp(iso, year)
print(ret)
return ret


COMMANDS['to_mer'] = (
"""Exchange currency in PPP to MER.""",
to_mer_cli,
to_mer,
)


def main():
descr = """
Main CLI for salamanca.
Expand Down
6 changes: 6 additions & 0 deletions salamanca/currency.py
Expand Up @@ -48,6 +48,12 @@ def inflation(self, iso, fromyr, toyr, method='deflator'):
x = self.inflation('USA', fromyr, toyr, method=method)
return x

def ppp_to_mer(self, iso, yr):
return self._ppp_to_mer.loc[iso][yr]

def mer_to_ppp(self, iso, yr):
return 1.0 / self._ppp_to_mer.loc[iso][yr]

def exchange(self, x, iso=None, yr=None, units='MER',
fromiso=None, fromyr=None,
toiso=None, toyr=None,
Expand Down
2 changes: 1 addition & 1 deletion salamanca/data.py
Expand Up @@ -16,7 +16,7 @@

WB_INDICATORS = {
'SP.POP.TOTL': 'total_population',
'PA.NUS.PPPC.RF': 'ppp_to_mer',
'PA.NUS.PPPC.RF': 'ppp_to_mer', # conversion factor [PPP / MER]
'FP.CPI.TOTL': 'cpi',
'PA.NUS.FCRF': 'exchange_rate',
'NY.GDP.DEFL.ZS': 'gdp_deflator',
Expand Down

0 comments on commit a80198b

Please sign in to comment.