Pandas: 用 f-strings 替换旧的字符串格式语法

创建于 2019-11-11  ·  137评论  ·  资料来源: pandas-dev/pandas

由于我们不再支持 python 3.5,我们现在可以使用新的 f-strings 而不是旧的.format() (显然是%格式)。

笔记:

  • 不要忘记在您的拉取请求的正文消息中链接此问题,只需将此https://github.com/pandas-dev/pandas/issues/29547粘贴到您的拉取请求的正文消息中即可。

  • 如果您更改的任何文件与 #29886 相关,请确保将您的拉取请求也链接到该问题,只需将此https://github.com/pandas-dev/pandas/issues/29886也粘贴到您的拉取请求的正文消息中。

  • 请评论你打算做什么,所以我们不会做双重工作。

  • 如果应该标记为完成的文件未标记,请发表评论让我知道。


要检查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/

以上所有内容也可以用作单衬:

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

如果要查看出现的行号,请将-l替换-n
例如:

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

目前的名单是:

  • [] 熊猫/compat/pickle_compat.py

  • [] 熊猫/_config/config.py

  • [] 熊猫/核心/数组/datetimelike.py

  • []熊猫/核心/阵列/日期时间.py

  • [] 熊猫/核心/阵列/整数.py

  • [] 熊猫/核心/阵列/期间.py

  • [] 熊猫/核心/计算/pytables.py

  • [] 熊猫/核心/config_init.py

  • [] 熊猫/核心/frame.py

  • [] 熊猫/核心/generic.py

  • [] 熊猫/核心/groupby/generic.py

  • [] 熊猫/核心/groupby/groupby.py

  • [] 熊猫/核心/索引/base.py

  • [] 熊猫/核心/索引/multi.py

  • [] 熊猫/核心/索引/range.py

  • [] 熊猫/核心/操作/docstrings.py

  • [] 熊猫/核心/操作/__init__.py

  • [] 熊猫/核心/重塑/merge.py

  • []熊猫/核心/工具/datetimes.py

  • [] 熊猫/io/formats/css.py

  • [] 熊猫/io/formats/excel.py

  • [] 熊猫/io/formats/format.py

  • [] 熊猫/io/formats/html.py

  • [] 熊猫/io/formats/info.py

  • [] 熊猫/io/formats/latex.py

  • [] 熊猫/io/formats/printing.py

  • [] 熊猫/io/formats/style.py

  • [] 熊猫/io/parsers.py

  • [] 熊猫/io/pytables.py

  • [] 熊猫/io/sas/sas_xport.py

  • [] 熊猫/io/stata.py

  • [] 熊猫/_libs/tslibs/c_timestamp.pyx

  • []熊猫/_libs/tslibs/frequencies.pyx

  • []熊猫/_libs/tslibs/parsing.pyx

  • []熊猫/_libs/tslibs/period.pyx

  • []熊猫/_libs/tslibs/strptime.pyx

  • []熊猫/_libs/tslibs/timedeltas.pyx

  • [] 熊猫/绘图/_matplotlib/converter.py

  • [] 熊猫/测试/数组/分类/test_operators.py

  • [] 熊猫/测试/数组/test_datetimelike.py

  • [] 熊猫/测试/dtypes/test_dtypes.py

  • [] 熊猫/测试/扩展/基础/setitem.py

  • [] 熊猫/测试/框架/test_constructors.py

  • [] 熊猫/测试/框架/test_missing.py

  • [] 熊猫/测试/框架/test_to_csv.py

  • [] 熊猫/测试/groupby/aggregate/test_other.py

  • [] 熊猫/测试/索引/日期时间/test_date_range.py

  • [] 熊猫/测试/索引/日期时间/test_datetime.py

  • [] 熊猫/测试/索引/日期时间/test_formats.py

  • [] 熊猫/测试/索引/日期时间/test_partial_slicing.py

  • [] 熊猫/测试/索引/间隔/test_constructors.py

  • [] 熊猫/测试/索引/间隔/test_interval.py

  • [] 熊猫/测试/索引/multi/test_format.py

  • [] 熊猫/测试/索引/期间/test_formats.py

  • [] 熊猫/测试/索引/test_base.py

  • []熊猫/测试/索引/timedeltas/test_timedelta.py

  • [] 熊猫/测试/索引/test_categorical.py

  • [] 熊猫/测试/索引/test_coercion.py

  • []熊猫/测试/io/excel/test_openpyxl.py

  • [] 熊猫/测试/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

  • [] 熊猫/测试/io/test_html.py

  • [] 熊猫/测试/io/test_sql.py

  • [] 熊猫/测试/io/test_stata.py

  • [] 熊猫/测试/减少/test_reductions.py

  • [] 熊猫/测试/重塑/test_concat.py

  • [] 熊猫/测试/重塑/test_melt.py

  • [] 熊猫/测试/标量/期间/test_period.py

  • [] 熊猫/测试/标量/timedelta/test_timedelta.py

  • [] 熊猫/测试/标量/时间戳/test_constructors.py

  • [] 熊猫/测试/系列/索引/test_numeric.py

  • [] 熊猫/测试/系列/索引/test_take.py

  • [] 熊猫/测试/系列/索引/test_where.py

  • [] 熊猫/测试/系列/方法/test_rename.py

  • [] 熊猫/测试/系列/test_api.py

  • [] 熊猫/测试/系列/test_constructors.py

  • [] 熊猫/测试/系列/test_datetime_values.py

  • [] 熊猫/测试/系列/test_repr.py

  • [] 熊猫/测试/test_strings.py

  • [] 熊猫/测试/工具/test_to_datetime.py

  • [] 熊猫/测试/tseries/holiday/test_calendar.py

  • [] 熊猫/测试/tseries/holiday/test_holiday.py

  • [] 熊猫/测试/tslibs/test_parsing.py

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

  • [] 熊猫/tseries/frequencies.py

  • [] 熊猫/实用程序/_decorators.py

  • [] 熊猫/实用程序/_test_decorators.py

  • [] 熊猫/实用程序/_validators.py

  • [] 熊猫/_version.py


