Pandas: Substitua a sintaxe de formatação de string antiga por strings f

Criado em 11 nov. 2019  ·  137Comentários  ·  Fonte: pandas-dev/pandas

Como não oferecemos mais suporte para o python 3.5, agora podemos usar as novas strings f em vez da antiga .format() (e obviamente a formatação % ).

Notas:

  • Não se esqueça de vincular esse problema no corpo da mensagem de sua solicitação de pull, simplesmente cole este https://github.com/pandas-dev/pandas/issues/29547 no corpo da mensagem de sua solicitação de pull.

  • Se algum de seus arquivos alterados estiver relacionado a # 29886, certifique-se de vincular sua solicitação pull a esse problema também, simplesmente cole este https://github.com/pandas-dev/pandas/issues/29886 no corpo da mensagem de sua solicitação pull.

  • Por favor, comente no que você está planejando trabalhar, então não faremos um trabalho dobrado.

  • Se um arquivo / arquivos que deveriam ser marcados como concluídos não estiverem marcados, por favor, comente informando-me.


Para verificar quais arquivos ainda precisam ser corrigidos no diretório pandas :

grep -l -R '%s'  --include=*.{py,pyx} pandas/
grep -l -R '%d' --include=*.{py,pyx} pandas/
grep -l -R '\.format(' --include=*.{py,pyx} pandas/

Todos os itens acima também podem ser usados ​​como um forro:

grep -l -R -e '%s' -e '%d' -e '\.format(' --include=*.{py,pyx} pandas/
Gorjeta:

Se você quiser ver o número da linha da ocorrência, substitua -l por -n
por exemplo:

grep -n -R '%s' --include=*.{py,pyx} pandas/

A lista atual é:

  • [] pandas / compat / pickle_compat.py

  • [] pandas / _config / config.py

  • [] pandas / core / arrays / datetimelike.py

  • [] pandas / core / arrays / datetimes.py

  • [] pandas / core / arrays / integer.py

  • [] pandas / core / arrays / period.py

  • [] pandas / core / computation / pytables.py

  • [] pandas / core / config_init.py

  • [] pandas / core / frame.py

  • [] pandas / core / generic.py

  • [] pandas / core / groupby / generic.py

  • [] pandas / core / groupby / groupby.py

  • [] pandas / core / indexes / base.py

  • [] pandas / core / indexes / multi.py

  • [] pandas / core / indexes / range.py

  • [] pandas / core / ops / docstrings.py

  • [] pandas / core / ops / __ init__.py

  • [] pandas / core / reshape / merge.py

  • [] pandas / core / tools / datetimes.py

  • [] pandas / io / formatos / css.py

  • [] pandas / io / formatos / excel.py

  • [] pandas / io / formatos / format.py

  • [] pandas / io / formatos / html.py

  • [] pandas / io / formatos / info.py

  • [] pandas / io / formatos / latex.py

  • [] pandas / io / formatos / printing.py

  • [] pandas / io / formatos / style.py

  • [] pandas / io / parsers.py

  • [] pandas / io / pytables.py

  • [] pandas / io / sas / sas_xport.py

  • [] pandas / io / stata.py

  • [] pandas / _libs / tslibs / c_timestamp.pyx

  • [] pandas / _libs / tslibs / frequencies.pyx

  • [] pandas / _libs / tslibs / parsing.pyx

  • [] pandas / _libs / tslibs / period.pyx

  • [] pandas / _libs / tslibs / strptime.pyx

  • [] pandas / _libs / tslibs / timedeltas.pyx

  • [] pandas / plotting / _matplotlib / converter.py

  • [] pandas / tests / arrays / categorical / test_operators.py

  • [] pandas / tests / arrays / test_datetimelike.py

  • [] pandas / tests / dtypes / test_dtypes.py

  • [] pandas / tests / extension / base / setitem.py

  • [] pandas / tests / frame / test_constructors.py

  • [] pandas / tests / frame / test_missing.py

  • [] pandas / tests / frame / test_to_csv.py

  • [] pandas / tests / groupby / aggregate / test_other.py

  • [] pandas / tests / indexes / datetimes / test_date_range.py

  • [] pandas / tests / indexes / datetimes / test_datetime.py

  • [] pandas / tests / indexes / datetimes / test_formats.py

  • [] pandas / tests / indexes / datetimes / test_partial_slicing.py

  • [] pandas / tests / indexes / interval / test_constructors.py

  • [] pandas / tests / indexes / interval / test_interval.py

  • [] pandas / tests / indexes / multi / test_format.py

  • [] pandas / tests / indexes / period / test_formats.py

  • [] pandas / tests / indexes / test_base.py

  • [] pandas / tests / indexes / timedeltas / test_timedelta.py

  • [] pandas / tests / indexing / test_categorical.py

  • [] pandas / tests / indexing / test_coercion.py

  • [] pandas / tests / io / excel / test_openpyxl.py

  • [] pandas / tests / io / excel / test_writers.py

  • [] pandas / tests / io / formatos / test_format.py

  • [] pandas / tests / io / formatos / test_printing.py

  • [] pandas / tests / io / formatos / test_style.py

  • [] pandas / tests / io / formata / test_to_csv.py

  • [] pandas / tests / io / formata / test_to_html.py

  • [] pandas / tests / io / formata / test_to_latex.py

  • [] pandas / tests / io / parser / test_compression.py

  • [] pandas / tests / io / parser / test_encoding.py

  • [] pandas / tests / io / parser / test_header.py

  • [] pandas / tests / io / parser / test_parse_dates.py

  • [] pandas / tests / io / parser / test_usecols.py

  • [] pandas / tests / io / test_html.py

  • [] pandas / tests / io / test_sql.py

  • [] pandas / tests / io / test_stata.py

  • [] pandas / tests / reductions / test_reductions.py

  • [] pandas / tests / reshape / test_concat.py

  • [] pandas / tests / reshape / test_melt.py

  • [] pandas / tests / scalar / period / test_period.py

  • [] pandas / tests / scalar / timedelta / test_timedelta.py

  • [] pandas / tests / scalar / timestamp / test_constructors.py

  • [] pandas / tests / series / indexing / test_numeric.py

  • [] pandas / tests / series / indexing / test_take.py

  • [] pandas / tests / series / indexing / test_where.py

  • [] pandas / tests / series / methods / test_rename.py

  • [] pandas / tests / series / test_api.py

  • [] pandas / tests / series / test_constructors.py

  • [] pandas / tests / series / test_datetime_values.py

  • [] pandas / tests / series / test_repr.py

  • [] pandas / tests / test_strings.py

  • [] pandas / tests / tools / test_to_datetime.py

  • [] pandas / tests / tseries / holiday / test_calendar.py

  • [] pandas / tests / tseries / holiday / test_holiday.py

  • [] pandas / tests / tslibs / test_parsing.py

  • [] pandas / tests / util / test_assert_frame_equal.py

  • [] pandas / tseries / frequencies.py

  • [] pandas / util / _decorators.py

  • [] pandas / util / _test_decorators.py

  • [] pandas / util / _validators.py

  • [] pandas / _version.py


NOTA:

A lista pode mudar conforme os arquivos são movidos / renomeados constantemente.


Arquivos e comandos herdados deste PR .

