Skip to main content

ParseScore

ParseScore is a system for collecting, processing, and displaying player performance data from Warcraft Logs.

Components

The system consists of three main components:

  1. Client: Fetches data from the server and converts it to a format usable by the addon

Features

  • Scheduled data collection that runs hourly
  • Error recovery mechanisms for API outages and rate limiting
  • Comprehensive logging system
  • Data validation for consistency and quality
  • Configuration system for customizable collection parameters

Setup

  1. Ensure you have Python 3.14 or later installed
  2. Create a virtual environment:
    uv venv
    
  3. Activate the virtual environment:
    # On Windows (PowerShell):
    .\.venv\Scripts\Activate.ps1
    # On Windows (Command Prompt):
    .venv\Scripts\activate
    # On Unix/MacOS:
    source .venv/bin/activate
    
  4. Install dependencies:
    uv sync
    
  5. Set up environment variables in a .env file:
    WCL_CLIENT_ID=your_client_id
    WCL_CLIENT_SECRET=your_client_secret
    WCL_TOKEN=your_token
    WCL_RECENT_REPORTS_URL=your_reports_url
    

Configuration

The server can be configured using a config.yaml file in the project root. If this file doesn't exist, a default one will be created when the server is first run.

The configuration file has the following sections:

  • api: API-related settings (rate limits, timeouts, etc.)
  • data_collection: Settings for the data collection process
  • database: Database settings
  • logging: Logging configuration
  • urls: URL settings
  • zones: Zone ID settings

Example configuration:

api:
  rate_limit: 9000
  rate_limit_threshold: 8500
  max_retries: 5
  timeout: 60
  batch_interval: 1
data_collection:
  schedule_interval_seconds: 3600  # 1 hour
  max_reports_to_process: 10
  concurrent_requests: 5
database:
  path: db.sqlite3
  backup_interval_days: 7
  max_backups: 5
logging:
  file: logs/server.log
  rotation: 10 MB
  retention: 1 week
  format: "{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}"
  level: INFO
urls:
  recent_reports: https://www.example.com/reports
  api_endpoint: https://www.warcraftlogs.com/api/v2/client
zones:
  current_zone_id: 43

Running the Server

To run the server with the default scheduled task system:

python -m src.server.main

To run the data collection task once and exit:

python -m src.server.main --run-once

To test the configuration system:

python -m src.server.main --test-config

Alternatively, you can use the test script:

python -m tests.test_config

Client

The client is a Python application that fetches data from the server and converts it to a format usable by the addon.

Client implementation is in progress.

Addon

The addon is a World of Warcraft addon that displays player performance data in-game.

Addon implementation is in progress.

Development

Running Tests

To run the tests:

python -m pytest

Code Style

The project uses ruff for linting and formatting:

# Check for linting errors and apply automatic fixes
ruff check --fix .

# Format all files
ruff format .

Type Checking

The project uses ty for static type checking:

ty check .

Metadata

Release files for parsescore-client 0.19

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parsescore-client 0.19
File Size Uploaded
parsescore_client-0.19.tar.gz 5.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for parsescore-client 0.19
File Interpreter ABI Platform
parsescore_client-0.19-py3-none-any.whl Python 3 none any Details

Total release size: 13.7 kB

Release files / parsescore_client-0.19.tar.gz

Download URL parsescore_client-0.19.tar.gz
Size 5.9 kB
Tags Source
SHA-256 checksum
How to use checksums
fa96cd54df85f6db91ddb37639fcde9a6c986285ec98dd1ee4f388e1afeef212
BLAKE2b-256 checksum
How to use checksums
6dad4eaf5e4e7bda83bc35e45fa40aad1d1190e7031b163b3677e1b4cc15071b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 4, 2025.

Transparency log

Release files / parsescore_client-0.19-py3-none-any.whl

Download URL parsescore_client-0.19-py3-none-any.whl
Size 7.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
134151d6c588d04ae30b26b9cd13f2db33cdb5ab194a7912a3ec7c68348a5ec6
BLAKE2b-256 checksum
How to use checksums
3c58e9e63b3b3746ae0a90af730cb917b01693912dbc4bf8f9bde90576b7d6f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 4, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.19 This release

2 release files

0.18

2 release files

0.17

2 release files

0.16

2 release files

0.15

2 release files

0.14

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page