Pandas: [рдЕрдЪреНрдЫрд╛ рдкрд╣рд▓рд╛ рдЕрдВрдХ] рдЯреАрдПрд╕рдЯреА: рдирдВрдЧреЗ pytest.raises рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдЬрдире░ 2020  ┬╖  51рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pandas-dev/pandas

рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдиреЗ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЯреНрд░рд┐рдЧрд░ рдХреА рдЧрдИ рддреНрд░реБрдЯрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕рд╛рдордиреЗ рдЖрдП рд╣реИрдВред

рдореВрд▓ рд╡рд┐рдЪрд╛рд░ рдЗрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИ:

with pytest.raises(klass):
    # Some code that raise an error

рдЗрд╕рдХреЗ рд▓рд┐рдП:

with pytest.raises(klass, match=msg):
    # Some code that raise an error

рдЖрдк рдФрд░ рдЕрдзрд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ pytest.raises рдпрд╣рд╛рдБ ред


рд╕рд╛рдЗрдб рдиреЛрдЯ:

рдорд╛рдорд▓реЗ рдХрд┐ рдЙрдард╛рдпрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдПрдХ рдмрд╛рд╣рд░реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ (рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╛рдВрдбрд╛ рдирд╣реАрдВ рд╣реИ) рд╣реИ рдореЗрдВ, рдЖрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП external_error_raised рдХреЗ рдмрдЬрд╛рдп pytest.raises ред

external_error_raised рдХрд╛ рдЙрдкрдпреЛрдЧ __рдмрд┐рд▓реНрдХреБрд▓ __ рд╣реИ рдЬреИрд╕реЗ pytest.raises рдХреЗрд╡рд▓ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк match рддрд░реНрдХ рдореЗрдВ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

import pandas._testing as tm

def test_foo():
    with tm.external_error_raised(ValueError):
        raise ValueError("foo")

рдореБрдЦреНрдп рдмрд╛рддреЗрдВ:

  • рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрдкрдиреЗ рдкреАрдЖрд░ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ, рдЗрд╕реЗ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ
https://github.com/pandas-dev/pandas/issues/30999

рдЖрдкрдХреЗ рдЬрдирд╕рдВрдкрд░реНрдХ рдореЗрдВ

  • рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рджреЛрдЧреБрдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ (рдореЗрд░рд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ рдпрд╣ рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдмрд╕ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ)ред

  • рдпрджрд┐ рдХреЛрдИ рдлрд╝рд╛рдЗрд▓/рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬрд┐рд╕реЗ "рд╣реЛ рдЧрдпрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬреИрд╕реЗ рдХрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреЛрдИ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ), "рд╣реЛ рдЧрдпрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ (рдФрд░ @MomIsBestFriend рдбрд╛рд▓рдХрд░ рдореЗрд░рд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВ)


рдкреВрд░реА рд╕реВрдЪреА рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

python scripts/validate_unwanted_patterns.py -vt="bare_pytest_raises" pandas/tests/

рдЖрдк рдЗрд╕реЗ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд┐рд░реБрджреНрдз рднреА рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:

python scripts/validate_unwanted_patterns.py -vt="bare_pytest_raises" pandas/tests/PATH/TO/SPECIFIC/FILE.py

рдпрджрд┐ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЗрд╡рд▓ pytest.raises , рддреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рдореНрди рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЧреА:

pandas/tests/arithmetic/test_numeric.py:553:Bare pytests raise have been found. Please pass in the argument 'match' as well the exception

рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ pandas/tests/arithmetic/test_numeric.py рд▓рд╛рдЗрди 553 рдкрд░ рдПрдХ рдирдВрдЧреЗ pytest.raises