笔记:

该列表可能会随着文件的不断移动/重命名而发生变化。


从这个PR继承的文件和命令。

Style good first issue

最有用的评论

用这个https://github.com/pandas-dev/pandas/pull/32007添加了我的第一个拉取请求:
熊猫/测试/框架/test_to_csv.py

所有137条评论

我在拿:

  • [x] 熊猫/_libs/groupby.pyx

  • [x] 熊猫/_libs/hashing.pyx

  • [x] 熊猫/_libs/index.pyx

  • [x] 熊猫/_libs/internals.pyx

  • [x] 熊猫/_libs/interval.pyx

  • [x] 熊猫/_libs/lib.pyx

  • [x] 熊猫/_libs/ops.pyx

  • [x] 熊猫/_libs/parsers.pyx

  • [x] 熊猫/_libs/reduction.pyx

  • [x] 熊猫/_libs/sparse.pyx

  • [x] 熊猫/_libs/testing.pyx

  • [x] 熊猫/_libs/tslib.pyx

  • [x] 熊猫/_libs/window.pyx

我会采取:

  • [x] 熊猫/测试/索引/test_base.py
  • [x] 熊猫/测试/索引/test_category.py
  • [x] 熊猫/测试/索引/test_common.py
  • [x] 熊猫/测试/索引/test_numeric.py

开始,如果可以的话!

@MomIsBestFriend你能推荐任何用于这种转换的工具吗? 快速浏览给了我这些:

  1. 升级
  2. 字符串化
  3. 飞翔

我对他们中的任何一个都没有经验,但他们在这里可能会很有帮助

您好@SaturnFromTitan ,我个人有时会使用pyupgrade但仅当文件中仅包含一些过时的字符串格式时才使用。 然后我查看更改并修复pyupgrade 是否有问题。

当它们是出现很多次的文件时,我会手动查找“复杂”的文件(例如'%.2f' % my_float )并让它处理常见的文件,通常它是正确的。

此外,某些更改会使更改后的文件与 pep8 不兼容,因此也需要修复该问题,否则将无法通过测试。

将采取下一步:

  • [x] 熊猫/兼容/__init__.py

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

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

  • [x] pandas/compat/_optional.py

我会采取:

  • [x] 熊猫/核心/重塑/concat.py
  • [x] 熊猫/核心/重塑/melt.py
  • [] 熊猫/核心/重塑/merge.py
  • [x] 熊猫/核心/重塑/pivot.py
  • [x] pandas/core/reshape/reshape.py
  • [] 熊猫/核心/重塑/tile.py

每个人对将其标记为good first issue的想法是什么? 它应该适用于这里的大多数文件。 需要进行的更改通常每个文件只有几行左右,进行更改的人不需要太担心影响代码的其他部分(因为执行的结束函数是相同的)。

我正在想象一个类似于#28926 的设置。

f 字符串替换放置在:

  • [x] 熊猫/核心/groupby/generic.py
  • [x] 熊猫/核心/groupby/groupby.py
  • [x] 熊猫/核心/groupby/grouper.py
  • [x] 熊猫/核心/groupby/ops.py

参考 #29701

将采取下一步:

  • [x] 熊猫/_libs/tslibs/conversion.pyx

  • [x] 熊猫/_libs/tslibs/c_timestamp.pyx

  • [x] 熊猫/_libs/tslibs/fields.pyx

  • [x] 熊猫/_libs/tslibs/nattype.pyx

  • [x] 熊猫/_libs/tslibs/np_datetime.pyx

  • [x] 熊猫/_libs/tslibs/offsets.pyx

  • [x] 熊猫/_libs/tslibs/parsing.pyx

  • [x] 熊猫/_libs/tslibs/timestamps.pyx

  • [x] 熊猫/_libs/tslibs/timezones.pyx

  • [x] 熊猫/_libs/tslibs/tzconversion.pyx

我会拿

  • [x] 熊猫/绘图/_core.py
  • [x] 熊猫/绘图/_matplotlib/boxplot.py
  • [x] 熊猫/绘图/_matplotlib/converter.py
  • [x] 熊猫/绘图/_matplotlib/core.py
  • [x] 熊猫/绘图/_matplotlib/misc.py
  • [x] 熊猫/绘图/_matplotlib/style.py
  • [x] 熊猫/绘图/_matplotlib/timeseries.py
  • [x] 熊猫/绘图/_matplotlib/tools.py
  • [x] 熊猫/绘图/_misc.py

参考 #29781

我会采取:

  • [x] 熊猫/核心/重塑/concat.py
  • [x] 熊猫/核心/重塑/melt.py
  • [] 熊猫/核心/重塑/merge.py
  • [x] 熊猫/核心/重塑/pivot.py
  • [x] pandas/core/reshape/reshape.py
  • [] 熊猫/核心/重塑/tile.py