Style good first issue

Comentários muito úteis

Adicionei minha primeira solicitação de pull com este https://github.com/pandas-dev/pandas/pull/32007 :
pandas / tests / frame / test_to_csv.py

Todos 137 comentários

Estou levando:

  • [x] pandas / _libs / groupby.pyx

  • [x] pandas / _libs / hashing.pyx

  • [x] pandas / _libs / index.pyx

  • [x] pandas / _libs / internals.pyx

  • [x] pandas / _libs / interval.pyx

  • [x] pandas / _libs / lib.pyx

  • [x] pandas / _libs / ops.pyx

  • [x] pandas / _libs / parsers.pyx

  • [x] pandas / _libs / redução.pyx

  • [x] pandas / _libs / sparse.pyx

  • [x] pandas / _libs / testing.pyx

  • [x] pandas / _libs / tslib.pyx

  • [x] pandas / _libs / window.pyx

Eu vou levar:

  • [x] pandas / tests / indexes / test_base.py
  • [x] pandas / tests / indexes / test_category.py
  • [x] pandas / tests / indexes / test_common.py
  • [x] pandas / tests / indexes / test_numeric.py

para começar, se estiver tudo bem!

Olá @MomIsBestFriend. Você pode recomendar alguma ferramenta para esta conversão? Uma rápida olhada me deu estes:

  1. pyupgrade
  2. fstringificar
  3. Flynt

Não tenho experiência com nenhum deles, mas podem ser muito úteis aqui

Olá @SaturnFromTitan , eu pessoalmente às vezes uso o pyupgrade, mas apenas quando o arquivo contém apenas alguns formatos de string desatualizados. Em seguida, vejo as alterações e corrijo se o pyupgrade der algo errado.

Quando são arquivos com muitas ocorrências, eu procuro os "complexos" manualmente (por exemplo, '%.2f' % my_float ) e deixo lidar com os comuns, geralmente acerta.

Além disso, algumas das alterações tornarão o arquivo alterado não compatível com pep8, portanto, é necessário corrigir isso também, caso contrário, ele não passará nos testes.

Vai levar a seguir:

  • [x] pandas / compat / __ init__.py

  • [x] pandas / compat / numpy / function.py

  • [x] pandas / compat / numpy / __ init__.py

  • [x] pandas / compat / _optional.py

Eu vou levar:

  • [x] pandas / core / reshape / concat.py
  • [x] pandas / core / reshape / melt.py
  • [] pandas / core / reshape / merge.py
  • [x] pandas / core / reshape / pivot.py
  • [x] pandas / core / reshape / reshape.py
  • [] pandas / core / reshape / tile.py

Qual é a opinião de todos sobre marcar isso como good first issue ? Deve se aplicar à maioria dos arquivos aqui. As mudanças que precisam ser feitas geralmente são apenas algumas linhas ou mais por arquivo, e quem está fazendo as mudanças não precisa se preocupar muito em afetar outras partes do código (já que a função final executada é a mesma).

Estou imaginando uma configuração semelhante a # 28926.

Substituição da string F colocada em:

  • [x] pandas / core / groupby / generic.py
  • [x] pandas / core / groupby / groupby.py
  • [x] pandas / core / groupby / grouper.py
  • [x] pandas / core / groupby / ops.py

ref # 29701

Vai levar a seguir:

  • [x] pandas / _libs / tslibs / conversion.pyx

  • [x] pandas / _libs / tslibs / c_timestamp.pyx

  • [x] pandas / _libs / tslibs / fields.pyx

  • [x] pandas / _libs / tslibs / nattype.pyx

  • [x] pandas / _libs / tslibs / np_datetime.pyx

  • [x] pandas / _libs / tslibs / offsets.pyx

  • [x] pandas / _libs / tslibs / parsing.pyx

  • [x] pandas / _libs / tslibs / timestamps.pyx

  • [x] pandas / _libs / tslibs / timezones.pyx

  • [x] pandas / _libs / tslibs / tzconversion.pyx

eu vou levar

  • [x] pandas / plotting / _core.py
  • [x] pandas / plotting / _matplotlib / boxplot.py
  • [x] pandas / plotting / _matplotlib / converter.py
  • [x] pandas / plotting / _matplotlib / core.py
  • [x] pandas / plotting / _matplotlib / misc.py
  • [x] pandas / plotting / _matplotlib / style.py
  • [x] pandas / plotting / _matplotlib / timeseries.py
  • [x] pandas / plotting / _matplotlib / tools.py
  • [x] pandas / plotting / _misc.py

ref # 29781

Eu vou levar:

  • [x] pandas / core / reshape / concat.py
  • [x] pandas / core / reshape / melt.py
  • [] pandas / core / reshape / merge.py
  • [x] pandas / core / reshape / pivot.py
  • [x] pandas / core / reshape / reshape.py
  • [] pandas / core / reshape / tile.py

Qual é a opinião de todos sobre marcar isso como good first issue ? Deve se aplicar à maioria dos arquivos aqui. As mudanças que precisam ser feitas geralmente são apenas algumas linhas ou mais por arquivo, e quem está fazendo as mudanças não precisa se preocupar muito em afetar outras partes do código (já que a função final executada é a mesma).

Estou imaginando uma configuração semelhante a # 28926.

Claro ive etiquetado em conformidade. obrigado

A seguir:

  • [x] pandas / io / msgpack / _packer.pyx

  • [x] pandas / io / msgpack / _unpacker.pyx

  • [x] pandas / io / sas / sas.pyx

Percebi que você pediu para especificar em quais arquivos trabalhar. Eu só tenho usado

grep -n -R -e '% s' -e '% d' -e '.format (' --include = *. {py, pyx} pandas /

Para encontrar qualquer formatação antiga. Peço desculpas

Percebi que você pediu para especificar em quais arquivos trabalhar. Eu só tenho usado

@ForTimeBeing É por isso que editei o post, que bom que você percebeu :)

você pode postar o que você trabalhou? apenas no caso de alguém pesquisar os comentários.

Claro, eu peguei;

  • [x] pandas / tests / resample / test_datetime_index.py
  • [x] pandas / tests / resample / test_time_grouper.py
  • [x] pandas / tests / tseries / offsets / common.py
  • [x] pandas / erros / __ init__.py
  • [x] pandas / tests / arrays / interval / test_ops.py
  • [x] pandas / tests / arrays / sparse / test_array.py
  • [x] pandas / tests / arrays / sparse / test_libsparse.py
  • [x] pandas / tests / extension / arrow / arrays.py
  • [x] pandas / tests / extension / base / printing.py
  • [x] pandas / tests / extension / decimal / array.py
  • [x] pandas / tests / resample / test_datetime_index.py
  • [x] pandas / tests / resample / test_time_grouper.py
  • [x] pandas / tests / scalar / test_nat.py
  • [x] pandas / tests / tseries / offsets / common.py

e abaixo

  • [x] pandas / tseries / frequencies.py

.format ainda existe e é mostrado na pesquisa grep, mas não há literais para alterar para fstring. Não tenho certeza se há outra maneira de fazer ou manter como está, mas todos os literais são trocados para fstring agora naquele arquivo.

