---
title: "Setup FastF1 Connection"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{Setup FastF1 Connection}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
```

# Introduction

This vignette briefly describes setting up the `f1dataR` package to work properly with with 
the Python package [`FastF1`](https://docs.fastf1.dev/). This guide may help resolve some issues
that might arise when you get the following warning or error messages:

- `Ensure fastf1 python package is installed. Please run this to install the most recent version: setup_fastf1()`
- `Error in if (get_fastf1_version() < '3.1') { :` 
   `missing value where TRUE/FALSE needed`

If these happen to you (particularly if you're a new user of `f1dataR`) read on!

# `f1dataR`'s Relationship to Python

At the core of the `f1dataR` package, the connection to the Python package is created
by using [`reticulate`](https://rstudio.github.io/reticulate/). This provides the 
connection used to call on Python and return objects to R. However, it has to be 
set up properly to work.

> **_NOTE:_**  If you are comfortable with `reticulate`, set up a virtualenv or 
condaenv and point reticulate to that with your .RProfile before calling `library(fastf1)`,
and you can skip the rest of this guide.

# Setting up `reticulate`

There are a few options to get the `reticulate` set up in a way that works well for 
`f1dataR` to use it.

## Accept all defaults

To use all of the defaults and set up the `reticulate` package, you can use the below 
helper function. 

```r
setup_fastf1()
```

This will create a virtual environment using your system's default Python version,
and install `fastf1` in that python environment. It will also tell `reticulate` to use that
environment instead of just running in your main system. Many resources exist online to explain python environments in more detail. 

# Repeat/Recurring Issues

If you have repeat issues with the package failing to connect to your proper environment, 
you can force a complete recreation of the virtual environment by calling:

```r
setup_fastf1(new_env = TRUE)
```

If you've configured the package to use a custom environment name, the above function will require that name supplied as
the `envname` parameter.
