wsba-hockey 1.1.5__tar.gz → 1.1.6__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 (153) hide show
  1. {wsba_hockey-1.1.5/src/wsba_hockey.egg-info → wsba_hockey-1.1.6}/PKG-INFO +1 -1
  2. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/pyproject.toml +16 -2
  3. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/agg.py +1 -0
  4. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/wsba_main.py +35 -38
  5. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6/src/wsba_hockey.egg-info}/PKG-INFO +1 -1
  6. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey.egg-info/SOURCES.txt +2 -1
  7. wsba_hockey-1.1.6/tests/tests.py +19 -0
  8. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/LICENSE +0 -0
  9. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/README.md +0 -0
  10. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/setup.cfg +0 -0
  11. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/__init__.py +0 -0
  12. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/api/api/index.py +0 -0
  13. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/data_pipelines.py +0 -0
  14. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/duckdb/vendor.py +0 -0
  15. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/flatted/python/flatted.py +0 -0
  16. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/flatted/python/test.py +0 -0
  17. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/gyp_main.py +0 -0
  18. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -0
  19. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -0
  20. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -0
  21. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -0
  22. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -0
  23. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -0
  24. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -0
  25. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -0
  26. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -0
  27. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -0
  28. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -0
  29. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -0
  30. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -0
  31. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -0
  32. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  33. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -0
  34. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -0
  35. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -0
  36. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -0
  37. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -0
  38. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -0
  39. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -0
  40. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -0
  41. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -0
  42. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -0
  43. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -0
  44. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -0
  45. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -0
  46. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -0
  47. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -0
  48. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -0
  49. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -0
  50. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -0
  51. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -0
  52. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -0
  53. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -0
  54. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -0
  55. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -0
  56. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -0
  57. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -0
  58. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -0
  59. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/test_gyp.py +0 -0
  60. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/graphviz.py +0 -0
  61. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/pretty_gyp.py +0 -0
  62. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/pretty_sln.py +0 -0
  63. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +0 -0
  64. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/test/fixtures/test-charmap.py +0 -0
  65. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/node-gyp/update-gyp.py +0 -0
  66. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/gyp_main.py +0 -0
  67. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +0 -0
  68. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +0 -0
  69. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +0 -0
  70. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +0 -0
  71. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +0 -0
  72. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +0 -0
  73. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +0 -0
  74. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +0 -0
  75. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +0 -0
  76. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/common.py +0 -0
  77. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +0 -0
  78. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +0 -0
  79. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +0 -0
  80. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +0 -0
  81. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
  82. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +0 -0
  83. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +0 -0
  84. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +0 -0
  85. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +0 -0
  86. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +0 -0
  87. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +0 -0
  88. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +0 -0
  89. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +0 -0
  90. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +0 -0
  91. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +0 -0
  92. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +0 -0
  93. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +0 -0
  94. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +0 -0
  95. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +0 -0
  96. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +0 -0
  97. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/input.py +0 -0
  98. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +0 -0
  99. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +0 -0
  100. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +0 -0
  101. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +0 -0
  102. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +0 -0
  103. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +0 -0
  104. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +0 -0
  105. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +0 -0
  106. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +0 -0
  107. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +0 -0
  108. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/setup.py +0 -0
  109. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/test_gyp.py +0 -0
  110. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/graphviz.py +0 -0
  111. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/pretty_gyp.py +0 -0
  112. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/pretty_sln.py +0 -0
  113. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/gyp/tools/pretty_vcproj.py +0 -0
  114. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/test/fixtures/test-charmap.py +0 -0
  115. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/node_modules/sqlite3/node_modules/node-gyp/update-gyp.py +0 -0
  116. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/duos/app.py +0 -0
  117. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/duos/calc.py +0 -0
  118. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/game_stats/app.py +0 -0
  119. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/game_stats/name_fix.py +0 -0
  120. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/goalie/app.py +0 -0
  121. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/goalie/plot.py +0 -0
  122. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/goalie/rink_plot.py +0 -0
  123. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/heatmaps/app.py +0 -0
  124. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/heatmaps/plot.py +0 -0
  125. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/heatmaps/rink_plot.py +0 -0
  126. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/line-combos/app.py +0 -0
  127. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/line-combos/plot.py +0 -0
  128. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/line-combos/rink_plot.py +0 -0
  129. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/matchups/app.py +0 -0
  130. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/matchups/plot.py +0 -0
  131. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/matchups/rink_plot.py +0 -0
  132. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/pbp/app.py +0 -0
  133. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/pbp/plot.py +0 -0
  134. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/pbp/rink_plot.py +0 -0
  135. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/skater/app.py +0 -0
  136. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/skater/plot.py +0 -0
  137. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/skater/rink_plot.py +0 -0
  138. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/team_heatmaps/app.py +0 -0
  139. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/team_heatmaps/plot.py +0 -0
  140. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/evidence/weakside-breakout/wsba_nhl_apps/wsba_nhl_apps/team_heatmaps/rink_plot.py +0 -0
  141. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/flask/app.py +0 -0
  142. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/__init__.py +0 -0
  143. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/archive/old_scraping.py +0 -0
  144. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/plotting.py +0 -0
  145. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/scraping.py +0 -0
  146. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/utils/__init__.py +0 -0
  147. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/utils/config.py +0 -0
  148. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/utils/save_pages.py +0 -0
  149. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/utils/shared.py +0 -0
  150. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/tools/xg_model.py +0 -0
  151. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey/workspace.py +0 -0
  152. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/src/wsba_hockey.egg-info/dependency_links.txt +0 -0
  153. {wsba_hockey-1.1.5 → wsba_hockey-1.1.6}/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.1.5