.format ainda existe e é mostrado na pesquisa grep, mas não há literais para alterar para fstring. Não tenho certeza se há outra maneira de fazer ou manter como está, mas todos os literais são trocados para fstring agora naquele arquivo.

@Por enquanto
Sem problemas :)
obrigado pelo PR :)

eu peguei

  • [x] pandas / core / window / common.py
  • [x] pandas / core / window / ewm.py
  • [x] pandas / core / window / expansion.py
  • [x] pandas / core / window / rolling.py

ref # 29952

Eu vou levar:

  • [x] ci / print_skipped.py

  • [x] doc / make.py

  • [x] doc / sphinxext / announce.py

  • [x] doc / sphinxext / contributors.py

Trabalhando em: 'pandas / core / dtypes / dtypes.py'

Tomou:

  • [x] pandas / core / arrays / base.py
  • [x] pandas / core / arrays / datetimelike.py
  • [x] pandas / core / arrays / datetimes.py
  • [x] pandas / core / arrays / string_.py
  • [x] pandas / core / arrays / timedeltas.py
  • [x] pandas / core / common.py
  • [x] pandas / core / computation / align.py
  • [x] pandas / core / computation / engines.py
  • [x] pandas / core / computation / eval.py
  • [x] pandas / core / computation / expression.py
  • [x] pandas / core / computation / expr.py
  • [x] pandas / core / computation / ops.py
  • [x] pandas / core / computation / pytables.py
  • [x] pandas / core / computation / scope.py
  • [x] pandas / core / frame.py
  • [x] pandas / core / generic.py
  • [x] pandas / core / strings.py

ref: # 30116, # 30135, # 30363

Eu vou levar:

  • [x] pandas / _libs / tslibs / frequencies.pyx
  • [x] pandas / _libs / tslibs / period.pyx
  • [x] pandas / _libs / tslibs / strptime.pyx

Tenho problemas com strings predefinidas. Encontrei a solução, mas não tenho certeza se é a certa.
Imagine a situação em que você tem uma string predefinida como:
THE_MESSAGE = "Mensagem com argumentos. Arg1: {arg1}, Arg2: {arg2}."
Que é chamado com .format () como:
THE_MESSAGE.format (arg1_str, arg2_str).

Posso reescrever isso usando a função lambda da maneira descrita abaixo?
THE_MESSAGE = lambda arg1, arg2: f "Mensagem com argumentos. Arg1: {arg1}, Arg2: {arg2}."

e chamá-lo por
THE_MESSAGE (arg1_str, arg2_str)?

Sei que funcionaria, não tenho certeza se é a melhor maneira de abordar esse problema :)

Tenho problemas com strings predefinidas.

Eu entendo perfeitamente , como

Strings regulares são concatenadas em tempo de compilação e strings f são concatenadas em tempo de execução.

Precisamos pensar em uma maneira de remover o uso de .format() e usar outra coisa como um modelo de string.

A única coisa em que consigo pensar no momento é string.Template do stdlib, mas realmente não sei.

@jbrockmendel Você pode nos ajudar?

@MomIsBestFriend você acha que a função lambda é um exagero para isso?

@MomIsBestFriend acho que este pode ser um caso em que viver com alguns .format s é o caminho a percorrer

@MomIsBestFriend você acha que a função lambda é um exagero para isso?

Não estou nem perto de um especialista, pergunte a um dos desenvolvedores.

tomou

  • [x] pandas / core / accessor.py
  • [x] pandas / core / algoritmos.py

ref # 30120

tomou

  • [x] pandas / core / arrays / sparse / accessor.py
  • [x] pandas / core / arrays / sparse / array.py
  • [x] pandas / core / arrays / sparse / dtype.py
  • [x] pandas / core / arrays / sparse / scipy_sparse.py

ref # 30121

tomou

  • [x] pandas / core / arrays / _ranges.py
  • [x] pandas / core / arrays / integer.py
  • [x] pandas / core / arrays / interval.py
  • [x] pandas / core / arrays / numpy_.py
  • [x] pandas / core / arrays / period.py

ref # 30124

eu vou levar

  • [x] pandas / io / formatos / css.py
  • [x] pandas / io / formatos / excel.py
  • [x] pandas / io / formatos / style.py

Editar:
Tirando:

  • [x] pandas / util / _decorators.py
  • [x] pandas / util / _depr_module.py

  • [x] pandas / util / _doctools.py

  • [x] pandas / util / _print_versions.py

  • [x] pandas / util / _test_decorators.py

  • [x] pandas / util / _tester.py

  • [x] pandas / util / testing.py

  • [x] pandas / util / _validators.py

eu vou levar

  • [] pandas / core / config_init.py
  • [x] pandas / core / construction.py
  • [x] pandas / core / dtypes / base.py
  • [x] pandas / core / dtypes / cast.py

obrigado!

Eu vou levar:

pandas / tests / plotting / test_converter.py

pandas / tests / plotting / test_datetimelike.py

pandas / tests / plotting / test_series.py

eu vou levar

  • [x] pandas / core / indexes / accessors.py
  • [x] pandas / core / indexes / category.py
  • [x] pandas / core / indexes / datetimelike.py
  • [x] pandas / core / indexes / datetimes.py
  • [x] pandas / core / indexes / frozen.py
  • [x] pandas / core / indexes / interval.py
  • [x] pandas / core / indexes / multi.py
  • [x] pandas / core / indexes / numeric.py
  • [x] pandas / core / indexes / period.py
  • [x] pandas / core / indexes / range.py
  • [x] pandas / core / indexes / timedeltas.py

30273

Olá, @MomIsBestFriend

pandas / tests / plotting / test_converter.py

pandas / tests / plotting / test_datetimelike.py

pandas / tests / plotting / test_series.py

Foram concluídas. Obrigada.

Olá
eu posso pegar

  • [] pandas / core / dtypes / dtypes.py
  • [] pandas / core / dtypes / common.py

Obrigado

Ola vou levar

  • [x] setup.py
  • [x] pandas / _config / config.py
  • [x] pandas / _config / localization.py

Obrigado!

Eu peguei:

  • pandas/core/missing.py
  • pandas/core/nanops.py
  • pandas/tests/indexes/datetimes/test_partial_slicing.py

Link para meu pr: https://github.com/pandas-dev/pandas/pull/30278

Vou trabalhar em:

  • [] pandas / core / arrays / base.py

Aqui, por causa da tag "bom primeiro problema"

Eu vou levar:

  • [] pandas / io / sql.py

  • [] pandas / io / stata.py

Obrigado!

Eu farei:

  • [x] pandas / core / resample.py
  • [x] pandas / core / indexing.py
  • [x] pandas / core / internals / construction.py
  • [x] pandas / core / internals / managers.py
  • [x] pandas / core / internals / blocks.py

Eu gostaria de levar
acabei de fazer um pull request nele

  • [x] pandas / core / indexers.pyz

Ótimo, sempre quis ajudar os Pandas. Será atualizado quando eu souber o que posso cumprir nas próximas semanas ...

eu posso pegar
pandas / _version.py

Pulando em:

  • [] pandas / core / arrays / datetimelike.py
  • [x] pandas / io / formatos / printing.py
  • [x] pandas / tests / extension / list / array.py
  • [x] pandas / tests / indexes / datetimes / test_ops.py
  • [x] pandas / tests / indexes / multi / test_analytics.py

Vou pegar pandas / io / formatos / csvs.py

Estou levando:

  • [x] pandas / core / series.py (sem métodos de string antiquados no código, apenas a documentação)
  • [x] pandas / core / tools / datetimes.py (código alterado, irá testar e fazer pullrequest antes de 25 de dezembro)

Pergunta: Existe uma resposta sobre se a formatação de string da velha escola deve permanecer na referência da API?

Por exemplo, em series.map() :

 It also accepts a function:

        >>> s.map('I am a {}'.format)
        0       I am a cat
        1       I am a dog
        2       I am a nan
        3    I am a rabbit
        dtype: object

Substituir isso por um exemplo de string f força algo como:

      >>> s.map(lambda x: f'I am a {x}')
        0       I am a cat
        1       I am a dog
        2       I am a nan
        3    I am a rabbit
        dtype: object

O que não é uma substituição exata (f-string não é uma função, estou usando o lambda para torná-lo uma função que replica o efeito líquido de 'Eu sou um' .format ()) e levanta algumas questões espinhosas sobre colocar algumas práticas não recomendadas na documentação.

Por enquanto, estou pensando em alterar a documentação como fora do escopo, dependendo da decisão da comunidade sobre como lidar com casos como este.

Já feito (não tenho certeza de quem):
pandas / tests / arrays / interval / test_ops.py

Eu também vou levar

  • [x] pandas / tests / scalar / interval / test_ops.py
  • [x] pandas / tests / computation / test_eval.py
  • [x] pandas / tests / dtypes / *
  • [x] pandas / tests / dtypes / cast / test_infer_dtype.py
  • [x] pandas / tests / dtypes / test_dtypes.py
  • [x] pandas / tests / dtypes / test_inference.py

Pergunta: Existe uma resposta sobre se a formatação de string da velha escola deve permanecer na referência da API?

cc @WillAyd @jreback

Eu não sei o que você considera o "formato de string da velha escola", mas .format terá alguns casos de uso que as strings f não cobrem (a saber, parametrização atrasada), então tenha certeza de que ainda estará por aí . Eu não acho que deveríamos ter sintaxe de formato de string Py27 em qualquer lugar, embora

Vou levar:

  • [x] pandas / tests / io / formata / test_css.py
  • [x] pandas / tests / io / formatos / test_format.py
  • [x] pandas / tests / io / formata / test_printing.py
  • [x] pandas / tests / io / formata / test_style.py
  • [x] pandas / tests / io / formata / test_to_csv.py
  • [x] pandas / tests / io / formata / test_to_excel.py

eu vou levar

  • [x] pandas / compat / pickle_compat.py
  • [x] pandas / _config / config.py
  • [x] pandas / core / arrays / boolean.py

Em # 30601, assumi

  • [x] pandas / io / excel / _base.py
  • [x] pandas / io / excel / _odfreader.py
  • [x] pandas / io / excel / _openpyxl.py
  • [x] pandas / io / excel / _util.py
  • [x] pandas / io / excel / _xlwt.py
  • [x] pandas / tests / generic / test_frame.py
  • [x] pandas / tests / generic / test_generic.py
  • [x] pandas / tests / generic / test_series.py

Posso pegar os dois arquivos abaixo para começar, se estiver tudo bem!

  • [x] pandas / tests / base / test_conversion.py
  • [x] pandas / tests / base / test_ops.py

Essas mudanças foram feitas em # 30604

Assumindo:

  • [] pandas / core / ops / array_ops.py
  • [] pandas / core / ops / dispatch.py
  • [] pandas / core / ops / docstrings.py
  • [] pandas / core / ops / invalid.py
  • [] pandas / core / ops / methods.py
  • [] pandas / core / ops / roperator.py

Existe uma maneira preferencial de observar os usos pretendidos antigos de .format que são deixados como estão, em PRs? No caso de assumir (incorretamente) que algo é um bom caso de uso e é esquecido no PR

Trabalhando em

  • [x] pandas / tests / groupby / aggregate / test_other.py
  • [x] pandas / tests / groupby / test_apply.py
  • [x] pandas / tests / groupby / test_bin_groupby.py
  • [x] pandas / tests / groupby / test_categorical.py
  • [x] pandas / tests / groupby / test_counting.py
  • [x] pandas / tests / groupby / test_value_counts.py
  • [x] pandas / tests / groupby / test_function.py
  • [x] pandas / tests / groupby / test_groupby.py
  • [x] pandas / tests / groupby / test_transform.py
  • [x] pandas / tests / groupby / test_whitelist.py

eu vou levar

  • [X] scripts / validate_docstrings.py
  • [X] scripts / tests / test_validate_docstrings.py
  • [X] scripts / generate_pip_deps_from_conda.py
  • [X] scripts / download_wheels.py
  • [X] pandas / tseries / holiday.py
  • [X] pandas / tests / window / test_window.py
  • [X] pandas / tests / util / test_validate_kwargs.py
  • [X] pandas / tests / util / test_validate_args.py

Eu gostaria de tentar pegar:

  • [x] pandas / tests / util / test_assert_almost_equal.py
  • [x] pandas / tests / util / test_assert_categorical_equal.py
  • [x] pandas / tests / util / test_assert_extension_array_equal.py
  • [x] pandas / tests / util / test_assert_frame_equal.py
  • [x] pandas / tests / util / test_assert_index_equal.py
  • [x] pandas / tests / util / test_assert_numpy_array_equal.py
  • [x] pandas / tests / util / test_validate_args_and_kwargs.py

Eu gostaria de levar:

  • [x] pandas / core / arrays / period.py
  • [x] pandas / core / dtypes / common.py
  • [x] pandas / core / dtypes / dtypes.py
  • [x] pandas / core / frame.py

Obrigado @ HH-MWB

Vou tomar:

  • [] pandas / core / arrays / timedeltas.py

Eu descobri que muitos códigos em @Appender() estão usando % para formatar string. Esses códigos estão usando _shared_docs como modelo, que é definido principalmente em /pandas/core/generic.py e tem sido usado cruzando vários arquivos.

Gostaria de substituir toda a formatação _shared_docs relevante. Essa mudança precisará modificar muitos arquivos, mas não poderei verificar todas as outras sintaxes de formatação de string nesses arquivos.

Isso soa bem? Devo fazer isso? @datapythonista @MomIsBestFriend

Eu descobri que muitos códigos em @Appender() estão usando % para formatar string. Esses códigos estão usando _shared_docs como modelo, que é definido principalmente em /pandas/core/generic.py e tem sido usado cruzando vários arquivos.

Gostaria de substituir toda a formatação _shared_docs relevante. Essa mudança precisará modificar muitos arquivos, mas não poderei verificar todas as outras sintaxes de formatação de string nesses arquivos.

Isso soa bem? Devo fazer isso? @datapythonista @MomIsBestFriend

@ HH-MWB Eu realmente não tenho uma palavra a dizer sobre isso, acho que jreback e WillAyd e datapythonista (não marcando porque não quero incomodá-los), podem te ajudar mais do que eu :)

O que você está tentando substituir pelo Appender? Eu não acho que pode ser f-strings

Estaria ok com .format substituindo a sintaxe Py27, mas provavelmente vale a pena abrir um outro problema para discutir

O que você está tentando substituir pelo Appender? Eu não acho que pode ser f-strings

Estaria ok com .format substituindo a sintaxe Py27, mas provavelmente vale a pena abrir um outro problema para discutir

@WillAyd Eu realmente acho que string.Template do stdlib, é o método certo para isso.
Alguma ideia?

Olá @WillAyd , desculpe, não deixei isso claro. Sim, minha ideia original era substituir % por .format e também substituir códigos como %(XXX)s por {XXX} no modelo _shared_docs . Como @MomIsBestFriend disse, string.Template seria outra escolha.

Abri uma edição separada para mais discussão. Obrigado!

Assumindo:

  • [x] pandas / tests / reshape / test_reshape.py
  • [x] pandas / tests / scalar / period / test_period.py

ref # 31412

@MomIsBestFriend Hello! Contribuidor de código aberto pela primeira vez aqui! Estou muito animado para meu primeiro PR! Vou tentar trabalhar nos seguintes arquivos:
versioneer.py
web / pandas_web.py
Obrigado!!

@drewseibert versioneer.py é vendido, então não queremos editá-lo @MomIsBestFriend você pode removê-lo da lista para evitar esta confusão

@jbrockmendel Obrigado pelo

Além disso, estou recebendo o erro de permissões 403 quando tento enviar um commit. Eu adicionei uma chave SSH e tentei definir o URL remoto. Não funciona para mim se eu clonar com SSH ou HTTPS. Qualquer ajuda é apreciada! Obrigado!

@MomIsBestFriend Hello! Contribuidor de código aberto pela primeira vez aqui! Estou muito animado para meu primeiro PR! Vou tentar trabalhar nos seguintes arquivos:
versioneer.py
web / pandas_web.py
Obrigado!!

Boa sorte @drewseibert

Eu vou levar:

pandas / core / reshape / concat.py
pandas / core / reshape / melt.py
pandas / core / reshape / merge.py
pandas / core / reshape / pivot.py
pandas / core / reshape / reshape.py

Trabalhando neste agora:

pandas / tests / io / test_pickle.py

Oi
eu vou levar

pandas / util / _print_versions.py

pandas / util / _test_decorators.py

https://github.com/pandas-dev/pandas/pull/31628 deve ficar bem :)

Vou levar pandas/tests/frame/test_repr_info.py

ref: https://github.com/pandas-dev/pandas/pull/31639

Ei eu vou levar

  • [] pandas / core / arrays / integer.py

Os seguintes arquivos podem ser marcados na lista ...
web / pandas_web.py
pandas / tests / io / test_pickle.py

Obrigado!

Outro para marcar .. sem f-strings necessárias no arquivo:
pandas / tests / series / indexing / test_boolean.py

Vou trabalhar neste agora ...

pandas / tests / series / indexing / test_indexing.py

Obrigado @drewseibert

Ainda há trabalho restante aqui? Eu quero contribuir

@ 3vts Sim, claro :)

Eu acho que você pode levar

pandas / tests / util / test_assert_extension_array_equal.py


LMK se você quiser mais.

Posso ajudar em algo! Será minha primeira contribuição de código aberto, então posso precisar de ajuda. Eu li algumas como contribuir com artigos, mas ainda assim.

Quais você gostaria que eu cuidasse?

@MomIsBestFriend parece que pandas/tests/util/test_assert_extension_array_equal.py foi corrigido no PR # 30816 , também, eu já tenho o ambiente configurado. Você pode me dar um pouco de carga para trabalhar?

@ 3vts @GrizzledLabs - sinta-se à vontade para pegar qualquer um dos arquivos que ainda não foram concluídos na lista acima (e verifique se ninguém mais está trabalhando nisso) - então comente aqui no que você está trabalhando! Obrigado !

pandas / core / arrays / boolean.py parece já estar pronto. Eu vi um f'string e nenhum .format (), a menos que eu tenha perdido.

pandas / core / dtypes / common.py também parece estar pronto. f'strings mas sem .format ()

Algumas dessas correções abrangem vários arquivos? Alguns não contêm um único .format (), e estou me perguntando se há funções chamadas entre os arquivos. Uma única correção exigiria a alteração de vários arquivos?

Olá, contribuidor pela primeira vez aqui! Estou ansioso para começar!
Inicialmente, eu queria levar estes:

pandas / compat / pickle_compat.py
pandas / _config / config.py

mas então eu vi que foi feito e mesclado, @MomIsBestFriend , você pode atualizar a lista no topo para marcá-los como concluídos?

Vou levar estes:

  • [] pandas / tests / io / parser / test_usecols.py

  • [] pandas / tests / io / pytables / conftest.py

  • [] pandas / tests / io / pytables / test_store.py

  • [] pandas / tests / io / pytables / test_timezones.py

@MomIsBestFriend revisando o tópico, descobri que há uma exceção para as strings predefinidas. Isso ainda se aplica? Ou temos agora. uma solução alternativa?

Tenho problemas com strings predefinidas.

Eu entendo perfeitamente , como

Strings regulares são concatenadas em tempo de compilação e strings f são concatenadas em tempo de execução.

Precisamos pensar em uma maneira de remover o uso de .format() e usar outra coisa como um modelo de string.

A única coisa em que consigo pensar no momento é string.Template do stdlib, mas realmente não sei.

@jbrockmendel Você pode nos ajudar?

Olá, contribuidor iniciante 👋. Eu vou levar:

  • [X] pandas / tests / tseries / frequencies / test_inference.py
  • [X] pandas / tests / series / methods / test_argsort.py
  • [X] pandas / tests / series / test_constructors.py
  • [X] pandas / tests / indexing / common.py
  • [X] pandas / tests / indexing / test_coercion.py
  • [X] pandas / tests / indexing / test_iloc.py
  • [X] pandas / tests / indexing / test_indexing.py
  • [X] pandas / tests / indexing / test_loc.py
  • [X] pandas / tests / indexes / common.py
  • [X] pandas / tests / indexes / datetimelike.py

@ monicaw218 , começaria com apenas um arquivo e, assim que sua solicitação pull for mesclada, você poderá continuar com o restante. A primeira contribuição geralmente é mais complicada do que o esperado e, para nós (revisores), também ajuda se as solicitações de pull forem pequenas. Especialmente para novos contribuidores, onde mais feedback pode ser necessário.

Esses dois arquivos podem ser retirados da lista:
👍
pandas / io / parsers.py
pandas / io / pytables.py

Estes também estão prontos para uso:

pandas / tests / groupby / test_apply.py
pandas / tests / groupby / test_bin_groupby.py

Eles estão prontos em # 31914
"pandas / tests / extension / decimal / test_decimal.py"
"pandas / tests / frame / indexing / test_categorical.py"
"pandas / tests / frame / methods / test_describe.py"
"pandas / tests / frame / methods / test_duplicated.py"
"pandas / tests / frame / methods / test_to_dict.py"
"pandas / tests / frame / test_alter_axes.py"
"pandas / tests / frame / test_api.py"
"pandas / tests / frame / test_constructors.py"
"pandas / tests / frame / test_dtypes.py"
"pandas / tests / frame / test_join.py"

