Skip to main content

yukinator

actionsDocumentation StatusDownloads

Unofficial API wrapper for Ergast API. Since the shutdown of the Ergast API, the library has been using the Jolpica F1 API (thank you https://github.com/assenzostefano for the update).

Created mainly for learning purposes. There are already at least two other wrappers worth checking: fastF1 - a swiss army knife for F1-related analyses, pyErgast - a neat pandas wrapper.

The name of the wrapper is Yukinator, in honor of the Japanese Formula 1 driver - Yuki Tsunoda.

Features

  • Extensive: covers all Ergast API endpoints
  • Responsible: minimize the load on the API server
    • implemented caching
  • Simple: easy to use and customize:
    • object-oriented design
    • use of data transfer objects
    • convert adequate fields from strings to the more suitable types
  • Lightweight: minimal usage of the third-party packages

Installation

pip install yukinator

Getting started

Obtaining data for an Ergast API endpoint is very simple. For example, you can get a list of race objects from the 2020 season like this:

import yukinator

y = yukinator.Yuki()
races_2020 = y.get_races(year=2020)

Check the docs to get acquainted with the methods for the rest of the endpoints.

The wrapper is initiated with the caching enabled by default. You can manually set the caching-related attributes like a directory for cache file, time after cached items expire, or clear the whole cache before the first request as follows:

y = yukinator.Yuki(cache_dir='f1project/races', expires_after=9000, force_clear=True)

The caching can be also disabled (strongly not recommended):

y = yukinator.Yuki(cache_enabled=False)

Chosen fields of the object can be accessed easily:

race_1 = races_2020[0]

# print name of the race
print(race_1.raceName)

# print name from every nested Circuit object
for race in races_2020:
    print(race.Circuit.circuitName)

Every object from the obtained list can be converted to the simpler structures:

# convert object to the dictionary
race_1_dict = race_1.to_dict()

# convert object to the tuple
race_1_tuple = race_1.to_tuple()

# convert object to the flat dict - useful for creating pandas dataframes
race_1_flat_dict = race_1.to_flat_dict() 

# convert object to a json string
race_1_json = race_1.to_json()

WARNING

The Ergast API has a limit of four calls per second and 200 per hour. Please take care while calling the methods within a loop.

Documentation

The documentation is hosted on ReadTheDocs.io

Help, questions, and contributing

All contributors are very welcome. If you have any questions or a bug to report feel free to open an issue.

External packages

Yukinator depends on these third-party packages:

Metadata

Release files for yukinator 0.2.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 yukinator 0.2.0
File Size Uploaded
yukinator-0.2.0.tar.gz 9.4 kB Details

Built distribution (wheel)

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

Total release size: 19.3 kB

Release files / yukinator-0.2.0.tar.gz

Download URL yukinator-0.2.0.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
282eb4f00de1098cc9686867ea42845eacdb603b29e8d25cd6bab90847adb79e
BLAKE2b-256 checksum
How to use checksums
cc1bdd0d6a98b1e30079bb98c85e88ea5e6c7458b299ad77198ddc5a6e986ab7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.2 Linux/6.13.7-200.fc41.x86_64

Release files / yukinator-0.2.0-py3-none-any.whl

Download URL yukinator-0.2.0-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
019bba2b010212725bcf15b4c105f0cbdf0baa5cc17d9284de2ed77e39feb03e
BLAKE2b-256 checksum
How to use checksums
5736930f6ddf032f7a8b174e732ac1cd42bd54de3ac8b3d959978b0baa827f3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.1.1 CPython/3.13.2 Linux/6.13.7-200.fc41.x86_64

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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