Skip to main content

Extract data from DataVolley .dvw files and VolleyStation .vsm files

Project description

py-datavolley

A Python package for parsing and analyzing volleyball scouting data from DataVolley files (*.dvw).

We modernized pydatavolley with a stronger Python workflow. It now uses Pydantic for more reliable type validation, plus the Astral toolchain—UV for package management, Ruff for linting/formatting, and Ty for type checking.

mkdir my-analysis
cd my-analysis
uv init
uv add openvolley-pydatavolley
import datavolley as dv


def main():
    return dv.read_dv(dv.example_file())


if __name__ == "__main__":
    data = main()
    print(data)

Type validation can be controlled per call:

import datavolley as dv

plays, issues = dv.read_dv(
    dv.example_file(),
    validation_mode=dv.ValidationMode.LENIENT,
    normalize_types=True,
    return_issues=True,
)

print(f"plays={len(plays)} issues={len(issues)}")

The same options are available in load_dvw(...), and issues are returned as (match_data, issues).

  • validation_mode: lenient (default) continues parsing and collects issues, strict raises on validation errors.
  • normalize_types: converts numeric-like fields to numeric types while preserving nullable behavior for missing values.
  • return_issues: returns validation issues with field/index metadata for downstream quality checks.
Will return (this is a sample and not the entire example file)
[
  {
    "match_id": "106859",
    "video_time": 495,
    "code": "a02RM-~~~58AM~~00B",
    "team": "University of Dayton",
    "player_number": 2,
    "player_name": "Maura Collins",
    "player_id": "-230138",
    "skill": "Reception",
    "skill_type": "Jump-float serve reception",
    "skill_subtype": "Jump Float",
    "evaluation_code": "-",
    "setter_position": "6",
    "attack_code": null,
    "set_code": null,
    "set_type": null,
    "start_zone": "5",
    "end_zone": "8",
    "end_subzone": "A",
    "num_players_numeric": null,
    "home_team_score": "0",
    "visiting_team_score": "0",
    "home_setter_position": "1",
    "visiting_setter_position": "6",
    "custom_code": "00B",
    "home_p1": "19",
    "home_p2": "9",
    "home_p3": "11",
    "home_p4": "15",
    "home_p5": "10",
    "home_p6": "7",
    "visiting_p1": "1",
    "visiting_p2": "16",
    "visiting_p3": "17",
    "visiting_p4": "10",
    "visiting_p5": "6",
    "visiting_p6": "8",
    "start_coordinate": "0431",
    "mid_coordinate": "-1-1",
    "end_coordinate": "7642",
    "point_phase": "Reception",
    "attack_phase": null,
    "start_coordinate_x": 1.26875,
    "start_coordinate_y": 0.092596,
    "mid_coordinate_x": null,
    "mid_coordinate_y": null,
    "end_coordinate_x": 1.68125,
    "end_coordinate_y": 5.425924,
    "set_number": "1",
    "home_team": "University of Louisville",
    "visiting_team": "University of Dayton",
    "home_team_id": 17,
    "visiting_team_id": 42,
    "point_won_by": "University of Louisville",
    "serving_team": "University of Louisville",
    "receiving_team": "University of Dayton",
    "rally_number": 1,
    "possession_number": 1
  }
]

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openvolley_pydatavolley-0.3.2.tar.gz (334.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openvolley_pydatavolley-0.3.2-py3-none-any.whl (61.9 kB view details)

Uploaded Python 3

File details

Details for the file openvolley_pydatavolley-0.3.2.tar.gz.

File metadata

  • Download URL: openvolley_pydatavolley-0.3.2.tar.gz
  • Upload date:
  • Size: 334.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for openvolley_pydatavolley-0.3.2.tar.gz
Algorithm Hash digest
SHA256 59d9c0b45193f0dfd1f3f6ed4d37d75aa119ff48e9fd7bbc64d2a519fdc160f3
MD5 8f3bd057a543c3f8400a8ad2975f5552
BLAKE2b-256 ab878deca07351299ac3e7930f6a6fc06d2ce5577e14bb76826f06ba8426d1a4

See more details on using hashes here.

File details

Details for the file openvolley_pydatavolley-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: openvolley_pydatavolley-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 61.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for openvolley_pydatavolley-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fbec8b6ed1db37aa1e5fff446a66ff9b11ca640b1e95a1081f735b2f1a7dc810
MD5 0c69c63c44e0e231603417d40731d184
BLAKE2b-256 89246b1a5c1d8472dfc5bb657222570d1802ae2c776d327a0f076cd9163d2c7f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page