Vou pegar "pandas / io / sas / sas_xport.py".

Eles estão prontos em # 31933

"pandas / tests / frame / test_operators.py"
"pandas / tests / frame / test_reshape.py"
"pandas / tests / frame / test_timeseries.py"
"pandas / tests / indexes / datetimes / test_scalar_compat.py"
"pandas / tests / indexes / datetimes / test_tools.py"
"pandas / tests / indexes / interval / test_indexing.py"
"pandas / tests / indexes / interval / test_interval.py"

Estes estão incluídos em # 31945

"pandas / tests / indexes / interval / test_setops.py"
"pandas / tests / indexes / multi / test_compat.py"
"pandas / tests / indexes / period / test_constructors.py"
"pandas / tests / indexes / timedeltas / test_constructors.py"
"pandas / tests / indexing / test_floats.py"

Estes estão incluídos em # 31963

"pandas / tests / internals / test_internals.py"
"pandas / tests / io / excel / test_readers.py"
"pandas / tests / io / excel / test_style.py"
"pandas / tests / io / excel / test_writers.py"
"pandas / tests / io / excel / test_xlrd.py"
"pandas / tests / io / formata / test_console.py"
"pandas / tests / io / formata / test_to_html.py"
"pandas / tests / io / formata / test_to_latex.py"
"pandas / tests / io / generate_legacy_storage_files.py"

Estes estão incluídos em # 31967

"pandas / tests / io / parser / test_c_parser_only.py"
"pandas / tests / io / parser / test_common.py"
"pandas / tests / io / parser / test_compression.py"
"pandas / tests / io / parser / test_encoding.py"
"pandas / tests / io / parser / test_multi_thread.py"
"pandas / tests / io / parser / test_na_values.py"
"pandas / tests / io / parser / test_parse_dates.py"
"pandas / tests / io / parser / test_read_fwf.py"
"pandas / tests / io / pytables / conftest.py"
"pandas / tests / io / pytables / test_store.py"

Estes estão incluídos em # 31980

"pandas / tests / io / pytables / test_timezones.py"
"pandas / tests / io / test_html.py"
"pandas / tests / io / test_stata.py"
"pandas / tests / resample / test_period_index.py"
"pandas / tests / reshape / merge / test_join.py"
"pandas / tests / reshape / merge / test_merge.py"
"pandas / tests / reshape / merge / test_merge_asof.py"
"pandas / tests / reshape / test_melt.py"
"pandas / tests / reshape / test_pivot.py"
"pandas / tests / scalar / timedelta / test_constructors.py"

Estes estão incluídos em # 31986

"pandas / tests / scalar / timestamp / test_constructors.py"
"pandas / tests / scalar / timestamp / test_rendering.py"
"pandas / tests / scalar / timestamp / test_unary_ops.py"
"pandas / tests / series / methods / test_nlargest.py"
"pandas / tests / series / test_analytics.py"
"pandas / tests / series / test_api.py"
"pandas / tests / series / test_dtypes.py"
"pandas / tests / series / test_ufunc.py"

Adicionei minha primeira solicitação de pull com este https://github.com/pandas-dev/pandas/pull/32007 :
pandas / tests / frame / test_to_csv.py

Estes estão incluídos em # 32032

"pandas / tests / test_downstream.py"
"pandas / tests / test_multilevel.py"
"pandas / tests / tools / test_numeric.py"
"pandas / tests / tseries / frequencies / test_inference.py"
"pandas / tests / tslibs / test_parse_iso8601.py"
"pandas / tests / window / moment / test_moments_rolling.py"

Este arquivo está incluído em # 32029:

  • pandas / tests / arrays / categorical / test_analytics.py

Arquivo incluído em https://github.com/pandas-dev/pandas/pull/32044

  • scripts / find_commits_touching_func.py

Estes estão incluídos em # 32034

"pandas / core / arrays / interval.py"
"pandas / core / util / hashing.py"
"pandas / io / formatos / format.py"
"pandas / io / formatos / html.py"
"pandas / io / formatos / latex.py"
"pandas / io / formatos / printing.py"
"pandas / io / parsers.py"
"pandas / tests / arrays / categorical / test_dtypes.py"
"pandas / tests / arrays / categorical / test_operators.py"

Esses estão prontos ...

pandas / core / ops / invalid.py
pandas / core / ops / methods.py
pandas / core / ops / roperator.py

Arquivos incluídos em # 32063:

  • pandas / tests / tseries / frequencies / test_inference.py
  • pandas / tests / tslibs / test_parse_iso8601.py

Olá, quero fazer scripts / validate_docstrings.py

Arquivo incluído na solicitação pull # 32189

  • pandas / tests / indexes / datetimes / test_to_period.py

Este problema foi resolvido? Estive olhando para arquivos não marcados na lista no topo deste tópico, parece que as strings .format () foram convertidas

pandas // util / _decorators.py está pronto (a linha que falha é um comentário)

pandas // core / indexes / base.py deve ser marcado (a falha é de um comentário novamente)

Olá, comecei a olhar para pandas / core / generic.py e rapidamente percebi que mudar os modelos de string de uma string interpolada com % para string.Template exigirá mudanças em muitos lugares onde Substitute + Appender decoradores são usados.

Você pretende remover todo o uso da interpolação de string % , caso em que este trabalho será necessário, ou concorda com o uso da interpolação % ?

@smartvinnetou Quando se trata de Appender e Substitute , estamos tentando substituí-los pelo decorador doc . consulte https://github.com/pandas-dev/pandas/issues/31942

@smartvinnetou Quando se trata de Appender e Substitute , estamos tentando substituí-los pelo decorador doc . veja # 31942

@MomIsBestFriend você prefere pular a atualização de pandas/core/generic.py neste tíquete e fazê-lo em # 31942? Ou devo substituir Appender e Subtitute decoradores em generic.py por seu novo doc decorador sob este tíquete para remover a antiga % interpolação?

@smartvinnetou Quando se trata de Appender e Substitute , estamos tentando substituí-los pelo decorador doc . veja # 31942

@MomIsBestFriend você prefere pular a atualização de pandas/core/generic.py neste tíquete e fazê-lo em # 31942? Ou devo substituir Appender e Subtitute decoradores em generic.py por seu novo doc decorador sob este tíquete para remover a antiga % interpolação?

@smartvinnetou Sob # 31942 no caso de pandas/core/generic.py (se entendi corretamente)

Olá, encontrei muitos arquivos que foram concluídos ou não precisaram de alterações, mas foram marcados como não concluídos. Só queria perguntar se esse problema foi resolvido e não foi marcado acidentalmente ou se vocês ainda estão trabalhando nisso. Se não for resolvido, gostaria de contribuir também. Estes foram alguns dos arquivos que foram feitos, mas não marcados

  • pandas / core / generic.py
  • pandas / core / arrays / datetimes.py
  • pandas / core / arrays / integer.py
  • pandas / core / arrays / period.py
  • pandas / core / arrays / timedeltas.py
  • pandas / core / config_init.py
  • pandas / core / dtypes / dtypes.py
  • pandas / core / frame.py

@ sachinh35 Eu atualizei a lista :)

Ficou difícil manter o controle

