wsba-hockey 1.0.6__tar.gz → 1.1.1__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 (160) hide show
  1. {wsba_hockey-1.0.6/src/wsba_hockey.egg-info → wsba_hockey-1.1.1}/PKG-INFO +1 -1
  2. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/pyproject.toml +1 -1
  3. wsba_hockey-1.1.1/src/wsba_hockey/api/api/index.py +129 -0
  4. wsba_hockey-1.1.1/src/wsba_hockey/api/api/main.py +4 -0
  5. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/plotting.py +3 -3
  6. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/scraping.py +7 -3
  7. wsba_hockey-1.1.1/src/wsba_hockey/api/api/wsba_main.py +1213 -0
  8. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/data_pipelines.py +71 -8
  9. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/game_stats/app.py +6 -5
  10. wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/goalie/app.py +101 -0
  11. wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/goalie/plot.py +71 -0
  12. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/heatmaps/app.py +1 -1
  13. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/heatmaps/plot.py +2 -0
  14. {wsba_hockey-1.0.6/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/skater → wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/heatmaps}/rink_plot.py +1 -1
  15. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/matchups/app.py +3 -3
  16. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/matchups/plot.py +2 -0
  17. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/matchups/rink_plot.py +1 -1
  18. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/pbp/app.py +44 -28
  19. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/pbp/plot.py +12 -3
  20. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/pbp/rink_plot.py +1 -1
  21. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/skater/app.py +1 -1
  22. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/skater/plot.py +5 -4
  23. wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/skater/rink_plot.py +245 -0
  24. wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/team_heatmaps/app.py +103 -0
  25. wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/team_heatmaps/plot.py +95 -0
  26. wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/team_heatmaps/rink_plot.py +245 -0
  27. wsba_hockey-1.1.1/src/wsba_hockey/flask/app.py +77 -0
  28. wsba_hockey-1.1.1/src/wsba_hockey/tools/__init__.py +0 -0
  29. wsba_hockey-1.1.1/src/wsba_hockey/tools/agg.py +374 -0
  30. wsba_hockey-1.1.1/src/wsba_hockey/tools/archive/old_scraping.py +1104 -0
  31. wsba_hockey-1.1.1/src/wsba_hockey/tools/plotting.py +144 -0
  32. wsba_hockey-1.1.1/src/wsba_hockey/tools/scraping.py +1000 -0
  33. wsba_hockey-1.1.1/src/wsba_hockey/tools/utils/__init__.py +1 -0
  34. wsba_hockey-1.1.1/src/wsba_hockey/tools/utils/config.py +14 -0
  35. wsba_hockey-1.1.1/src/wsba_hockey/tools/utils/save_pages.py +133 -0
  36. wsba_hockey-1.1.1/src/wsba_hockey/tools/utils/shared.py +450 -0
  37. wsba_hockey-1.1.1/src/wsba_hockey/tools/xg_model.py +455 -0
  38. wsba_hockey-1.1.1/src/wsba_hockey/workspace.py +51 -0
  39. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/wsba_main.py +10 -17
  40. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1/src/wsba_hockey.egg-info}/PKG-INFO +1 -1
  41. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey.egg-info/SOURCES.txt +20 -0
  42. wsba_hockey-1.0.6/src/wsba_hockey/workspace.py +0 -35
  43. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/LICENSE +0 -0
  44. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/README.md +0 -0
  45. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/setup.cfg +0 -0
  46. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/__init__.py +0 -0
  47. {wsba_hockey-1.0.6/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator → wsba_hockey-1.1.1/src/wsba_hockey/api/api/tools}/__init__.py +0 -0
  48. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/agg.py +0 -0
  49. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/archive/old_scraping.py +0 -0
  50. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/utils/__init__.py +0 -0
  51. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/utils/config.py +0 -0
  52. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/utils/save_pages.py +0 -0
  53. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/utils/shared.py +0 -0
  54. {wsba_hockey-1.0.6/src/wsba_hockey → wsba_hockey-1.1.1/src/wsba_hockey/api/api}/tools/xg_model.py +0 -0
  55. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/duckdb/vendor.py +0 -0
  56. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/flatted/python/flatted.py +0 -0
  57. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/flatted/python/test.py +0 -0
  58. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/gyp_main.py +0 -0
  59. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -0
  60. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -0
  61. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -0
  62. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -0
  63. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -0
  64. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -0
  65. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -0
  66. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -0
  67. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -0
  68. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -0
  69. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -0
  70. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -0
  71. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -0
  72. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -0
  73. {wsba_hockey-1.0.6/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3 → wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout}/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  74. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -0
  75. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -0
  76. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -0
  77. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -0
  78. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -0
  79. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -0
  80. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -0
  81. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -0
  82. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -0
  83. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -0
  84. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -0
  85. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -0
  86. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -0
  87. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -0
  88. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -0
  89. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -0
  90. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -0
  91. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -0
  92. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -0
  93. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -0
  94. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -0
  95. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -0
  96. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -0
  97. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -0
  98. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -0
  99. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -0
  100. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/test_gyp.py +0 -0
  101. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/graphviz.py +0 -0
  102. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/pretty_gyp.py +0 -0
  103. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/pretty_sln.py +0 -0
  104. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +0 -0
  105. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/test/fixtures/test-charmap.py +0 -0
  106. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/update-gyp.py +0 -0
  107. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/gyp_main.py +0 -0
  108. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -0
  109. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -0
  110. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -0
  111. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -0
  112. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -0
  113. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -0
  114. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -0
  115. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -0
  116. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -0
  117. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -0
  118. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -0
  119. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -0
  120. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -0
  121. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -0
  122. {wsba_hockey-1.0.6/src/wsba_hockey/tools → wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator}/__init__.py +0 -0
  123. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -0
  124. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -0
  125. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -0
  126. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -0
  127. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -0
  128. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -0
  129. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -0
  130. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -0
  131. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -0
  132. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -0
  133. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -0
  134. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -0
  135. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -0
  136. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -0
  137. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -0
  138. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -0
  139. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -0
  140. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -0
  141. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -0
  142. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -0
  143. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -0
  144. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -0
  145. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -0
  146. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -0
  147. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -0
  148. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -0
  149. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/setup.py +0 -0
  150. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/test_gyp.py +0 -0
  151. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/graphviz.py +0 -0
  152. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/pretty_gyp.py +0 -0
  153. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/pretty_sln.py +0 -0
  154. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +0 -0
  155. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/test/fixtures/test-charmap.py +0 -0
  156. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/update-gyp.py +0 -0
  157. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/game_stats/name_fix.py +0 -0
  158. {wsba_hockey-1.0.6/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/heatmaps → wsba_hockey-1.1.1/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/goalie}/rink_plot.py +0 -0
  159. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey.egg-info/dependency_links.txt +0 -0
  160. {wsba_hockey-1.0.6 → wsba_hockey-1.1.1}/src/wsba_hockey.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wsba_hockey