рд╡рд░реНрддрдорд╛рди рд╕реВрдЪреА рд╣реИ:

  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/pytables/test_timezones.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЬреЗрдиреЗрд░рд┐рдХ/рд╡рд┐рдзрд┐рдпрд╛рдВ/test_pipe.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреБрди: рдЖрдХрд╛рд░ рджреЗрдирд╛/рдорд░реНрдЬ/test_merge_asof.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рд╕реНрддрд╛рд░/рдЖрдзрд╛рд░/reduce.py
  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_datetimelike.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рд╕реНрддрд╛рд░/test_boolean.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рд╕реНрддрд╛рд░/рдЖрдзрд╛рд░/getitem.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/рдмреВрд▓рд┐рдпрди/test_arithmetic.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рд╕реНрддрд╛рд░/рдЖрдзрд╛рд░/setitem.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдЕрдВрддрд░рд╛рд▓/test_astype.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдкрд╛рд░реНрд╕рд░/test_network.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/test_integer.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордг/рдорд▓реНрдЯреАрдЗрдВрдбреЗрдХреНрд╕/test_partial.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдкрд╛рд░реНрд╕рд░/test_python_parser_only.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_html.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдХрдЯреМрддреА/test_stat_reductions.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/dtypes/test_inference.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреНрд▓реЙрдЯрд┐рдВрдЧ/test_hist_method.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╢реНрд░реГрдВрдЦрд▓рд╛/рд▓рд╛рдЧреВ рдХрд░реЗрдВ/test_series_apply.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдПрдХреНрд╕реЗрд▓/test_xlrd.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/test_common.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЙрдкрдпреЛрдЧ/test_assert_series_equal.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рд╕реНрддрд╛рд░/рдЖрдзрд╛рд░/ops.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_clipboard.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреНрд▓реЙрдЯрд┐рдВрдЧ/рдлреНрд░реЗрдо/test_frame_color.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЦрд┐рдбрд╝рдХреА/рдХреНрд╖рдг/test_moments_ewm.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_gbq.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдХрдЯреМрддреА/test_reductions.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_pher.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреБрди: рдирдореВрдирд╛/test_resampler_grouper.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_indexing.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_common.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_sql.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреНрд▓реЙрдЯрд┐рдВрдЧ/test_series.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_fsspec.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/test_floating.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_setops.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлрд┐рд░ рд╕реЗ рдЖрдХрд╛рд░ рджреЗрдирд╛/test_get_dummies.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреНрд▓реЙрдЯрд┐рдВрдЧ/рдлреНрд░реЗрдо/test_frame_subplots.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд╛рдЬрд┐рд╢ рдХрд░рдирд╛/test_backend.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЬреЗрдиреЗрд░рд┐рдХ/рд╡рд┐рдзрд┐рдпрд╛рдВ/test_sample.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд╛рдЬрд┐рд╢ рдХрд░рдирд╛/test_boxplot_method.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_parquet.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/test_string.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/pytables/test_complex.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/test_numpy_compat.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_gcs.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдПрд╕рдПрдПрд╕/test_sas7bdat.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рдВрдбреЛ/test_apply.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╢реНрд░реГрдВрдЦрд▓рд╛/test_ufunc.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреНрд▓реЙрдЯрд┐рдВрдЧ/рдлреНрд░реЗрдо/test_frame.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлрд┐рд░ рд╕реЗ рдЖрдХрд╛рд░ рджреЗрдирд╛/test_union_categoricals.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/json/test_ujson.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордг/test_coercion.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/pytables/test_store.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЧрдгрдирд╛/test_compat.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/json/test_pandas.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/json/test_json_table_schema.py

    - [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/test_nat.py

рдзреНрдпрд╛рди рджреЗрдВ:

рд╕реВрдЪреА рдмрджрд▓ рд╕рдХрддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд/рдмрджрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред


#23922 рд╕реЗ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдпрд╛, рдЬрд┐рд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ @gfyoung рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рд╛ рдЧрдпрд╛ рдерд╛ред

Style Testing good first issue

рд╕рднреА 51 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рд▓реВрдВрдЧрд╛:

  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/test_common.py
  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/test_downstream.py
  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/test_errors.py
  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/test_lib.py
  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/test_take.py
  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдВрддрд░рд┐рдХ/test_internals.py
  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рдВрдбреЛ/test_rolling.py

рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛:

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_numeric.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_object.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_period.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_timedelta64.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/рдЕрдВрддрд░рд╛рд▓/test_interval.py

@ gdex1 рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ :)

(рд╕рдВрдЦреНрдпрд╛рдПрдВ рд░реЗрдЦрд╛ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреА рд╣реИрдВ)

pandas/tests/arithmetic/test_numeric.py:138
pandas/tests/arithmetic/test_numeric.py:141
pandas/tests/arithmetic/test_numeric.py:190
pandas/tests/arithmetic/test_numeric.py:208
pandas/tests/arithmetic/test_numeric.py:210
pandas/tests/arithmetic/test_numeric.py:212
pandas/tests/arithmetic/test_numeric.py:214
pandas/tests/arithmetic/test_numeric.py:232
pandas/tests/arithmetic/test_numeric.py:234
pandas/tests/arithmetic/test_numeric.py:236
pandas/tests/arithmetic/test_numeric.py:238
pandas/tests/arithmetic/test_numeric.py:519
pandas/tests/arithmetic/test_numeric.py:610
pandas/tests/arithmetic/test_numeric.py:615
pandas/tests/arithmetic/test_numeric.py:617
pandas/tests/arithmetic/test_numeric.py:795
pandas/tests/arithmetic/test_numeric.py:798
pandas/tests/arithmetic/test_numeric.py:819
pandas/tests/arithmetic/test_object.py:140
pandas/tests/arithmetic/test_object.py:152
pandas/tests/arithmetic/test_object.py:154
pandas/tests/arithmetic/test_object.py:278
pandas/tests/arithmetic/test_object.py:280
pandas/tests/arithmetic/test_object.py:282
pandas/tests/arithmetic/test_object.py:284
pandas/tests/arithmetic/test_object.py:298
pandas/tests/arithmetic/test_object.py:301
pandas/tests/arithmetic/test_object.py:315
pandas/tests/arithmetic/test_object.py:318



md5-634e15eb80aa764171dbacd11a06b70b



pandas/tests/arithmetic/test_timedelta64.py:51
pandas/tests/arithmetic/test_timedelta64.py:445
pandas/tests/arithmetic/test_timedelta64.py:607
pandas/tests/arithmetic/test_timedelta64.py:609
pandas/tests/arithmetic/test_timedelta64.py:703
pandas/tests/arithmetic/test_timedelta64.py:705
pandas/tests/arithmetic/test_timedelta64.py:707
pandas/tests/arithmetic/test_timedelta64.py:709
pandas/tests/arithmetic/test_timedelta64.py:741
pandas/tests/arithmetic/test_timedelta64.py:743
pandas/tests/arithmetic/test_timedelta64.py:960
pandas/tests/arithmetic/test_timedelta64.py:972
pandas/tests/arithmetic/test_timedelta64.py:1028
pandas/tests/arithmetic/test_timedelta64.py:1037
pandas/tests/arithmetic/test_timedelta64.py:1039
pandas/tests/arithmetic/test_timedelta64.py:1502
pandas/tests/arithmetic/test_timedelta64.py:1505
pandas/tests/arithmetic/test_timedelta64.py:1508
pandas/tests/arithmetic/test_timedelta64.py:1511
pandas/tests/arithmetic/test_timedelta64.py:1536
pandas/tests/arithmetic/test_timedelta64.py:1591
pandas/tests/arithmetic/test_timedelta64.py:1783
pandas/tests/arithmetic/test_timedelta64.py:1785
pandas/tests/arithmetic/test_timedelta64.py:1911
pandas/tests/arithmetic/test_timedelta64.py:1960
pandas/tests/arithmetic/test_timedelta64.py:1962
pandas/tests/arithmetic/test_timedelta64.py:1968



