Pandas: Remplacer l'ancienne syntaxe de formatage des chaînes par des chaînes f

Créé le 11 nov. 2019  ·  137Commentaires  ·  Source: pandas-dev/pandas

Puisque nous ne prenons plus en charge python 3.5, nous pouvons maintenant utiliser les nouvelles chaînes f au lieu de l'ancienne .format() (et évidemment le formatage % ).

Remarques:

  • N'oubliez pas de lier ce problème dans le corps du message de votre pull request , collez simplement ce https://github.com/pandas-dev/pandas/issues/29547 dans le corps du message de votre pull request.

  • Si l'un de vos fichiers modifiés est lié à #29886 , assurez-vous de lier également votre pull request à ce problème, collez simplement ce https://github.com/pandas-dev/pandas/issues/29886 dans le corps du message de votre pull request également.

  • Veuillez commenter ce sur quoi vous prévoyez de travailler, afin que nous ne fassions pas de double travail.

  • Si un ou plusieurs fichiers qui devraient être marqués comme terminés ne sont pas marqués, veuillez commenter pour me le faire savoir.


Pour vérifier quels fichiers doivent encore être corrigés dans le répertoire 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/

Tout ce qui précède peut également être utilisé comme une seule doublure :

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

Si vous voulez voir le numéro de ligne de l'occurrence, remplacez le -l par -n
par exemple:

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

La liste actuelle est :

  • [ ] 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/formats/css.py

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

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

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

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

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

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

  • [ ] pandas/io/formats/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/tracé/_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/indexation/test_categorical.py

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

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

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

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

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

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

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

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

  • [ ] pandas/tests/io/formats/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


REMARQUE:

La liste peut changer au fur et à mesure que les fichiers sont déplacés/renommés en permanence.


Fichiers et commandes hérités de ce PR .

Style good first issue

Commentaire le plus utile

Ajout de ma première pull request avec ceci https://github.com/pandas-dev/pandas/pull/32007 :
pandas/tests/frame/test_to_csv.py

Tous les 137 commentaires