3
- Version: 1.0.6
3
+ Version: 1.1.1
4
4
  Summary: WeakSide Breakout's complete Python package of access to hockey data, primairly including the scraping of National Hockey League schedule, play-by-play, and shifts information.
5
5
  Author-email: Owen Singh <owenbksingh@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/owensingh38/wsba_hockey/
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "wsba_hockey"
3
- version = "1.0.6"
3
+ version = "1.1.1"
4
4
  authors = [
5
5
  { name="Owen Singh", email="owenbksingh@gmail.com" },
6
6
  ]
@@ -0,0 +1,129 @@
1
+ import pandas as pd
2
+ import numpy as np
3
+ import wsba_main as wsba
4
+ import requests as rs
5
+ from fastapi import FastAPI
6
+ from datetime import datetime
7
+ import pytz
8
+
9
+ app = FastAPI()
10
+
11
+ @app.get("/")
12
+ def read_root():
13
+ return {"WeakSide Breakout Analysis": "Welcome to the API!"}
14
+
15
+ @app.get("/nhl/players/{player_id}")
16
+ def player(player_id: int):
17
+ player = rs.get(f'https://api-web.nhle.com/v1/player/{player_id}/landing').json()
18
+
19
+ return player
20
+
21
+ @app.get("/nhl/schedule/{date}")
22
+ def schedule_info(date: str):
23
+ data = rs.get(f'https://api-web.nhle.com/v1/schedule/{date}').json()
24
+
25
+ eastern = pytz.timezone('US/Eastern')
26
+ for game in data['gameWeek'][0]['games']:
27
+ game['startTimeEST'] = datetime.strptime(game['startTimeUTC'],'%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=pytz.UTC).astimezone(eastern).strftime('%I:%M %p')
28
+
29
+ return data
30
+
31
+ @app.get("/nhl/games/{game_id}")
32
+ def pbp(game_id: int):
33
+ df = wsba.nhl_apply_xG(wsba.nhl_scrape_game([game_id],remove=[]))
34
+
35
+ skater = {}
36
+ goalie = {}
37
+ team_stats = {}
38
+ other = df.loc[~df['strength_state'].isin(['5v5','5v4','4v5']),'strength_state'].drop_duplicates().to_list()
39
+ for strength in [['5v5'],['5v4'],['4v5'],
40
+ other,
41
+ 'all']:
42
+
43
+ s = wsba.nhl_calculate_stats(df,'skater',[2,3],strength,True).replace([np.inf, -np.inf], np.nan).fillna('').to_dict(orient='records')
44
+ g = wsba.nhl_calculate_stats(df,'goalie',[2,3],strength,True).replace([np.inf, -np.inf], np.nan).fillna('').to_dict(orient='records')
45
+ t = wsba.nhl_calculate_stats(df,'team',[2,3],strength,True).replace([np.inf, -np.inf], np.nan).fillna('').to_dict(orient='records')
46
+
47
+ if strength != 'all':
48
+ if len(strength)>1:
49
+ add = 'Other'
50
+ else:
51
+ add = strength[0]
52
+ else:
53
+ add = 'All'
54
+
55
+ skater.update({add:s})
56
+ goalie.update({add:g})
57
+ team_stats.update({add:t})
58
+
59
+ df = df.fillna('')
60
+
61
+ team_data = pd.read_csv('https://weakside-breakout.s3.us-east-2.amazonaws.com/info/nhl_teaminfo.csv')[['triCode','seasonId','teamName.default','teamLogo','Primary Color','Secondary Color','WSBA']]
62
+
63
+ info = df[['season','season_type','game_id','game_date',
64
+ 'venue','venue_location']].drop_duplicates().to_dict(orient='records')[0]
65
+
66
+ info.update({'notice':'All data and materials are from the National Hockey League.'})
67
+
68
+ teams = {}
69
+ for team in ['away','home']:
70
+ df = pd.merge(df,team_data,how='left',left_on=[f'{team}_team_abbr','season'],right_on=['triCode','seasonId']).fillna('')
71
+ mod = '' if team == 'away' else '_y'
72
+ teams.update({team: df[[f'{team}_team_abbr'
73
+ ,f'{team}_coach',
74
+ f'teamName.default{mod}',
75
+ f'teamLogo{mod}',
76
+ f'Primary Color{mod}',
77
+ f'Secondary Color{mod}',
78
+ f'WSBA{mod}']].rename(columns={f'{team}_team_abbr':'team_abbr',f'{team}_coach':'coach',
79
+ f'teamName.default{mod}':'team_name',
80
+ f'teamLogo{mod}':'team_logo',
81
+ f'Primary Color{mod}':'primary_color',
82
+ f'Secondary Color{mod}':'secondary_color',
83
+ f'WSBA{mod}':'WSBA'
84
+ }).drop_duplicates().to_dict(orient='records')[0]})
85
+
86
+ play_col = [
87
+ 'event_num','period','period_type',
88
+ 'seconds_elapsed','period_time','game_time',"strength_state","strength_state_venue","home_team_defending_side",
89
+ "event_type_code","event_type","description","event_reason",
90
+ "penalty_type","penalty_duration","penalty_attribution",
91
+ "event_team_abbr","event_team_venue",
92
+ 'num_on', 'players_on','ids_on','num_off','players_off','ids_off','shift_type',
93
+ "event_player_1_name","event_player_2_name","event_player_3_name",
94
+ "event_player_1_id","event_player_2_id","event_player_3_id",
95
+ "event_player_1_pos","event_player_2_pos","event_player_3_pos",
96
+ "event_goalie_name","event_goalie_id",
97
+ "shot_type","zone_code","x","y","x_fixed","y_fixed","x_adj","y_adj",
98
+ "event_skaters","away_skaters","home_skaters",
99
+ "event_distance","event_angle","event_length","seconds_since_last",
100
+ "away_score","home_score", "away_fenwick", "home_fenwick",
101
+ "away_on_1","away_on_2","away_on_3","away_on_4","away_on_5","away_on_6","away_goalie",
102
+ "home_on_1","home_on_2","home_on_3","home_on_4","home_on_5","home_on_6","home_goalie",
103
+ "away_on_1_id","away_on_2_id","away_on_3_id","away_on_4_id","away_on_5_id","away_on_6_id","away_goalie_id",
104
+ "home_on_1_id","home_on_2_id","home_on_3_id","home_on_4_id","home_on_5_id","home_on_6_id","home_goalie_id",
105
+ "event_coach",'xG'
106
+ ]
107
+
108
+ def sanitize(value):
109
+ if isinstance(value, (np.generic, np.ndarray)):
110
+ return value.item()
111
+ return value
112
+
113
+ plays = [
114
+ {k: sanitize(v) for k, v in row.items() if v != ''}
115
+ for row in df[[col for col in play_col if col in df.columns]].to_dict(orient='records')
116
+ ]
117
+
118
+ plays = [
119
+ {k: sanitize(v) for k, v in row.items() if v != ''}
120
+ for row in df[[col for col in play_col if col in df.columns]].to_dict(orient='records')
121
+ ]
122
+
123
+ return {'info': info,
124
+ 'teams': teams,
125
+ 'skater_stats':skater,
126
+ 'goalie_stats':goalie,
127
+ 'team_stats':team_stats,
128
+ 'plays': plays
129
+ }
@@ -0,0 +1,4 @@
1
+ import uvicorn
2
+
3
+ if __name__ == "__main__":
4
+ uvicorn.run("index:app", reload=True)
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import matplotlib.pyplot as plt
2
3
  import numpy as np
3
4
  import pandas as pd
@@ -5,7 +6,7 @@ from hockey_rink import NHLRink
5
6
  from hockey_rink import CircularImage
6
7
  from scipy.interpolate import griddata
7
8
  from scipy.ndimage import gaussian_filter
8
- from wsba_hockey.tools.xg_model import *
9
+ from tools.xg_model import *
9
10
 
10
11
  ### PLOTTING FUNCTIONS ###
11
12
  # Provided in this file are basic plotting functions for the WSBA Hockey Python package. #
@@ -28,10 +29,9 @@ info_path = os.path.join(dir,'teaminfo\\nhl_teaminfo.csv')
28
29
  img_path = os.path.join(dir,'utils\\wsba.png')
29
30
 
30
31
  def wsba_rink(display_range='offense',rotation = 0):
31
- img = 'tools/utils/wsba.png'
32
32
  rink = NHLRink(center_logo={
33
33
  "feature_class": CircularImage,
34
- "image_path": img,
34
+ "image_path": img_path,
35
35
  "length": 25, "width": 25,
36
36
  "x": 0, "y": 0,
37
37
  "radius": 14,
@@ -6,7 +6,7 @@ import pandas as pd
6
6
  import requests as rs
7
7
  import json as json_lib
8
8
  from bs4 import BeautifulSoup
9
- from wsba_hockey.tools.utils.shared import *
9
+ from tools.utils.shared import *
10
10
  warnings.filterwarnings('ignore')
11
11
 
12
12
  ### SCRAPING FUNCTIONS ###
@@ -28,7 +28,7 @@ def get_col():
28
28
  return [
29
29
  'season','season_type','game_id','game_date',"start_time","venue","venue_location",
30
30
  'away_team_abbr','home_team_abbr','event_num','period','period_type',
31
- 'seconds_elapsed',"strength_state","strength_state_venue","home_team_defending_side",
31
+ 'seconds_elapsed','period_time','game_time',"strength_state","strength_state_venue","home_team_defending_side",
32
32
  "event_type_code","event_type","description","event_reason",
33
33
  "penalty_type","penalty_duration","penalty_attribution",
34
34
  "event_team_abbr","event_team_venue",
@@ -984,7 +984,11 @@ def combine_data(info,sources):
984
984
  df[f'{venue}_corsi'] = ((df['event_team_venue']==venue)&(df['event_type'].isin(['blocked-shot','missed-shot','shot-on-goal','goal']))).cumsum()
985
985
  df[f'{venue}_fenwick'] = ((df['event_team_venue']==venue)&(df['event_type'].isin(['missed-shot','shot-on-goal','goal']))).cumsum()
986
986
  df[f'{venue}_penalties'] = ((df['event_team_venue']==venue)&(df['event_type']=='penalty')).cumsum()
987
-
987
+
988
+ #Add time adjustments
989
+ df['period_time'] = np.trunc((df['seconds_elapsed']-((df['period']-1)*1200))/60).astype(str).str.replace('.0','')+":"+(df['seconds_elapsed'] % 60).astype(str).str.pad(2,'left','0')
990
+ df['game_time'] = np.trunc(df['seconds_elapsed']/60).astype(str).str.replace('.0','')+":"+(df['seconds_elapsed'] % 60).astype(str).str.pad(2,'left','0')
991
+
988
992
  #Forward fill as necessary
989
993
  cols = ['period_type','home_team_defending_side','away_coach','home_coach']
990
994
  for col in cols: