Closed suhanoves closed 2 years ago
Привет. Спасибо. После беглого осмотра комментарии общего толка:
ExchangeRate
для самодостаточности действительно просится дата курса (только не запрошенная, а реальная);currency
, в котором будет расширенная информация о валюте;id, name, code, num
пусть обращаются к атрибутам этой информации;ExchangeRatesDynamics
Игорь, глянь на текущую версию. Она полностью совместима с публичными интерфейсами твоей существующей версии. Все тесты, что были у тебя проходят на 100% (банки проходят на 66%, один пропускается, но так было и до этого, туда не лез) Ченжлог:
Спасибо. Постараюсь на неделе поглядеть реализацию.
Дифф сейчас слишком сильно шумит. Я частично посмотрел, но ты перенеси новые сущности в конец файла, иначе изменения показываются не там, где они были.
Дифф сейчас слишком сильно шумит. Я частично посмотрел, но ты перенеси новые сущности в конец файла, иначе изменения показываются не там, где они были.
Currency сдвинуть вниз не получится, т.к. она используется в объявлении ExchangeRate. Currencies, ExchangeRateDynamics я менял местами, вставлял между, всё равно diff получается шумным, т.к. PyCharm цепляется не за те методы. Как вариант можно разнести по разным модулям.
Я постарался привести файлы чтобы diff лучше увидел изменения, но это не сильно помогло для rates.py (все остальные файлы стало сильно проще сравнивать с коммитом ad068241)
Ченжлог:
f'{val}'.zfill(3)
На незакрытые вопросы жду ответов для дальнейшего приведения кода к требованиям.
Что-то я закрутился, прошу прощения. На неделе постараюсь поглядеть и отписаться.
И ремарка: длинные описания обычно не пишут — и время берегут, и потому что часто видно из кода, что и как происходит. Но при обзоре могут, конечно, какие-то уточняющие вопросы появиться.
Как вариант можно разнести по разным модулям.
Да, давай так попробуем. Потому, если что я пакет перенесём всё по курсам.
Т.к. библиотека Currencies сейчас инициализируется из константы, встаёт вопрос, стоит ли делать инициализацию ленивую загрузку?
Сейчас каждый вид курсов имеет аттрибут currencies_lib, который ведёт на единственный экземпляр библиотеки. Это дёшево, т.к. экземпляр один, и просто решает вопрос с добавлением валюты из курсов, которой нет в библиотке.
Не вижу с текущей реализацией необходимости в какой-то дополнителной ленивой загрузке, ведь больше в интернет мы не лезем. Что думаешь?
Не вижу с текущей реализацией необходимости в какой-то дополнителной ленивой загрузке, ведь больше в интернет мы не лезем. Что думаешь?
Да, возможно, только непонятно, почему атрибут currencies_lib
в объектах курсов. Например, можно рассмотреть вариант инициализации его на уровне модуля и присвоения атрибуту модуля прямо в currencies.py
:
CURRENCIES = Currencies()
Только там ещё по коду есть недочёты с оформлением и с читаемостью дифа. Доразнеси, пожалуйста, по модулям: все новые сущности — в новые модули. Тогда можно будет ещё поглядеть с на сложность кода и на протечки абстракций. Возможно есть шанс снизить общую появившуюся сложность.
По максимуму разбил на отдельные модули, чтобы не пересекались новые и старые классы, но git всё равно шумит в rates.py на классе ExchangeRates
, особвенно в методе __init__
.
Я как мог подвигал строчки кода, чтобы они соответствовали твоему, удалял и вновь добавлял docstring'и, но большего достичь не смог. Если будут вопросы - задавай
Я добавил ещё пару комментариев. Разберём их, да я волью, потом сам подрихтую остальное, а то мы затянули это дело.
Я как мог подвигал строчки кода, чтобы они соответствовали твоему, удалял и вновь добавлял docstring'и, но большего достичь не смог.
Угу, похоже из-за строки документации класса, в которой описаны параметры из инициализатора. Давай уберём всё же. Можно минимальный пример использования оставить, но в целом примерам место в документации или readme.
Если что меня не беспокоит количество итераций, я на этом только учусь :) но понимаю, что для тебя это лишний напряг. Дай тогда ответ по поводу констант, надо ли сливать в одну, если надо я перепишу метод и солью. Остальное подправил.
но понимаю, что для тебя это лишний напряг.
Не то чтобы напряг, скорее потому что описывать текстом дольше, чем подправить %)
Залил все последние исправления по замечаниям. Ты когда внесёшь исправления в коде после.перед мёрджем, маякни как-нибудь, пожалуйста. Я, во-первых, хочу поучиться и сделать для себя выводы. А во-вторых реализовать получение курсов металлов, как просили в соседней теме :)
Спасибо, влил. Можно по истории поглядеть, какие я изменения внёс. Если будут вопросы по ним, можно прямо тут задать.
Игорь, привет! Меня зовут Евгений, я начинающий разработчик и это мой первый опыт, когда я пытаюсь законтрибьютить в опенсорс, поэтому если я что-то делаю не то, ты мне скажи, я буду исправляться.
Теперь к делу: я пользуюсь твоим модулем, но увидел, что на сайте Центробанка есть ещё интересные возможности, которые не покрыты pycbrf, а именно:
Это привело меня к доработке твоего проекта, но его переосмысление немного ломает существующую совместимость. Сейчас поясню.
На текущий момент у тебя сведения о валюте существуют как аттрибуты экземпляра курса. Моя идея состоит в следующем:
Что мной сделано:
Во время парсинга обнаружились интересные моменты:
Разумеется на всё написана подробная документация, везде расставлены аннотации типов и написано большое количество тестов.
Меня сильно смущает то, что старый интерфейс не на 100% совместим, поэтому жду от тебя твоей реакции и готов править код. P.S.: Если коммитов слишком много, могу слить их в один.