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-1.0.0.tar.gz (328.6 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-1.0.0-py3-none-any.whl (56.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openvolley_pydatavolley-1.0.0.tar.gz
  • Upload date:
  • Size: 328.6 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-1.0.0.tar.gz
Algorithm Hash digest
SHA256 586e1060c423c8c6df6f00e06f155fc3831d4444e9bd50fc31e069d730bb5b7c
MD5 f90e7b1049895b0d6287cf64aea3f080
BLAKE2b-256 3900591bd4a914bcef933303b647769d7fcc2cad61e039131bb4306b5046962a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openvolley_pydatavolley-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 56.0 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-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fb3d64bd6e8ce377ca876415e26a602d19b884c21af867803f46fc7722e547db
MD5 6585ae17bcec97999fa48f2545f0eb70
BLAKE2b-256 d4e673daf9970558a8257365cd953e6a30c92319e6b9d654678c41db607c0c0e

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