Funções para plotagem meteorológica
Project description
meteoplots
Biblioteca para geração de gráficos meteorológicos (chuva, vento, SST, etc.) em Python.
📦 Instalação
Você pode instalar diretamente a partir do GitHub:
pip install git+https://github.com/josepaulo1233/meteoplots.git
pip install --upgrade --force-reinstall --no-cache-dir git+https://github.com/josepaulo1233/meteoplots.git@main
📊 Trabalhando com Dados xarray
A biblioteca meteoplots trabalha exclusivamente com objetos xarray.DataArray para dados meteorológicos. O xarray é a biblioteca padrão para manipulação de dados científicos multidimensionais em Python.
O que é xarray.DataArray?
Um xarray.DataArray é uma estrutura de dados que combina:
- Valores numéricos (dados meteorológicos)
- Coordenadas (latitude, longitude, tempo, níveis)
- Metadados (atributos, unidades, descrições)
Carregando Dados Meteorológicos
import xarray as xr
import numpy as np
# Método 1: Carregar de arquivo NetCDF
temperatura = xr.open_dataarray('temperatura_2m.nc')
precipitacao = xr.open_dataset('precipitacao.nc')['tp'] # Extrair variável específica
# Método 2: Criar dados sintéticos para testes
lat = np.arange(-35, 10, 0.5)
lon = np.arange(-75, -30, 0.5)
temp_data = 20 + 10 * np.random.random((len(lat), len(lon)))
temperatura = xr.DataArray(
temp_data,
coords=[('latitude', lat), ('longitude', lon)],
attrs={'units': '°C', 'long_name': 'Temperatura do Ar 2m'}
)
# Método 3: Converter de outros formatos
import pandas as pd
# De pandas DataFrame para xarray
df = pd.read_csv('dados_estacoes.csv')
data_xr = df.set_index(['lat', 'lon']).to_xarray()
Estrutura Típica de Dados Meteorológicos
# Visualizar estrutura do DataArray
print(temperatura)
# Output:
# <xarray.DataArray 'temperature' (latitude: 90, longitude: 90)>
# array([[15.2, 15.4, ...],
# [16.1, 16.3, ...], ...])
# Coordinates:
# * latitude (latitude) float64 -35.0 -34.5 ... 9.0 9.5
# * longitude (longitude) float64 -75.0 -74.5 ... -30.5 -30.0
# Attributes:
# units: °C
# long_name: Temperatura do Ar 2m
Verificando Dimensões e Coordenadas
# Verificar dimensões necessárias para meteoplots
print("Dimensões:", list(temperatura.dims)) # Deve incluir 'latitude' e 'longitude'
print("Coordenadas:", list(temperatura.coords))
print("Shape:", temperatura.shape)
# Renomear dimensões se necessário
if 'lat' in temperatura.dims:
temperatura = temperatura.rename({'lat': 'latitude', 'lon': 'longitude'})
Preparando Dados para Múltiplos Plots
# Para plot_multipletypes_from_xarray, organize como dicionário
dados_multiplos = {
'contourf': temperatura, # Para plot preenchido
'contour': pressao, # Para linhas de contorno
'u_quiver': componente_u, # Componente U do vento
'v_quiver': componente_v # Componente V do vento
}
Dicas Importantes
- Coordenadas obrigatórias:
latitude/latelongitude/lonou - Ordem das dimensões: Não importa, o xarray gerencia automaticamente
- Sistemas de coordenadas: A biblioteca aceita lon 0-360° ou -180-180°
🎯 Funções Principais
📊 Funções de Plotagem
plot_contourf_from_xarray()
Cria gráficos preenchidos (contourf) a partir de dados xarray.
from meteoplots.plots import plot_contourf_from_xarray
# Exemplo básico
fig, ax = plot_contourf_from_xarray(
xarray_data=temperatura_data,
plot_var_colorbar='temperature',
title='Temperatura do Ar - 2m',
extent=[-60, -30, -35, 5], # [lon_min, lon_max, lat_min, lat_max]
figsize=(12, 8)
)
Parâmetros principais:
xarray_data: Dados em formato xarray DataArrayplot_var_colorbar: Variável meteorológica para colorbar automáticadim_lat/dim_lon: Nomes das dimensões de latitude/longitudeextent: Extensão geográfica [lon_min, lon_max, lat_min, lat_max]normalize_colorbar: Normalização da barra de coresshapefiles: Lista de shapefiles para sobreposição
Parâmetros para análise de bacias:
shp_path_bacias: Caminho para shapefile de bacias hidrográficasadd_values_from_shapefile: SeTrue, adiciona valores médios das bacias no mapabasin_column_name: Nome da coluna com identificação das bacias (padrão: 'Nome_Bacia')
Exemplo com Análise de Bacias
# Exemplo com cálculo de valores médios por bacia
fig, ax = plot_contourf_from_xarray(
xarray_data=precipitacao_data,
plot_var_colorbar='tp',
title='Precipitação por Bacia Hidrográfica',
extent=[-60, -30, -35, 5],
# Parâmetros para análise de bacias
shp_path_bacias='path/to/bacias_hidrograficas.shp',
add_values_from_shapefile=True,
basin_column_name='Nome_Bacia', # Nome da coluna com ID das bacias
figsize=(12, 8)
)
Funcionalidade de Bacias:
- Calcula automaticamente o valor médio de cada bacia
- Adiciona anotações no centróide de cada bacia
- Útil para análise hidrológica e climatológica regional
plot_contour_from_xarray()
Cria linhas de contorno a partir de dados xarray.
from meteoplots.plots import plot_contour_from_xarray
# Linhas de contorno para pressão
fig, ax = plot_contour_from_xarray(
xarray_data=pressao_data,
contour_levels=[np.arange(1000, 1020, 2)],
colors_levels=['red'],
title='Linhas de Pressão (hPa)'
)
Parâmetros específicos:
contour_levels: Lista de níveis para contornocolors_levels: Cores das linhas de contornostyles_levels: Estilos das linhas
plot_quiver_from_xarray()
Cria gráficos de vetores de vento (quiver plots).
from meteoplots.plots import plot_quiver_from_xarray
# Vetores de vento
fig, ax = plot_quiver_from_xarray(
xarray_u=u_component,
xarray_v=v_component,
quiver_skip=3, # Skip pontos para visualização mais limpa
quiver_kwargs={'scale': 400, 'headwidth': 3},
quiver_key={'length': 10, 'label': '10 m/s'}
)
Parâmetros específicos:
xarray_u/xarray_v: Componentes U e V do ventoquiver_skip: Subsampling para visualização mais limpaquiver_kwargs: Parâmetros do matplotlib quiverquiver_key: Configuração da legenda de escala
plot_streamplot_from_xarray()
Cria linhas de fluxo (streamlines) para campos de vento.
from meteoplots.plots import plot_streamplot_from_xarray
# Linhas de fluxo
fig, ax = plot_streamplot_from_xarray(
xarray_u=u_component,
xarray_v=v_component,
stream_kwargs={'density': 2, 'color': 'blue', 'linewidth': 1.5},
stream_color_by_magnitude=True, # Cor baseada na magnitude
stream_cmap='viridis'
)
Parâmetros específicos:
stream_kwargs: Parâmetros do matplotlib streamplotstream_color_by_magnitude: Colorir por magnitude do ventostream_cmap: Colormap para magnitudestream_colorbar: Mostrar barra de cores
plot_multipletypes_from_xarray()
🌟 Função principal - Combina múltiplos tipos de plot em um único gráfico.
from meteoplots.plots import plot_multipletypes_from_xarray
# Exemplo completo combinando múltiplos plots
fig, ax = plot_multipletypes_from_xarray(
xarray_data={
'contourf': temperatura_data,
'contour': pressao_data,
'u_quiver': u_component,
'v_quiver': v_component
},
plot_var_colorbar='temperature',
plot_types=['contourf', 'contour', 'quiver', 'streamplot'],
title='Análise Meteorológica Completa',
extent=[-60, -30, -35, 5],
figsize=(15, 10),
# Parâmetros específicos para cada tipo
contour_levels=[np.arange(1010, 1025, 2)],
colors_levels=['black'],
quiver_skip=4,
streamplot_kwargs={'density': 1.5, 'color': 'white', 'alpha': 0.7}
)
Tipos de plot disponíveis:
'contourf': Dados preenchidos com cores'contour': Linhas de contorno'quiver': Vetores de vento'streamplot': Linhas de fluxo
🔲 Função Utilitária
add_box_to_plot()
Adiciona caixas retangulares (boxes) em plots existentes para destacar áreas de interesse.
from meteoplots.plots import add_box_to_plot
# Criar plot base
fig, ax = plot_contourf_from_xarray(
xarray_data=temperatura_data,
plot_var_colorbar='temperature',
title='Temperatura com Área de Interesse'
)
# Adicionar caixas retangulares
extent_boxes = [
[-55, -45, -25, -15], # Box 1: [lon_min, lon_max, lat_min, lat_max]
[-50, -40, -30, -20] # Box 2: Outra área de interesse
]
add_box_to_plot(
ax=ax,
extent_boxes=extent_boxes,
edgecolor_box='red',
linewidth_box=2,
linestyle_box='--',
alpha_box=0.8
)
Parâmetros:
ax: Eixo matplotlib onde adicionar as caixasextent_boxes: Lista de extensões geográficas [lon_min, lon_max, lat_min, lat_max]edgecolor_box: Cor da borda (padrão: 'black')facecolor_box: Cor de preenchimento (padrão: 'none')linewidth_box: Espessura da linha (padrão: 1)linestyle_box: Estilo da linha (padrão: '-')alpha_box: Transparência (padrão: 1.0)
Casos de uso típicos:
- Destacar regiões de estudo específicas
- Marcar áreas com eventos meteorológicos importantes
- Delimitar zonas de interesse em análises climáticas
- Sobrepor múltiplas áreas para comparação regional
⚙️ Parâmetros Comuns
🗺️ Configuração Geográfica
# Configurações de mapa
extent = [-60, -30, -35, 5] # Brasil: [lon_min, lon_max, lat_min, lat_max]
central_longitude = 0 # Longitude central da projeção
figsize = (12, 8) # Tamanho da figura
🎨 Personalização Visual
# Títulos e labels
title = 'Meu Gráfico Meteorológico'
title_size = 16
label_colorbar = 'Temperatura (°C)'
colorbar_position = 'horizontal' # ou 'vertical'
# Salvamento
savefigure = True
path_save = './figuras'
output_filename = 'meu_grafico.png'
🛡️ Configuração de Colorbars
# Método 1: Usar colorbar pré-configurada (recomendado)
plot_contourf_from_xarray(data, plot_var_colorbar='tp')
# Método 2: Configuração manual com levels e colors
plot_contourf_from_xarray(
data,
levels=[0, 5, 10, 15, 20],
colors=['blue', 'green', 'yellow', 'red']
)
# Método 3: Configuração manual com levels e cmap
plot_contourf_from_xarray(
data,
levels=[0, 5, 10, 15, 20],
cmap='viridis'
)
# ❌ Erro: sem plot_var_colorbar nem configuração manual
# plot_contourf_from_xarray(data) # Gerará ValueError
Importante: Se plot_var_colorbar=None, você deve fornecer:
levelsEcolors, oulevelsEcmap
📂 Shapefiles
# Adicionar contornos de países/estados
shapefiles = [
'path/to/brazil_states.shp',
'path/to/south_america.shp'
]
💡 Exemplos Práticos
Exemplo 1: Temperatura com Contornos de Pressão
import xarray as xr
from meteoplots.plots import plot_multipletypes_from_xarray
# Carregar dados
temp_data = xr.open_dataarray('temperatura.nc')
pres_data = xr.open_dataarray('pressao.nc')
# Plotar
plot_multipletypes_from_xarray(
xarray_data={'contourf': temp_data, 'contour': pres_data},
plot_var_colorbar='temperature',
plot_types=['contourf', 'contour'],
title='Temperatura + Pressão',
extent=[-75, -30, -35, 10],
contour_levels=[np.arange(1000, 1030, 4)],
colors_levels=['black']
)
Exemplo 2: Campo de Vento Completo
# Dados de vento
u_wind = xr.open_dataarray('u_component.nc')
v_wind = xr.open_dataarray('v_component.nc')
# Plotar vetores e linhas de fluxo
plot_multipletypes_from_xarray(
xarray_data={'u_quiver': u_wind, 'v_quiver': v_wind},
plot_types=['quiver', 'streamplot'],
title='Campo de Vento - 850 hPa',
quiver_skip=5,
streamplot_kwargs={'density': 2, 'color': 'red', 'alpha': 0.6}
)
Exemplo 3: Análise de Bacias Hidrográficas
from meteoplots.plots import plot_contourf_from_xarray
import xarray as xr
# Carregar dados de precipitação
precip_data = xr.open_dataarray('precipitacao_mensal.nc')
# Análise por bacias com valores médios
fig, ax = plot_contourf_from_xarray(
xarray_data=precip_data,
plot_var_colorbar='tp', # Colorbar de precipitação
title='Precipitação Média por Bacia Hidrográfica',
extent=[-75, -30, -35, 10], # Brasil
# Configuração de bacias
shp_path_bacias='data/bacias_hidrograficas_brasil.shp',
add_values_from_shapefile=True,
basin_column_name='Nome_Bacia',
# Sobreposição de estados
shapefiles=['data/estados_brasil.shp'],
# Configurações visuais
colorbar_position='horizontal',
label_colorbar='Precipitação (mm/mês)',
figsize=(15, 10)
)
Exemplo 4: Usando Funções Utilitárias
from meteoplots.plots import plot_contourf_from_xarray
from meteoplots.colorbars import custom_colorbar
from meteoplots.utils.titles import gerar_titulo
import datetime
# Carregar dados
temp_data = xr.open_dataarray('temperatura.nc')
# Gerar título profissional
titulo = gerar_titulo(
titulo_principal="Temperatura do Ar",
nivel="850 hPa",
unidade="°C",
modelo="GFS",
data=datetime.datetime(2024, 1, 15, 12, 0),
subtitulo="Análise"
)
# Verificar colorbars disponíveis
custom_colorbar(help=True)
# Plotar com colorbar automática
plot_contourf_from_xarray(
xarray_data=temp_data,
plot_var_colorbar='temp850', # Usar colorbar pré-configurada
title=titulo,
extent=[-60, -30, -35, 5],
label_colorbar='Temperatura (°C)'
)
🌊 Análise de Bacias Hidrográficas
A função plot_contourf_from_xarray() inclui funcionalidade especial para análise de bacias hidrográficas, calculando automaticamente valores médios por bacia e exibindo-os no mapa.
Como Funciona
# Ativar análise de bacias
plot_contourf_from_xarray(
xarray_data=data,
plot_var_colorbar='tp',
# Parâmetros para bacias
shp_path_bacias='caminho/para/bacias.shp',
add_values_from_shapefile=True,
basin_column_name='Nome_Bacia' # Coluna com ID das bacias
)
Funcionalidades da Análise de Bacias
- Cálculo automático: Valor médio espacial para cada bacia
- Anotações no mapa: Valores exibidos no centróide de cada bacia
- Flexibilidade: Funciona com qualquer shapefile de polígonos
- Precisão: Considera apenas pixels dentro de cada bacia
Requisitos do Shapefile
- Geometria: Polígonos representando as bacias
- Coluna de identificação: Nome ou código único para cada bacia
- Sistema de coordenadas: Preferencialmente EPSG:4326 (lat/lon)
Exemplo Prático
# Análise de precipitação por sub-bacias do São Francisco
plot_contourf_from_xarray(
xarray_data=precipitacao_mensal,
plot_var_colorbar='tp',
title='Precipitação - Sub-bacias do Rio São Francisco',
# Configuração das bacias
shp_path_bacias='dados/sub_bacias_sao_francisco.shp',
add_values_from_shapefile=True,
basin_column_name='CODIGO_BACIA',
# Região de interesse
extent=[-50, -37, -18, -8],
label_colorbar='Precipitação (mm/mês)'
)
Casos de Uso
- Hidrologia: Análise de precipitação por bacia
- Planejamento hídrico: Distribuição de recursos
- Climatologia regional: Padrões por região
- Agricultura: Monitoramento de chuva por fazenda/região
🎨 Colorbars Automáticas
A biblioteca inclui colorbars pré-configuradas para variáveis meteorológicas através da função custom_colorbar().
custom_colorbar()
Gera automaticamente níveis, cores e colormaps para variáveis meteorológicas específicas.
from meteoplots.colorbars import custom_colorbar
# Obter configuração de colorbar para precipitação
levels, colors, cmap, cbar_ticks = custom_colorbar('tp')
# Ver todas as variáveis disponíveis
custom_colorbar(help=True)
Variáveis disponíveis incluem:
- Precipitação:
tp,chuva_ons,chuva_pnmm,tp_anomalia,tp_anomalia_mensal - Temperatura:
temp850,temp_anomalia - Vento:
wind200,mag_vento100,mag_vento100_anomalia - Pressão:
pnmm_vento,geop_500,geop_500_anomalia - Oceanografia:
sst_anomalia - Campos dinâmicos:
psi,chi,vorticidade,divergencia850 - Outros:
olr,ivt,frentes,probabilidade,geada-inmet
Parâmetros:
variavel_plotagem: Nome da variável meteorológicahelp: SeTrue, mostra todas as variáveis disponíveis com preview visual
Retorna:
levels: Níveis para contorno/colorbarcolors: Lista de cores (se aplicável)cmap: Colormap do matplotlibcbar_ticks: Posições dos ticks na colorbar
📝 Geração de Títulos
gerar_titulo()
Gera títulos formatados e informativos para gráficos meteorológicos.
from meteoplots.utils.titles import gerar_titulo
# Título simples
titulo = gerar_titulo(
titulo_principal="Temperatura do Ar",
nivel="2m",
unidade="°C"
)
# Título completo com metadados
titulo = gerar_titulo(
titulo_principal="Precipitação Acumulada",
subtitulo="Previsão 24h",
data="15/01/2024 12:00",
nivel="Superfície",
unidade="mm",
modelo="GFS",
fonte="NOAA"
)
Parâmetros principais:
titulo_principal: Título principal (ex: "Temperatura do Ar")subtitulo: Informação adicionaldata: Data/hora (string ou datetime)nivel: Nível atmosférico (ex: "850 hPa", "Superfície")unidade: Unidade de medida (ex: "°C", "mm/h")modelo: Nome do modelo (ex: "GFS", "ERA5")fonte: Fonte dos dadosbold_subtitle: Formatação em negrito (LaTeX)include_datetime: Incluir timestamp de geração
Exemplo de saída:
Temperatura do Ar - 2m (°C)
𝐀𝐧á𝐥𝐢𝐬𝐞\ |\ 𝐌𝐨𝐝𝐞𝐥𝐨:\ 𝐆𝐅𝐒\ |\ 𝐃𝐚𝐭𝐚:\ 𝟏𝟓/𝟎𝟏/𝟐𝟎𝟐𝟒\ |\ 𝐆𝐞𝐫𝐚𝐝𝐨\ 𝐞𝐦:\ 𝟏𝟖/𝟎𝟗/𝟐𝟎𝟐𝟓
Características:
- Formatação automática: LaTeX para texto em negrito
- Timestamp automático: Data/hora de geração
- Flexível: Combine apenas os parâmetros necessários
- Padrão profissional: Adequado para relatórios científicos
🧪 Testes
A biblioteca meteoplots inclui uma suíte abrangente de testes para garantir qualidade e confiabilidade.
Estrutura dos Testes
tests/
├── __init__.py
├── conftest.py # Fixtures compartilhadas
├── test_colorbars.py # Testes para colorbars automáticas
├── test_plots.py # Testes para funções de plotagem
├── test_utils.py # Testes para utilitários
└── test_integration.py # Testes de integração
Instalação das Dependências de Teste
# Instalar dependências básicas + testes
pip install -e ".[test]"
# Ou instalar dependências de desenvolvimento
pip install -e ".[dev]"
Executando os Testes
Método 1: Script de Teste Simples
# Executar todos os testes
python run_tests.py
# Executar com cobertura
python run_tests.py --coverage
# Executar apenas testes rápidos
python run_tests.py --fast
# Executar com saída detalhada
python run_tests.py --verbose
Método 2: Pytest Direto
# Todos os testes
pytest
# Com cobertura
pytest --cov=meteoplots --cov-report=html
# Testes específicos
pytest tests/test_colorbars.py
pytest tests/test_plots.py::TestPlotContourfFromXarray
# Pular testes lentos
pytest -m "not slow"
Tipos de Teste
🔧 Testes Unitários
- Colorbars: Validação de configurações, formatos, compatibilidade
- Plots: Cada função de plotagem individualmente
- Utils: Cálculos de bacia, geração de títulos, criação de painéis
🔗 Testes de Integração
- Workflows completos: Análise meteorológica end-to-end
- Análise de bacias: Integração com shapefiles
- Geração de painéis: Combinação de múltiplas figuras
- Cenários reais: Casos de uso típicos
📊 Cobertura de Código
# Gerar relatório de cobertura
pytest --cov=meteoplots --cov-report=html
# Visualizar no navegador
open htmlcov/index.html # Linux/Mac
start htmlcov/index.html # Windows
Fixtures Disponíveis
📈 Dados de Teste
sample_temperature_data: Dados de temperatura sintéticossample_precipitation_data: Dados de precipitação sintéticossample_pressure_data: Dados de pressão sintéticossample_wind_components: Componentes U/V de ventosample_shapefile: Shapefile temporário para testes
🛠️ Utilitários
test_output_dir: Diretório temporário para saídasmatplotlib_backend: Backend Agg para testes sem displaydata_generator: Gerador de dados customizados
Exemplo de Teste Personalizado
import pytest
from meteoplots.plots import plot_contourf_from_xarray
def test_custom_scenario(sample_temperature_data, test_output_dir):
"""Teste para cenário específico."""
fig, ax = plot_contourf_from_xarray(
xarray_data=sample_temperature_data,
plot_var_colorbar='temperature',
title='Teste Customizado',
savefigure=True,
path_save=test_output_dir,
output_filename='test_custom'
)
# Verificações
assert fig is not None
assert len(ax.collections) > 0
# Verificar arquivo salvo
import os
output_file = os.path.join(test_output_dir, 'test_custom.png')
assert os.path.exists(output_file)
Configuração de CI/CD
# .github/workflows/tests.yml
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.9, '3.10', 3.11]
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[test]"
- name: Run tests
run: pytest --cov=meteoplots --cov-report=xml
- name: Upload coverage
uses: codecov/codecov-action@v3
Benchmarks de Performance
# Testar performance com datasets maiores
pytest tests/test_integration.py::TestPerformanceIntegration -v
# Profile de memória (requer memory_profiler)
python -m memory_profiler tests/profile_memory.py
Testes de Regressão
# Verificar compatibilidade com versões anteriores
pytest tests/test_regression.py
# Comparar saídas visuais
pytest tests/test_visual_regression.py --baseline-dir=tests/baseline/
Dicas para Desenvolvedores
🐛 Debug de Testes
# Executar com pdb
pytest --pdb
# Manter arquivos temporários para inspeção
pytest --basetemp=debug_temp
# Logs detalhados
pytest -v -s --log-cli-level=DEBUG
📝 Adicionando Novos Testes
- Use fixtures existentes sempre que possível
- Isole testes - cada teste deve ser independente
- Mock operações complexas (I/O, geospatial operations)
- Teste casos extremos e condições de erro
- Documente comportamentos esperados
🎯 Melhores Práticas
- Testes devem ser rápidos (< 1s por teste unitário)
- Use nomes descritivos para funções de teste
- Asserte comportamentos específicos, não apenas ausência de erros
- Cleanup automático de arquivos temporários
- Mock dependências externas (APIs, arquivos grandes)
📚 Dependências
matplotlibcartopy== 0.24.1 (versão necessário para Análise de Bacias Hidrográficas)xarraynumpy== 1.26.4 (versão necessária para Análise de Bacias Hidrográficas)geopandas== 0.13.2 (versão necessária para Análise de Bacias Hidrográficas)regionmask== 1.8.5.post1 (versão necessária para Análise de Bacias Hidrográficas)Shapely== 0.9.0 (versão necessária para Análise de Bacias Hidrográficas)fiona== 1.9.6 (versão necessária para Análise de Bacias Hidrográficas)
🤝 Contribuições
Contribuições são bem-vindas! Por favor, abra issues ou pull requests no repositório do GitHub.
📄 Licença
Este projeto está licenciado sob a licença MIT.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file meteoplots-0.1.2.tar.gz.
File metadata
- Download URL: meteoplots-0.1.2.tar.gz
- Upload date:
- Size: 39.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b625f2e999983accfbbc8a34f23493dd41715bf68f55fd9c6a6dba4a67cddd5a
|
|
| MD5 |
a425cadc35510ce63439dfd2beac7356
|
|
| BLAKE2b-256 |
778ab9f839693694cd8bfc370a3ca46330022127c447ec1b47692a75a628a3e3
|
Provenance
The following attestation bundles were made for meteoplots-0.1.2.tar.gz:
Publisher:
python-publish.yml on josepaulo1233/meteoplots
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meteoplots-0.1.2.tar.gz -
Subject digest:
b625f2e999983accfbbc8a34f23493dd41715bf68f55fd9c6a6dba4a67cddd5a - Sigstore transparency entry: 560982532
- Sigstore integration time:
-
Permalink:
josepaulo1233/meteoplots@8c0a931cd24c39d7b670ba7b31d6730893bbf632 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/josepaulo1233
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@8c0a931cd24c39d7b670ba7b31d6730893bbf632 -
Trigger Event:
release
-
Statement type:
File details
Details for the file meteoplots-0.1.2-py3-none-any.whl.
File metadata
- Download URL: meteoplots-0.1.2-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11ab9cbd66678ecba6d3b5c9df968e70fc824edabad957ec17355da80b95a274
|
|
| MD5 |
3ac31a376dd9a6a9d66cceb3cf32cb5a
|
|
| BLAKE2b-256 |
8db96c7f8528f217c5829e7cca6d92864d195d073100cb1ba6fc26cd27414195
|
Provenance
The following attestation bundles were made for meteoplots-0.1.2-py3-none-any.whl:
Publisher:
python-publish.yml on josepaulo1233/meteoplots
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
meteoplots-0.1.2-py3-none-any.whl -
Subject digest:
11ab9cbd66678ecba6d3b5c9df968e70fc824edabad957ec17355da80b95a274 - Sigstore transparency entry: 560982561
- Sigstore integration time:
-
Permalink:
josepaulo1233/meteoplots@8c0a931cd24c39d7b670ba7b31d6730893bbf632 -
Branch / Tag:
refs/tags/v0.1.2 - Owner: https://github.com/josepaulo1233
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@8c0a931cd24c39d7b670ba7b31d6730893bbf632 -
Trigger Event:
release
-
Statement type: