Welcome to yukinator's documentation!
=====================================
**Yukinator** is an unnofficial API wrapper for `Ergast API `__.
Package is 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
- converts 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:
.. code:: python
import yukinator
y = yukinator.Yuki()
races_2020 = y.get_races(year=2020)
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:
.. code:: python
y = yukinator.Yuki(cache_dir='f1project/races', expires_after=9000, force_clear=True)
The caching can be also disabled (strongly not recommended):
.. code:: python
y = yukinator.Yuki(cache_enabled=False)
Chosen fields of the object can be accessed easily:
.. code:: python
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:
.. code:: python
# 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.
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:
- `attrs `__
- `requests-cache `__
Main class and submodules
-------------------------
From here you can refer to the main class - Yuki and submodules documentation.
.. toctree::
:maxdepth: 2
:titlesonly:
modules
Index
==================
* :ref:`genindex`