md5-634e15eb80aa764171dbacd11a06b70b



pandas/tests/arrays/interval/test_interval.py:155

@gfyoung рд╕реВрдЪреА grep -r -e "pytest.raises([a-zA-Z]*)" pandas/tests -l рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХреА рдЧрдИ рдереА, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ #30755 рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреА рдЧрдИ рдереА (рдПрдХ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХрд╛рд░ рдЬрд┐рд╕реЗ bare_pytest_raises рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ), рдореИрдВ рдПрдХ рдмрд╛рд░ рдореБрджреНрджреЗ рдирд┐рдХрд╛рдп рдкрд░ рдирд┐рд░реНрджреЗрд╢ рдбрд╛рд▓реВрдВрдЧрд╛ рдпрд╣ рд╡рд┐рд▓реАрди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рдореБрд╕реНрдХрд╛рди:

@MomIsBestFriend рдореИрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдзрд╛рд░/test_constructors.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдзрд╛рд░/test_ops.py

рдореИрдВ рдЗрдирдХреА рджреЗрдЦрднрд╛рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
@MomIsBestFriend

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_html.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_parquet.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_sql.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/test_stata.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд╛рдЬрд┐рд╢ рдХрд░рдирд╛/test_backend.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд╛рдЬрд┐рд╢ рдХрд░рдирд╛/test_boxplot_method.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд╛рдЬрд┐рд╢ рдХрд░рдирд╛/test_frame.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд╛рдЬрд┐рд╢ рдХрд░рдирд╛/test_hist_method.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд╛рдЬрд┐рд╢ рдХрд░рдирд╛/test_series.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдХрдореА/test_reductions.py

@MomIsBestFriend рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ https://github.com/pandas-dev/pandas/issues/23922 рдореЗрдВ рдХрд╛рдлреА рдЪрд░реНрдЪрд╛ рд╣реБрдИред рдХреНрдпреЛрдВрдХрд┐ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдХрд╣рд╛ рдерд╛: рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рд╕рднреА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ "рдЖрдВрдЦ рдмрдВрдж рдХрд░рдХреЗ" рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдХрд╣реА рдЧрдИ рдХреБрдЫ рдмрд╛рддреЗрдВ: рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░реЗрдВ, рд╕рдВрджреЗрд╢ рдХреЗ рдХреБрдЫ рдкреНрд░рдореБрдЦ рд╢рдмреНрджреЛрдВ рддрдХ рдорд┐рд▓рд╛рди рд╕реАрдорд┐рдд рдХрд░реЗрдВ, рдЬрдЯрд┐рд▓ рдкреИрдЯрд░реНрди рд╕реЗ рдмрдЪреЗрдВред

рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛, рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдЕрдиреНрдп рдореБрджреНрджреЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╕реЗ рдзреНрдпрд╛рди рдмрд┐рдВрджреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдпрд╣рд╛рдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@jorisvandenbossche

@MomIsBestFriend #23922 рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдлреА рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдереАред рдХреНрдпреЛрдВрдХрд┐ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╣рд╛рдВ рдХрд╣рд╛ рдерд╛: рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдореЗрдВ рд╕рднреА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ "рдЖрдВрдЦ рдмрдВрдж рдХрд░рдХреЗ" рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреМрди рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдкрд░ рдЬреЛрд░ рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рд░рдЦрдирд╛ рдпрд╣ рдореБрджреНрджрд╛ "рд╢реБрд░реБрдЖрддреА рдЕрдиреБрдХреВрд▓", рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ (рдЖрдИрдПрдордУ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд╕реАрдЖрдИ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ bare pytest raises рдХреНрдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ "рдирдВрдЧреЗ" рд╣реИрдВ (рдЖрдИрдПрдордУ рдЯрд┐рдкреНрдкрдгреА isort: skip рдХреА рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ), рдФрд░ рдЗрд╕реА рддрд░рд╣ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ bare pytest raise рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдЦрд╛рд▓реА рд╣реИред

рдЙрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдХрд╣реА рдЧрдИ рдХреБрдЫ рдмрд╛рддреЗрдВ: рдЗрд╕реЗ рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░реЗрдВ, рд╕рдВрджреЗрд╢ рдХреЗ рдХреБрдЫ рдкреНрд░рдореБрдЦ рд╢рдмреНрджреЛрдВ рддрдХ рдорд┐рд▓рд╛рди рд╕реАрдорд┐рдд рдХрд░реЗрдВ, рдЬрдЯрд┐рд▓ рдкреИрдЯрд░реНрди рд╕реЗ рдмрдЪреЗрдВред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╣рдо рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдФрд░ рднреА рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдореБрдЭреЗ рд╡рд╣ рдмрд┐рдВрджреБ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ https://github.com/pandas-dev/pandas/issues/23922#issuecomment -458551763 рдореЗрдВ рдмрддрд╛рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЙрд╕ рдкрд░ +1 рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ +2 рд╣реВрдВ https://github.com/pandas-dev/pandas/issues/23922#issuecomment -458733117 рдФрд░ https://github.com/pandas-dev/pandas/issues/ рдкрд░ 23922#рдореБрджреНрджреЗ -458735169 рдХреНрдпреЛрдВрдХрд┐ рдЖрдИрдПрдордУ рд▓рд╛рдн рд▓рд╛рдЧрдд рд╕реЗ рдмрдбрд╝рд╛ рд╣реИред

рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛, рд╕реНрдкрд╖реНрдЯ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╣реИ, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣рдорддред

рдЕрдиреНрдп рдореБрджреНрджреЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╕реЗ рдзреНрдпрд╛рди рдмрд┐рдВрджреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдпрд╣рд╛рдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВрдиреЗ #23922 рдкрд░ рдмрд╛рддрдЪреАрдд рдХреЛ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬреЛ рдЖрдИрдПрдордУ рдореБрджреНрджреЗ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рдПрдХ "рдиреЛрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рд▓рдиреЗ рд▓рд╛рдпрдХ рд╣реЛ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдореИрдВрдиреЗ рдпрд╛рдж рдХреА рд╣реИрдВ?

рдореИрдВрдиреЗ #23922 рдкрд░ рдмрд╛рддрдЪреАрдд рдХреЛ рдкрдврд╝рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдРрд╕рд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рдЬреЛ рдЖрдИрдПрдордУ рдореБрджреНрджреЗ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ "рдиреЛрдЯ" рдХреЗ рд░реВрдк рдореЗрдВ рдбрд╛рд▓рдиреЗ рд▓рд╛рдпрдХ рд╣реЛ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рдпрд╛рдж рдХрд┐рдпрд╛?

рдореБрдЭреЗ рдЙрд╕ рдореБрджреНрджреЗ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреМрди рд╕реЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдкрд░ рдЬреЛрд░ рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рддрд░рд╣ рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рд░рдЦрдирд╛ рдпрд╣ рдореБрджреНрджрд╛ "рд╢реБрд░реБрдЖрддреА рдЕрдиреБрдХреВрд▓", рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ (рдЖрдИрдПрдордУ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рд╕реАрдЖрдИ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдирдВрдЧреЗ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдХреНрдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ "рдирдВрдЧреЗ" рд╣реИрдВ (рдЖрдЗрдПрдордУ рдЯрд┐рдкреНрдкрдгреА isort рдХреА рд╢реИрд▓реА рдХреЗ рд╕рд╛рде: рд╕реНрдХрд┐рдк рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ), рдФрд░ рдЗрд╕рд▓рд┐рдП рднреА рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирдВрдЧреЗ pytest рдЙрдард╛рдирд╛ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдирдВрдЧреЗ рд╣реИред

рдпреЗ рдХреБрдЫ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдХреНрдпреЛрдВ рдЪреБрдирдирд╛ рдФрд░ рдЪреБрдирдирд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд┐рд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рд╡рд╣ рджрд┐рд╢рд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдпрд╣ рднреА рдЬреЛрдбрд╝реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдХрднреА-рдХрднреА except рдмреНрд▓реЙрдХ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рд╣рдореЗрдВ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рд╛рде рд╣реА, рдЕрдЧрд░ рдпреЗ "рдЖрдВрддрд░рд┐рдХ" рд╕рдВрджреЗрд╢ рдЗрддрдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреНрдпреЛрдВ рд╣реИ? рдореИрдВ рддрдм рдХреЗрд╡рд▓ рдПрдХ рд╕рд╣рд╛рдпрдХ рдмрдирд╛рдЙрдВрдЧрд╛ рдЬреЛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрджреЗрд╢ рдЦрд╛рд▓реА рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╣рдо рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдФрд░ рднреА рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рддреЛ рдореИрдВрдиреЗ рдХрд╣рд╛ "рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реАрдорд╛", рдЬрдмрдХрд┐ "рдЖрдВрддрд░рд┐рдХ" рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ ... рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛: рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЬреЛ рдкрд╛рдВрдбрд╛ рд╕реЗ рд╣реА рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдо рдЙрдирдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рд╣рдореЗрдВ (рдЖрдИрдПрдордУ) рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмрд╛рд╣рд░реА рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ: рд╕рдВрджреЗрд╢ рдЬреИрд╕реЗ numpy рдпрд╛ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ред Numpy рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ numpy рдореЗрдВ рдХреЙрд╕реНрдореЗрдЯрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХрд╛рд░рдг рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рд▓рдЧрддреЗ рд╣реИрдВ (рдФрд░ рдпрд╣ рдХрд╛рд▓реНрдкрдирд┐рдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд┐рдЫрд▓реЗ рд╣рдлреНрддреЗ рд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)ред

рдЕрдм, рдореИрдВрдиреЗ https://github.com/pandas-dev/pandas/pull/30998#discussion_r366726966 рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ "рдЖрдВрддрд░рд┐рдХ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдХрднреА рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдИрдПрдордУ, рд╡реЗ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдмрд┐рд▓реНрдХреБрд▓ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред

рдореБрдЭреЗ рд╡рд╣ рдмрд┐рдВрджреБ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ #23922 (рдЯрд┐рдкреНрдкрдгреА) рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдореИрдВ рдЙрд╕ рдкрд░ +1 рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ #23922 (рдЯрд┐рдкреНрдкрдгреА) рдФрд░ #23922 (рдЯрд┐рдкреНрдкрдгреА) рдкрд░ +2 (рдпрджрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ) рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдИрдПрдордУ рд▓рд╛рдн рд▓рд╛рдЧрдд рд╕реЗ рдмрдбрд╝рд╛ рд╣реИред

рдЖрдЗрдП @simonjayhawkins рдХреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╢рд╛рдпрдж рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ, рдХрд┐ рдпрд╣ рдлрд╛рдпрджреЗрдордВрдж рд╣реЛрдЧрд╛

  1. рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  2. рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
  3. рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╡рд┐рдлрд▓рддрд╛ рдореЛрдб рдХреА рдмреЗрд╣рддрд░ рд╕рдордЭ
  4. рдкрд░реЛрдХреНрд╖ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЬреЛрдбрд╝реЗрдВ
  5. рдкрд╣рдЪрд╛рдиреЗрдВ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╣рд╛рдБ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
  6. рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ рдЬреЛ рдирд┐рд░рд░реНрдердХ рд╣реИрдВ
  7. рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВ
  8. рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЧрд▓рдд рдХрд╛рд░рдг рд╕реЗ рдЧреБрдЬрд░ рд░рд╣реЗ рд╣реИрдВред

рдпреЗ рд╕рднреА рдЙрдкрдпреЛрдЧреА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдЧрд░ рд╣рдо рдЙрди рдЪреАрдЬреЛрдВ рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдореБрджреНрджрд╛ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЛ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдпрд╣ рдорд╣рд╕реВрд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЙрди рдкреАрдЖрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкреАрдЖрд░ рдЕрдХреНрд╕рд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЬрд╛рдиреЗ рдХреЗ "рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдореЗрдВ рдореМрдЬреВрджрд╛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдВрдзрд╛рдзреБрдВрдз рдЬреЛрдбрд╝рдиреЗ" рдХреЗ рдХрд░реАрдм рд╣реИрдВред рдЖрдЧреЗ (рдЙрдкрд░реЛрдХреНрдд рдмрд┐рдВрджреБ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рдмрд┐рдВрджреБ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХреЛ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдареЛрд╕ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред


рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реВрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИрдВ рдФрд░ рдЙрди рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрдЪреНрдЫрд╛ рд░рдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реАрдорд┐рдд рд╕рдордп рднреА рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреАрдЖрд░ рдХреЛ рдХрд░рдиреЗ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рдпрд╛рд╕ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдХрд╣рд╛рдВ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдИрдПрдордУ, "рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реБрдзрд╛рд░" (рдФрд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╕рдордп, рдЙрдиреНрд╣реЗрдВ рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ) рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп "рдирдВрдЧреЗ рдкрд╛рдЗрдЯреЗрд╕реНрдЯ рдХреЛ рдареАрдХ рдХрд░реЗрдВ" рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЙрдкрд░реЛрдХреНрдд рдмрд┐рдВрджреБ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХреЛ рдЙрдкрдпреЛрдЧреА рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдареЛрд╕ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рдЗрдиреНрд╣реЗрдВ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдореБрджреНрджрд╛ рдмрдирд╛рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ (рдРрд╕реЗ рдореБрджреНрджреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреНрдп рдореБрджреНрджреЗ рд╣реИрдВ https://github.com/pandas-dev/pandas/issues/19159 рдФрд░ https://github.com/pandas- рджреЗрд╡/рдкрд╛рдВрдбрд╛/рдореБрджреНрджреЗ/21575)ред

рдпрд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЖрддреНрдордирд┐рд░реНрднрд░ рд╣реИ рдФрд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╣реА рд╕реБрд▓рдн рд╣реИред

@gfyoung рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдЖрдк рдЗрд╕ рдЪрд░реНрдЪрд╛ рд╕реЗ рдХреИрд╕реЗ

рд╡реЗ рдЙрд╕ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ @simonjayhawkins . рд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛

31072 рдореЗрдВ stata.py рдореЗрдВ рдПрдХ рд▓рд╛рдкрддрд╛ рдореИрдЪ рд╢рд╛рдорд┐рд▓ рд╣реИ

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ https://github.com/pandas-dev/pandas/pull/31091#issuecomment -575422207 рдореИрдВ @jorisvandenbossche рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде

рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдореИрдВ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ), рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

~рдкрд╛рдпрдердиdef external_error_raised (рдЕрдкреЗрдХреНрд╖рд┐рдд_рдЕрдкрд╡рд╛рдж):рд╡рд╛рдкрд╕реА pytest.raises (рдЕрдкреЗрдХреНрд╖рд┐рдд_рдЕрдкрд╡рд╛рдж, рдореИрдЪ = рдХреЛрдИ рдирд╣реАрдВ)~

рдпрд╣ рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдкрд╛рдВрдбрд╛ рддреНрд░реБрдЯрд┐ рд╣реИ, рдФрд░ match=None рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрдирд┐рдВрдЧ рдЪреЗрдХ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ pytest рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдореИрдВ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ), рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

def external_error_raised(expected_exception):
   return pytest.raises(expected_exception, match=None)

рдпрд╣ рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдкрд╛рдВрдбрд╛ рддреНрд░реБрдЯрд┐ рд╣реИ, рдФрд░ match=None рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрдирд┐рдВрдЧ рдЪреЗрдХ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ pytest рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

+1 ред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИ, рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореНрдореЗрд▓рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди/рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣реА рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдПрдХ рдмрд╛рд╣рд░реА рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ "pytest.raises``` рдореЗрдВ match=None рдбрд╛рд▓рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдореНрдореЗрд▓рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдЗрд╕рд╕реЗ рдореЗрд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдпреЛрдЧрджрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЕрдиреБрднрд╛рдЧ рдбрд╛рд▓рдиреЗ рд╕реЗ рд╣реИред

рдпрджрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдлрд╝рдВрдХреНрд╢рди/рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рддреНрд░реБрдЯрд┐ рдПрдХ рдмрд╛рд╣рд░реА рддреНрд░реБрдЯрд┐ рд╣реИ, рддреЛ рд╣рдо рдмрд╕ "pytest.raises`` рдореЗрдВ рдорд┐рд▓рд╛рди = рдХреЛрдИ рдирд╣реАрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред

рдореИрдВ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрдЧреАред рд╕рд╛рде рд╣реА, рд╣рдо рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рдирд╛рдо рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред

рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдореИрдВ рдирд┐рд╖реНрдкрдХреНрд╖ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░реА рд▓реЛрдЧреЛрдВ рдкрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ), рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