3
+ Version: 1.1.6
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.1.5"
3
+ version = "1.1.6"
4
4
  authors = [
5
5
  { name="Owen Singh", email="owenbksingh@gmail.com" },
6
6
  ]
@@ -18,4 +18,18 @@ keywords = ["wsba","hockey","scraping","NHL","analytics"]
18
18
  Homepage = "https://github.com/owensingh38/wsba_hockey/"
19
19
 
20
20
  [tool.setuptools]
21
- include-package-data = true
21
+ include-package-data = true
22
+
23
+ [tool.setuptools.exclude-package-data]
24
+ wsba_hockey = [
25
+ "api/*",
26
+ "aws_pbp/*",
27
+ "pbp/*",
28
+ "sources/*",
29
+ "stats/*",
30
+ "evidence/*",
31
+ "flask/*",
32
+ "__pycache__/*",
33
+ "_vscode/*",
34
+ ".gitattributes"
35
+ ]
@@ -89,6 +89,7 @@ def calc_indv(pbp,game_strength,second_group):
89
89
 
90
90
  shot = shot.rename(columns={
91
91
  'Gi':f'{type.capitalize()}Gi',
92
+ 'Si':f'{type.capitalize()}Si',
92
93
  'Fi':f'{type.capitalize()}Fi',
93
94
  'xGi':f'{type.capitalize()}xGi',
94
95
  })
@@ -13,7 +13,7 @@ from wsba_hockey.tools.plotting import *
13
13
  ## Provided below are all integral functions in the WSBA Hockey Python package. ##
14
14
 
15
15
  ## GLOBAL VARIABLES ##
