Skip to content

fix: remove dead code and optimize cache cleanup#3

Merged
bivlked merged 2 commits into
mainfrom
fix/project-improvements
Dec 9, 2025
Merged

fix: remove dead code and optimize cache cleanup#3
bivlked merged 2 commits into
mainfrom
fix/project-improvements

Conversation

@bivlked

@bivlked bivlked commented Dec 9, 2025

Copy link
Copy Markdown
Owner

Описание

Исправление выявленных проблем из анализа проекта и оптимизация производительности кэша.

Изменения

Исправления

  • 🐛 Удален мертвый код: убраны недостижимые проверки if rate is None после вызова get_currency_rate() в currency_converter.py
  • 🔧 Исправлена сигнатура функции: изменен возвращаемый тип get_currency_rate() с Optional[float] на float в cbr_parser.py
  • 📝 Обновлена документация: исправлен docstring get_currency_rate() для соответствия фактическому поведению

Оптимизации

  • ⚡ Оптимизирован кэш: реализована ленивая очистка кэша (только при переполнении)
  • 🎯 Улучшена производительность: проверка TTL в get() теперь выполняется только для конкретной записи (O(1) вместо O(n))

Тесты

  • 🧪 Обновлены тесты для соответствия новой логике
  • ✅ Все тесты проходят (91 passed, 6 skipped)
  • 📊 Покрытие тестами: 77.40% (выше требуемых 70%)
  • 🔍 Pylint: 10.00/10

Файлы изменений

  • src/currate/currency_converter.py - удален мертвый код
  • src/currate/cbr_parser.py - исправлена сигнатура и docstring
  • src/currate/cache.py - оптимизирована очистка кэша
  • tests/test_cache_extended.py - обновлен тест
  • tests/test_currency_converter_extended.py - обновлен тест
  • CHANGELOG.md - обновлена документация изменений

Проверка

  • Все тесты проходят
  • Покрытие тестами ≥ 70% (77.40%)
  • Pylint проверка пройдена (10.00/10)
  • Документация обновлена
  • Код соответствует стандартам проекта

Связанные задачи

Исправление проблем, выявленных в анализе проекта CurRate.


Note

Aligns get_currency_rate() to always return float, removes unreachable None checks, optimizes cache with lazy cleanup and per-key TTL checks, and updates tests/changelog accordingly.

  • Core changes:
    • Cache (src/currate/cache.py): Lazy cleanup on set() only when capacity is hit; TTL checked per entry in get(); preserves LRU behavior.
    • Parser (src/currate/cbr_parser.py): get_currency_rate() return type changed from Optional[float] to float; docstring clarified (no None, explicit exceptions).
    • Converter (src/currate/currency_converter.py): Removed dead if rate is None branches after get_currency_rate(); error handling via exceptions only.
  • Tests:
    • Updated to reflect non-None rate behavior and lazy cache cleanup (patched datetime, explicit cleanup_expired() where needed).
  • Docs:
    • CHANGELOG.md updated with fixes, performance notes, and test/quality metrics.

Written by Cursor Bugbot for commit 2e2d0ff. This will update automatically on new commits. Configure here.

- Remove unreachable if rate is None checks after get_currency_rate()
  (get_currency_rate always returns float or raises exception)
- Change get_currency_rate return type from Optional[float] to float
- Update docstring to reflect actual behavior (always returns float or raises)
- Optimize cache cleanup: lazy cleanup only on overflow in set()
- Remove cleanup_expired() call from get() method (check TTL per entry only)
- Update tests to match new behavior
- Fix test_cache_cleanup_triggered_on_set for new lazy cleanup logic
- Fix test_convert_rate_none to test exception handling instead of None return

Test coverage: 77.40% (above required 70%)
Pylint: 10.00/10
@codecov

codecov Bot commented Dec 9, 2025

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@bivlked bivlked merged commit 149f88a into main Dec 9, 2025
5 of 6 checks passed
@bivlked bivlked deleted the fix/project-improvements branch December 9, 2025 20:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant