Skip to main content

pypi Python: 3.10+ Downloads Build Status

pydartz

A Python3 assistant (and library) for playing darts

Play with your friends and keep track of your darts scores!

Features

  • arbitrary start value (501, 301, whatever positive number you like, ...)
  • unlimited number of players
  • scores can be passed in sum (i.e. the total visit) or throw by throw
  • finish suggestions
  • player database to keep track of player performance (average, highscore, finishes, etc.)
  • no external dependencies for basic functionality

Upcoming

TODO

  • full test coverage

Installation

pydartz requires Python 3.10 or higher.

From PyPI package

pip install --user -U pydartz

To enable sound support, either install additional dependencies

pip install --user -U pydartz[audio]

or set the PYDARTZ_MEDIA_PLAYER environment variable (default: mpv).

Using pipx

pipx install pydartz

Backwards compatibility

  • v1.2 is the last version to support Python 2.
  • v2.1.1 is the last version to support Python 3.6.
  • v2.2.0 is the last version to support Python 3.7.
  • v2.3.3 is the last version to support Python 3.8.

Usage

Command line assistant

Execute pydartz in the command line to start a classic 501 game. The setup instructions should be self-explanatory.

When the game starts, the program expects a player's score as an input. There are various options:

  1. You sum up the three throws of your visit yourself. Say you score 60, 5 and 1, i.e. a total of 66. You type 66d and hit enter. The suffix d indicates that your done.
  2. You directly enter after each throw. Say you score a triple 19, so you type 57 and hit enter. The prompt shows that you have two darts left. Repeat or use method 1.
  3. You busted. Type b and hit enter.
  4. Invalid input is not processed, please enter a correct value the next time.
  5. The program takes some constraints into account to check if your input is valid (e.g. total visit sum <= 180). Try to trick it and submit an issue if you found a glitch.

When the game is finished (i.e. one player has won the specified number of legs), the program asks whether you want to play again. Answer

  1. y (YES) if you want a rematch using the same settings
  2. n (NO) if you want to play again but re-define the settings
  3. q (QUIT) if you want to quit the application

Library

pydartz provides an API to include the dart assisting functionality into custom projects. Subclass communication.CommunicatorBase, create a game.Game object and run() it! Note that this call blocks until the user decides to quit. You might decide to execute it in a separate thread.

Example: I have a Raspberry/Arduino/ROS project. The custom communicator uses a ROS publisher to forward information to an LCD, taking the limited character width into account. Input requests are implemented using ROS client calls to the server (the Arduino listening for keypresses).

I can see a GUI being built on top of the library.

IMPORTANT

The last visit has to be entered throw by throw. Otherwise, the evaluation of the total number of throws per visit is not correct!

For displaying player statistics, type pydartz --stats <player_name>. You can put any number of names. Without any name, information of all players is printed.

Also, see the output of pydartz --help.

Have fun!

Example

Watch MVG casually nailing a 9 darter:

> pydartz
Nr of players: 1
Name of player 1: MVG
Start value: 501
Nr of legs: 1
MVG has 501 and three darts left.
MVG's score: 180
MVG has 321 and three darts left.
MVG's score: 180
MVG has 141 and three darts left.
Finish options:
    T20 T19 D12
MVG's score: 60
MVG has 81 and two darts left.
Finish options:
    T19 D12
    T15 D18
MVG's score: 57
MVG has 24 and one dart left.
MVG's score: 24
    MVG:  1
================================================================================
> pydartz -s MVG
MVG:
Legs won: 1
Average: 167.00
Highscore: 180
Finishes:
    141: 1
Darters:
      9-darter: 1

Credits

Development

Install from source

Get the source code

git clone https://github.com/pylipp/pydartz
cd pydartz

Install to a virtualenv

python3 -m venv .venv
source .venv/bin/activate
make install

Test suite

make test

Coverage analysis

make coverage

Style checks

make style-check

Releasing

  1. git tag with new version number (scheme vX.Y.Z)
  2. make release

Release files for pydartz 2.5.0

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

Source distribution (sdist)

Source distribution for pydartz 2.5.0
File Size Uploaded
pydartz-2.5.0.tar.gz 417.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pydartz 2.5.0
File Interpreter ABI Platform
pydartz-2.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 826.3 kB

Release files / pydartz-2.5.0.tar.gz

Download URL pydartz-2.5.0.tar.gz
Size 417.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c09b018ef849ab6a632b444e78d7556cff6e7b8839bfd8289eb5314bacd86d3a
BLAKE2b-256 checksum
How to use checksums
e7858eff9c6acf7aebf52ab163f912a2b8073e89ee4b74be47fd4d68de70fcb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Oct 16, 2025.

Transparency log

Release files / pydartz-2.5.0-py3-none-any.whl

Download URL pydartz-2.5.0-py3-none-any.whl
Size 408.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f28dd85355ed23d24c6798547092409332805234aa1695b1868daa8d969d993d
BLAKE2b-256 checksum
How to use checksums
07c64644d530d4e78770b4e5c51d81adf8b19660d20a95a70d28712ffe910b02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

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 Oct 16, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

2.5.0 This release

2 release files

2.4.0

2 release files

2.3.3

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.4

2 release files

1.2

1 release file

1.1

1 release file

1.0

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

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