vra-anac
Quantos voos domésticos chegaram no horário, por voo, rota, companhia ou aeroporto, a partir do arquivo mensal do VRA (Voo Regular Ativo) da ANAC. Lê o CSV como a ANAC publica e aplica a mesma régua do chegounahora.com.br: no horário = chegada até 15 min depois da prevista.
Só a biblioteca padrão do Python, sem rede: você baixa o CSV, ela faz a conta.
Instalar
pip install vra-anac
Ou uma versão exata, pela tag do GitHub:
pip install "git+https://github.com/peterwkdev-creator/vra-anac@v0.1.0"
Python 3.11 ou mais novo.
Usar
import vra_anac
# o CSV do mês que você baixou da ANAC (aqui, a amostra dos testes)
atualizado, voos = vra_anac.ler_arquivo("tests/fixtures/vra-amostra.csv")
t = vra_anac.tabelas()
for chave, c in vra_anac.agrupar(voos, por="voo").items():
print(f"{t.rotulo(chave)}: {c.pct('chegada')}% no horário (n = {c.n})")
# G3 1015 SDU→CGH: 100% no horário (n = 1)
# G3 1016 CGH→SDU: 0% no horário (n = 2)
# ...
Pela linha de comando, a tabela do mês (ou --json):
vra-anac VRA_20268.csv --por companhia
VRA da ANAC, 08/2026 (arquivo atualizado em 2026-10-07): 68.355 voos domésticos regulares, 1 fora do mês.
No horário = chegada até 15 min depois da prevista. Só os grupos com 20 voos ou mais.
no horário cancelado voos companhia
87% 1% 23.080 Azul (AZU)
84% 2% 20.295 GOL (GLO)
78% 1% 23.850 LATAM (TAM)
76% 16% 1.098 Azul Conecta (ACN)
0% 100% 24 Apuí Táxi Aéreo (CQB)
Dados: ANAC, Voo Regular Ativo (VRA), licença CC-BY. https://www.gov.br/anac/...
--por aceita voo (padrão), rota, companhia, origem e destino;
--minimo (padrão 20) deixa de fora o grupo com poucos voos, que oscila por
acaso de um mês para o outro.
Onde baixar o CSV
Na página do Voo Regular Ativo (VRA)
da ANAC, um arquivo por mês (VRA_AAAAM.csv, o mês sem zero). A ANAC
publica com cerca de 4 semanas de atraso.
O que a conta faz
- Voo doméstico regular: tipo de linha
Ne código de autorização0. Extras, fretamentos e voos internacionais ficam de fora. - No horário: chegada real até 15 min depois da prevista; adiantado
conta como no horário. A partida tem o mesmo critério, ao lado
(
c.pct("partida")). - Faixas: até 30 min, até 60 min, mais de 60 min e cancelado
(
c.distribuicao("chegada")). O atraso é contado em segundos inteiros: 30 min exatos ficam na faixa de até 30. - Cancelado conta no total e nunca como no horário.
- Porcentagem arredondada com o meio para cima (12,5 → 13).
- O voo é empresa + número + origem + destino. O número sai sem o
Zque o VRA às vezes põe na frente (Z1001e1001são o mesmo voo vendido). Isso é inferência, conferida em alguns voos contra o horário publicado pela companhia, não regra escrita da ANAC. - O mês sai das datas das linhas, não do nome do arquivo; o que cai em
outro mês aparece contado à parte (
vra_anac.periodo). - Os horários são os do arquivo, em Brasília.
O que vem junto
As tabelas que levam o código ICAO do VRA ao que aparece no bilhete
(GLO → G3, SBSP → CGH Congonhas): companhias do cadastro da ANAC e
do diretório da IATA, e aeroportos da lista de aeródromos públicos da ANAC
e do OurAirports (domínio público). Cada linha cita a fonte e a data da
consulta (t.companhias, t.aeroportos). Código fora da tabela aparece
como veio no arquivo.
Como é testado
python -m unittest, do checkout, sem instalar nada. A amostra dos testes
tem linhas reais do VRA de julho/2026, com os bytes do arquivo da ANAC (BOM
e CRLF), e cada número esperado foi contado à mão. O CI roda do Python 3.11
ao 3.14 e no Windows, e instala o pacote num ambiente limpo antes de cada
versão.
Fontes e limites
- Dados: ANAC, Voo Regular Ativo (VRA), licença CC-BY. Quem publicar resultado feito com esta biblioteca precisa dar o crédito à ANAC; a linha de comando já escreve a atribuição na saída.
- Esta biblioteca não é da ANAC nem de companhia aérea. O resultado mostra o que aconteceu no mês, não prevê o próximo voo.
- O VRA não traz o motivo do atraso (o campo de justificativa vem vazio).
Contribuir
Ver o CONTRIBUTING.md. Resultado diferente da sua conta: abra uma issue pelo modelo "Resultado diferente do esperado".
Licença
Código sob a licença MIT. Os dados do VRA são da ANAC, sob CC-BY.
Metadata
Release files for vra-anac 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vra_anac-0.1.0.tar.gz | 29.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vra_anac-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.6 kB
Release files / vra_anac-0.1.0.tar.gz
| Download URL | vra_anac-0.1.0.tar.gz |
|---|---|
| Size | 29.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
033ba4ae86f07c2b7aedc412dbb4c6a8bfa9fe43a12fdd75ceff69d79ba57e73
|
|
BLAKE2b-256 checksum How to use checksums |
0e6dde988abb876d49ab8eb03a3bc4c4406589d14933436e4c681e071baeb4ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency logRelease files / vra_anac-0.1.0-py3-none-any.whl
| Download URL | vra_anac-0.1.0-py3-none-any.whl |
|---|---|
| Size | 22.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
018e4321d91ca35b025cbab11005b9956d194b3d6474b2c75b85b4eda06d31c3
|
|
BLAKE2b-256 checksum How to use checksums |
93e8bf7a193dbaa43551792df8867061e2664dc40bdead3d8b8c3f30b840dc15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.
Transparency log