Нам пришлось переехать на https://codeberg.org/KOLANICH-libs/cbrf.py, берите новые версии там.
Под предлогом "большей безопасности" купленный Micro$oft GitHub начал дискриминацию против тех, кто входит в аккаунт только по паролю, в то же время будучи заинтересована коммерчески в успехе и широком внедрении спецификаций FIDO и реализации Windows Hello, которые они продвигают как замену паролям. Это приведёт к плачевнным последствиям и абсолютно недопустимо, прочитайте почему.
Кто не хочет участвовать в строительстве своей цифровой тюрьмы, тем рекомендуется последовать примеру и свалить подальше от GitHub и Micro$oft. Вот список альтернатив alternatives и некоторых причин сделать это. Если они удалят дискуссию - есть хорошо известные места, в которых есть копии удалённого контента. Прочитайте, почему вам тоже надо свалить с GitHub.
Библиотека получает курсы обмена валют через официальное API Центробанка РФ .
Я НЕ РАБОТАЮ НА ЦЕНТРОБАНК И НЕ СВЯЗАН С НИМ. Я ПРОСТО ГРАЖДАНИН И РЕЗИДЕНТ РФ И ПОЭТОМУ ВЫНУЖДЕН ИСПОЛЬЗОВАТЬ ОФИЦИАЛЬНЫЙ КУРС ДЛЯ ПЕРЕСЧЁТА СТОИМОСТИ ТОВАРОВ В РУБЛИ. ПУБЛИКАЦИЯ ЭТОЙ БИБЛИОТЕКИ НЕ ДОЛЖНА ПОНИМАТЬСЯ КАК ПРОДВИЖЕНИЕ КАКОЙ ЛИБО ПОЛИТИКИ, БАНКА, УСТАНОВЛЕННЫХ ИМ ОБМЕННЫХ КУРСОВ ИЛИ ЕГО ПОЗИЦИИ, ИЛИ КАК СОВЕТ. БИБЛИОТЕКА ОПУБЛИКОВАНА ЗДЕСЬ ИСКЛЮЧИТЕЛЬНО ДЛЯ УДОБСТВА ЛЮДЕЙ, КОТОРЫМ ПРИХОДИТСЯ ИСПОЛЬЗОВАТЬ ОБМЕННЫЕ КУРСЫ ЦЕНТРОБАНКА. НИКАКИХ ГАРАНТИЙ НЕ ПРЕДОСТАВЛЯЕТСЯ. Я НЕ НЕСУ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА КАЧЕСТВО ИЛИ ДЕЙСТВИЯ БИБЛИОТЕКИ ИЛИ БАНКА, ДОСТОВЕРНОСТЬ ДАННЫХ, ОБМЕННЫЕ КУРСЫ, ЛЮБЫЕ ДРУГИЕ ПОТЕРИ ИЛИ УБЫТКИ, ПОТЕРЯННУЮ, ПОДРАЗУМЕВАЕМУЮ ИЛИ ВЫДУМАННУЮ ПРИБЫЛЬ, И ВООБЩЕ ЧТО ЛИБО. ПОЖАЛУЙСТА, ПРОСМОТРИТЕ ФАЙЛ С (РАЗ)ЛИЦЕНЗИЕЙ ДЛЯ БОЛЕЕ ПОДРОБНОЙ ИНФОРМАЦИИ О ЛИЦЕНЗИИ.
from cbrf import CentroBank
cb=CentroBank()
print(cb.byISO["USD"])
import money
from cbrf import MoneyBackend
money.xrates.install(MoneyBackend())
money.Money(1, "USD").to("RUB")
!!! Внимание: на данный момент не используется тип Decimal
. Вероятна потеря точности !!!
import pint
from cbrf import populatePintUnitRegistry
ureg = pint.UnitRegistry(None)
populatePintUnitRegistry(ureg, cb.byISO.values())
ureg("1 USD").to(ureg.RUB)