/pycbrf

Tools to query Bank of Russia

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

pycbrf

https://github.com/idlesign/pycbrf

Description

Tools to query Bank of Russia

Provides methods to get the following information:

  1. Exchange rates on various dates (including basic currencies data)
  2. Banks information (requisites, codes, numbers, etc.)

Requirements

  • Python 3.6+
  • requests Python package
  • dbf_light Python package (to support legacy Bank format)
  • click package (optional, for CLI)

Usage

CLI

$ pycbrf --help

$ pycbrf rates
$ pycbrf rates -d 2016-06-26 -c USD

$ pycbrf banks
$ pycbrf banks -b 045004641

CLI requires click package to be installed. Can be installed with pycbrf using:

$ pip install pycbrf[cli]

Python

from pycbrf import ExchangeRates, Banks


rates = ExchangeRates('2016-06-26', locale_en=True)

rates.date_requested  # 2016-06-26 00:00:00
rates.date_received  # 2016-06-25 00:00:00
rates.dates_match  # False
# Note: 26th of June was a holiday, data is taken from the 25th.

# Various indexing is supported:
rates['USD'].name  # US Dollar
rates['R01235'].name  # US Dollar
rates['840'].name  # US Dollar

rates['USD']
'''
    ExchangeRate(
        id='R01235',
        name='US Dollar',
        code='USD',
        num='840',
        value=Decimal('65.5287'),
        par=Decimal('1'),
        rate=Decimal('65.5287'),
        date=datetime(2016, 06, 25),
        currency=Currency(
            id='R01235',
            name_eng='US Dollar',
            name_ru='Доллар США',
            num='840',
            code='USD',
            par=Decimal('1')
        )
    )
'''

banks = Banks()
bank = banks['045004641']
assert bank
bank.swift  # SABRRUMMNH1
bank.corr  # 30101810500000000641

bank_annotated = Banks.annotate([bank])[0]
for title, value in bank_annotated.items():
    print(f'{title}: {value}')