Obrigado por atualizar a lista! @MomIsBestFriend

Eu gostaria de contribuir com # 32939 para arquivos em pandas/core/ops/ . Como lidar com docstrings como por exemplo https://github.com/pandas-dev/pandas/blob/master/pandas/core/ops/docstrings.py#L564 que às vezes também são importados para outros arquivos? Envolvendo em funções?

eu mudei

  • pandas / core / sorting.py
  • pandas / tests / indexes / datetimes / test_date_range.py
  • pandas / tests / indexes / interval / test_interval.py
  • pandas / tests / indexing / test_coercion.py
  • pandas / tests / reshape / test_concat.py
  • pandas / util / _decorators.py

Os dois arquivos foram modificados:
pandas / _libs / tslibs / timedeltas.pyx
pandas / _libs / tslibs / timestamps.pyx

Observe que não houve problemas nos seguintes. Você também pode marcar como concluído:
pandas / _libs / tslibs / c_timestamp.pyx
pandas / _libs / tslibs / frequencies.pyx
pandas / _libs / tslibs / parsing.pyx
pandas / _libs / tslibs / period.pyx
pandas / _libs / tslibs / strptime.pyx

nota: este é o meu primeiro PR. Avise-me se algo precisar ser melhorado.

Passei pelo tópico para atualizar a lista + verificar alguns arquivos.

Arquivos marcados como concluídos sem nenhum commit

(não há necessidade de alterar nada):

  • [x] pandas / _config / config.py
  • [x] pandas / _version.py
  • [x] pandas / compat / pickle_compat.py
  • [x] pandas / core / computation / pytables.py
  • [x] pandas / core / indexes / base.py
  • [x] pandas / core / indexes / multi.py
  • [x] pandas / core / indexes / range.py
  • [x] pandas / core / ops / __ init__.py
  • [x] pandas / core / ops / docstrings.py
  • [x] pandas / core / reshape / merge.py
  • [x] pandas / core / tools / datetimes.py
  • [x] pandas / io / formatos / css.py
  • [x] pandas / io / formatos / excel.py
  • [x] pandas / io / formatos / format.py
  • [x] pandas / io / formatos / html.py
  • [x] pandas / io / formatos / info.py
  • [x] pandas / io / formatos / latex.py
  • [x] pandas / io / formatos / printing.py
  • [x] pandas / io / formatos / style.py
  • [x] pandas / io / parsers.py
  • [x] pandas / io / pytables.py
  • [x] pandas / io / sas / sas_xport.py
  • [x] pandas / io / stata.py
  • [x] pandas / tests / arrays / categorical / test_operators.py
  • [x] pandas / tests / arrays / test_datetimelike.py
  • [x] pandas / tests / dtypes / test_dtypes.py
  • [x] pandas / tests / extension / base / setitem.py
  • [x] pandas / tests / frame / test_constructors.py
  • [x] pandas / tests / frame / test_missing.py
  • [x] pandas / tests / frame / test_to_csv.py
  • [x] pandas / tests / groupby / aggregate / test_other.py
  • [x] pandas / tests / indexes / datetimes / test_datetime.py
  • [x] pandas / tests / indexes / datetimes / test_formats.py
  • [x] pandas / tests / indexes / datetimes / test_partial_slicing.py
  • [x] pandas / tests / indexes / interval / test_constructors.py
  • [x] pandas / tests / indexes / multi / test_format.py
  • [x] pandas / tests / indexes / period / test_formats.py
  • [x] pandas / tests / indexes / timedeltas / test_timedelta.py
  • [x] pandas / tests / indexing / test_categorical.py
  • [x] pandas / tests / io / excel / test_openpyxl.py
  • [x] pandas / tests / io / excel / test_writers.py
  • [x] pandas / tests / io / formatos / test_format.py
  • [x] pandas / tests / io / formata / test_printing.py
  • [x] pandas / tests / io / formata / test_style.py
  • [x] pandas / tests / io / formata / test_to_csv.py
  • [x] pandas / tests / io / formata / test_to_html.py
  • [x] pandas / tests / io / formata / test_to_latex.py

Arquivos restantes para verificar:

  • [] pandas / core / arrays / datetimelike.py
  • [] pandas / tests / io / parser / test_compression.py
  • [] pandas / tests / io / parser / test_encoding.py
  • [] pandas / tests / io / parser / test_header.py
  • [] pandas / tests / io / parser / test_parse_dates.py
  • [] pandas / tests / io / parser / test_usecols.py
  • [] pandas / tests / io / test_html.py
  • [] pandas / tests / io / test_sql.py
  • [] pandas / tests / io / test_stata.py
  • [] pandas / tests / reductions / test_reductions.py
  • [] pandas / tests / reshape / test_melt.py
  • [] pandas / tests / scalar / period / test_period.py
  • [] pandas / tests / scalar / timedelta / test_timedelta.py
  • [] pandas / tests / scalar / timestamp / test_constructors.py
  • [] pandas / tests / series / indexing / test_numeric.py
  • [] pandas / tests / series / indexing / test_take.py
  • [] pandas / tests / series / indexing / test_where.py
  • [] pandas / tests / series / methods / test_rename.py
  • [] pandas / tests / series / test_api.py
  • [] pandas / tests / series / test_constructors.py
  • [] pandas / tests / series / test_datetime_values.py
  • [] pandas / tests / series / test_repr.py
  • [] pandas / tests / test_strings.py
  • [] pandas / tests / tools / test_to_datetime.py
  • [] pandas / tests / tseries / holiday / test_calendar.py
  • [] pandas / tests / tseries / holiday / test_holiday.py
  • [] pandas / tests / tslibs / test_parsing.py
  • [] pandas / tests / util / test_assert_frame_equal.py
  • [] pandas / tseries / frequencies.py
  • [] pandas / util / _test_decorators.py
  • [] pandas / util / _validators.py

Eu cuidei de pandas/util/_validators.py . Muitos desses outros arquivos já parecem ok para mim também.

  • [x] pandas / util / _test_decorators.py
  • [x] pandas / tseries / frequencies.py
  • [x] pandas / tests / util / test_assert_frame_equal.py
  • [x] pandas / tests / tslibs / test_parsing.py
  • [x] pandas / tests / tseries / holiday / test_holiday.py
  • [x] pandas / tests / tseries / holiday / test_calendar.py
  • [x] pandas / tests / tools / test_to_datetime.py
  • [x] pandas / tests / test_strings.py
  • [x] pandas / tests / series / test_repr.py
  • [x] pandas / tests / series / test_datetime_values.py
  • [x] pandas / tests / series / test_constructors.py
  • [x] pandas / tests / series / test_api.py

Olá Matteo,
Estou interessado em ajudar com esse esforço, mas sou novo no git e
contribuindo para os pandas. Você possivelmente seria capaz de me guiar através do
degraus ? Talvez eu possa configurar um compartilhamento de tela esta semana?

Obrigado,
Andrew

Em Ter, 26 de maio de 2020, 15:12 Matteo Santamaria [email protected]
escreveu:

