# Daft

[Daft](https://daft.ai/) é um motor de dados de alto desempenho que oferece processamento de dados simples e confiável para qualquer modalidade e escala. O Daft tem suporte nativo para leitura e gravação em datasets do Hugging Face.

## Começando

Para começar, instale `daft` com o recurso `huggingface` usando pip:

```bash
pip install 'daft[huggingface]'
```

## Ler

O Daft é capaz de ler conjuntos de dados diretamente do Hugging Face Hub usando a função [`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface) ou por meio do protocolo `hf://datasets/`.

### Lendo um Conjunto de Dados Inteiro

Usando [`daft.read_huggingface()`](https://docs.daft.ai/en/stable/api/io/#daft.read_huggingface), você pode carregar um dataset com facilidade.

```python
import daft

df = daft.read_huggingface("username/dataset_name")
```

Isso lerá o conjunto de dados inteiro em um DataFrame.

### Lendo Arquivos Específicos

Você pode não apenas ler conjuntos de dados inteiros, mas também ler arquivos individuais de um repositório de conjuntos de dados. Usando uma função de leitura que aceita um caminho (como [`daft.read_parquet()`](https://docs.daft.ai/en/stable/api/io/#daft.read_parquet), [`daft.read_csv()`](https://docs.daft.ai/en/stable/api/io/#daft.read_csv) ou [`daft.read_json()`](https://docs.daft.ai/en/stable/api/io/#daft.read_json)), especifique um caminho de conjunto de dados do Hugging Face por meio do prefixo `hf://datasets/`:

```python
import daft

# read a specific Parquet file
df = daft.read_parquet("hf://datasets/username/dataset_name/file_name.parquet")

# or a csv file
df = daft.read_csv("hf://datasets/username/dataset_name/file_name.csv")

# or a set of Parquet files using a glob pattern
df = daft.read_parquet("hf://datasets/username/dataset_name/**/*.parquet")
```

## Escrever

O Daft é capaz de gravar arquivos Parquet em um repositório de dataset do Hugging Face usando [`daft.DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_deltalake). O Daft oferece suporte a [Content-Defined Chunking](https://huggingface.co/blog/parquet-cdc) e [Xet](https://huggingface.co/blog/xet-on-the-hub) para gravações mais rápidas e deduplicadas.

Uso básico:

```python
import daft

df: daft.DataFrame = ...

df.write_huggingface("username/dataset_name")
```

Consulte a página da API [`DataFrame.write_huggingface`](https://docs.daft.ai/en/stable/api/dataframe/#daft.DataFrame.write_huggingface) para mais informações.

## Autenticação

O parâmetro `token` em [`daft.io.HuggingFaceConfig`](https://docs.daft.ai/en/stable/api/config/#daft.io.HuggingFaceConfig) pode ser usado para especificar um token de acesso do Hugging Face para solicitações que exigem autenticação (por exemplo, ler repositórios de datasets privados ou gravar em um repositório de dataset).

Exemplo de carregamento de um conjunto de dados com um token especificado:

```python
from daft.io import IOConfig, HuggingFaceConfig

io_config = IOConfig(hf=HuggingFaceConfig(token="your_token"))
df = daft.read_parquet("hf://datasets/username/dataset_name", io_config=io_config)
```

