databallpy


Namedataballpy JSON
Version 0.5.3 PyPI version JSON
download
home_pagehttps://pypi.org/project/databallpy/
SummaryA package for loading, preprocessing, vizualising and synchronizing soccere event and tracking data.
upload_time2024-12-10 12:29:23
maintainerAlexander Oonk
docs_urlNone
authorAlexander Oonk
requires_python<3.13,>=3.10
licenseMIT
keywords soccer football tracking data event data
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
<div align="center">
  <img src="https://github.com/Alek050/databallpy/assets/49450063/56100e87-c680-4dc1-82e5-4aa8fdbc8a34" alt="Logo">
</div>

[version-image]: https://img.shields.io/pypi/v/databallpy?color=006666
[version-url]: https://pypi.org/project/databallpy/
[python-image]: https://img.shields.io/pypi/pyversions/databallpy?color=006666
[python-url]: https://pypi.org/project/databallpy/
[docs-image]: https://readthedocs.org/projects/databallpy/badge/?version=latest
[docs-url]: https://databallpy.readthedocs.io/en/latest/?badge=latest
[cicd-image]: https://github.com/Alek050/databallpy/actions/workflows/linters_and_tests.yml/badge.svg
[cicd-url]: https://github.com/Alek050/databallpy/actions/workflows/linters_and_tests.yml
[codecov-image]: https://codecov.io/gh/Alek050/databallpy/branch/develop/graph/badge.svg?token=MBI3380I0H
[codecov-url]: https://codecov.io/gh/Alek050/databallpy

[filter-data-url]: https://databallpy.readthedocs.io/en/latest/getting_started/preprocessing_options.html#filtering-data
[velocity-acc-url]: https://databallpy.readthedocs.io/en/latest/getting_started/preprocessing_options.html#adding-velocity-and-acceleration
[synchronisation-url]: https://databallpy.readthedocs.io/en/latest/getting_started/synchronisation_page.html
[covered-distance-url]: https://databallpy.readthedocs.io/en/latest/features/covered_distance_page.html
[pressure-url]: https://databallpy.readthedocs.io/en/latest/features/pressure_page.html
[team-possession-url]: https://databallpy.readthedocs.io/en/latest/features/team_and_player_possession.html#team-possession
[individual_possession-url]: https://databallpy.readthedocs.io/en/latest/features/team_and_player_possession.html#individual-player-possession-vidal-codina-et-al-2022
[Expected-Goals-url]: https://databallpy.readthedocs.io/en/latest/features/simple_xG_models.html
[Expected-Threat-url]: https://databallpy.readthedocs.io/en/latest/features/xT_models.html
[Voronoi-url]: https://databallpy.readthedocs.io/en/latest/features/space_occupation.html#voronoi-model
[Guassian-space-occupation-url]: https://databallpy.readthedocs.io/en/latest/features/space_occupation.html#gaussian-model-fernandez-born-2018
[visualizations-url]: https://databallpy.readthedocs.io/en/latest/getting_started/visualizations_page.html

[floodlight-url]:https://github.com/floodlight-sports/floodlight
[kloppy-url]:https://github.com/PySport/kloppy
[soccer-sync-url]: https://kwiatkowski.io/sync.soccer
[example-url]: https://databallpy.readthedocs.io/en/latest/example.html
[getting-started-url]: https://databallpy.readthedocs.io/en/latest/getting_started/installation_page.html

[![Latest Version][version-image]][version-url]
[![Python Version][python-image]][python-url]
[![Documentation Status][docs-image]][docs-url]
[![CI/CD Status][cicd-image]][cicd-url]
[![Codecov][codecov-image]][codecov-url]

# DataBallPy

A package for loading, synchronizing, and analyzing your soccer event- and tracking data.

This package is developed to create a standardized way to analyse soccer matches using both event- and tracking data. Other packages, like [kloppy][kloppy-url] and [floodlight][floodlight-url], already standardize the import of data sources. The current package goes a step further in combining different data streams from the same match. In this case, the `Match` object combines information from the event and tracking data. The main current feature is the smart synchronization of the tracking and event data. We utilize the Needleman-Wunch algorithm, inspired by [this article][soccer-sync-url], to align the tracking and even data, while ensuring the order of the events, something that is not done when only using (different) cost functions.

## Final goal for DataBallPy