每个人对将其标记为good first issue的想法是什么? 它应该适用于这里的大多数文件。 需要进行的更改通常每个文件只有几行左右,进行更改的人不需要太担心影响代码的其他部分(因为执行的结束函数是相同的)。

我正在想象一个类似于#28926 的设置。

当然我也相应地贴上了标签。 谢谢

接下来:

  • [x] 熊猫/io/msgpack/_packer.pyx

  • [x] 熊猫/io/msgpack/_unpacker.pyx

  • [x] 熊猫/io/sas/sas.pyx

抱歉,我刚刚注意到您要求指定要处理的文件。 我只是一直在使用

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

查找任何旧格式。 我道歉

抱歉,我刚刚注意到您要求指定要处理的文件。 我只是一直在使用

@ForTimeBeing这就是我编辑帖子的原因,很高兴你注意到:)

你能发布你的工作吗? 以防万一有人搜索评论。

当然,我拿了;

  • [x] pandas/tests/resample/test_datetime_index.py
  • [x] pandas/tests/resample/test_time_grouper.py
  • [x] 熊猫/测试/tseries/offsets/common.py
  • [x] 熊猫/错误/__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] 熊猫/测试/扩展/箭头/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] 熊猫/测试/标量/test_nat.py
  • [x] 熊猫/测试/tseries/offsets/common.py

和下

  • [x] 熊猫/tseries/frequencies.py

.format 仍然存在并显示在 grep 搜索中,但没有文字可以更改为 fstring。 不确定是否有另一种方法可以做到这一点或保持原样,但现在该文件中的所有文字都交换为 fstring 。

.format 仍然存在并显示在 grep 搜索中,但没有文字可以更改为 fstring。 不确定是否有另一种方法可以做到这一点或保持原样,但现在该文件中的所有文字都交换为 fstring 。

@暂时的
没问题:)
谢谢你的公关:)

我拿了

  • [x] 熊猫/核心/窗口/common.py
  • [x] 熊猫/核心/窗口/ewm.py
  • [x] 熊猫/核心/窗口/expanding.py
  • [x] 熊猫/核心/窗口/rolling.py

参考 #29952

我会采取:

  • [x] ci/print_skipped.py

  • [x] 文档/make.py

  • [x] 文档/sphinxext/announce.py

  • [x] doc/sphinxext/contributors.py

正在处理:'pandas/core/dtypes/dtypes.py'

拿:

  • [x] 熊猫/核心/阵列/base.py
  • [x] pandas/core/arrays/datetimelike.py
  • [x] pandas/core/arrays/datetimes.py
  • [x] 熊猫/核心/数组/string_.py
  • [x] pandas/core/arrays/timedeltas.py
  • [x] 熊猫/核心/common.py
  • [x] 熊猫/核心/计算/align.py
  • [x] 熊猫/核心/计算/引擎.py
  • [x] 熊猫/核心/计算/eval.py
  • [x] 熊猫/核心/计算/表达式.py
  • [x] 熊猫/核心/计算/expr.py
  • [x] 熊猫/核心/计算/ops.py
  • [x] 熊猫/核心/计算/pytables.py
  • [x] 熊猫/核心/计算/范围.py
  • [x] 熊猫/核心/frame.py
  • [x] 熊猫/核心/generic.py
  • [x] 熊猫/核心/strings.py

参考:#30116、#30135、#30363

我会采取:

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

我有预定义字符串的问题。 我找到了解决方案,但我不确定它是否正确。
想象一下您有预定义字符串的情况,例如:
THE_MESSAGE = "带有参数的消息。Arg1:{arg1},Arg2:{arg2}。"
用 .format() 调用,如:
THE_MESSAGE.format(arg1_str, arg2_str)。

我可以通过下面描述的方式使用 lambda 函数重写它吗?
THE_MESSAGE = lambda arg1, arg2: f"带参数的消息。Arg1: {arg1}, Arg2: {arg2}。"

并调用它
THE_MESSAGE(arg1_str, arg2_str)?

我知道这会起作用,但我不确定这是否是解决此问题的最佳方法:)

我有预定义字符串的问题。

我完全理解,正如pep 498解释的那样:

常规字符串在编译时连接,f 字符串在运行时连接。

我们需要想办法去除使用.format()并使用其他字符串模板。

目前我唯一能想到的是来自 stdlib 的string.Template ,但我真的不知道。

@jbrockmendel你能帮帮我们吗?

@MomIsBestFriend你认为 lambda 函数对这个来说

@MomIsBestFriend我认为这可能是一种情况,其中有几个.format是要走的路

@MomIsBestFriend你认为 lambda 函数对这个来说

我不是专家,请询问其中一位开发人员。

  • [x] 熊猫/核心/accessor.py
  • [x] 熊猫/核心/算法.py

参考 #30120

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

参考 #30121

  • [x] 熊猫/核心/数组/_ranges.py
  • [x] pandas/core/arrays/integer.py
  • [x] pandas/core/arrays/interval.py
  • [x] 熊猫/核心/数组/numpy_.py
  • [x] pandas/core/arrays/period.py

参考 #30124

我会拿

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

编辑:
服用:

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

我会拿

  • [] 熊猫/核心/config_init.py
  • [x] 熊猫/核心/construction.py
  • [x] 熊猫/核心/dtypes/base.py
  • [x] 熊猫/核心/dtypes/cast.py

谢谢!

我会采取:

熊猫/测试/绘图/test_converter.py

熊猫/测试/绘图/test_datetimelike.py

熊猫/测试/绘图/test_series.py