16
- seasons = [
16
+ SEASONS = [
17
17
  '20072008',
18
18
  '20082009',
19
19
  '20092010',
@@ -34,7 +34,7 @@ seasons = [
34
34
  '20242025'
35
35
  ]
36
36
 
37
- convert_seasons = {'2007': '20072008',
37
+ CONVERT_SEASONS = {'2007': '20072008',
38
38
  '2008': '20082009',
39
39
  '2009': '20092010',
40
40
  '2010': '20102011',
@@ -53,17 +53,17 @@ convert_seasons = {'2007': '20072008',
53
53
  '2023': '20232024',
54
54
  '2024': '20242025'}
55
55
 
56
- convert_team_abbr = {'L.A':'LAK',
56
+ CONVERT_TEAM_ABBR = {'L.A':'LAK',
57
57
  'N.J':'NJD',
58
58
  'S.J':'SJS',
59
59
  'T.B':'TBL',
60
60
  'PHX':'ARI'}
61
61
 
62
- per_sixty = ['Fi','xGi','Gi','A1','A2','P1','P','Si','OZF','NZF','DZF','FF','FA','xGF','xGA','GF','GA','SF','SA','CF','CA','HF','HA','Give','Take','Penl','Penl2','Penl5','Draw','Block','GSAx']
62
+ PER_SIXTY = ['Fi','xGi','Gi','A1','A2','P1','P','Si','OZF','NZF','DZF','FF','FA','xGF','xGA','GF','GA','SF','SA','CF','CA','HF','HA','Give','Take','Penl','Penl2','Penl5','Draw','Block','GSAx']
63
63
 
64
64
  #Some games in the API are specifically known to cause errors in scraping.
65
65
  #This list is updated as frequently as necessary
66
- known_probs = {
66
+ KNOWN_PROBS = {
67
67
  '2007020011':'Missing shifts data for game between Chicago and Minnesota.',
68
68
  '2007021178':'Game between the Bruins and Sabres is missing data after the second period, for some reason.',
69
69
  '2008020259':'HTML data is completely missing for this game.',
@@ -79,11 +79,11 @@ known_probs = {
79
79
  '2019020876':'Due to the frightening collapse of Blues defensemen Jay Bouwmeester, a game on February 2nd, 2020 between the Ducks and Blues was postponed. \nWhen the game resumed, Ducks defensemen Hampus Lindholm, who assisted on a goal in the inital game, did not play in the resumed match.'
80
80
  }
81
81
 
82
- shot_types = ['wrist','deflected','tip-in','slap','backhand','snap','wrap-around','poke','bat','cradle','between-legs']
82
+ SHOT_TYPES = ['wrist','deflected','tip-in','slap','backhand','snap','wrap-around','poke','bat','cradle','between-legs']
83
83
 
84
- new = 2024
84
+ NEW = 2024
85
85
 
86
- standings_end = {
86
+ STANDINGS_END = {
87
87
  '20072008':'04-06',
88
88
  '20082009':'04-12',
89
89
  '20092010':'04-11',
@@ -104,12 +104,12 @@ standings_end = {
104
104
  '20242025':'04-17'
105
105
  }
106
106
 
107
- events = ['faceoff','hit','giveaway','takeaway','blocked-shot','missed-shot','shot-on-goal','goal','penalty']
107
+ EVENTS = ['faceoff','hit','giveaway','takeaway','blocked-shot','missed-shot','shot-on-goal','goal','penalty']
108
108
 
109
- dir = os.path.dirname(os.path.realpath(__file__))
110
- schedule_path = os.path.join(dir,'tools\\schedule\\schedule.csv')
111
- info_path = os.path.join(dir,'tools\\teaminfo\\nhl_teaminfo.csv')
112
- default_roster = os.path.join(dir,'tools\\rosters\\nhl_rosters.csv')
109
+ DIR = os.path.dirname(os.path.realpath(__file__))
110
+ SCHEDULE_PATH = os.path.join(DIR,'tools\\schedule\\schedule.csv')
111
+ INFO_PATH = os.path.join(DIR,'tools\\teaminfo\\nhl_teaminfo.csv')
112
+ DEFAULT_ROSTER = os.path.join(DIR,'tools\\rosters\\nhl_rosters.csv')
113
113
 
114
114
  ## SCRAPE FUNCTIONS ##
115
115
  def nhl_scrape_game(game_ids,split_shifts = False, remove = ['period-start','period-end','challenge','stoppage','shootout-complete','game-end'],verbose = False, sources = False, errors = False):
@@ -189,8 +189,8 @@ def nhl_scrape_game(game_ids,split_shifts = False, remove = ['period-start','per
189
189
  except:
190
190
  #Games such as the all-star game and pre-season games will incur this error
191
191
  #Other games have known problems
192
- if game_id in known_probs.keys():
193
- print(f"\nGame {game_id} has a known problem: {known_probs[game_id]}")
192
+ if game_id in KNOWN_PROBS.keys():
193
+ print(f"\nGame {game_id} has a known problem: {KNOWN_PROBS[game_id]}")
194
194
  else:
195
195
  print(f"\nUnable to scrape game {game_id}. Ensure the ID is properly inputted and formatted.")
196
196
 
@@ -302,7 +302,7 @@ def nhl_scrape_schedule(season,start = "09-01", end = "08-01"):
302
302
  #Return: specificed schedule data
303
303
  return df
304
304
 
305
- def nhl_scrape_season(season,split_shifts = False, season_types = [2,3], remove = ['period-start','period-end','game-end','challenge','stoppage'], start = "09-01", end = "08-01", local=False, local_path = schedule_path, verbose = False, sources = False, errors = False):
305
+ def nhl_scrape_season(season,split_shifts = False, season_types = [2,3], remove = ['period-start','period-end','game-end','challenge','stoppage'], start = "09-01", end = "08-01", local=False, local_path = SCHEDULE_PATH, verbose = False, sources = False, errors = False):
306
306
  #Given season, scrape all play-by-play occuring within the season
307
307
  # param 'season' - NHL season to scrape
308
308
  # param 'split_shifts' - boolean which splits pbp and shift events if true
@@ -382,7 +382,7 @@ def nhl_scrape_standings(arg = "now", season_type = 2):
382
382
  #arg param is ignored when set to "now" if season_type param is 3
383
383
  if season_type == 3:
384
384
  if arg == "now":
385
- arg = new
385
+ arg = NEW
386
386
 
387
387
  print(f"Scraping playoff bracket for date: {arg}")
388
388
  api = f"https://api-web.nhle.com/v1/playoff-bracket/{arg}"
@@ -394,12 +394,12 @@ def nhl_scrape_standings(arg = "now", season_type = 2):
394
394
  else:
395
395
  if arg == "now":
396
396
  print("Scraping standings as of now...")
397
- elif arg in seasons:
397
+ elif arg in SEASONS:
398
398
  print(f'Scraping standings for season: {arg}')
399
399
  else:
400
400
  print(f"Scraping standings for date: {arg}")
401
401
 
402
- api = f"https://api-web.nhle.com/v1/standings/{arg[4:8]}-{standings_end[arg]}"
402
+ api = f"https://api-web.nhle.com/v1/standings/{arg[4:8]}-{STANDINGS_END[arg]}"
403
403
  data = rs.get(api).json()['standings']
404
404
 
405
405
  return pd.json_normalize(data)
@@ -687,7 +687,7 @@ def nhl_shooting_impacts(agg,type):
687
687
  pos[f'{group[0]}-FNI-T'] = (pos[f'{group[0]}-FNI']/60)*pos['TOI']
688
688
 
689
689
  #Rank per 60 stats
690
- for stat in per_sixty[11:len(per_sixty)]:
690
+ for stat in PER_SIXTY[11:len(PER_SIXTY)]:
691
691
  pos[f'{stat}/60-P'] = pos[f'{stat}/60'].rank(pct=True)
692
692
 
693
693
  #Flip percentiles for against stats
@@ -788,7 +788,7 @@ def nhl_shooting_impacts(agg,type):
788
788
  pos['RushesFi'] = pos['RushFi/60'].rank(pct=True)
789
789
 
790
790
  #Rank per 60 stats
791
- for stat in per_sixty:
791
+ for stat in PER_SIXTY:
792
792
  pos[f'{stat}/60-P'] = pos[f'{stat}/60'].rank(pct=True)
793
793
 
794
794
  #Flip percentiles for against stats
@@ -868,7 +868,7 @@ def nhl_shooting_impacts(agg,type):
868
868
  #Return: skater stats with shooting impacts
869
869
  return df
870
870
 
871
- def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,roster_path=default_roster,shot_impact=False):
871
+ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,roster_path=DEFAULT_ROSTER,shot_impact=False):
872
872
  #Given play-by-play, seasonal information, game_strength, rosters, and xG model, return aggregated stats
873
873
  # param 'pbp' - play-by-play dataframe
874
874
  # param 'type' - type of stats to calculate ('skater', 'goalie', or 'team')
@@ -911,10 +911,11 @@ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,ros
911
911
  complete['TOI'] = complete['TOI']/60
912
912
 
913
913
  #Add per 60 stats
914
- for stat in ['FF','FA','xGF','xGA','GF','GA','CF','CA','GSAx']:
914
+ for stat in ['FF','FA','xGF','xGA','GF','GA','SF','SA','CF','CA','GSAx']:
915
915
  complete[f'{stat}/60'] = (complete[stat]/complete['TOI'])*60
916
916
 
917
917
  complete['GF%'] = complete['GF']/(complete['GF']+complete['GA'])
918
+ complete['SF%'] = complete['SF']/(complete['SF']+complete['SA'])
918
919
  complete['xGF%'] = complete['xGF']/(complete['xGF']+complete['xGA'])
919
920
  complete['FF%'] = complete['FF']/(complete['FF']+complete['FA'])
920
921
  complete['CF%'] = complete['CF']/(complete['CF']+complete['CA'])
@@ -953,10 +954,6 @@ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,ros
953
954
  #Find player headshot
954
955
  complete['Headshot'] = 'https://assets.nhle.com/mugs/nhl/'+complete['Season'].astype(str)+'/'+complete['Team']+'/'+complete['ID'].astype(int).astype(str)+'.png'
955
956
 
956
- end = time.perf_counter()
957
- length = end-start
958
- print(f'...finished in {(length if length <60 else length/60):.2f} {'seconds' if length <60 else 'minutes'}.')
959
-
960
957
  head = ['Goalie','ID','Game'] if 'Game' in complete.columns else ['Goalie','ID']
961
958
  complete = complete[head+[
962
959
  "Season","Team",'WSBA',
@@ -991,7 +988,7 @@ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,ros
991
988
  complete['TOI'] = complete['TOI']/60
992
989
 
993
990
  #Add per 60 stats
994
- for stat in per_sixty[11:len(per_sixty)]:
991
+ for stat in PER_SIXTY[11:len(PER_SIXTY)]:
995
992
  complete[f'{stat}/60'] = (complete[stat]/complete['TOI'])*60
996
993
 
997
994
  complete['GF%'] = complete['GF']/(complete['GF']+complete['GA'])
@@ -1014,7 +1011,7 @@ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,ros
1014
1011
  'Block',
1015
1012
  'RushF','RushA','RushFxG','RushAxG','RushFG','RushAG',
1016
1013
  'GSAx'
1017
- ]+[f'{stat}/60' for stat in per_sixty[11:len(per_sixty)]]]
1014
+ ]+[f'{stat}/60' for stat in PER_SIXTY[11:len(PER_SIXTY)]]]
1018
1015
  #Apply shot impacts if necessary
1019
1016
  if shot_impact:
1020
1017
  complete = nhl_shooting_impacts(complete,'team')
@@ -1085,13 +1082,13 @@ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,ros
1085
1082
  complete['WSBA'] = complete['Player']+complete['Season'].astype(str)+complete['Team']
1086
1083
 
1087
1084
  #Add per 60 stats
1088
- for stat in per_sixty:
1085
+ for stat in PER_SIXTY:
1089
1086
  complete[f'{stat}/60'] = (complete[stat]/complete['TOI'])*60
1090
1087
 
1091
1088
  #Shot Type Metrics
1092
1089
  type_metrics = []
1093
1090
  for type in shot_types:
1094
- for stat in per_sixty[:3]:
1091
+ for stat in PER_SIXTY[:3]:
1095
1092
  type_metrics.append(f'{type.capitalize()}{stat}')
1096
1093
 
1097
1094
  head = ['Player','ID','Game'] if 'Game' in complete.columns else ['Player','ID']
@@ -1101,7 +1098,7 @@ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,ros
1101
1098
  'Height (in)','Weight (lbs)',
1102
1099
  'Birthday','Age','Nationality',
1103
1100
  'GP','TOI',
1104
- "Gi","A1","A2",'P1','P','Si','Sh%',
1101
+ "Gi","A1","A2",'P1','P','Si','Shi%',
1105
1102
  'Give','Take','PM%','HF','HA','HF%',
1106
1103
  "Fi","xGi",'xGi/Fi',"Gi/xGi","Fshi%",
1107
1104
  "GF","SF","FF","xGF","xGF/FF","GF/xGF","ShF%","FshF%",
@@ -1116,7 +1113,7 @@ def nhl_calculate_stats(pbp,type,season_types,game_strength,split_game=False,ros
1116
1113
  'OZF','NZF','DZF',
1117
1114
  'OZF%','NZF%','DZF%',
1118
1115
  'GSAx'
1119
- ]+[f'{stat}/60' for stat in per_sixty]+type_metrics].fillna(0).sort_values(['Player','Season','Team','ID'])
1116
+ ]+[f'{stat}/60' for stat in PER_SIXTY]+type_metrics].fillna(0).sort_values(['Player','Season','Team','ID'])
1120
1117
 
1121
1118
  #Apply shot impacts if necessary (Note: this will remove skaters with fewer than 150 minutes of TOI due to the shot impact TOI rule)
1122
1119
  if shot_impact:
@@ -1180,7 +1177,7 @@ def repo_load_rosters(seasons = []):
1180
1177
  #Returns roster data from repository
1181
1178
  # param 'seasons' - list of seasons to include
1182
1179
 
1183
- data = pd.read_csv(default_roster)
1180
+ data = pd.read_csv(DEFAULT_ROSTER)
1184
1181
  if len(seasons)>0:
1185
1182
  data = data.loc[data['season'].isin(seasons)]
1186
1183
 
@@ -1190,7 +1187,7 @@ def repo_load_schedule(seasons = []):
1190
1187
  #Returns schedule data from repository
1191
1188
  # param 'seasons' - list of seasons to include
1192
1189
 
1193
- data = pd.read_csv(schedule_path)
1190
+ data = pd.read_csv(SCHEDULE_PATH)
1194
1191
  if len(seasons)>0:
1195
1192
  data = data.loc[data['season'].isin(seasons)]
1196
1193
 
@@ -1199,7 +1196,7 @@ def repo_load_schedule(seasons = []):
1199
1196
  def repo_load_teaminfo():
1200
1197
  #Returns team data from repository
1201
1198
 
1202
- return pd.read_csv(info_path)
1199
+ return pd.read_csv(INFO_PATH)
1203
1200
 
1204
1201
  def repo_load_pbp(seasons = []):
1205
1202
  #Returns play-by-play data from repository
@@ -1207,11 +1204,11 @@ def repo_load_pbp(seasons = []):
1207
1204
 
1208
1205
  #Add parquet to total
1209
1206
  print(f'Loading play-by-play from the following seasons: {seasons}...')
1210
- dfs = [pd.read_parquet(f"https://weakside-breakout.s3.us-east-2.amazonaws.com/pbp/{season}.parquet") for season in seasons]
1207
+ dfs = [pd.read_parquet(f"https://weakside-breakout.s3.us-east-2.amazonaws.com/pbp/parquet/nhl_pbp_{season}.parquet") for season in seasons]
1211
1208
 
1212
1209
  return pd.concat(dfs)
1213
1210
 
1214
1211
  def repo_load_seasons():
1215
1212
  #List of available seasons to scrape
1216
1213
 
1217
- return seasons
1214
+ return SEASONS
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wsba_hockey
3
- Version: 1.1.5
3
+ Version: 1.1.6
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/
@@ -147,4 +147,5 @@ src/wsba_hockey/tools/archive/old_scraping.py
147
147
  src/wsba_hockey/tools/utils/__init__.py
148
148
  src/wsba_hockey/tools/utils/config.py
149
149
  src/wsba_hockey/tools/utils/save_pages.py
150
- src/wsba_hockey/tools/utils/shared.py
150
+ src/wsba_hockey/tools/utils/shared.py
151
+ tests/tests.py
@@ -0,0 +1,19 @@
1
+ import pandas as pd
2
+ import matplotlib.pyplot as plt
3
+ import wsba_hockey as wsba
4
+
5
+ ### WSBA HOCKEY ###
6
+ ## Provided below are some tests of package capabilities
7
+
8
+ #Play-by-Play Scraping
9
+ pbp = wsba.nhl_scrape_game(['random',3,2010,2024],remove=[])
10
+ pbp.to_csv('tests/samples/sample_pbp.csv',index=False)
11
+
12
+ #Sample skater stats for game
13
+ wsba.nhl_calculate_stats(pbp,type='skater',season_types=[2],game_strength=['5v5']).to_csv('tests/samples/sample_stats.csv',index=False)
14
+
15
+ #Plot shots in games from test data
16
+ plots = wsba.nhl_plot_games(pbp,['shot-on-goal','missed-shot','goal'],['5v5'])
17
+
18
+ for game_id,plot in plots.items():
19
+ plot[0].savefig(f'tests/samples/plots/{game_id}.png')
File without changes
File without changes
File without changes