def external_error_raised(expected_exception):
   return pytest.raises(expected_exception, match=None)

рдпрд╣ рд╣рдорд╛рд░реЗ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдЧреИрд░-рдкрд╛рдВрдбрд╛ рддреНрд░реБрдЯрд┐ рд╣реИ, рдФрд░ match=None рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрдирд┐рдВрдЧ рдЪреЗрдХ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ pytest рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

@gfyoung рдЖрдк рдЗрд╕ рд╕рд╣рд╛рдпрдХ рдХрд╛рд░реНрдп рдХреЛ рдХрд╣рд╛рдБ рд░рдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ? (рдЬреИрд╕реЗ рдХрд┐ рдХрд┐рд╕ рдлрд╛рдЗрд▓ рдореЗрдВ?)

pandas._testing

рдирдорд╕реНрддреЗ,

рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/рдЕрдВрддрд░рд╛рд▓/test_ops.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_array.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_boolean.py

рд╣реИрд▓реЛ - рдореИрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_period.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_timedelta64.py

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реВрдВрдЧрд╛:

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЧрдгрдирд╛/test_compat.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЧрдгрдирд╛/test_eval.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/dtypes/cast/test_upcast.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/dtypes/test_dtypes.py

@MomIsBestFriend рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреВрд░реНрдг рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_numeric.py

рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ

@MomIsBestFriend рдпреЗ рднреА:
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_period.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_integer.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_period.py

рдпреЗ #31852 . рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/рджрд╢рдорд▓рд╡/test_decimal.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/рдЬреЗрд╕рди/test_json.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/test_boolean.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/test_categorical.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рдЕрдиреБрдХреНрд░рдордг/test_categorical.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рдЕрдиреБрдХреНрд░рдордг/test_indexing.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рдЕрдиреБрдХреНрд░рдордг/test_where.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_explode.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_isin.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рд╡рд┐рдзрд┐рдпрд╛рдВ/test_quantile.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рд╡рд┐рдзрд┐рдпрд╛рдВ/test_round.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_sort_values.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_to_dict.py

рдореИрдВ рд▓реВрдВрдЧрд╛

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдПрдХреНрд╕реЗрд▓/test_readers.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдПрдХреНрд╕реЗрд▓/test_writers.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдПрдХреНрд╕реЗрд▓/test_xlwt.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдкреНрд░рд╛рд░реВрдк/test_format.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдкреНрд░рд╛рд░реВрдк/test_style.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЖрдИрдУ/рдкреНрд░рд╛рд░реВрдк/test_to_latex.py

@MomIsBestFriend
рдпреЗ рдмрд┐рдирд╛ рдирд┐рд╢рд╛рди рдХреЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдбреЗрдЯрд╛рдЯрд╛рдЗрдореНрд╕/test_astype.py

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдбреЗрдЯрд╛рдЯрд╛рдЗрдореНрд╕/test_tools.py рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ

рдореИрдВ рдХрд░реВрдБрдЧрд╛:

  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдбреЗрдЯрд╛рдЯрд╛рдЗрдореНрд╕/test_constructors.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдбреЗрдЯрд╛рдЯрд╛рдЗрдореНрд╕/test_date_range.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдбреЗрдЯрд╛рдЯрд╛рдЗрдореНрд╕/test_indexing.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдбреЗрдЯрд╛рдЯрд╛рдЗрдореНрд╕/test_shift.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдбреЗрдЯрд╛рдЯрд╛рдЗрдореНрд╕/test_timezones.py

рдореИрдВрдиреЗ рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЕрдм рдЬрдм рдирдВрдЧреЗ pytest raises рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдкреНрд░рд╢реНрди рд╣реИрдВ рддреЛ рдЖрдк рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ :)

рдореИрдВ рд▓реВрдВрдЧрд╛,

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_timedelta64.py

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_arithmetic.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_comparisons.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_constructors.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_timezones.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_unary_ops.py

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/рдореЗрдВ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддрдп рд╣реИрдВред

$ git checkout master
Already on 'master'
$ python scripts/validate_unwanted_patterns.py -vt="bare_pytest_raises"  pandas/tests/scalar/timestamp/
$ 

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_boolean.py => рдЧреБрдо рд╣реИред