我会拿

  • [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] 熊猫/核心/索引/multi.py
  • [x] pandas/core/indexes/numeric.py
  • [x] pandas/core/indexes/period.py
  • [x] 熊猫/核心/索引/范围.py
  • [x] pandas/core/indexes/timedeltas.py

30273

你好, @MomIsBestFriend

熊猫/测试/绘图/test_converter.py

熊猫/测试/绘图/test_datetimelike.py

熊猫/测试/绘图/test_series.py

已经完成。 谢谢你。

你好
我可以做

  • [] 熊猫/核心/dtypes/dtypes.py
  • [] 熊猫/核心/dtypes/common.py

谢谢

你好,我拿

  • [x] setup.py
  • [x] 熊猫/_config/config.py
  • [x] 熊猫/_config/localization.py

谢谢!

我拿了:

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

链接到我的公关: https :

我将致力于:

  • [] 熊猫/核心/阵列/base.py

这里是因为标签“好第一个问题”

我会采取:

  • [] 熊猫/io/sql.py

  • [] 熊猫/io/stata.py

谢谢!

我会去做的:

  • [x] 熊猫/核心/resample.py
  • [x] 熊猫/核心/indexing.py
  • [x] pandas/core/internals/construction.py
  • [x] pandas/core/internals/managers.py
  • [x] 熊猫/核心/内部/blocks.py

我想带
我刚刚对它做了一个拉取请求

  • [x] 熊猫/核心/indexers.pyz

太好了,一直想参与 Pandas。 当我知道我可以在接下来的几周内完成什么时会更新......

我可以做
熊猫/_version.py

跳跃:

  • [] 熊猫/核心/数组/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

我会带pandas/io/formats/csvs.py

我在拿:

  • [x] pandas/core/series.py(代码中没有老式的字符串方法,只有文档)
  • [x] pandas/core/tools/datetimes.py(已更改代码,将在 12 月 25 日之前测试并发出 pullrequest)

问题:是否有关于 API 参考中是否应保留旧式字符串格式的答案?

例如,在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

用 f-string 示例替换它会强制执行以下操作:

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

这不是一个精确的替换(f-string 不是一个函数,我使用 lambda 使它成为一个复制 'I am a '.format() 的净效果的函数),并引发了一些关于放置的棘手问题文档中的一些非最佳实践。

目前,我正在考虑将文档更改为超出范围的、等待社区决定如何处理此类案例。

已经完成(不确定由谁完成):
熊猫/测试/数组/间隔/test_ops.py