Although reading in and synchronising data is already very helpfull to get started with your analysis, it's only the first step. Even after this first step, getting your first 'simple' metrics out of the data might be more difficult than anticipated. Therefore, the primary end goal for this package is to create a space where (scientific) soccer metrics are implemented and can be used in a few lines. We even plan to go further and show clear notebooks (to combine text and code) with visualizations for all the features we implement. This way, you will not only get easy access to the features/metrics, but also understand exactly how it is calculated. We hope this will inspire others (both developers and scientist) to further improve the current features, and come up with valuable new ones. If you are interested in some of the features we implemented, see our [official documentation][docs-url].

## V0.5.2 (15/11/2024)

- Added `match.get_column_ids` with filters for team, player positions and minimal minutes played filters.
- Added parser for DFL/Sportec Solutions event data
- Added parser for Tracab xml format, used by DFL and Sportec solutions
- Added integration for open data from DFL (open sourced by Bassek et al.)

### Breaking changes
- From now on, `match.home_players_column_ids()` and `match.away_players_column_ids()` are depreciated and will be removed in V0.7.0. Please use `match.get_column_ids()` in future version.
- `get_open_match()` will now, by default, load in match `J03WMX` (1. FC Köln vs. FC Bayern München) instead of the anonimysed match from Metrica. To load in the metrica match, please parse `provider="metrica"` in the key word arguments.

## Installation

```bash
$ pip install databallpy
```

## Usage

The package is centered around the `Match` object. A `Match` has tracking data, event data metadata about the match.
For a more elaborate example, see the [Getting Started][getting-started-url].

```python
from databallpy import get_match, get_open_match

match = get_match(
  tracking_data_loc="../data/tracking_data.dat",
  tracking_metadata_loc="../data/tracking_metadata.xml",
  tracking_data_provider="tracab"
  event_data_loc="../data/event_data_f24.xml",
  event_metadata_loc="../data/event_metadata_f7.xml",
  event_data_provider="opta",
)

# or get the open match provided by the DFL (Sportec Solutions)
match = get_open_match()
```

