Python library and CLI tool to query the Open Exchange Rates API
Find a file
Brett Smith 71893ace4d tests: Historical tests use more flexible rate matching.
This lets the tests be more flexible about how much precision is used in
rates when appropriate, and makes them ready to parametrize for
Beancount.
2020-05-17 10:44:03 -04:00
oxrlib historical: Normalize class instantiation for formatters. 2020-05-16 16:56:29 -04:00
tests tests: Historical tests use more flexible rate matching. 2020-05-17 10:44:03 -04:00
.gitignore .gitignore: setup.py: Integrate pytest to run tests. 2017-05-17 17:22:39 -04:00
LICENSE LICENSE: Add license. 2017-05-17 14:40:50 -04:00
oxrlib_example.ini config: Nicer determination of default currency for converting/signing. 2017-06-09 13:22:12 -04:00
README.rst Fix typo in variable name 2017-06-13 09:24:18 -04:00
setup.cfg .gitignore: setup.py: Integrate pytest to run tests. 2017-05-17 17:22:39 -04:00
setup.py config: Error out when historical arguments are ambiguous. 2017-06-29 17:18:47 -04:00

oxrlib
======

Introduction
------------

oxrlib provides a Python library and CLI tool to query the `Open Exchange Rates API <https://openexchangerates.org/>`_.  It emphasizes support for rich data types throughout, and supports caching API results to the filesystem.

It currently only supports OXR's "historical" API.

Getting started with the CLI tool
---------------------------------

oxrlib includes an ``oxrquery`` tool to access the OXR API directly from the command line.  By default, it reads your OXR credentials and other common configuration from ``~/.config/oxrlib.ini``.  Copy ``oxrlib_example.ini`` from the source to ``~/.config/oxrlib.ini``, then edit that file following the instructions in the comments.

Run ``oxrquery --help`` for instructions to use the tool.

Getting started with the library
--------------------------------

Here's an example of using the Python library, complete with caching results::

  from oxrlib import cache, loaders, rate

  filename_format = '{date}_{base}_rates.json'
  cache_writer = cache.CacheWriter(DIR_PATH, historical=filename_format)
  loader = loaders.LoaderChain()
  loader.add_loader(loaders.FileCache(DIR_PATH, historical=filename_format))
  loader.add_loader(loaders.OXRAPIRequest(APP_ID_STRING))
  with loader.historical(DATE, BASE_CODE_STRING) as json_response:
      hist_rate = rate.Rate.from_json_file(json_response)
  if loader.should_cache():
      cache_writer.save_rate(hist_rate)
  # Rates are available from the hist_rate.rates dict.

Running tests
-------------

Run ``./setup.py test`` from your checkout directory.