рдореИрдВ рд▓реЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/рдЕрдВрддрд░рд╛рд▓/test_ops.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_datetimelike.py

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛/test_categorical.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛/test_groupby.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛/test_timegrouper.py

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдВрдХрдЧрдгрд┐рдд/test_timedelta64.py => #33010

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_arithmetic.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_comparisons.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_constructors.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_timezones.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕реНрдХреЗрд▓рд░/рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк/test_unary_ops.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_boolean.py => рдЧреБрдо рд╣реИред

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/рдЕрдВрддрд░рд╛рд▓/test_ops.py => #33010
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_datetimelike.py => #33010

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛/test_categorical.py => #33144
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рдореВрд╣рдмреА/test_groupby.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛/test_timegrouper.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рд╢реНрд░реЗрдгреАрдмрджреНрдз/test_category.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/common.py #33144
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/datetimelike.py #33144

pandas/tests/indexes/interval/test_astype.py => рд╕рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ xfailed рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рд╣рдореЗрдВ рдЕрднреА рднреА рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреИрд╕реЗ?

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_compat.py #33144
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_duplicates.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_format.py => рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реАред
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_reshape.py #33144
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_setops.py => рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рдмрд╣реБ/test_sorting.py #33144

@ sumanau7 рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдИ рд╣реИ рдЬреЛ рдЖрдк рдЙрдард╛ рд░рд╣реЗ рд╣реИрдВ? рдореИрдВ рдХреБрдЫ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╡рд┐рд▓рдп рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред

рдкреВрд░реНрдг рд╣реЛ рдЧрдпрд╛

pandas/tests/indexes/categorical/test_category.py
pandas/tests/indexes/period/test_constructors.py
pandas/tests/indexes/period/test_join.py
pandas/tests/indexes/period/test_partial_slicing.py
pandas/tests/indexes/period/test_setops.py
pandas/tests/indexes/timedeltas/test_delete.py

рдореИрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ/test_constructors.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛/рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ/test_range.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордг/рдорд▓реНрдЯреАрдЗрдВрдбреЗрдХреНрд╕/test_chaining_and_caching.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЕрдиреБрдХреНрд░рдордг/рдорд▓реНрдЯреАрдЗрдВрдбреЗрдХреНрд╕/test_partial.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╢реНрд░реГрдВрдЦрд▓рд╛/рдЕрдиреБрдХреНрд░рдордг/test_alter_index.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/рдмреВрд▓рд┐рдпрди/test_function.py

рдХрд╛рдо рдкрд░:

pandas/tests/reshape/merge/test_multi.py

рдореИрдВ рд▓реВрдВрдЧрд╛:
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЦрд┐рдбрд╝рдХреА/рдХреНрд╖рдг/test_moments_ewm.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЦрд┐рдбрд╝рдХреА/рдХреНрд╖рдг/test_moments_rolling.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рдВрдбреЛ/test_dtypes.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рдВрдбреЛ/test_ewm.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рдВрдбреЛ/test_expanding.py
рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рдВрдбреЛ/test_timeseries_window.py

рдмреАрдорд╛рд░ рднреА рд▓реЗ рд▓реЛ:

  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_assign.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_at_time.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_between_time.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рддрд░реАрдХреЗ/test_first_and_last.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рд╡рд┐рдзрд┐рдпрд╛рдВ/test_interpolate.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/рд╡рд┐рдзрд┐рдпрд╛рдВ/test_replace.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдлреНрд░реЗрдо/test_query_eval.py

рдирдорд╕реНрддреЗ,
рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж,
рдХреЗрд╡рд┐рди

рдирдорд╕реНрддреЗ,
рдореИрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░ рдореИрдВ рдЗрд╕рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рд╢реБрд░реБрдЖрддреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж,
рдХреЗрд╡рд┐рди

рд╕реНрд╡рд╛рдЧрдд - рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдХрд┐рд╕реА рдЕрдиреНрдп рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рдпрд╛ рдХрдард┐рди рд╣реИ, рдХреЛрдИ рднреА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реЛрдЧреА

рдореБрдЭреЗValid_unwanted_patterns.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реЛ рд░рд╣реА рд╣реИ:

