Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pyinstaller-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ jobs:
run: python -m PyInstaller jamstats.spec

- name: Upload Artifact
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: jamstats-${{ runner.os }}
path: src/dist/jamstats.exe
2 changes: 1 addition & 1 deletion resources/jamstats_version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.4.14
3.4.15
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name='jamstats',
version='3.4.14',
version='3.4.15',
description='Data processing, stats and plots on roller derby scoreboard JSON files',
author='Damon May',
package_dir={"":"src"},
Expand Down
2 changes: 1 addition & 1 deletion setup_nogui.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name='jamstats-nogui',
version='3.4.14',
version='3.4.15',
description='Data processing, stats and plots on roller derby scoreboard JSON files. No-GUI version.',
author='Damon May',
package_dir={"":"src"},
Expand Down
30 changes: 22 additions & 8 deletions src/jamstats/data/json_to_pandas.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def json_to_game_dataframe(game_json: Dict[Any, Any]) -> pd.DataFrame:
# annotated with a game identifier. Complete games don't have
# "CurrentGame" fields. So, if we find a "CurrentGame" field,
# use those and strip out all the fields with a game identifier.
logger.debug(f"Found version 5. Checking for in-progress game...")
logger.debug(f"Found version 5 or later. Checking for in-progress game...")
is_in_progress_game = False
for key in game_dict:
if ".CurrentGame." in key:
Expand Down Expand Up @@ -127,10 +127,12 @@ def get_json_major_version(game_dict: Dict[str, Any]) -> str:
int: major version
"""
version_str = get_json_version(game_dict)
logger.debug(f"JSON version string: {version_str}")
major_version = version_str.split(".")[0]
assert(major_version.startswith("v"))
if major_version.startswith("v"):
major_version = major_version[1:]
logger.debug(f"JSON major version string: {major_version}")
return major_version[1:]
return major_version


def get_json_version(game_dict: Dict[str, Any]) -> str:
Expand All @@ -157,8 +159,9 @@ def get_json_major_version_from_pdf(pdf_game_data: pd.DataFrame) -> str:
version_str = list(
pdf_game_data[pdf_game_data.key == "ScoreBoard.Version(release)"].value)[0]
major_version = version_str.split(".")[0]
assert(major_version.startswith("v"))
return major_version[1:]
if major_version.startswith("v"):
major_version = major_version[1:]
return major_version


def extract_game_data_dict(pdf_game_state: pd.DataFrame) -> Dict[str, Any]:
Expand Down Expand Up @@ -443,7 +446,6 @@ def extract_roster(pdf_game_state: pd.DataFrame,
else:
team_string_1 = f"Team\\(1\\)"
team_string_2 = f"Team\\(2\\)"

team_string_1 = cleanup_team_name(team_string_1)
team_string_2 = cleanup_team_name(team_string_2)

Expand Down Expand Up @@ -494,10 +496,20 @@ def extract_roster(pdf_game_state: pd.DataFrame,
# paranoia. Somehow a quadmedia game had no Id column, so if that happens
# write out a message
if "Id" not in pdf_roster.columns:
error_message = "No Id column in roster. This is a bug in the game file."
error_message = "No Id column in roster. This is a bug in the game file.\n"
error_message += "Roster columns: " + str(pdf_roster.columns)
error_message += "\nDummying empty roster"
logger.error(error_message)
raise ValueError(error_message)
pdf_roster = pd.DataFrame({
"Id": pd.Series(dtype="str"),
"Name": pd.Series(dtype="str"),
"RosterNumber": pd.Series(dtype="str"),
"Number": pd.Series(dtype="str"),
"team": pd.Series(dtype="str"),
"Pronouns": pd.Series(dtype="str"),
})
print(pdf_roster)

pdf_roster = pdf_roster[pdf_roster.Id.notnull()]
logger.debug("After dropping nulls, length: " + str(len(pdf_roster)))

Expand Down Expand Up @@ -779,6 +791,8 @@ def extract_penalties(pdf_game_state: pd.DataFrame,
# cast is necessary if there are no penalties yet
pdf_penalties = pdf_penalties.astype({"prd_jam": str})
pdf_penalties = pdf_penalties.rename(columns={"Code": "penalty_code"})
if len(pdf_penalties) == 0:
pdf_penalties["Id"] = pdf_penalties.Id.astype(str)

logger.debug(f" Before merging with roster: {len(pdf_penalties)}")
rosternumber_col = "RosterNumber" if "RosterNumber" in pdf_roster else "Number"
Expand Down
2 changes: 1 addition & 1 deletion src/jamstats/resources/jamstats_version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.4.14
3.4.15
Loading