TODO Evaluation¶
Catalog of all TODO comments in the codebase, with context and recommendations.
| # | File | Line | TODO Comment | Date Introduced | Context | Recommendation |
|---|---|---|---|---|---|---|
| 1 | src/fbcm/constants.py |
13 | Think harder about this name? |
2026-01-27 | The PHOTO_BASE_DIR env var/constant name. Refers to the directory used for storing player photos downloaded during draft report generation. |
Low priority. The name is descriptive enough. If renamed, update all references in draft_buzz.py and word_gen.py. Consider closing as-is. |
| 2 | src/fbcm/docx/word_gen.py |
367 | Parameterize the fontpath here |
2026-01-29 | Font path (/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf) is hardcoded in _gen_championship_ring. Falls back to default font on failure. |
Medium priority. Hardcoded path will fail on non-Linux or systems without DejaVu fonts. Could be added as a config option or constant. |
| 3 | src/fbcm/docx/word_gen.py |
394 | Split this into smaller methods |
2026-01-29 | _gen_header_table builds the entire header section of the draft report (photo cell, info cell, ring cell) in one method. |
Medium priority. Refactoring target. Method handles photo insertion, player info formatting, and championship ring placement. Splitting would improve readability and testability. |
| 4 | src/fbcm/docx/word_gen.py |
700 | Skills, comparisons, and recruiting should probably all be distinct methods |
2026-01-29 | The section after this TODO in _gen_skills_section handles skill ratings, NFL comparisons, and recruiting info all within the same method body. |
Medium priority. Related to #3 — part of a broader refactoring effort for word_gen.py. Splitting would improve readability and testability. |
| 5 | src/fbcm/draft_buzz.py |
119 | Returning both text_content and page.content is a temporary kludge |
2026-01-14 | _fetch_page returns text_content (parsed text) but the caller also needs raw HTML (page.content) for image extraction. Currently only text_content is returned alongside image data. |
Medium priority. The return signature may need reworking if callers ever need the raw HTML content. Evaluate whether text_content alone is sufficient for all downstream use cases. |
| 6 | src/fbcm/models.py |
291 | Find a source for age and DOB, DraftBuzz doesn't provide it |
2026-01-24 | DraftProspect model has age and dob fields that are always empty strings because DraftBuzz (the data source) doesn't include this information. |
Low priority. Requires finding an alternative data source. Fields exist as placeholders for future enrichment. No functional impact. |
| 7 | src/fbcm/fbcm.py |
217 | Ensure jellyfin isn't running..it borks the post processing |
2026-01-06 | Comment inside nfl_games CLI command. Jellyfin media server can interfere with post-processing of downloaded game files (likely file locking or premature scanning). |
Low priority. Could add a pre-flight check for running Jellyfin processes, or document as a known limitation. Edge case that only affects users running Jellyfin on the same machine. |
| 8 | src/fbcm/file_namer.py |
23 | This needs to be generalized |
2026-03-09 | _get_bowl_game_str has a hardcoded list of bowl/championship game names (SEC Championship, Orange Bowl, CFP Final, etc.) used for file naming. |
Medium priority. The list will need updating as bowl games change names or new ones are added. Could be moved to a config file or constants module. |
| 9 | src/fbcm/nfl.py |
233 | This class requires a lot of work to leverage yt-dlp fully |
2026-01-06 | Docstring for NFLShowDownloader. The class is a basic wrapper around YoutubeDL for downloading NFL Plus TV series. |
Low priority. Broad refactoring note. Would need a specific plan for what "leverage yt-dlp fully" means (e.g., post-processors, progress hooks, better error handling). |
| 10 | tests/test_fbcm/test_base.py |
207 | Make the mocking cleaner |
2026-01-06 | test_download_from_file test method. The mocking setup for yt_dlp.YoutubeDL could be simplified or extracted into a fixture. |
Low priority. Test quality improvement. Does not affect functionality. |