cfb-data 0.6.0__tar.gz → 0.7.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. {cfb_data-0.6.0 → cfb_data-0.7.0}/PKG-INFO +3 -3
  2. {cfb_data-0.6.0 → cfb_data-0.7.0}/README.md +1 -1
  3. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_redis.py +62 -28
  4. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data.egg-info/PKG-INFO +3 -3
  5. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data.egg-info/requires.txt +1 -1
  6. {cfb_data-0.6.0 → cfb_data-0.7.0}/pyproject.toml +2 -2
  7. {cfb_data-0.6.0 → cfb_data-0.7.0}/LICENSE +0 -0
  8. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/__init__.py +0 -0
  9. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_catalog/__init__.py +0 -0
  10. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_catalog/merge.py +0 -0
  11. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_catalog/models.py +0 -0
  12. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_catalog/projection.py +0 -0
  13. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_catalog/sources.py +0 -0
  14. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_dataframes.py +0 -0
  15. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_executor.py +0 -0
  16. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_observability.py +0 -0
  17. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_parquet.py +0 -0
  18. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_reference_enums.py +0 -0
  19. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_request_rules.py +0 -0
  20. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_requests.py +0 -0
  21. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_tabular.py +0 -0
  22. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/_transport.py +0 -0
  23. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/adjusted_metrics/__init__.py +0 -0
  24. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/adjusted_metrics/models/__init__.py +0 -0
  25. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/adjusted_metrics/models/pydantic/__init__.py +0 -0
  26. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/adjusted_metrics/models/pydantic/requests.py +0 -0
  27. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/adjusted_metrics/models/pydantic/responses.py +0 -0
  28. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/adjusted_metrics/resource.py +0 -0
  29. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/base/__init__.py +0 -0
  30. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/base/types.py +0 -0
  31. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/betting/__init__.py +0 -0
  32. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/betting/models/__init__.py +0 -0
  33. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/betting/models/pydantic/__init__.py +0 -0
  34. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/betting/models/pydantic/requests.py +0 -0
  35. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/betting/models/pydantic/responses.py +0 -0
  36. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/betting/resource.py +0 -0
  37. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/__init__.py +0 -0
  38. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_backend.py +0 -0
  39. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_catalog.py +0 -0
  40. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_catalog_codecs.py +0 -0
  41. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_coordinator.py +0 -0
  42. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_identity_codecs.py +0 -0
  43. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_key.py +0 -0
  44. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_models.py +0 -0
  45. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_null.py +0 -0
  46. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_sqlite.py +0 -0
  47. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/_sqlite_sql.py +0 -0
  48. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/config.py +0 -0
  49. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/policy.py +0 -0
  50. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/acquire_refresh_lease.sql +0 -0
  51. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/begin_immediate.sql +0 -0
  52. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/catalog_counts.sql +0 -0
  53. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/cleanup_responses.sql +0 -0
  54. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/delete_coverage_failure.sql +0 -0
  55. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/delete_response.sql +0 -0
  56. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/delete_team_aliases.sql +0 -0
  57. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/enable_foreign_keys.sql +0 -0
  58. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/enable_wal.sql +0 -0
  59. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_athletes.sql +0 -0
  60. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_conference_by_id.sql +0 -0
  61. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_conference_by_name.sql +0 -0
  62. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_fresh_coverage.sql +0 -0
  63. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_game_by_id.sql +0 -0
  64. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_games.sql +0 -0
  65. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_team_by_id.sql +0 -0
  66. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_team_by_name.sql +0 -0
  67. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_venue_by_id.sql +0 -0
  68. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/find_venue_by_name.sql +0 -0
  69. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/get_response.sql +0 -0
  70. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/get_response_size.sql +0 -0
  71. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/get_schema_version.sql +0 -0
  72. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/initialize_schema_version.sql +0 -0
  73. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/release_refresh_lease.sql +0 -0
  74. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/renew_refresh_lease.sql +0 -0
  75. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/schema.sql +0 -0
  76. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/select_catalog_observations.sql +0 -0
  77. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/set_busy_timeout.sql +0 -0
  78. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/set_synchronous_normal.sql +0 -0
  79. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_athlete.sql +0 -0
  80. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_athlete_team_season.sql +0 -0
  81. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_catalog_observation.sql +0 -0
  82. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_coach.sql +0 -0
  83. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_coach_team_season.sql +0 -0
  84. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_conference.sql +0 -0
  85. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_conference_affiliation.sql +0 -0
  86. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_coverage.sql +0 -0
  87. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_coverage_failure.sql +0 -0
  88. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_drive.sql +0 -0
  89. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_game.sql +0 -0
  90. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_play.sql +0 -0
  91. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_playoff_matchup.sql +0 -0
  92. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_recruit.sql +0 -0
  93. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_response.sql +0 -0
  94. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_team.sql +0 -0
  95. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_team_alias.sql +0 -0
  96. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_team_season.sql +0 -0
  97. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_venue.sql +0 -0
  98. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/cache/sql/upsert_vocabulary.sql +0 -0
  99. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/client.py +0 -0
  100. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/coaches/__init__.py +0 -0
  101. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/coaches/models/__init__.py +0 -0
  102. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/coaches/models/pydantic/__init__.py +0 -0
  103. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/coaches/models/pydantic/requests.py +0 -0
  104. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/coaches/models/pydantic/responses.py +0 -0
  105. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/coaches/resource.py +0 -0
  106. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/conferences/__init__.py +0 -0
  107. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/conferences/models/__init__.py +0 -0
  108. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/conferences/models/pydantic/__init__.py +0 -0
  109. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/conferences/models/pydantic/identity.py +0 -0
  110. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/conferences/models/pydantic/requests.py +0 -0
  111. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/conferences/models/pydantic/responses.py +0 -0
  112. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/conferences/resource.py +0 -0
  113. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/draft/__init__.py +0 -0
  114. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/draft/models/__init__.py +0 -0
  115. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/draft/models/pydantic/__init__.py +0 -0
  116. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/draft/models/pydantic/requests.py +0 -0
  117. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/draft/models/pydantic/responses.py +0 -0
  118. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/draft/resource.py +0 -0
  119. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/drives/__init__.py +0 -0
  120. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/drives/models/__init__.py +0 -0
  121. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/drives/models/pydantic/__init__.py +0 -0
  122. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/drives/models/pydantic/requests.py +0 -0
  123. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/drives/models/pydantic/responses.py +0 -0
  124. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/drives/resource.py +0 -0
  125. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/enums.py +0 -0
  126. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/errors.py +0 -0
  127. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/games/__init__.py +0 -0
  128. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/games/models/__init__.py +0 -0
  129. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/games/models/pydantic/__init__.py +0 -0
  130. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/games/models/pydantic/identity.py +0 -0
  131. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/games/models/pydantic/requests.py +0 -0
  132. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/games/models/pydantic/responses.py +0 -0
  133. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/games/resource.py +0 -0
  134. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/identities/__init__.py +0 -0
  135. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/identities/_normalization.py +0 -0
  136. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/identities/contracts.py +0 -0
  137. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/identities/resource.py +0 -0
  138. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/info/__init__.py +0 -0
  139. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/info/models/__init__.py +0 -0
  140. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/info/models/pydantic/__init__.py +0 -0
  141. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/info/models/pydantic/requests.py +0 -0
  142. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/info/models/pydantic/responses.py +0 -0
  143. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/info/resource.py +0 -0
  144. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/metrics/__init__.py +0 -0
  145. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/metrics/models/__init__.py +0 -0
  146. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/metrics/models/pydantic/__init__.py +0 -0
  147. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/metrics/models/pydantic/requests.py +0 -0
  148. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/metrics/models/pydantic/responses.py +0 -0
  149. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/metrics/resource.py +0 -0
  150. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/observability.py +0 -0
  151. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/players/__init__.py +0 -0
  152. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/players/models/__init__.py +0 -0
  153. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/players/models/pydantic/__init__.py +0 -0
  154. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/players/models/pydantic/identity.py +0 -0
  155. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/players/models/pydantic/requests.py +0 -0
  156. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/players/models/pydantic/responses.py +0 -0
  157. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/players/resource.py +0 -0
  158. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/playoffs/__init__.py +0 -0
  159. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/playoffs/models/__init__.py +0 -0
  160. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/playoffs/models/pydantic/__init__.py +0 -0
  161. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/playoffs/models/pydantic/requests.py +0 -0
  162. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/playoffs/models/pydantic/responses.py +0 -0
  163. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/playoffs/resource.py +0 -0
  164. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/plays/__init__.py +0 -0
  165. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/plays/models/__init__.py +0 -0
  166. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/plays/models/pydantic/__init__.py +0 -0
  167. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/plays/models/pydantic/requests.py +0 -0
  168. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/plays/models/pydantic/responses.py +0 -0
  169. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/plays/resource.py +0 -0
  170. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/py.typed +0 -0
  171. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/rankings/__init__.py +0 -0
  172. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/rankings/models/__init__.py +0 -0
  173. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/rankings/models/pydantic/__init__.py +0 -0
  174. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/rankings/models/pydantic/requests.py +0 -0
  175. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/rankings/models/pydantic/responses.py +0 -0
  176. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/rankings/resource.py +0 -0
  177. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/ratings/__init__.py +0 -0
  178. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/ratings/models/__init__.py +0 -0
  179. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/ratings/models/pydantic/__init__.py +0 -0
  180. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/ratings/models/pydantic/requests.py +0 -0
  181. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/ratings/models/pydantic/responses.py +0 -0
  182. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/ratings/resource.py +0 -0
  183. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/recruiting/__init__.py +0 -0
  184. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/recruiting/models/__init__.py +0 -0
  185. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/recruiting/models/pydantic/__init__.py +0 -0
  186. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/recruiting/models/pydantic/requests.py +0 -0
  187. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/recruiting/models/pydantic/responses.py +0 -0
  188. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/recruiting/resource.py +0 -0
  189. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/retry.py +0 -0
  190. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/stats/__init__.py +0 -0
  191. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/stats/models/__init__.py +0 -0
  192. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/stats/models/pydantic/__init__.py +0 -0
  193. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/stats/models/pydantic/requests.py +0 -0
  194. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/stats/models/pydantic/responses.py +0 -0
  195. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/stats/resource.py +0 -0
  196. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/teams/__init__.py +0 -0
  197. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/teams/models/__init__.py +0 -0
  198. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/teams/models/pydantic/__init__.py +0 -0
  199. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/teams/models/pydantic/identity.py +0 -0
  200. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/teams/models/pydantic/requests.py +0 -0
  201. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/teams/models/pydantic/responses.py +0 -0
  202. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/teams/resource.py +0 -0
  203. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/venues/__init__.py +0 -0
  204. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/venues/models/__init__.py +0 -0
  205. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/venues/models/pydantic/__init__.py +0 -0
  206. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/venues/models/pydantic/identity.py +0 -0
  207. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/venues/models/pydantic/responses.py +0 -0
  208. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data/venues/resource.py +0 -0
  209. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data.egg-info/SOURCES.txt +0 -0
  210. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data.egg-info/dependency_links.txt +0 -0
  211. {cfb_data-0.6.0 → cfb_data-0.7.0}/cfb_data/cfb_data.egg-info/top_level.txt +0 -0
  212. {cfb_data-0.6.0 → cfb_data-0.7.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfb-data
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Async validated CollegeFootballData access for pandas and Polars
5
5
  Author: Ryan Anderson
6
6
  License-Expression: MIT
@@ -24,7 +24,7 @@ Requires-Dist: pyarrow<26,>=25
24
24
  Provides-Extra: polars
25
25
  Requires-Dist: polars<2,>=1.43.2; extra == "polars"
26
26
  Provides-Extra: redis
27
- Requires-Dist: redis<8,>=7.1; extra == "redis"
27
+ Requires-Dist: redis<9,>=7.1; extra == "redis"
28
28
  Provides-Extra: dev
29
29
  Requires-Dist: build<2,>=1.5; extra == "dev"
30
30
  Requires-Dist: furo>=2025.12.19; extra == "dev"
@@ -41,7 +41,7 @@ Dynamic: license-file
41
41
 
42
42
  # College Football Data Python Toolkit
43
43
 
44
- `cfb-data` 0.6.0 is a pre-alpha Python toolkit for exploring the public
44
+ `cfb-data` 0.7.0 is a pre-alpha Python toolkit for exploring the public
45
45
  [CollegeFootballData API](https://collegefootballdata.com/). Most calls return
46
46
  eager pandas DataFrames that are ready for analysis. Polars is available as an
47
47
  option, and a few naturally nested results return Pydantic models.
@@ -1,6 +1,6 @@
1
1
  # College Football Data Python Toolkit
2
2
 
3
- `cfb-data` 0.6.0 is a pre-alpha Python toolkit for exploring the public
3
+ `cfb-data` 0.7.0 is a pre-alpha Python toolkit for exploring the public
4
4
  [CollegeFootballData API](https://collegefootballdata.com/). Most calls return
5
5
  eager pandas DataFrames that are ready for analysis. Polars is available as an
6
6
  option, and a few naturally nested results return Pydantic models.
@@ -9,7 +9,7 @@ import math
9
9
  import unicodedata
10
10
  from collections.abc import Awaitable, Iterable, Mapping
11
11
  from datetime import UTC, datetime
12
- from typing import TYPE_CHECKING, Self, cast
12
+ from typing import TYPE_CHECKING, Self, cast, overload
13
13
 
14
14
  from redis.asyncio import Redis
15
15
 
@@ -212,9 +212,10 @@ class RedisCacheBackend:
212
212
  self._index_key(namespace, normalized), identifier
213
213
  )
214
214
  if athlete_indexes:
215
- pipeline.hset(
215
+ _queue_hset(
216
+ pipeline,
216
217
  self._compact_index_key("athlete"),
217
- mapping=athlete_indexes,
218
+ athlete_indexes,
218
219
  )
219
220
  if removed_athlete_indexes:
220
221
  pipeline.hdel(
@@ -222,14 +223,16 @@ class RedisCacheBackend:
222
223
  *removed_athlete_indexes,
223
224
  )
224
225
  if membership_indexes:
225
- pipeline.hset(
226
+ _queue_hset(
227
+ pipeline,
226
228
  self._compact_index_key("athlete-membership"),
227
- mapping=membership_indexes,
229
+ membership_indexes,
228
230
  )
229
231
  if encoded_observations:
230
- pipeline.hset(
232
+ _queue_hset(
233
+ pipeline,
231
234
  self._observation_hash_key(),
232
- mapping=dict(encoded_observations),
235
+ dict(encoded_observations),
233
236
  )
234
237
  if projection.coverage is not None:
235
238
  self._project_coverage(pipeline, projection.coverage)
@@ -737,9 +740,10 @@ class RedisCacheBackend:
737
740
  for team_fact in projection.teams:
738
741
  key = self._entity_key("team", team_fact.id)
739
742
  pipe.hsetnx(key, "first_seen_at", observed_at)
740
- pipe.hset(
743
+ _queue_hset(
744
+ pipe,
741
745
  key,
742
- mapping=_without_none(
746
+ _without_none(
743
747
  {
744
748
  "id": str(team_fact.id),
745
749
  "school": team_fact.school,
@@ -768,9 +772,10 @@ class RedisCacheBackend:
768
772
  str(season_fact.season),
769
773
  )
770
774
  pipe.hsetnx(key, "first_seen_at", observed_at)
771
- pipe.hset(
775
+ _queue_hset(
776
+ pipe,
772
777
  key,
773
- mapping=_without_none(
778
+ _without_none(
774
779
  {
775
780
  "team_id": str(season_fact.team_id),
776
781
  "season": str(season_fact.season),
@@ -791,9 +796,10 @@ class RedisCacheBackend:
791
796
  for conference_fact in projection.conferences:
792
797
  key = self._entity_key("conference", conference_fact.id)
793
798
  pipe.hsetnx(key, "first_seen_at", observed_at)
794
- pipe.hset(
799
+ _queue_hset(
800
+ pipe,
795
801
  key,
796
- mapping=_without_none(
802
+ _without_none(
797
803
  {
798
804
  "id": str(conference_fact.id),
799
805
  "name": conference_fact.name,
@@ -838,9 +844,10 @@ class RedisCacheBackend:
838
844
  for fact in projection.venues:
839
845
  key = self._entity_key("venue", fact.id)
840
846
  pipe.hsetnx(key, "first_seen_at", observed_at)
841
- pipe.hset(
847
+ _queue_hset(
848
+ pipe,
842
849
  key,
843
- mapping=_without_none(
850
+ _without_none(
844
851
  {
845
852
  "id": str(fact.id),
846
853
  "name": fact.name,
@@ -862,9 +869,10 @@ class RedisCacheBackend:
862
869
  for fact in projection.games:
863
870
  key = self._entity_key("game", fact.id)
864
871
  pipe.hsetnx(key, "first_seen_at", observed_at)
865
- pipe.hset(
872
+ _queue_hset(
873
+ pipe,
866
874
  key,
867
- mapping=_without_none(
875
+ _without_none(
868
876
  {
869
877
  "id": str(fact.id),
870
878
  "season": str(fact.season) if fact.season is not None else None,
@@ -903,7 +911,7 @@ class RedisCacheBackend:
903
911
  "athlete", projection.athletes, projection, observed_at
904
912
  )
905
913
  if athlete_payloads:
906
- pipe.hset(self._compact_catalog_key("athlete"), mapping=athlete_payloads)
914
+ _queue_hset(pipe, self._compact_catalog_key("athlete"), athlete_payloads)
907
915
  membership_payloads = _compact_fact_payloads(
908
916
  "athlete-membership",
909
917
  projection.athlete_team_seasons,
@@ -911,9 +919,10 @@ class RedisCacheBackend:
911
919
  observed_at,
912
920
  )
913
921
  if membership_payloads:
914
- pipe.hset(
922
+ _queue_hset(
923
+ pipe,
915
924
  self._compact_catalog_key("athlete-membership"),
916
- mapping=membership_payloads,
925
+ membership_payloads,
917
926
  )
918
927
 
919
928
  def _project_remaining(
@@ -937,9 +946,10 @@ class RedisCacheBackend:
937
946
  pipe.hsetnx(key, "first_seen_at", observed_at)
938
947
  payload["source_version"] = 1
939
948
  payload["schema_version"] = 1
940
- pipe.hset(
949
+ _queue_hset(
950
+ pipe,
941
951
  key,
942
- mapping={
952
+ {
943
953
  field: str(value)
944
954
  for field, value in payload.items()
945
955
  if value is not None
@@ -949,7 +959,7 @@ class RedisCacheBackend:
949
959
  "recruit", projection.recruits, projection, observed_at
950
960
  )
951
961
  if recruit_payloads:
952
- pipe.hset(self._compact_catalog_key("recruit"), mapping=recruit_payloads)
962
+ _queue_hset(pipe, self._compact_catalog_key("recruit"), recruit_payloads)
953
963
  self._project_coach_team_seasons(pipe, projection, observed_at)
954
964
 
955
965
  def _project_coach_team_seasons(
@@ -961,9 +971,10 @@ class RedisCacheBackend:
961
971
  identity = _fact_identity("coach-team-season", payload)
962
972
  key = self._key("catalog", "coach-team-season", identity)
963
973
  pipe.hsetnx(key, "first_seen_at", observed_at)
964
- pipe.hset(
974
+ _queue_hset(
975
+ pipe,
965
976
  key,
966
- mapping=_without_none(
977
+ _without_none(
967
978
  {
968
979
  "coach_id": str(fact.coach_id),
969
980
  "team_id": str(fact.team_id),
@@ -1052,9 +1063,7 @@ class RedisCacheBackend:
1052
1063
  for identifier in sorted(identifiers):
1053
1064
  pipeline.hgetall(self._entity_key(namespace, identifier))
1054
1065
  rows = await pipeline.execute()
1055
- return [
1056
- _byte_mapping(row) for row in rows if isinstance(row, Mapping) and bool(row)
1057
- ]
1066
+ return [_byte_mapping(row) for row in rows if row]
1058
1067
 
1059
1068
  async def _compact_json_records(
1060
1069
  self, namespace: str, identifiers: set[str]
@@ -1262,6 +1271,21 @@ def _digest(value: str) -> str:
1262
1271
  return hashlib.sha256(value.encode()).hexdigest()
1263
1272
 
1264
1273
 
1274
+ type _RedisEncodable = bytes | bytearray | memoryview | str | int | float
1275
+
1276
+
1277
+ def _queue_hset(
1278
+ pipeline: Redis,
1279
+ key: str,
1280
+ mapping: Mapping[str, _RedisEncodable],
1281
+ ) -> None:
1282
+ """Queue one hash update with a mapping accepted by Redis 7 and 8."""
1283
+ items: list[_RedisEncodable] = [
1284
+ item for field, value in mapping.items() for item in (field, value)
1285
+ ]
1286
+ pipeline.hset(key, items=items)
1287
+
1288
+
1265
1289
  def _without_none(values: Mapping[str, str | None]) -> dict[str, str]:
1266
1290
  """Return Redis hash fields with absent optional values omitted."""
1267
1291
  return {key: value for key, value in values.items() if value is not None}
@@ -1289,6 +1313,16 @@ def _integer(value: object) -> int:
1289
1313
  raise CFBDCacheBackendError("Redis operation returned an unexpected value")
1290
1314
 
1291
1315
 
1316
+ @overload
1317
+ async def _redis_result[ResultT](value: Awaitable[ResultT]) -> ResultT: ...
1318
+
1319
+
1320
+ @overload
1321
+ async def _redis_result[ResultT](
1322
+ value: Awaitable[ResultT] | ResultT,
1323
+ ) -> ResultT: ...
1324
+
1325
+
1292
1326
  async def _redis_result[ResultT](
1293
1327
  value: Awaitable[ResultT] | ResultT,
1294
1328
  ) -> ResultT:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cfb-data
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Async validated CollegeFootballData access for pandas and Polars
5
5
  Author: Ryan Anderson
6
6
  License-Expression: MIT
@@ -24,7 +24,7 @@ Requires-Dist: pyarrow<26,>=25
24
24
  Provides-Extra: polars
25
25
  Requires-Dist: polars<2,>=1.43.2; extra == "polars"
26
26
  Provides-Extra: redis
27
- Requires-Dist: redis<8,>=7.1; extra == "redis"
27
+ Requires-Dist: redis<9,>=7.1; extra == "redis"
28
28
  Provides-Extra: dev
29
29
  Requires-Dist: build<2,>=1.5; extra == "dev"
30
30
  Requires-Dist: furo>=2025.12.19; extra == "dev"
@@ -41,7 +41,7 @@ Dynamic: license-file
41
41
 
42
42
  # College Football Data Python Toolkit
43
43
 
44
- `cfb-data` 0.6.0 is a pre-alpha Python toolkit for exploring the public
44
+ `cfb-data` 0.7.0 is a pre-alpha Python toolkit for exploring the public
45
45
  [CollegeFootballData API](https://collegefootballdata.com/). Most calls return
46
46
  eager pandas DataFrames that are ready for analysis. Polars is available as an
47
47
  option, and a few naturally nested results return Pydantic models.
@@ -22,4 +22,4 @@ twine<8,>=7
22
22
  polars<2,>=1.43.2
23
23
 
24
24
  [redis]
25
- redis<8,>=7.1
25
+ redis<9,>=7.1
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "cfb-data"
7
- version = "0.6.0"
7
+ version = "0.7.0"
8
8
  description = "Async validated CollegeFootballData access for pandas and Polars"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -32,7 +32,7 @@ polars = [
32
32
  "polars>=1.43.2,<2",
33
33
  ]
34
34
  redis = [
35
- "redis>=7.1,<8",
35
+ "redis>=7.1,<9",
36
36
  ]
37
37
  dev = [
38
38
  "build>=1.5,<2",
File without changes
File without changes