splor-mg / dpm

https://splor-mg.github.io/dpm/
0 stars 0 forks source link

Cria função normalize_resource #30

Closed fjuniorr closed 1 year ago

fjuniorr commented 1 year ago

Closes #28

fjuniorr commented 1 year ago

Evitar as transformações de transformer.py está sendo mais difícil do que parece porque além de cuidar das minhas modificações[^1] eu preciso de garantir que os steps da própria frictionless também não façam modificação em resource.data.

[^1]: Como por exemplo a alteração corrigida em https://github.com/splor-mg/dpm/pull/26#issuecomment-1682238449

Como exemplo ao usar steps.field_update internamente para que as chaves primárias e estrangeiras sejam atualizadas quando uma coluna é renomeada[^2] existe modificação do resource.data.

[^2]: Conforme relatado em https://github.com/frictionlessdata/frictionless-py/issues/1560

Minha solução foi extrair a transformação em uma função dedicada,normalize_resource, evitando o acionamento automático do transformer.py.

fjuniorr commented 1 year ago

Precisei de alterar o frictionless-py (ainda vou abrir um PR upstream) mas todos os testes passaram localmente

pytest
=============================================== test session starts ===============================================
platform darwin -- Python 3.11.1, pytest-7.4.0, pluggy-1.2.0
rootdir: /Users/macbook/Projects/splor/dpm
plugins: cov-4.1.0
collected 8 items                                                                                                 

tests/integration/test_install.py .                                                                         [ 12%]
tests/unit/test_issue20.py ..                                                                               [ 37%]
tests/unit/test_issue_obz_dados2.py .                                                                       [ 50%]
tests/unit/test_normalize_resource.py .                                                                     [ 62%]
tests/unit/test_steps.py ...                                                                                [100%]

================================================ 8 passed in 8.60s ================================================