splor-mg / dpm

Data Package Manager
0 stars 0 forks source link

Implementar flag --flat-download #39

Open fjuniorr opened 1 year ago

fjuniorr commented 1 year ago

A ideia geral é permitir mais flexibilidade de utilizar o dpm install para baixar somente arquivos de dados de tal forma que os mesmos possam ser usados em uma estrutura pré-existente. O caso de uso que motivou esse issue foi do projeto https://github.com/splor-mg/volumes-loa/tree/main/bancos.

A ideia geral é que os arquivos de dados seriam salvos na pasta especificada na propriedade name sem respeitar a estrutura do data package original.

resources:
  - name: SISOR
    path: https://raw.githubusercontent.com/splor-mg/obz-dados/main/datapackage.json
  - name: SISOR
    path: https://raw.githubusercontent.com/splor-mg/reestimativa-dados/obz/datapackage.yaml
  - name: manual
    path: https://raw.githubusercontent.com/splor-mg/teto-gastos-rrf-dados/main/datapackage.json
fjuniorr commented 1 year ago

Uma opção que interessante de abandonar um formato de data package para o arquivo data.yaml é que a gente pode usar nomes melhores para cada objeto. Por exemplo (usando toml):

title = "Data Dependencies"

[packages]

[packages.sigplan]
path = "https://raw.githubusercontent.com/splor-mg/ppag-planejamento-dados-2024/main/datapackage.yaml"
resources = ["acoes_planejamento"]
token = "GITHUB_TOKEN"

[packages.sisor2023]
path = "https://raw.githubusercontent.com/splor-mg/sisor-dados-2023/main/datapackage.json"

[packages.sisor2024]
path = "https://raw.githubusercontent.com/splor-mg/sisor-dados-2024/main/datapackage.json"
resources = ["acoes_planejamento"]

Para leitura dos dados usamos:

import tomllib

with open("data.toml", "rb") as f:
    data = tomllib.load(f)

data['packages']

for key, value in data['packages'].items():
    print(f'{key}: {value["path"]}')

Ajuda na confusão de recursos que são data packages bem como no nome da propriedade de #36

labanca commented 1 year ago

Gostei muito também!

A questão de onde os resources serão salvos (quais pastas), ficaria em uma outra propriedade do toml, como, por exemplo, output_dir?

fjuniorr commented 1 year ago

A questão de onde os resources serão salvos (quais pastas), ficaria em uma outra propriedade do toml, como, por exemplo, output_dir?

É um ponto a se pensar ainda pra conseguir atender a maior parte dos casos sem muita complexidade adicional.

Talvez faça sentido até separar em um comando diferente ao invés de uma flag, tipo dpm download pra deixar claro que são operações diferentes.