Je prends:

  • [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/reduction.pyx

  • [x] pandas/_libs/sparse.pyx

  • [x] pandas/_libs/testing.pyx

  • [x] pandas/_libs/tslib.pyx

  • [x] pandas/_libs/window.pyx

Je vais prendre:

  • [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

pour commencer, si ça va !

Salut @MomIsBestFriend Pouvez-vous recommander des outils pour cette conversion ? Un rapide coup d'oeil m'a donné ceux-ci :

  1. mise à niveau
  2. fstringifier
  3. voler

Je n'ai aucune expérience avec l'un d'eux, mais ils pourraient être très utiles ici

Bonjour @SaturnFromTitan , pyupgrade mais uniquement lorsque le fichier ne contient que quelques formats de chaîne obsolètes. Ensuite, je regarde les changements et corrige si pyupgrade a quelque chose de mal.

Quand ce sont des fichiers avec beaucoup d'occurrences, je choisis manuellement les "complexes" (par exemple, '%.2f' % my_float ) et je le laisse traiter les plus courants, généralement tout va bien.

De plus, certaines des modifications rendront le fichier modifié non compatible avec pep8, il est donc nécessaire de corriger cela également, sinon il ne passera pas les tests.

Prendra ensuite :

  • [x] pandas/compat/__init__.py

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

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

  • [x] pandas/compat/_facultatif.py

Je vais prendre:

  • [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

Que pense tout le monde de l'étiquetage en tant que good first issue ? Cela devrait s'appliquer à la plupart des fichiers ici. Les modifications qui doivent être apportées ne sont généralement que de quelques lignes environ par fichier, et celui qui effectue les modifications n'a pas à trop s'inquiéter d'affecter d'autres parties du code (puisque la fonction de fin effectuée est la même).

J'imagine une configuration similaire à #28926.

remplacement f-string placé sur :

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

réf #29701

Prendra ensuite :

  • [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

Je vais prendre

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

réf #29781

Je vais prendre:

  • [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

Que pense tout le monde de l'étiquetage en tant que good first issue ? Cela devrait s'appliquer à la plupart des fichiers ici. Les modifications qui doivent être apportées ne sont généralement que de quelques lignes environ par fichier, et celui qui effectue les modifications n'a pas à trop s'inquiéter d'affecter d'autres parties du code (puisque la fonction de fin effectuée est la même).

J'imagine une configuration similaire à #28926.

Bien sûr, j'ai étiqueté en conséquence. Merci

Prise suivante :

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

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

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

Désolé, je viens de remarquer que vous avez demandé de spécifier sur quels fichiers travailler. je viens d'utiliser

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

Pour trouver n'importe quel ancien formatage. Je m'excuse

Désolé, je viens de remarquer que vous avez demandé de spécifier sur quels fichiers travailler. je viens d'utiliser

@ForTimeBeing C'est pourquoi j'ai édité le message, heureux que vous l'ayez remarqué :)

peux-tu poster ce sur quoi tu as travaillé ? juste au cas où quelqu'un rechercherait les commentaires.

Bien sûr, j'ai pris;

  • [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/erreurs/__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/décimal/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

et sous

  • [x] pandas/tseries/frequencies.py

.format existe toujours et s'affiche dans la recherche grep, mais il n'y a pas de littéral à changer en fstring. Je ne sais pas s'il existe un autre moyen de le faire ou de le conserver tel quel, mais tous les littéraux sont maintenant remplacés par fstring dans ce fichier.

.format existe toujours et s'affiche dans la recherche grep, mais il n'y a pas de littéral à changer en fstring. Je ne sais pas s'il existe un autre moyen de le faire ou de le conserver tel quel, mais tous les littéraux sont maintenant remplacés par fstring dans ce fichier.

@A partir de maintenant
Pas de problème:)
merci pour le RP :)

j'ai pris

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

réf #29952

Je vais prendre:

  • [x] ci/print_skiped.py

  • [x] doc/make.py

  • [x] doc/sphinxext/announce.py

  • [x] doc/sphinxext/contributors.py

Travailler sur : 'pandas/core/dtypes/dtypes.py'

A pris:

  • [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/expressions.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

réf : #30116, #30135, #30363

Je vais prendre:

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

J'ai un problème avec les chaînes prédéfinies. J'ai trouvé la solution mais je ne sais pas si c'est la bonne.
Imaginez la situation où vous avez une chaîne prédéfinie comme :
THE_MESSAGE = "Message avec arguments. Arg1 : {arg1}, Arg2 : {arg2}."
Qui est appelé avec .format() comme :
LE_MESSAGE.format(arg1_str, arg2_str).

Pourrais-je réécrire cela en utilisant la fonction lambda d'une manière décrite ci-dessous ?
THE_MESSAGE = lambda arg1, arg2 : f"Message avec arguments. Arg1 : {arg1}, Arg2 : {arg2}."

et l'appeler par
LE_MESSAGE(arg1_str, arg2_str) ?

Je sais que cela fonctionnerait, je ne sais pas si c'est la meilleure façon d'aborder ce problème :)

J'ai un problème avec les chaînes prédéfinies.

Je comprends tout à fait, Comme l'explique pep 498 :

Les chaînes régulières sont concaténées au moment de la compilation et les chaînes f sont concaténées au moment de l'exécution.

Nous devons penser à un moyen de supprimer l'utilisation de .format() et d'utiliser autre chose, un modèle de chaîne.

La seule chose à laquelle je peux penser pour le moment est string.Template de stdlib, mais je ne sais vraiment pas.

@jbrockmendel Pouvez-vous nous aider ?

@MomIsBestFriend pensez -vous que la fonction lambda est excessive pour cela ?

@MomIsBestFriend, je pense que cela peut être un cas où vivre avec quelques .format s est la voie à suivre

@MomIsBestFriend pensez -vous que la fonction lambda est excessive pour cela ?

Je suis loin d'être un expert, veuillez demander à l'un des développeurs.

a pris

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

réf #30120

a pris

  • [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

réf #30121

a pris

  • [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

réf #30124

Je vais prendre

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

Éditer:
Prise:

  • [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

Je vais prendre

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

Merci!

Je vais prendre:

pandas/tests/traçage/test_converter.py

pandas/tests/traçage/test_datetimelike.py

pandas/tests/traçage/test_series.py

Je vais prendre

  • [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

Bonjour, @MomIsBestFriend

pandas/tests/traçage/test_converter.py

pandas/tests/traçage/test_datetimelike.py

pandas/tests/traçage/test_series.py

A été complété. Merci.

Bonjour
je peux prendre

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

Merci

Bonjour, je prends

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

Merci!

J'ai pris:

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

Lien vers mon pr: https://github.com/pandas-dev/pandas/pull/30278

Je vais travailler sur :

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

Ici à cause du tag "bon premier numéro"

Je vais prendre:

  • [ ] pandas/io/sql.py

  • [ ] pandas/io/stata.py

Merci!

Je ferai:

  • [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

je voudrais prendre
je viens de faire une pull request dessus

  • [x] pandas/core/indexers.pyz

Génial, j'ai toujours voulu participer aux Pandas. Je mettrai à jour quand je saurai ce que je peux accomplir dans les prochaines semaines...

je peux prendre
pandas/_version.py

Sauter dessus :

  • [ ] pandas/core/arrays/datetimelike.py
  • [x] pandas/io/formats/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

Je vais prendre pandas/io/formats/csvs.py

Je prends:

  • [x] pandas/core/series.py (pas de méthodes de chaîne à l'ancienne dans le code, seulement la documentation)
  • [x] pandas/core/tools/datetimes.py (code modifié, testera et fera une pullrequest avant le 25 décembre)

Question : existe-t-il une réponse indiquant si le formatage des chaînes à l'ancienne doit rester dans la référence de l'API ?

Par exemple, dans 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

Remplacer ceci par un exemple de chaîne f force quelque chose comme :

      >>> 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

Ce qui n'est pas un remplacement exact (f-string n'est pas une fonction, j'utilise le lambda pour en faire une fonction qui reproduit l'effet net de 'Je suis un '.format() ), et soulève des problèmes épineux sur la mise certaines non-meilleures pratiques dans la documentation.

Pour l'instant, j'envisage de modifier la documentation comme étant hors de portée, en attendant la décision de la communauté sur la façon de gérer des cas comme celui-ci.

Déjà fait (je ne sais pas par qui) :
pandas/tests/arrays/interval/test_ops.py

je prendrai aussi

  • [x] pandas/tests/scalaire/intervalle/test_ops.py
  • [x] pandas/tests/computation/test_eval.py
  • [x] pandas/tests/types/*
  • [x] pandas/tests/dtypes/cast/test_infer_dtype.py
  • [x] pandas/tests/dtypes/test_dtypes.py
  • [x] pandas/tests/dtypes/test_inference.py

Question : existe-t-il une réponse indiquant si le formatage des chaînes à l'ancienne doit rester dans la référence de l'API ?

cc @WillAyd @jreback

Je ne sais pas ce que vous considérez comme le "format de chaîne à l'ancienne", mais .format aura des cas d'utilisation que les f-strings ne couvrent pas (à savoir la paramétrisation retardée), donc sûr que ce sera toujours là . Je ne pense pas que nous devrions avoir la syntaxe du format de chaîne Py27 n'importe où cependant

je vais prendre :

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

Je vais prendre

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

En #30601, j'ai pris

  • [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

Je peux prendre les deux fichiers ci-dessous pour commencer si ça vous va !

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

Ces changements ont été effectués dans #30604

Prise en charge :

  • [ ] 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-t-il un moyen privilégié de noter les anciennes utilisations prévues de .format qui sont laissées telles quelles, dans les PR ? Dans le cas où l'on suppose (à tort) que quelque chose est un bon cas d'utilisation et qu'il est négligé dans le PR

Travaille sur

  • [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

Je vais prendre

  • [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

Je voudrais essayer de prendre :

  • [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

je voudrais prendre :

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

Merci @HH-MWB

Je prendrai:

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

J'ai trouvé beaucoup de code dans @Appender() qui utilise % pour formater la chaîne. Ce code utilise _shared_docs comme modèle, qui est principalement défini dans /pandas/core/generic.py et utilisé pour traverser plusieurs fichiers.

Je voudrais remplacer tout le formatage _shared_docs pertinent. Ce changement devra modifier de nombreux fichiers, mais je ne pourrai pas vérifier toutes les autres syntaxes de formatage de chaîne dans ces fichiers.

Est-ce que ça sonne bien ? Devrais-je le faire? @datapythonista @MomIsBestFriend

J'ai trouvé beaucoup de code dans @Appender() qui utilise % pour formater la chaîne. Ce code utilise _shared_docs comme modèle, qui est principalement défini dans /pandas/core/generic.py et utilisé pour traverser plusieurs fichiers.

Je voudrais remplacer tout le formatage _shared_docs pertinent. Ce changement devra modifier de nombreux fichiers, mais je ne pourrai pas vérifier toutes les autres syntaxes de formatage de chaîne dans ces fichiers.

Est-ce que ça sonne bien ? Devrais-je le faire? @datapythonista @MomIsBestFriend

@HH-MWB Je n'ai pas vraiment mon mot à dire à ce sujet, je pense que jreback et WillAyd et datapythonista (Ne pas marquer parce que je ne veux pas les déranger), peuvent vous aider plus que moi :)

Qu'essayez-vous de remplacer par Appender ? Je ne pense pas que cela puisse être des f-strings

Serait d'accord avec .format remplaçant la syntaxe Py27 mais cela vaut probablement la peine d'ouvrir un problème séparé pour en discuter

Qu'essayez-vous de remplacer par Appender ? Je ne pense pas que cela puisse être des f-strings

Serait d'accord avec .format remplaçant la syntaxe Py27 mais cela vaut probablement la peine d'ouvrir un problème séparé pour en discuter

@WillAyd Je pense que string.Template de stdlib est la bonne méthode pour cela.
Des pensées?

Salut @WillAyd , désolé de ne pas avoir été clair. Oui, mon idée originale était de remplacer % par .format , et aussi de remplacer le code comme %(XXX)s par {XXX} dans le modèle _shared_docs . Comme @MomIsBestFriend l'a dit, string.Template serait un autre choix.

J'ai ouvert un sujet séparé pour plus de discussion. Merci!

Prise en charge :

  • [x] pandas/tests/reshape/test_reshape.py
  • [x] pandas/tests/scalaire/période/test_période.py

réf #31412

@MomIsBestFriend Bonjour ! Premier contributeur open source ici ! Je suis très excité pour mon premier PR! Je vais essayer de travailler sur les fichiers suivants :
versioneer.py
web/pandas_web.py
Merci!!

@drewseibert versioneer.py est un fournisseur, nous ne voulons donc pas le modifier @MomIsBestFriend pouvez-vous le supprimer de la liste pour éviter cette confusion

@jbrockmendel Merci pour l'

De plus, j'obtiens une erreur d'autorisation 403 lorsque j'essaie de pousser un commit. J'ai ajouté une clé SSH et essayé de définir l'URL distante. Ne fonctionne pas pour moi que je clone avec SSH ou HTTPS. Toute aide est appréciée ! Merci!

@MomIsBestFriend Bonjour ! Premier contributeur open source ici ! Je suis très excité pour mon premier PR! Je vais essayer de travailler sur les fichiers suivants :
versioneer.py
web/pandas_web.py
Merci!!

Bonne chance @drewseibert

Je vais prendre:

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

Travailler sur celui-ci maintenant:

pandas/tests/io/test_pickle.py

salut
Je vais prendre

pandas/util/_print_versions.py

pandas/util/_test_decorators.py

https://github.com/pandas-dev/pandas/pull/31628 devrait être correct :)

Je vais prendre pandas/tests/frame/test_repr_info.py

réf : https://github.com/pandas-dev/pandas/pull/31639

Hé, je vais prendre

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

Les fichiers suivants peuvent être cochés sur la liste...
web/pandas_web.py
pandas/tests/io/test_pickle.py

Merci!

Un autre à cocher... aucune f-string n'est nécessaire dans le fichier :
pandas/tests/series/indexation/test_boolean.py

Je vais travailler sur celui-ci maintenant...

pandas/tests/series/indexing/test_indexing.py

Merci @drewseibert

Reste-t-il encore du travail ici ? je veux contribuer

@3vts Oui, bien sûr :)

je pense que tu peux prendre

pandas/tests/util/test_assert_extension_array_equal.py


LMK si vous en voulez plus.

Quelque chose que je peux aider! Ce sera ma première contribution open source, donc j'aurai peut-être besoin d'aide. J'ai lu quelques articles sur la façon de contribuer, mais quand même.

Lesquelles voudriez-vous que je gère ?

@MomIsBestFriend semble que pandas/tests/util/test_assert_extension_array_equal.py été corrigé sur PR # 30816 , de plus, j'ai déjà configuré l'environnement. Pouvez-vous me donner un peu de charge pour travailler avec?

@3vts @GrizzledLabs - n'hésitez pas à prendre n'importe quel fichier qui n'a pas encore été fait dans la liste ci-dessus (et vérifiez que personne d'autre ne travaille dessus) - puis commentez ici ce sur quoi vous travaillez ! Merci !

pandas/core/arrays/boolean.py semble déjà être fait. J'ai vu un f'string et aucun .format(), à moins que je ne l'aie raté.

pandas/core/dtypes/common.py semble déjà être fait. f'strings mais pas de .format()

Certains de ces correctifs s'étendent-ils sur plusieurs fichiers ? Quelques-uns ne contiennent pas un seul .format(), et je me demande s'il existe des fonctions appelées entre les fichiers ? Un seul correctif nécessiterait-il de modifier plusieurs fichiers ?

Salut, Premier contributeur ici! Hâte d'y aller !
Au départ, je voulais prendre ceux-ci:

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

mais ensuite j'ai vu que cela avait été fait et fusionné, @MomIsBestFriend pouvez-vous s'il vous plaît mettre à jour la liste en haut pour les cocher comme fait ?

je vais prendre celles-ci :

  • [ ] 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 examinant le fil que j'ai trouvé, il existe une exception pour les chaînes prédéfinies. Cela s'applique-t-il toujours? Ou nous avons maintenant. une solution de contournement ?

J'ai un problème avec les chaînes prédéfinies.

Je comprends tout à fait, Comme l'explique pep 498 :

Les chaînes régulières sont concaténées au moment de la compilation et les chaînes f sont concaténées au moment de l'exécution.

Nous devons penser à un moyen de supprimer l'utilisation de .format() et d'utiliser autre chose, un modèle de chaîne.

La seule chose à laquelle je peux penser pour le moment est string.Template de stdlib, mais je ne sais vraiment pas.

@jbrockmendel Pouvez-vous nous aider ?

Bonjour, premier contributeur 👋 . Je vais prendre:

  • [ 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/indexation/common.py
  • [ X ] pandas/tests/indexation/test_coercion.py
  • [ X ] pandas/tests/indexation/test_iloc.py
  • [ X ] pandas/tests/indexing/test_indexing.py
  • [ X ] pandas/tests/indexation/test_loc.py
  • [ X ] pandas/tests/indexes/common.py
  • [ X ] pandas/tests/indexes/datetimelike.py

@ monicaw218 , je commencerais avec un seul fichier, et une fois que votre pull request est fusionné, vous pouvez continuer avec le reste. La première contribution est généralement plus délicate que prévu, et pour nous (les évaluateurs), cela aide généralement aussi si les demandes d'extraction sont petites. Spécialement pour les nouveaux contributeurs, où plus de commentaires peuvent être nécessaires.

Ces deux fichiers peuvent être cochés de la liste :
??
pandas/io/parsers.py
pandas/io/pytables.py

Ceux-ci sont également bons à emporter:

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

Ceux-ci sont prêts le #31914
"pandas/tests/extension/décimal/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/cadre/test_api.py"
"pandas/tests/frame/test_constructors.py"
"pandas/tests/frame/test_dtypes.py"
"pandas/tests/frame/test_join.py"

Je vais prendre "pandas/io/sas/sas_xport.py".

Ceux-ci sont prêts le #31933

"pandas/tests/frame/test_operators.py"
"pandas/tests/cadre/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/index/interval/test_interval.py"

Ceux-ci sont inclus dans #31945

"pandas/tests/indexes/interval/test_setops.py"
"pandas/tests/indexes/multi/test_compat.py"
"pandas/tests/indexes/période/test_constructors.py"
"pandas/tests/indexes/timedeltas/test_constructors.py"
"pandas/tests/indexation/test_floats.py"

Ceux-ci sont inclus dans #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/formats/test_console.py"
"pandas/tests/io/formats/test_to_html.py"
"pandas/tests/io/formats/test_to_latex.py"
"pandas/tests/io/generate_legacy_storage_files.py"

Ceux-ci sont inclus dans #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"

Ceux-ci sont inclus dans #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/scalaire/timedelta/test_constructors.py"

Ceux-ci sont inclus dans #31986

"pandas/tests/scalaire/timestamp/test_constructors.py"
"pandas/tests/scalaire/timestamp/test_rendering.py"
"pandas/tests/scalaire/timestamp/test_unary_ops.py"
"pandas/tests/séries/méthodes/test_nlargest.py"
"pandas/tests/series/test_analytics.py"
"pandas/tests/série/test_api.py"
"pandas/tests/séries/test_dtypes.py"
"pandas/tests/série/test_ufunc.py"

Ajout de ma première pull request avec ceci https://github.com/pandas-dev/pandas/pull/32007 :
pandas/tests/frame/test_to_csv.py

Ceux-ci sont inclus dans #32032

"pandas/tests/test_downstream.py"
"pandas/tests/test_multilevel.py"
"pandas/tests/outils/test_numeric.py"
"pandas/tests/tseries/frequencies/test_inference.py"
"pandas/tests/tslibs/test_parse_iso8601.py"
"pandas/tests/fenêtre/moments/test_moments_rolling.py"

Ce fichier est inclus dans #32029 :

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

Fichier inclus dans https://github.com/pandas-dev/pandas/pull/32044

  • scripts/find_commits_touching_func.py

Ceux-ci sont inclus dans #32034

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

Ceux-ci sont terminés...

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

Fichiers inclus dans #32063 :

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

Salut, je veux prendre scripts/validate_docstrings.py

Fichier inclus dans la pull request #32189

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

Ce problème est-il résolu ? J'ai regardé des fichiers non marqués dans la liste en haut de ce fil, il semble que les chaînes .format() aient été converties

pandas//util/_decorators.py est terminé (la ligne qui échoue est un commentaire)

pandas//core/indexes/base.py doit être coché (l'échec provient à nouveau d'un commentaire)

Salut, j'ai commencé à regarder pandas/core/generic.py et j'ai rapidement réalisé que changer les modèles de chaîne d'une chaîne interpolée avec % en string.Template nécessitera des changements dans de nombreux endroits où Substitute décorateurs Appender sont utilisés.

Visez-vous à supprimer toute utilisation de l'interpolation de chaîne % , auquel cas ce travail sera nécessaire, ou êtes-vous d'accord avec une certaine utilisation de l'interpolation % ?

@smartvinnetou En ce qui concerne les Appender et Substitute nous essayons maintenant de les remplacer par le décorateur doc . voir https://github.com/pandas-dev/pandas/issues/31942

@smartvinnetou En ce qui concerne les Appender et Substitute nous essayons maintenant de les remplacer par le décorateur doc . voir #31942

@MomIsBestFriend préférez-vous ignorer le surclassement de pandas/core/generic.py dans ce billet et le faire sous #31942 ? Ou devrais-je remplacer les décorateurs Appender et Subtitute dans generic.py par votre nouveau décorateur doc sous ce ticket pour supprimer l'ancienne interpolation % ?

@smartvinnetou En ce qui concerne les Appender et Substitute nous essayons maintenant de les remplacer par le décorateur doc . voir #31942

@MomIsBestFriend préférez-vous ignorer le surclassement de pandas/core/generic.py dans ce billet et le faire sous #31942 ? Ou devrais-je remplacer les décorateurs Appender et Subtitute dans generic.py par votre nouveau décorateur doc sous ce ticket pour supprimer l'ancienne interpolation % ?

@smartvinnetou Sous #31942 dans le cas de pandas/core/generic.py (Si j'ai bien compris)

Salut, j'ai trouvé pas mal de fichiers qui étaient terminés ou qui ne nécessitaient aucune modification, mais qui ont été marqués comme non terminés. Je voulais juste demander si ce problème a été résolu et n'a pas été marqué accidentellement ou si vous travaillez toujours dessus. Si ce n'est pas résolu, j'aimerais aussi contribuer. Voici quelques-uns des fichiers qui ont été créés mais non marqués

  • 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 J'ai mis à jour la liste :)

Il est devenu difficile de garder une trace

Merci d'avoir mis à jour la liste ! @MomIsBestFriend

Je souhaite contribuer avec #32939 pour les fichiers de moins de pandas/core/ops/ . Comment gérer les docstrings comme par exemple https://github.com/pandas-dev/pandas/blob/master/pandas/core/ops/docstrings.py#L564 qui sont parfois également importés dans d'autres fichiers ? Envelopper dans des fonctions ?

j'ai changé

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

Les deux fichiers ont été modifiés :
pandas/_libs/tslibs/timedeltas.pyx
pandas/_libs/tslibs/timestamps.pyx

Notez qu'il n'y a eu aucun problème dans les suivants. Vous pouvez également marquer comme terminé :
pandas/_libs/tslibs/c_timestamp.pyx
pandas/_libs/tslibs/frequencies.pyx
pandas/_libs/tslibs/analyse.pyx
pandas/_libs/tslibs/period.pyx
pandas/_libs/tslibs/strptime.pyx

note : c'est mon premier PR jamais. Faites-moi savoir si quelque chose doit être amélioré.

J'ai parcouru le sujet pour mettre à jour la liste + vérifier certains fichiers.

Fichiers marqués comme terminés sans aucun commit

(pas besoin de changer quoi que ce soit):

  • [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/formats/css.py
  • [x] pandas/io/formats/excel.py
  • [x] pandas/io/formats/format.py
  • [x] pandas/io/formats/html.py
  • [x] pandas/io/formats/info.py
  • [x] pandas/io/formats/latex.py
  • [x] pandas/io/formats/printing.py
  • [x] pandas/io/formats/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/indexation/test_categorical.py
  • [x] pandas/tests/io/excel/test_openpyxl.py
  • [x] pandas/tests/io/excel/test_writers.py
  • [x] pandas/tests/io/formats/test_format.py
  • [x] pandas/tests/io/formats/test_printing.py
  • [x] pandas/tests/io/formats/test_style.py
  • [x] pandas/tests/io/formats/test_to_csv.py
  • [x] pandas/tests/io/formats/test_to_html.py
  • [x] pandas/tests/io/formats/test_to_latex.py

Fichiers restants à vérifier :

  • [ ] 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

Je me suis occupé de pandas/util/_validators.py . Beaucoup de ces autres fichiers me semblent déjà ok aussi.

  • [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

Salut Mattéo,
Je suis intéressé à aider dans cet effort, mais je suis nouveau sur git et
contribuer aux pandas. Seriez-vous en mesure de me guider à travers le
pas ? Peut-être puis-je configurer un partage d'écran cette semaine ?

Merci,
André

Le mar. 26 mai 2020, 15:12 Matteo Santamaria [email protected]
a écrit:

Je me suis occupé de pandas/util/_validators.py. Beaucoup de ces autres fichiers
me semble déjà bien aussi.

  • 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/vacances/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

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/pandas-dev/pandas/issues/29547#issuecomment-634307953 ,
ou se désinscrire
https://github.com/notifications/unsubscribe-auth/APG73XKAUDLFVVQXUS2SJETRTQ5DDANCNFSM4JLZCU5Q
.

Hey @warden706 , je suis en fait assez nouveau ici aussi, donc je n'aurais pas grand-chose à vous montrer. J'ai trouvé cette ressource très utile au fur et à mesure que je trébuchais, vous devriez la vérifier.

Salut,
assez nouveau pour contribuer aussi ici. je m'occupe 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

J'ai vérifié ces autres fichiers et ça me semble ok

  • [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

je suis aussi nouveau ici.
Je vais prendre

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

J'ai une question concernant le changement de code.
par exemple, dans pandas/tests/series/indexing/test_take.py, extrait de code :

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

donc ma suggestion est de le remplacer par:

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])

est-ce assez bon ?

Salut,
J'aimerais faire un PR, alors je fais le test, mais j'ai quelques échecs. J'ai donc essayé de faire des tests également sur master.
Est-il normal que l'exécution de pytest pandas sur un maître forké non édité renvoie quelques échecs ?

Le maître devrait généralement réussir les tests. Assurez-vous d'avoir récupéré les derniers commits. Quels tests échouent ?

@matteosantama J'ai pytest pandas . Ce sont les résultats

================= 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) =================

J'ai remarqué que si j'exécute des tests uniquement sur un seul répertoire (par exemple avec pytest pandas/tests/io ), il n'y a pas d'échec :

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

Depuis le commentaire @OlivierLuG , il semble que presque tous les fichiers aient été corrigés ou étaient déjà ok sans aucune modification. Je vais essayer de mettre à jour la liste des fichiers "encore ouverts".

Corrigée

  • [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

Pas besoin de modifier

  • [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

De plus, je pense que cela aussi est déjà ok

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

Reste à vérifier/corriger

  • [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 avez-vous une mise à jour?

Je reçois toujours des erreurs dont je ne sais pas ce qu'elles signifient.
toute aide serait appréciée

Avez-vous essayé de récupérer les dernières modifications sur master ? Peut-être que cela corrigera certains des tests échoués.

ça n'a pas aidé.
si quelqu'un d'autre veut le prendre, vous pouvez

J'ai un doute : quand on a une situation comme dans 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'\\]")):
...

et ainsi de suite, devrions-nous transformer msg en une fonction et l'appeler avec différentes valeurs de "Col" ? Ou vaut-il mieux le laisser tel quel ?

@MatteoFelici merci pour cette liste mise à jour. J'ai vérifié les derniers modules restants que vous avez appelés et cela semble OK, donc je pense que nous pouvons clore ce problème

Cette page vous a été utile?
0 / 5 - 0 notes