Traceback (most recent call last):
  File "C:\Users\Kevom\git\pandas\scripts\validate_unwanted_patterns.py", line 397, in <module>
    main(
  File "C:\Users\Kevom\git\pandas\scripts\validate_unwanted_patterns.py", line 352, in main
    for line_number, msg in function(file_obj):
  File "C:\Users\Kevom\git\pandas\scripts\validate_unwanted_patterns.py", line 88, in bare_pytest_raises
    contents = file_obj.read()
  File "C:\Program Files (x86)\Python\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 76843: character maps to <undefined>

рдпрд╣ 'pandas/tests/test_strings.py' рдкрдврд╝рддреЗ рд╕рдордп рд╣реЛ рд░рд╣рд╛ рд╣реИ, рд╕рднреА рдлрд╛рдЗрд▓реЗрдВ cp1252 рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИрдВред

рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджреЛрдмрд╛рд░рд╛ рдЬрд╛рдВрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдирдХрд▓ рдХреЗ рдХрд╛рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЕрднреА рднреА рдЕрдзреВрд░реЗ рд╣реИрдВред

рдЕрдзрд┐рдХрд╛рдВрд╢ NotImplementedError рдкрд╛рд╕ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╣рд░рд╛ рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд▓рд┐рдЯрд░ рдХреЛ рдЪреБрдк рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ pytest.raises(NotImplementedError, match=None) рдмрджрд▓рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ ?

рдореИрдВ рд▓реВрдВрдЧрд╛:

  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЙрдкрдХрд░рдг/test_to_datetime.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╢реНрд░реГрдВрдЦрд▓рд╛/рдСрдлрд╝рд╕реЗрдЯ/test_offsets.py

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

-рдХреЗрд╡рд┐рди

рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░реВрдВрдЧрд╛:

  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╢реНрд░реГрдВрдЦрд▓рд╛/рдСрдлрд╝рд╕реЗрдЯ/test_ticks.py

рд╣реИрд▓реЛ, рдореИрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдБред рдореБрджреНрджреЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ pandas/tests/generic/test_duplicate_labels.py рд▓реЗрдиреЗ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреБрдЫ рдФрд░ рдирд┐рдкрдЯреВрдВрдЧрд╛ред

рдореИрдВ рд╢реБрд░реБрдЖрдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_datetimelike.py рд▓реВрдВрдЧрд╛ред
рд╕рд╛рде рд╣реА, рдпрджрд┐ рдЖрдк python scripts/validate_unwanted_patterns.py -vt="bare_pytest_raises" pandas/tests/ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп python scripts/validate_unwanted_patterns.py -vt="bare_pytest_raises" pandas/tests/**/*.py

рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЕрдм рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛

    -   id: unwanted-patterns-bare-pytest-raises
        name: Check for use of bare use of pytest raises
        language: python
        entry: python scripts/validate_unwanted_patterns.py --validation-type="bare_pytest_raises"
        types: [python]
        files: ^pandas/tests/

.pre-commit-config.yaml рдореЗрдВ - repo: local рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛рдПрдВ

pre-commit run unwanted-patterns-bare-pytest-raises --all-files.

рдореИрдВрдиреЗ рд╢реЗрд╖ рдмрдХрд╛рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рджрд┐рдпрд╛ рд╣реИ

рдореИрдВ рдЗрдиреНрд╣реЗрдВ рд▓реЗ рд╕рдХрддрд╛ рд╣реВрдВ:

  • [x] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/io/pytables/test_timezones.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдЬреЗрдиреЗрд░рд┐рдХ/рд╡рд┐рдзрд┐рдпрд╛рдВ/test_pipe.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдкреБрди: рдЖрдХрд╛рд░ рджреЗрдирд╛/рдорд░реНрдЬ/test_merge_asof.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рд╕реНрддрд╛рд░/рдЖрдзрд╛рд░/reduce.py
  • [ ] рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╡рд┐рд╕реНрддрд╛рд░/рдЖрдзрд╛рд░/getitem.py
  • рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рд╕рд░рдгреА/test_datetimelike.py

рдпреЗ рдЖрдЬ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╢реАрд░реНрд╖ 5 рд╣реИрдВред

@marktgraham рдЕрдЧрд░ рдЖрдкрдиреЗ рдЕрднреА рддрдХ test_datetime.py рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдБ

@ liaoaoyuan97 рдХреЛрдИ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ, рдореИрдВрдиреЗ рдЕрднреА рддрдХ test_datetimelike.py рдХреЛ рдЫреБрдЖ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкрд╛рдВрдбрд╛/рдкрд░реАрдХреНрд╖рдг/рдПрдХреНрд╕рдЯреЗрдВрд╢рди/рдмреЗрд╕/getitem.py рд▓реВрдВрдЧрд╛ред

validate_unwanted_patterns.py рдореЗрд░реА рддрд░рдл рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдЙрдард╛рддрд╛ рд╣реИ

$ python scripts/validate_unwanted_patterns.py -vt="bare_pytest_raises" pandas/tests/
Traceback (most recent call last):
  File "scripts/validate_unwanted_patterns.py", line 479, in <module>
    output_format=args.format,
  File "scripts/validate_unwanted_patterns.py", line 435, in main
    with open(file_path, encoding="utf-8") as file_obj:
IsADirectoryError: [Errno 21] Is a directory: 'pandas/tests/'

рд╢рд╛рдпрдж #37419 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИ?

рдореИрдВрдиреЗ @MarcoGorelli рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЕрдм рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛

    -   id: unwanted-patterns-bare-pytest-raises
        name: Check for use of bare use of pytest raises
        language: python
        entry: python scripts/validate_unwanted_patterns.py --validation-type="bare_pytest_raises"
        types: [python]
        files: ^pandas/tests/

.pre-commit-config.yaml рдореЗрдВ - repo: local рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рдФрд░ рдлрд┐рд░ рдЪрд▓рд╛рдПрдБ

pre-commit run unwanted-patterns-bare-pytest-raises --all-files.

рдХреНрдпрд╛ рдЗрд╕реЗ .pre-commit-config.yaml рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдлрд┐рд░ рдЗрд╕ рдереНрд░реЗрдб рдкрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

рдХреНрдпрд╛ рдЗрд╕реЗ .pre-commit-config.yaml рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдлрд┐рд░ рдЗрд╕ рдереНрд░реЗрдб рдкрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

рд╣рдо рдЗрд╕реЗ .pre-commit-config.yaml рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдЬрдм рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдард╛рдИ рдЧрдИ рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдБрдЧреА, рд╣рд╛рдБ

рд╢рд╛рдпрдж #37419 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓рдЧрддрд╛ рд╣реИ?

рдирд╣реАрдВ, рдпрд╣ #37379 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ (рдЬрдм рд╣рдордиреЗ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдкрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

marcelnem picture marcelnem  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

BDannowitz picture BDannowitz  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hiiwave picture hiiwave  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jaradc picture jaradc  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

swails picture swails  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