Invalid --chunks/--shards arguments to b2nd-to-zarr deletes destination with --force

Aberta Para iniciantes
#731 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 5 dias

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
68/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
python
Domínio
data

Direção de pesquisa

Comece localizando a implementação do comando b2nd-to-zarr e rastreando onde ele remove o destino com --force em relação à chamada para zarr.create_array. Reproduza a falha usando os comandos shell da issue, incluindo --chunks 30 --shards 50 --force. Está concluído quando argumentos inválidos não fizerem mais com que o destino existente desapareça quando a conversão falhar.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Describe the bug
If a user creates a .zarr file using b2nd-to-zarr, then subsequently calls b2nd-to-zarr again with arguments to --chunks and --shards that are invalid, meaning shards % chunks != 0, then b2nd-to-zarr will call shutil.rmtree(dst_path) first and then call zarr.create_array which will fail. I think ideally the converter should throw an error before reaching zarr.create_array about invalid arguments to --chunks and --shards.

To Reproduce
Steps to reproduce the behavior:

Shell commands:

  python -c "import blosc2, numpy as np; blosc2.asarray(np.arange(1000), urlpath='data.b2nd', mode='w')"
  b2nd-to-zarr data.b2nd good.zarr -q && ls good.zarr
  b2nd-to-zarr data.b2nd good.zarr --chunks 30 --shards 50 --force

Output:

Error: Chunk edge length 50 in dimension 0 is not divisible by the shard's inner chunk size 30.

Then

  ls good.zarr

produces

ls: good.zarr: No such file or directory

Expected behavior
good.zarr should still exist even if the converter fails

Desktop:

  • OS: Mac OS Tahoe
  • Version 26.7

Additional context
I think one additional option besides throwing an earlier error message could be writing to a temporary path and then renaming it after success

Linguagem predominante
Python
Estrelas
214
Forks
71
Merge médio
3d 3h
PRs com merge (30d)
7

Preparar o ambiente

Abrir no Codespaces

Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de Blosc/python-blosc2

Todas as issues de Blosc/python-blosc2

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.