Eu cuidei do pandas / util / _validators.py. Muitos desses outros arquivos
já parece ok para mim também.

  • pandas / util / _test_decorators.py
  • pandas / tseries / frequencies.py
  • pandas / tests / util / test_assert_frame_equal.py
  • pandas / tests / tslibs / test_parsing.py
  • pandas / tests / tseries / holiday / test_holiday.py
  • pandas / tests / tseries / holiday / test_calendar.py
  • pandas / tests / tools / test_to_datetime.py
  • pandas / tests / test_strings.py
  • pandas / tests / series / test_repr.py
  • pandas / tests / series / test_datetime_values.py
  • pandas / tests / series / test_constructors.py
  • pandas / tests / series / test_api.py

-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/pandas-dev/pandas/issues/29547#issuecomment-634307953 ,
ou cancelar
https://github.com/notifications/unsubscribe-auth/APG73XKAUDLFVVQXUS2SJETRTQ5DDANCNFSM4JLZCU5Q
.

Ei @ warden706 , também sou muito novo aqui, então não teria muito para mostrar a você. Eu achei este recurso muito útil, já que comecei a vasculhar, você deveria dar uma olhada.

Oi,
muito novo em contribuir também aqui. Estou cuidando de

  • [x] pandas / tests / io / parser / test_header.py
  • [x] pandas / tests / io / test_sql.py
  • [x] pandas / tests / io / test_html.py
  • [x] pandas / tests / reductions / test_reductions.py
  • [x] pandas / tests / reshape / test_melt.py
  • [x] pandas / tests / scalar / timedelta / test_timedelta.py

Eu verifiquei esses outros arquivos e parecem ok para mim

  • [X] pandas / tests / io / parser / test_compression.py
  • [X] pandas / tests / io / parser / test_encoding.py
  • [X] pandas / tests / io / parser / test_parse_dates.py
  • [X] pandas / tests / io / parser / test_usecols.py
  • [X] pandas / tests / io / test_stata.py
  • [X] pandas / tests / scalar / period / test_period.py
  • [X] pandas / tests / scalar / timestamp / test_constructors.py

eu também sou novo aqui.
eu vou levar

  • [] pandas / tests / series / indexing / test_numeric.py
  • [] pandas / tests / series / indexing / test_take.py
  • [] pandas / tests / series / indexing / test_where.py

eu tenho uma pergunta sobre a mudança de código.
por exemplo, em pandas / tests / series / indexing / test_take.py, snippet do código:

 msg = "index {} is out of bounds for( axis 0 with)? size 5"
 with pytest.raises(IndexError, match=msg.format(10)):
     ser.take([1, 10])

então minha sugestão é substituí-lo por:

msg = lambda x: f"index {x} is out of bounds for( axis 0 with)? size 5"
with pytest.raises(IndexError, match=msg(10)):
    ser.take([1, 10])

isso é bom o suficiente?

Oi,
Eu gostaria de fazer um PR, então estou fazendo o teste, mas estou tendo algumas falhas. Por isso tentei fazer testes também no master.
É normal que a execução de pytest pandas em um mestre bifurcado não editado retorne algumas falhas?

O Mestre geralmente deve passar nos testes. Certifique-se de ter puxado os últimos commits. Quais testes estão falhando?

@matteosantama Retirei os últimos commits, reinstalei o ambiente e pytest pandas . Estes são os resultados

================= short test summary info =================
FAILED pandas/tests/io/test_parquet.py::TestParquetFastParquet::test_s3_roundtrip - ValueError: Invalid timestamp "Ven, 29 Mag 2020 07:59:19 GMT": Unknown string format: Ven, 29 Mag 2020 07:59:19 GMT
FAILED pandas/tests/plotting/test_datetimelike.py::TestTSPlot::test_ts_plot_with_tz['UTC'] - AttributeError: 'numpy.datetime64' object has no attribute 'hour'
================= 2 failed, 87804 passed, 1185 skipped, 1005 xfailed, 5637 warnings in 2437.06s (0:40:37) =================

Percebi que se eu executar testes apenas em um único diretório (por exemplo, com pytest pandas/tests/io ), não haverá falhas:

 7273 passed, 344 skipped, 53 xfailed, 5584 warnings in 351.76s (0:05:51) 

Desde o comentário @OlivierLuG , parece que quase todos os arquivos foram corrigidos ou já estavam ok sem qualquer modificação. Vou tentar atualizar a lista dos arquivos "ainda abertos".

Corrigido

  • [X] pandas / util / _validators.py
  • [X] pandas / tests / io / parser / test_header.py
  • [X] pandas / tests / io / test_sql.py
  • [X] pandas / tests / reductions / test_reductions.py

Não há necessidade de modificação

  • [X] pandas / util / _test_decorators.py
  • [X] pandas / tseries / frequencies.py
  • [X] pandas / tests / util / test_assert_frame_equal.py
  • [X] pandas / tests / tslibs / test_parsing.py
  • [X] pandas / tests / tseries / holiday / test_holiday.py
  • [X] pandas / tests / tseries / holiday / test_calendar.py
  • [X] pandas / tests / tools / test_to_datetime.py
  • [X] pandas / tests / test_strings.py
  • [X] pandas / tests / series / test_repr.py
  • [X] pandas / tests / series / test_datetime_values.py
  • [X] pandas / tests / series / test_constructors.py
  • [X] pandas / tests / series / test_api.py
  • [X] pandas / tests / io / parser / test_compression.py
  • [X] pandas / tests / io / parser / test_encoding.py
  • [X] pandas / tests / io / parser / test_parse_dates.py
  • [X] pandas / tests / io / parser / test_usecols.py
  • [X] pandas / tests / io / test_stata.py
  • [X] pandas / tests / scalar / period / test_period.py
  • [X] pandas / tests / scalar / timestamp / test_constructors.py
  • [X] pandas / tests / io / test_html.py
  • [X] pandas / tests / reshape / test_melt.py
  • [X] pandas / tests / scalar / timedelta / test_timedelta.py

Além disso, acho que também isso já está ok

  • [X] pandas / core / arrays / datetimelike.py
  • [X] pandas / tests / series / methods / test_rename.py

Ainda para verificar / corrigir

  • [x] pandas / tests / series / indexing / test_numeric.py
  • [x] pandas / tests / series / indexing / test_take.py
  • [x] pandas / tests / series / indexing / test_where.py

@DanBasson , você tem alguma atualização?

Continuo recebendo erros que não sei o que significam.
Qualquer ajuda será apreciada

Você tentou obter as modificações mais recentes no master? Talvez isso conserte alguns dos testes que falharam.

não ajudou.
se outra pessoa quiser pegar, você pode

Tenho uma dúvida: quando temos uma situação como em pandas/tests/reshape/test_melt.py :

msg = "The following '{Var}' are not present in the DataFrame: {Col}"
...
with pytest.raises(KeyError, match=msg.format(Var="value_vars", Col="\\['C'\\]")):
...
with pytest.raises(KeyError, match=msg.format(Var="id_vars", Col="\\['A'\\]")):
...

e assim por diante, devemos transformar msg em uma função e chamá-la com valores diferentes de "Col"? Ou é melhor deixar como está?

@MatteoFelici obrigado por essa lista atualizada. Eu verifiquei os últimos módulos restantes que você chamou e parece estar OK, então acho que podemos resolver este problema

Esta página foi útil?
0 / 5 - 0 avaliações