我也会带

  • [x] 熊猫/测试/标量/间隔/test_ops.py
  • [x] 熊猫/测试/计算/test_eval.py
  • [x] 熊猫/测试/dtypes/*
  • [x] pandas/tests/dtypes/cast/test_infer_dtype.py
  • [x] 熊猫/测试/dtypes/test_dtypes.py
  • [x] 熊猫/测试/dtypes/test_inference.py

问题:是否有关于 API 参考中是否应保留旧式字符串格式的答案?

抄送@WillAyd @jreback

我不知道您认为“老式字符串格式”是什么,但是.format将有一些 f-strings 不涵盖的用例(即延迟参数化),因此确保它仍然存在. 我不认为我们应该在任何地方使用 Py27 字符串格式语法

我会采取:

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

我会拿

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

在#30601中,我承担了

  • [x] 熊猫/io/excel/_base.py
  • [x] pandas/io/excel/_odfreader.py
  • [x] pandas/io/excel/_openpyxl.py
  • [x] 熊猫/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

如果可以的话,我可以从下面的两个文件开始!

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

这些更改已在 #30604 中完成

承担:

  • [] 熊猫/核心/操作/array_ops.py
  • [] 熊猫/核心/操作/dispatch.py
  • [] 熊猫/核心/操作/docstrings.py
  • [] 熊猫/核心/ops/invalid.py
  • [] 熊猫/核心/操作/方法.py
  • [] 熊猫/核心/ops/roperator.py

是否有一种首选方法可以记录在 PR 中保留原样的.format旧预期用途? 在(错误地)假设某个东西是一个很好的用例的情况下,它在 PR 中被忽略了

致力于

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

我会拿

  • [X] 脚本/validate_docstrings.py
  • [X] 脚本/测试/test_validate_docstrings.py
  • [X] 脚本/generate_pip_deps_from_conda.py
  • [X] 脚本/download_wheels.py
  • [X] 熊猫/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

我想尝试:

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

我想采取:

  • [x] pandas/core/arrays/period.py
  • [x] 熊猫/核心/dtypes/common.py
  • [x] 熊猫/核心/dtypes/dtypes.py
  • [x] 熊猫/核心/frame.py

谢谢@HH-MWB

我将采取:

  • [] 熊猫/核心/数组/timedeltas.py

我发现@Appender()中的很多代码都使用%来格式化字符串。 这些代码使用_shared_docs作为模板,它主要在 /pandas/core/generic.py 中定义,并被用于跨多个文件。

我想替换所有_shared_docs相关格式。 此更改将需要修改大量文件,但我将无法检查这些文件中的所有其他字符串格式语法。

这听起来好吗? 我应该这样做吗? @datapythonista @MomIsBestFriend

我发现@Appender()中的很多代码都使用%来格式化字符串。 这些代码使用_shared_docs作为模板,它主要在 /pandas/core/generic.py 中定义,并被用于跨多个文件。

我想替换所有_shared_docs相关格式。 此更改将需要修改大量文件,但我将无法检查这些文件中的所有其他字符串格式语法。

这听起来好吗? 我应该这样做吗? @datapythonista @MomIsBestFriend

@HH-MWB 我真的没有发言权,我认为 jreback、WillAyd 和 datapythonista(不标记,因为我不想打扰他们),可以比我更能帮助你:)

你想用 Appender 替换什么? 我不认为可以是 f-strings

用 .format 替换 Py27 语法就可以了,但可能值得开一个单独的问题来讨论

你想用 Appender 替换什么? 我不认为可以是 f-strings

用 .format 替换 Py27 语法就可以了,但可能值得开一个单独的问题来讨论

@WillAyd我确实认为 stdlib 中的string.Template是正确的方法。
有什么想法吗?

@WillAyd ,抱歉我没有说清楚。 是的,我最初的想法是替代%.format ,并且还更换代码一样%(XXX)s{XXX}_shared_docs模板。 就像@MomIsBestFriend所说的, string.Template将是另一种选择。

我打开了一个单独的问题进行更多讨论。 谢谢!

承担:

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

参考#31412

@MomIsBestFriend你好! 第一次开源贡献者在这里! 我对我的第一个 PR 感到非常兴奋! 我将尝试处理以下文件:
版本管理器
网络/pandas_web.py
谢谢!!

@drewseibert versioneer.py 是vendored,所以我们不想编辑它@MomIsBestFriend你能从列表中删除它以避免这种混淆吗

@jbrockmendel感谢您的

此外,当我尝试推送提交时出现 403 权限错误。 我添加了一个 SSH 密钥并尝试设置远程 URL。 无论我是使用 SSH 还是 HTTPS 克隆,都不适合我。 任何帮助表示赞赏! 谢谢!

@MomIsBestFriend你好! 第一次开源贡献者在这里! 我对我的第一个 PR 感到非常兴奋! 我将尝试处理以下文件:
版本管理器
网络/pandas_web.py
谢谢!!

祝你好运@drewseibert

我会采取:

熊猫/核心/重塑/ concat.py
熊猫/核心/重塑/melt.py
熊猫/核心/重塑/merge.py
熊猫/核心/重塑/pivot.py
熊猫/核心/重塑/reshape.py

现在正在做这个:

熊猫/测试/io/test_pickle.py

你好
我会拿

熊猫/实用程序/_print_versions.py

pandas/util/_test_decorators.py

https://github.com/pandas-dev/pandas/pull/31628 应该没问题:)

我要pandas/tests/frame/test_repr_info.py

参考: https :

嘿,我拿

  • [] 熊猫/核心/阵列/整数.py

可以在列表中检查以下文件...
网络/pandas_web.py
熊猫/测试/io/test_pickle.py

谢谢!

另一个要检查的...文件中不需要 f 字符串:
熊猫/测试/系列/索引/test_boolean.py

我现在要处理这个......

熊猫/测试/系列/索引/test_indexing.py

谢谢@drewseibert

这里还有工作吗? 我想贡献

@3vts是的,当然:)

我想你可以拿

pandas/tests/util/test_assert_extension_array_equal.py


如果你想要更多,LMK。

有什么我可以帮忙的! 这将是我的第一个开源贡献,所以我可能需要一些帮助。 我已经阅读了一些如何贡献文章,但仍然如此。

你希望我处理哪些?

@MomIsBestFriend似乎pandas/tests/util/test_assert_extension_array_equal.py已在 PR #30816

@3vts @GrizzledLabs - 随意获取上面列表中尚未完成的任何文件(并检查没有其他人正在处理它) - 然后在这里评论您正在处理的内容! 谢谢 !

pandas/core/arrays/boolean.py 似乎已经完成。 我看到了一个 f'string 而没有 .format(),除非我错过了。

pandas/core/dtypes/common.py 似乎也已经完成了。 f'strings 但没有 .format()

其中一些修复程序是否跨越多个文件? 一些不包含单个 .format(),我想知道文件之间是否调用了函数? 单个修复是否需要更改多个文件?

嗨,这里是第一次贡献者! 迫不及待要上路了!
最初我想采取这些:

熊猫/兼容/pickle_compat.py
熊猫/_config/config.py

但后来我看到它已经完成并合并了, @MomIsBestFriend你能不能更新顶部的列表,把它们打勾?

我会拿这些:

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

  • [] 熊猫/测试/io/pytables/conftest.py

  • [] 熊猫/测试/io/pytables/test_store.py

  • [] 熊猫/测试/io/pytables/test_timezones.py

@MomIsBestFriend查看线程我发现预定义字符串有一个例外。 这仍然适用吗? 或者我们现在有。 解决方法?

我有预定义字符串的问题。

我完全理解,正如pep 498解释的那样:

常规字符串在编译时连接,f 字符串在运行时连接。

我们需要想办法去除使用.format()并使用其他字符串模板。

目前我唯一能想到的是来自 stdlib 的string.Template ,但我真的不知道。

@jbrockmendel你能帮帮我们吗?

你好,第一次投稿 👋 。 我会采取:

  • [ X ] pandas/tests/tseries/frequencies/test_inference.py
  • [ X ] pandas/tests/series/methods/test_argsort.py
  • [ X ] 熊猫/测试/系列/test_constructors.py
  • [ X ] 熊猫/测试/索引/common.py
  • [ X ] pandas/tests/indexing/test_coercion.py
  • [ X ] 熊猫/测试/索引/test_iloc.py
  • [ X ] pandas/tests/indexing/test_indexing.py
  • [ X ] 熊猫/测试/索引/test_loc.py
  • [ X ] 熊猫/测试/索引/common.py
  • [ X ] 熊猫/测试/索引/datetimelike.py

@monicaw218 ,我只会从一个文件开始,一旦您的拉取请求合并,您就可以继续处理其余的文件。 第一个贡献通常比预期的要棘手,对于我们(审阅者)来说,如果拉取请求很小,它通常也有帮助。 特别是对于可能需要更多反馈的新贡献者。

可以从列表中检查这两个文件:
👍
熊猫/io/parsers.py
熊猫/io/pytables.py

这些也很好:

熊猫/测试/groupby/test_apply.py
熊猫/测试/groupby/test_bin_groupby.py

这些已准备就绪 #31914
“熊猫/测试/扩展/十进制/test_decimal.py”
“熊猫/测试/框架/索引/test_categorical.py”
“熊猫/测试/框架/方法/test_describe.py”
“熊猫/测试/框架/方法/test_duplicated.py”
“熊猫/测试/框架/方法/test_to_dict.py”
“熊猫/测试/框架/test_alter_axes.py”
“熊猫/测试/框架/test_api.py”
“熊猫/测试/框架/test_constructors.py”
“熊猫/测试/框架/test_dtypes.py”
“熊猫/测试/框架/test_join.py”

我将采用“pandas/io/sas/sas_xport.py”。

这些已准备就绪 #31933

“熊猫/测试/框架/test_operators.py”
“熊猫/测试/框架/test_reshape.py”
“熊猫/测试/帧/test_timeseries.py”
“熊猫/测试/索引/日期时间/test_scalar_compat.py”
“熊猫/测试/索引/日期时间/test_tools.py”
“熊猫/测试/索引/间隔/test_indexing.py”
“熊猫/测试/索引/间隔/test_interval.py”

这些包含在 #31945 中

“熊猫/测试/索引/间隔/test_setops.py”
“熊猫/测试/索引/multi/test_compat.py”
“熊猫/测试/索引/期间/test_constructors.py”
“熊猫/测试/索引/timedeltas/test_constructors.py”
“熊猫/测试/索引/test_floats.py”

这些包含在 #31963 中

“熊猫/测试/内部/test_internals.py”
“熊猫/测试/io/excel/test_readers.py”
“熊猫/测试/io/excel/test_style.py”
“熊猫/测试/io/excel/test_writers.py”
“熊猫/测试/io/excel/test_xlrd.py”
“熊猫/测试/io/formats/test_console.py”
“熊猫/测试/io/formats/test_to_html.py”
“熊猫/测试/io/formats/test_to_latex.py”
“熊猫/测试/io/generate_legacy_storage_files.py”

这些包含在 #31967 中

"pandas/tests/io/parser/test_c_parser_only.py"
“熊猫/测试/io/parser/test_common.py”
“熊猫/测试/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"
“熊猫/测试/io/pytables/conftest.py”
“熊猫/测试/io/pytables/test_store.py”

这些包含在 #31980 中

“熊猫/测试/io/pytables/test_timezones.py”
“熊猫/测试/io/test_html.py”
“熊猫/测试/io/test_stata.py”
“熊猫/测试/重新采样/test_period_index.py”
“熊猫/测试/重塑/合并/test_join.py”
“熊猫/测试/重塑/合并/test_merge.py”
“熊猫/测试/重塑/合并/test_merge_asof.py”
“熊猫/测试/重塑/test_melt.py”
“熊猫/测试/重塑/test_pivot.py”
“熊猫/测试/标量/timedelta/test_constructors.py”

这些包含在 #31986 中

“熊猫/测试/标量/时间戳/test_constructors.py”
“熊猫/测试/标量/时间戳/test_rendering.py”
“熊猫/测试/标量/时间戳/test_unary_ops.py”
“熊猫/测试/系列/方法/test_nlargest.py”
“熊猫/测试/系列/test_analytics.py”
“熊猫/测试/系列/test_api.py”
“熊猫/测试/系列/test_dtypes.py”
“熊猫/测试/系列/test_ufunc.py”

用这个https://github.com/pandas-dev/pandas/pull/32007添加了我的第一个拉取请求:
熊猫/测试/框架/test_to_csv.py

这些包含在 #32032 中

“熊猫/测试/test_downstream.py”
“熊猫/测试/test_multilevel.py”
“熊猫/测试/工具/test_numeric.py”
“熊猫/测试/tseries/频率/test_inference.py”
“熊猫/测试/tslibs/test_parse_iso8601.py”
“熊猫/测试/窗口/时刻/test_moments_rolling.py”

此文件包含在 #32029 中:

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

https://github.com/pandas-dev/pandas/pull/32044 中包含的文件

  • 脚本/find_commits_touching_func.py

这些包含在 #32034 中

“熊猫/核心/阵列/interval.py”
“熊猫/核心/util/hashing.py”
“熊猫/io/格式/format.py”
“熊猫/io/formats/html.py”
“熊猫/io/formats/latex.py”
“熊猫/io/格式/printing.py”
“熊猫/io/parsers.py”
“熊猫/测试/数组/分类/test_dtypes.py”
“熊猫/测试/数组/分类/test_operators.py”

这些都做好了...

熊猫/核心/ops/invalid.py
熊猫/核心/操作/methods.py
熊猫/核心/操作/roperator.py

#32063 中包含的文件:

  • 熊猫/测试/tseries/频率/test_inference.py
  • 熊猫/测试/tslibs/test_parse_iso8601.py

嗨,我想使用 scripts/validate_docstrings.py

拉取请求中包含的文件 #32189

  • 熊猫/测试/索引/日期时间/test_to_period.py

这个问题解决了吗? 我一直在查看该线程顶部列表中未标记的文件,似乎 .format() 字符串已被转换

pandas//util/_decorators.py 已完成(失败的行是注释)

pandas//core/indexes/base.py 应该被标记掉(失败再次来自评论)

嗨,我开始查看 pandas/core/generic.py 并很快意识到将字符串模板从插入%的字符串更改为string.Template将需要在Substitute许多地方进行更改Appender装饰器。

您的目标是删除%字符串插值的所有用法,在这种情况下,这项工作将是必要的,还是您可以使用%插值?

@smartvinnetou当谈到AppenderSubstitute我们现在试图用doc装饰器替换它们。 见https://github.com/pandas-dev/pandas/issues/31942

@smartvinnetou当谈到AppenderSubstitute我们现在试图用doc装饰器替换它们。 见#31942

@MomIsBestFriend您是否愿意跳过这张票中pandas/core/generic.py的升级并在 #31942 下进行? 或者我应该代替AppenderSubtitute在装修generic.py用新的doc这张票在装饰删除旧的%插值?

@smartvinnetou当谈到AppenderSubstitute我们现在试图用doc装饰器替换它们。 见#31942

@MomIsBestFriend您是否愿意跳过这张票中pandas/core/generic.py的升级并在 #31942 下进行? 或者我应该代替AppenderSubtitute在装修generic.py用新的doc这张票在装饰删除旧的%插值?

@smartvinnetoupandas/core/generic.py的情况下,在 #31942 下(如果我理解正确的话)

您好,发现很多文件已经完成或不需要更改,但被标记为未完成。 只是想问一下这个问题是否已解决并且不小心没有标记,或者你们仍在处理它。 如果它没有解决,我也想贡献。 这些是一些已完成但未标记的文件

  • 熊猫/核心/generic.py
  • 熊猫/核心/数组/datetimes.py
  • 熊猫/核心/阵列/整数.py
  • 熊猫/核心/阵列/期间.py
  • 熊猫/核心/数组/timedeltas.py
  • 熊猫/核心/config_init.py
  • 熊猫/核心/dtypes/dtypes.py
  • 熊猫/核心/frame.py

@sachinh35我已经更新了列表:)

很难跟踪

感谢您更新列表! @MomIsBestFriend

我想为pandas/core/ops/下的文件贡献 #32939 。 应该如何处理文档字符串,例如https://github.com/pandas-dev/pandas/blob/master/pandas/core/ops/docstrings.py#L564有时也会导入其他文件? 包装在函数中?

我变了

  • 熊猫/核心/sorting.py
  • 熊猫/测试/索引/日期时间/test_date_range.py
  • 熊猫/测试/索引/间隔/test_interval.py
  • 熊猫/测试/索引/test_coercion.py
  • 熊猫/测试/重塑/test_concat.py
  • 熊猫/实用程序/_decorators.py

修改了两个文件:
熊猫/_libs/tslibs/timedeltas.pyx
熊猫/_libs/tslibs/timestamps.pyx

请注意,以下内容没有问题。 您也可以标记为完成:
熊猫/_libs/tslibs/c_timestamp.pyx
熊猫/_libs/tslibs/frequencies.pyx
熊猫/_libs/tslibs/parsing.pyx
熊猫/_libs/tslibs/period.pyx
熊猫/_libs/tslibs/strptime.pyx

注意:这是我有史以来的第一个 PR。 让我知道是否需要改进。

我已经完成了该主题以更新列表 + 检查一些文件。

文件标记为完成,没有任何提交

(无需更改任何内容):

  • [x] 熊猫/_config/config.py
  • [x] 熊猫/_version.py
  • [x] 熊猫/compat/pickle_compat.py
  • [x] 熊猫/核心/计算/pytables.py
  • [x] 熊猫/核心/索引/base.py
  • [x] 熊猫/核心/索引/multi.py
  • [x] 熊猫/核心/索引/范围.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] 熊猫/io/formats/html.py
  • [x] 熊猫/io/formats/info.py
  • [x] 熊猫/io/formats/latex.py
  • [x] pandas/io/formats/printing.py
  • [x] 熊猫/io/formats/style.py
  • [x] 熊猫/io/parsers.py
  • [x] 熊猫/io/pytables.py
  • [x] pandas/io/sas/sas_xport.py
  • [x] 熊猫/io/stata.py
  • [x] pandas/tests/arrays/categorical/test_operators.py
  • [x] pandas/tests/arrays/test_datetimelike.py
  • [x] 熊猫/测试/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] 熊猫/测试/索引/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

要检查的剩余文件:

  • [] 熊猫/核心/数组/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
  • [] 熊猫/测试/io/test_html.py
  • [] 熊猫/测试/io/test_sql.py
  • [] 熊猫/测试/io/test_stata.py
  • [] 熊猫/测试/减少/test_reductions.py
  • [] 熊猫/测试/重塑/test_melt.py
  • [] 熊猫/测试/标量/期间/test_period.py
  • [] 熊猫/测试/标量/timedelta/test_timedelta.py
  • [] 熊猫/测试/标量/时间戳/test_constructors.py
  • [] 熊猫/测试/系列/索引/test_numeric.py
  • [] 熊猫/测试/系列/索引/test_take.py
  • [] 熊猫/测试/系列/索引/test_where.py
  • [] 熊猫/测试/系列/方法/test_rename.py
  • [] 熊猫/测试/系列/test_api.py
  • [] 熊猫/测试/系列/test_constructors.py
  • [] 熊猫/测试/系列/test_datetime_values.py
  • [] 熊猫/测试/系列/test_repr.py
  • [] 熊猫/测试/test_strings.py
  • [] 熊猫/测试/工具/test_to_datetime.py
  • [] 熊猫/测试/tseries/holiday/test_calendar.py
  • [] 熊猫/测试/tseries/holiday/test_holiday.py
  • [] 熊猫/测试/tslibs/test_parsing.py
  • [] pandas/tests/util/test_assert_frame_equal.py
  • [] 熊猫/tseries/frequencies.py
  • [] 熊猫/实用程序/_test_decorators.py
  • [] 熊猫/实用程序/_validators.py

我照顾了pandas/util/_validators.py 。 许多其他文件对我来说似乎也不错。

  • [x] pandas/util/_test_decorators.py
  • [x] 熊猫/tseries/frequencies.py
  • [x] pandas/tests/util/test_assert_frame_equal.py
  • [x] 熊猫/测试/tslibs/test_parsing.py
  • [x] 熊猫/测试/tseries/holiday/test_holiday.py
  • [x] pandas/tests/tseries/holiday/test_calendar.py
  • [x] 熊猫/测试/工具/test_to_datetime.py
  • [x] 熊猫/测试/test_strings.py
  • [x] 熊猫/测试/系列/test_repr.py
  • [x] pandas/tests/series/test_datetime_values.py
  • [x] 熊猫/测试/系列/test_constructors.py
  • [x] 熊猫/测试/系列/test_api.py

嗨,马特奥,
我有兴趣帮助完成这项工作,但我是 git 的新手并且
为熊猫做出贡献。 你能不能陪我走过
脚步 ? 也许这周我可以设置一个屏幕共享?

谢谢,
安德鲁

2020 年 5 月 26 日,星期二,下午 3:12,Matteo Santamaria通知@ github.com
写道:

我处理了 pandas/util/_validators.py。 许多其他文件
对我来说已经很好了。

  • pandas/util/_test_decorators.py
  • 熊猫/tseries/frequencies.py
  • pandas/tests/util/test_assert_frame_equal.py
  • 熊猫/测试/tslibs/test_parsing.py
  • 熊猫/测试/tseries/holiday/test_holiday.py
  • 熊猫/测试/tseries/holiday/test_calendar.py
  • 熊猫/测试/工具/test_to_datetime.py
  • 熊猫/测试/test_strings.py
  • 熊猫/测试/系列/test_repr.py
  • 熊猫/测试/系列/test_datetime_values.py
  • 熊猫/测试/系列/test_constructors.py
  • 熊猫/测试/系列/test_api.py


您收到此消息是因为您订阅了此线程。
直接回复本邮件,在GitHub上查看
https://github.com/pandas-dev/pandas/issues/29547#issuecomment-634307953
或取消订阅
https://github.com/notifications/unsubscribe-auth/APG73XKAUDLFVVQXUS2SJETRTQ5DDANCNFSM4JLZCU5Q
.

@warden706 ,我实际上也是新来的,所以我没有什么可以给你看的。 我发现这个资源非常有用,因为我偶然发现,你应该检查一下。

你好,
在这里也很新。 我照顾

  • [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] 熊猫/测试/重塑/test_melt.py
  • [x] pandas/tests/scalar/timedelta/test_timedelta.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

我也是新来的。
我会拿

  • [] 熊猫/测试/系列/索引/test_numeric.py
  • [] 熊猫/测试/系列/索引/test_take.py
  • [] 熊猫/测试/系列/索引/test_where.py

我有一个关于代码更改的问题。
例如,在 pandas/tests/series/indexing/test_take.py 中,代码片段:

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

所以我的建议是将其替换为:

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

够好吗?

你好,
我想做一个 PR,所以我正在运行测试,但我有几次失败。 所以我也尝试在 master 上运行测试。
在未编辑的分叉主服务器上运行pytest pandas返回几次失败是否正常?

大师一般应该通过测试。 确保你已经拉取了最新的提交。 哪些测试失败?

@matteosantama我提取了最后一次提交,重新安装了环境并使用pytest pandas重新运行测试。 这些是结果

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

我注意到,如果我只在单个目录上运行测试(例如使用pytest pandas/tests/io ),则没有失败:

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

自从@OlivierLuG发表评论以来,似乎几乎所有文件都已更正或未经任何修改就已经可以了。 我将尝试更新有关“仍然打开”文件的列表。

更正

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

无需修改

  • [X] pandas/util/_test_decorators.py
  • [X] 熊猫/tseries/frequencies.py
  • [X] pandas/tests/util/test_assert_frame_equal.py
  • [X] 熊猫/测试/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] 熊猫/测试/test_strings.py
  • [X] 熊猫/测试/系列/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

而且,我认为这也已经可以了

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

仍需检查/纠正

  • [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你有任何更新吗?

我不断收到错误,我不知道它们是什么意思。
任何帮助将不胜感激

您是否尝试过获取 master 上的最新修改? 也许它会修复一些失败的测试。

它没有帮助。
如果别人想拿,你可以

我有一个疑问:当我们遇到类似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'\\]")):
...

等等,我们是否应该将msg为一个函数并使用不同的“Col”值调用它? 还是保持原样更好?

@MatteoFelici感谢更新列表。 我检查了你调用的最后几个剩余模块,这看起来不错,所以我想我们可以关闭这个问题

此页面是否有帮助?
0 / 5 - 0 等级