> [!note]
> The current supported tracking data providers are:
> - Tracab (including Sportec Solutions from the DFL)
> - Metrica
> - Inmotio
> 
> The accepted variables for the `tracking_data_provider` are `["tracab", "metrica", "inmotio", "dfl", "sportec"]`
> 
> The current supported event data provider are:
> - Opta
> - Metrica
> - Instat
> - SciSports
> - Sportec Solutions (from the DFL)
> - Statsbomb
> 
> The accepted variables for the `event_data_provider` are `["opta", "metrica", "instat", "scisports", "dfl", "sportec", "statsbomb"]`
>
> If you wish to use a different provider that is not listed here, please open an issue [here](https://github.com/Alek050/databallpy/issues)

See [the documentation][docs-url] of the `Match` object and the [example usage][example-url] for more options. Note that this package is developed to combine event and tracking data, for now both datastreams are necessary to create a `Match` object.

## Features

### Preprocessing

- [Data Filtering][filter-data-url]: Filter the data based on the quality of the tracking data.
- [Adding velocity and Acceleration][velocity-acc-url]: Add velocity and acceleration to the tracking data.


### Synchronization of tracking and event data

See our elaborate [synchronisation page][synchronisation-url] in the documentation for more information!

Tracking and event data is often poorly synchronized. For instance, when taking the event data of Opta and tracking data of Tracab, you can sync the fist frame with the kick-off pass. Now you can sync the other events with the tracking data based on the time difference between the event and the kick off pass. If you do this, how get something like this:

<video width="640" height="480" controls>
  <source src="https://raw.githubusercontent.com/Alek050/databallpy/main/docs/example_data/not_synced.mp4" type="video/mp4">
  Your browser does not support the video tag.
</video>

https://user-images.githubusercontent.com/49450063/224564808-fa71735f-5510-464d-8499-9044227a02e8.mp4


As you can see, the timing (and placing) of the events do not correspond good with the tracking data locations, especially when events follow up quickly or around shots. Using the methodology of [this][soccer-sync-url] article, this package is able to synchronize tracking and event data using the Needleman-Wunsch algorithm. 

After running the following command, the events are better synchronized to the tracking data:

```batch
$ match.synchronise_tracking_and_event_data()
```

<video width="640" height="480" controls>
  <source src="https://raw.githubusercontent.com/Alek050/databallpy/main/docs/example_data/synced.mp4" type="video/mp4">
  Your browser does not support the video tag.
</video>


https://user-images.githubusercontent.com/49450063/224564913-4091faf7-f6ef-4429-b132-7f93ce5e1d91.mp4

For a more elaborate example of how we synchronize the tracking and event data, see the [Synchronisation Page][getting-started-url] in our [documentation][docs-url].

### Visualizations

DataBallPy offers a variety of visualizations to help you understand the data better. For example, you can visualize the tracking data with synchronised event as shown above. Also, you can visualize events and tracking data separately. For more information, see the [Visualizations Page][visualizations-url] in our [documentation][docs-url].

### Soccer Specific Metrics

- [Covered Distance][covered-distance-url]: Calculate the covered distance in different velocity and acceleration zones.
- [Pressure][pressure-url]: Calculate the pressure any player in the match (Herold & Kempe, 2022).
- [Team Possession][team-possession-url]: Calculate the team possession based on the synchronised event data.
- [Individual Player Possession][individual_possession-url]: Calculate the individual player possession based on the tracking data (Vidal-Codina et al., 2022).
- [Simple Expected Goals (xG) model][Expected-Goals-url]: Calculate the simple expected goals model.
- [Expected Threat model][Expected-Threat-url]: Calculate the expected threat model from Karun Singh to on ball events.
- [Voronoi Model][Voronoi-url]: Calculate the Voronoi space occupation based on the tracking data.
- [Gaussian Model][Guassian-space-occupation-url]: Calculate the Gaussian space occupation based on the tracking data (Fernandez & Born, 2018).

## Documentation

The official documentation can be found [here][docs-url].

## Providers

For now we limited providers. We are planning on adding more providers later on.

Event data providers:
- Opta
- Metrica
- Instat
- SciSports
- Sportec Solutions (for the DFL)

Tracking data providers:
- Tracab (including Sportec Solutions format from the DFL)
- Metrica
- Inmotio

## Contributing

Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

## Maintainers & owners

- [Alek050](https://github.com/Alek050/)

## Contributors

- [DaanGro](https://github.com/DaanGro/)
- [rdghe](https://github.com/rdghe/)
- [swopper050](https://github.com/Swopper050)
- [maritsloots](https://github.com/maritsloots)

## License

`databallpy` was created by Alexander Oonk & Daan Grob. It is licensed under the terms of the MIT license.

## Similar projects

Although we think this package helps when starting to analyse soccer data, other packages may be better suited for your specific needs. Make sure to check out the following packages as well:
- [kloppy][kloppy-url]
- [floodlight][floodlight-url]
- [codeball](https://github.com/metrica-sports/codeball)
- [socceraction](https://github.com/ML-KULeuven/socceraction)

And for a more specific toturials on how to get started with soccer data"
- [Friends of Tracking](https://github.com/Friends-of-Tracking-Data-FoTD)




            

Raw data

            {
    "_id": null,
    "home_page": "https://pypi.org/project/databallpy/",
    "name": "databallpy",
    "maintainer": "Alexander Oonk",
    "docs_url": null,
    "requires_python": "<3.13,>=3.10",
    "maintainer_email": "alexanderoonk26@gmail.com",
    "keywords": "soccer, football, tracking data, event data",
    "author": "Alexander Oonk",
    "author_email": "alexanderoonk26@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/1a/3b/b1d6bb992940421f4f68fadbf3c66fd2608c23e34ba24c27c73f1ef76f66/databallpy-0.5.3.tar.gz",
    "platform": null,
    "description": "\n<div align=\"center\">\n  <img src=\"https://github.com/Alek050/databallpy/assets/49450063/56100e87-c680-4dc1-82e5-4aa8fdbc8a34\" alt=\"Logo\">\n</div>\n\n[version-image]: https://img.shields.io/pypi/v/databallpy?color=006666\n[version-url]: https://pypi.org/project/databallpy/\n[python-image]: https://img.shields.io/pypi/pyversions/databallpy?color=006666\n[python-url]: https://pypi.org/project/databallpy/\n[docs-image]: https://readthedocs.org/projects/databallpy/badge/?version=latest\n[docs-url]: https://databallpy.readthedocs.io/en/latest/?badge=latest\n[cicd-image]: https://github.com/Alek050/databallpy/actions/workflows/linters_and_tests.yml/badge.svg\n[cicd-url]: https://github.com/Alek050/databallpy/actions/workflows/linters_and_tests.yml\n[codecov-image]: https://codecov.io/gh/Alek050/databallpy/branch/develop/graph/badge.svg?token=MBI3380I0H\n[codecov-url]: https://codecov.io/gh/Alek050/databallpy\n\n[filter-data-url]: https://databallpy.readthedocs.io/en/latest/getting_started/preprocessing_options.html#filtering-data\n[velocity-acc-url]: https://databallpy.readthedocs.io/en/latest/getting_started/preprocessing_options.html#adding-velocity-and-acceleration\n[synchronisation-url]: https://databallpy.readthedocs.io/en/latest/getting_started/synchronisation_page.html\n[covered-distance-url]: https://databallpy.readthedocs.io/en/latest/features/covered_distance_page.html\n[pressure-url]: https://databallpy.readthedocs.io/en/latest/features/pressure_page.html\n[team-possession-url]: https://databallpy.readthedocs.io/en/latest/features/team_and_player_possession.html#team-possession\n[individual_possession-url]: https://databallpy.readthedocs.io/en/latest/features/team_and_player_possession.html#individual-player-possession-vidal-codina-et-al-2022\n[Expected-Goals-url]: https://databallpy.readthedocs.io/en/latest/features/simple_xG_models.html\n[Expected-Threat-url]: https://databallpy.readthedocs.io/en/latest/features/xT_models.html\n[Voronoi-url]: https://databallpy.readthedocs.io/en/latest/features/space_occupation.html#voronoi-model\n[Guassian-space-occupation-url]: https://databallpy.readthedocs.io/en/latest/features/space_occupation.html#gaussian-model-fernandez-born-2018\n[visualizations-url]: https://databallpy.readthedocs.io/en/latest/getting_started/visualizations_page.html\n\n[floodlight-url]:https://github.com/floodlight-sports/floodlight\n[kloppy-url]:https://github.com/PySport/kloppy\n[soccer-sync-url]: https://kwiatkowski.io/sync.soccer\n[example-url]: https://databallpy.readthedocs.io/en/latest/example.html\n[getting-started-url]: https://databallpy.readthedocs.io/en/latest/getting_started/installation_page.html\n\n[![Latest Version][version-image]][version-url]\n[![Python Version][python-image]][python-url]\n[![Documentation Status][docs-image]][docs-url]\n[![CI/CD Status][cicd-image]][cicd-url]\n[![Codecov][codecov-image]][codecov-url]\n\n# DataBallPy\n\nA package for loading, synchronizing, and analyzing your soccer event- and tracking data.\n\nThis package is developed to create a standardized way to analyse soccer matches using both event- and tracking data. Other packages, like [kloppy][kloppy-url] and [floodlight][floodlight-url], already standardize the import of data sources. The current package goes a step further in combining different data streams from the same match. In this case, the `Match` object combines information from the event and tracking data. The main current feature is the smart synchronization of the tracking and event data. We utilize the Needleman-Wunch algorithm, inspired by [this article][soccer-sync-url], to align the tracking and even data, while ensuring the order of the events, something that is not done when only using (different) cost functions.\n\n## Final goal for DataBallPy\n\nAlthough reading in and synchronising data is already very helpfull to get started with your analysis, it's only the first step. Even after this first step, getting your first 'simple' metrics out of the data might be more difficult than anticipated. Therefore, the primary end goal for this package is to create a space where (scientific) soccer metrics are implemented and can be used in a few lines. We even plan to go further and show clear notebooks (to combine text and code) with visualizations for all the features we implement. This way, you will not only get easy access to the features/metrics, but also understand exactly how it is calculated. We hope this will inspire others (both developers and scientist) to further improve the current features, and come up with valuable new ones. If you are interested in some of the features we implemented, see our [official documentation][docs-url].\n\n## V0.5.2 (15/11/2024)\n\n- Added `match.get_column_ids` with filters for team, player positions and minimal minutes played filters.\n- Added parser for DFL/Sportec Solutions event data\n- Added parser for Tracab xml format, used by DFL and Sportec solutions\n- Added integration for open data from DFL (open sourced by Bassek et al.)\n\n### Breaking changes\n- From now on, `match.home_players_column_ids()` and `match.away_players_column_ids()` are depreciated and will be removed in V0.7.0. Please use `match.get_column_ids()` in future version.\n- `get_open_match()` will now, by default, load in match `J03WMX` (1. FC K\u00f6ln vs. FC Bayern M\u00fcnchen) instead of the anonimysed match from Metrica. To load in the metrica match, please parse `provider=\"metrica\"` in the key word arguments.\n\n## Installation\n\n```bash\n$ pip install databallpy\n```\n\n## Usage\n\nThe package is centered around the `Match` object. A `Match` has tracking data, event data metadata about the match.\nFor a more elaborate example, see the [Getting Started][getting-started-url].\n\n```python\nfrom databallpy import get_match, get_open_match\n\nmatch = get_match(\n  tracking_data_loc=\"../data/tracking_data.dat\",\n  tracking_metadata_loc=\"../data/tracking_metadata.xml\",\n  tracking_data_provider=\"tracab\"\n  event_data_loc=\"../data/event_data_f24.xml\",\n  event_metadata_loc=\"../data/event_metadata_f7.xml\",\n  event_data_provider=\"opta\",\n)\n\n# or get the open match provided by the DFL (Sportec Solutions)\nmatch = get_open_match()\n```\n\n> [!note]\n> The current supported tracking data providers are:\n> - Tracab (including Sportec Solutions from the DFL)\n> - Metrica\n> - Inmotio\n> \n> The accepted variables for the `tracking_data_provider` are `[\"tracab\", \"metrica\", \"inmotio\", \"dfl\", \"sportec\"]`\n> \n> The current supported event data provider are:\n> - Opta\n> - Metrica\n> - Instat\n> - SciSports\n> - Sportec Solutions (from the DFL)\n> - Statsbomb\n> \n> The accepted variables for the `event_data_provider` are `[\"opta\", \"metrica\", \"instat\", \"scisports\", \"dfl\", \"sportec\", \"statsbomb\"]`\n>\n> If you wish to use a different provider that is not listed here, please open an issue [here](https://github.com/Alek050/databallpy/issues)\n\nSee [the documentation][docs-url] of the `Match` object and the [example usage][example-url] for more options. Note that this package is developed to combine event and tracking data, for now both datastreams are necessary to create a `Match` object.\n\n## Features\n\n### Preprocessing\n\n- [Data Filtering][filter-data-url]: Filter the data based on the quality of the tracking data.\n- [Adding velocity and Acceleration][velocity-acc-url]: Add velocity and acceleration to the tracking data.\n\n\n### Synchronization of tracking and event data\n\nSee our elaborate [synchronisation page][synchronisation-url] in the documentation for more information!\n\nTracking and event data is often poorly synchronized. For instance, when taking the event data of Opta and tracking data of Tracab, you can sync the fist frame with the kick-off pass. Now you can sync the other events with the tracking data based on the time difference between the event and the kick off pass. If you do this, how get something like this:\n\n<video width=\"640\" height=\"480\" controls>\n  <source src=\"https://raw.githubusercontent.com/Alek050/databallpy/main/docs/example_data/not_synced.mp4\" type=\"video/mp4\">\n  Your browser does not support the video tag.\n</video>\n\nhttps://user-images.githubusercontent.com/49450063/224564808-fa71735f-5510-464d-8499-9044227a02e8.mp4\n\n\nAs you can see, the timing (and placing) of the events do not correspond good with the tracking data locations, especially when events follow up quickly or around shots. Using the methodology of [this][soccer-sync-url] article, this package is able to synchronize tracking and event data using the Needleman-Wunsch algorithm. \n\nAfter running the following command, the events are better synchronized to the tracking data:\n\n```batch\n$ match.synchronise_tracking_and_event_data()\n```\n\n<video width=\"640\" height=\"480\" controls>\n  <source src=\"https://raw.githubusercontent.com/Alek050/databallpy/main/docs/example_data/synced.mp4\" type=\"video/mp4\">\n  Your browser does not support the video tag.\n</video>\n\n\nhttps://user-images.githubusercontent.com/49450063/224564913-4091faf7-f6ef-4429-b132-7f93ce5e1d91.mp4\n\nFor a more elaborate example of how we synchronize the tracking and event data, see the [Synchronisation Page][getting-started-url] in our [documentation][docs-url].\n\n### Visualizations\n\nDataBallPy offers a variety of visualizations to help you understand the data better. For example, you can visualize the tracking data with synchronised event as shown above. Also, you can visualize events and tracking data separately. For more information, see the [Visualizations Page][visualizations-url] in our [documentation][docs-url].\n\n### Soccer Specific Metrics\n\n- [Covered Distance][covered-distance-url]: Calculate the covered distance in different velocity and acceleration zones.\n- [Pressure][pressure-url]: Calculate the pressure any player in the match (Herold & Kempe, 2022).\n- [Team Possession][team-possession-url]: Calculate the team possession based on the synchronised event data.\n- [Individual Player Possession][individual_possession-url]: Calculate the individual player possession based on the tracking data (Vidal-Codina et al., 2022).\n- [Simple Expected Goals (xG) model][Expected-Goals-url]: Calculate the simple expected goals model.\n- [Expected Threat model][Expected-Threat-url]: Calculate the expected threat model from Karun Singh to on ball events.\n- [Voronoi Model][Voronoi-url]: Calculate the Voronoi space occupation based on the tracking data.\n- [Gaussian Model][Guassian-space-occupation-url]: Calculate the Gaussian space occupation based on the tracking data (Fernandez & Born, 2018).\n\n## Documentation\n\nThe official documentation can be found [here][docs-url].\n\n## Providers\n\nFor now we limited providers. We are planning on adding more providers later on.\n\nEvent data providers:\n- Opta\n- Metrica\n- Instat\n- SciSports\n- Sportec Solutions (for the DFL)\n\nTracking data providers:\n- Tracab (including Sportec Solutions format from the DFL)\n- Metrica\n- Inmotio\n\n## Contributing\n\nInterested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.\n\n## Maintainers & owners\n\n- [Alek050](https://github.com/Alek050/)\n\n## Contributors\n\n- [DaanGro](https://github.com/DaanGro/)\n- [rdghe](https://github.com/rdghe/)\n- [swopper050](https://github.com/Swopper050)\n- [maritsloots](https://github.com/maritsloots)\n\n## License\n\n`databallpy` was created by Alexander Oonk & Daan Grob. It is licensed under the terms of the MIT license.\n\n## Similar projects\n\nAlthough we think this package helps when starting to analyse soccer data, other packages may be better suited for your specific needs. Make sure to check out the following packages as well:\n- [kloppy][kloppy-url]\n- [floodlight][floodlight-url]\n- [codeball](https://github.com/metrica-sports/codeball)\n- [socceraction](https://github.com/ML-KULeuven/socceraction)\n\nAnd for a more specific toturials on how to get started with soccer data\"\n- [Friends of Tracking](https://github.com/Friends-of-Tracking-Data-FoTD)\n\n\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A package for loading, preprocessing, vizualising and synchronizing soccere event and tracking data.",
    "version": "0.5.3",
    "project_urls": {
        "Documentation": "https://github.com/Alek050/databallpy/tree/main/docs",
        "Homepage": "https://pypi.org/project/databallpy/",
        "Repository": "https://github.com/Alek050/databallpy"
    },
    "split_keywords": [
        "soccer",
        " football",
        " tracking data",
        " event data"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "75783d31fc5ad5135826380a7736f1ad0ace003ea54cc491e9c7018efa32c0ce",
                "md5": "8ec688e3a25eb6337af9817ed5d35e80",
                "sha256": "eaec84d8c63d573f008956abf223ffcc88545ab0e31e4ef03bbfe914ea5ec6eb"
            },
            "downloads": -1,
            "filename": "databallpy-0.5.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8ec688e3a25eb6337af9817ed5d35e80",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.10",
            "size": 893635,
            "upload_time": "2024-12-10T12:29:21",
            "upload_time_iso_8601": "2024-12-10T12:29:21.549234Z",
            "url": "https://files.pythonhosted.org/packages/75/78/3d31fc5ad5135826380a7736f1ad0ace003ea54cc491e9c7018efa32c0ce/databallpy-0.5.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1a3bb1d6bb992940421f4f68fadbf3c66fd2608c23e34ba24c27c73f1ef76f66",
                "md5": "c1269c564e3d4bd6525257d134d8ead8",
                "sha256": "765564e0eb5857ce4c3e5e770b87835a4b5a24978c1259cfa6e176c8e1706d3b"
            },
            "downloads": -1,
            "filename": "databallpy-0.5.3.tar.gz",
            "has_sig": false,
            "md5_digest": "c1269c564e3d4bd6525257d134d8ead8",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.10",
            "size": 870127,
            "upload_time": "2024-12-10T12:29:23",
            "upload_time_iso_8601": "2024-12-10T12:29:23.567464Z",
            "url": "https://files.pythonhosted.org/packages/1a/3b/b1d6bb992940421f4f68fadbf3c66fd2608c23e34ba24c27c73f1ef76f66/databallpy-0.5.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-12-10 12:29:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Alek050",
    "github_project": "databallpy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "databallpy"
}
        
Elapsed time: 0.60939s