From dd5cb4b4b54fdb350d08315e1eaf576ba8b165c6 Mon Sep 17 00:00:00 2001 From: dhmay Date: Mon, 1 Sep 2025 20:04:51 -0700 Subject: [PATCH 1/5] fixed parsing of version number --- src/jamstats/data/json_to_pandas.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/jamstats/data/json_to_pandas.py b/src/jamstats/data/json_to_pandas.py index c4428cf..a60f4f3 100644 --- a/src/jamstats/data/json_to_pandas.py +++ b/src/jamstats/data/json_to_pandas.py @@ -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: @@ -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: @@ -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]: @@ -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) From 89e852792d971c42c92593f720875a534fff4421 Mon Sep 17 00:00:00 2001 From: dhmay Date: Mon, 1 Sep 2025 20:11:12 -0700 Subject: [PATCH 2/5] update yaml upload-artifact version to v4 because v3 deprecated --- .github/workflows/pyinstaller-windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pyinstaller-windows.yml b/.github/workflows/pyinstaller-windows.yml index 01d22c2..48b176d 100644 --- a/.github/workflows/pyinstaller-windows.yml +++ b/.github/workflows/pyinstaller-windows.yml @@ -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 From 2ddd6cfd527184c93a4e5f39528d214a6c8c85fe Mon Sep 17 00:00:00 2001 From: dhmay Date: Wed, 3 Sep 2025 19:13:10 -0700 Subject: [PATCH 3/5] updated jamstats version in source files --- resources/jamstats_version.txt | 2 +- src/jamstats/resources/jamstats_version.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/jamstats_version.txt b/resources/jamstats_version.txt index 323afbc..2a6849c 100644 --- a/resources/jamstats_version.txt +++ b/resources/jamstats_version.txt @@ -1 +1 @@ -1.4.14 +3.4.14 diff --git a/src/jamstats/resources/jamstats_version.txt b/src/jamstats/resources/jamstats_version.txt index 323afbc..2a6849c 100644 --- a/src/jamstats/resources/jamstats_version.txt +++ b/src/jamstats/resources/jamstats_version.txt @@ -1 +1 @@ -1.4.14 +3.4.14 From e140556f2bbd0653411f055d059653427f9b84ef Mon Sep 17 00:00:00 2001 From: dhmay Date: Wed, 3 Sep 2025 20:30:23 -0700 Subject: [PATCH 4/5] worked around problems if no active game --- src/jamstats/data/json_to_pandas.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/jamstats/data/json_to_pandas.py b/src/jamstats/data/json_to_pandas.py index a60f4f3..632db49 100644 --- a/src/jamstats/data/json_to_pandas.py +++ b/src/jamstats/data/json_to_pandas.py @@ -496,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))) @@ -781,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" From 39b1d5b496bf5310125f900bb224eb2a9d317c5a Mon Sep 17 00:00:00 2001 From: dhmay Date: Wed, 3 Sep 2025 20:50:03 -0700 Subject: [PATCH 5/5] updated version number --- resources/jamstats_version.txt | 2 +- setup.py | 2 +- setup_nogui.py | 2 +- src/jamstats/resources/jamstats_version.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/resources/jamstats_version.txt b/resources/jamstats_version.txt index 2a6849c..0d697e4 100644 --- a/resources/jamstats_version.txt +++ b/resources/jamstats_version.txt @@ -1 +1 @@ -3.4.14 +3.4.15 diff --git a/setup.py b/setup.py index 5296965..777d75b 100644 --- a/setup.py +++ b/setup.py @@ -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"}, diff --git a/setup_nogui.py b/setup_nogui.py index 57e45b2..d80a9ab 100644 --- a/setup_nogui.py +++ b/setup_nogui.py @@ -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"}, diff --git a/src/jamstats/resources/jamstats_version.txt b/src/jamstats/resources/jamstats_version.txt index 2a6849c..0d697e4 100644 --- a/src/jamstats/resources/jamstats_version.txt +++ b/src/jamstats/resources/jamstats_version.txt @@ -1 +1 @@ -3.4.14 +3.4.15