Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8dba88f

Browse files
author
Nick Eubank
committed
change merge validate errors to MergeError from ValueError, move MergeError to pandas/errors
1 parent 49ec31b commit 8dba88f

File tree

5 files changed

+21
-17
lines changed

5 files changed

+21
-17
lines changed

doc/source/whatsnew/v0.21.0.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ Backwards incompatible API changes
5151
Other API Changes
5252
^^^^^^^^^^^^^^^^^
5353

54+
- Moved definition of ``MergeError`` to ``pandas/errors/__init__.py``.
5455

5556

5657
.. _whatsnew_0210.deprecations:

pandas/core/reshape/merge.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import pandas.core.algorithms as algos
4141
import pandas.core.common as com
4242
from pandas._libs import hashtable as libhashtable, join as libjoin, lib
43+
from pandas.errors import MergeError
4344

4445

4546
@Substitution('\nleft : DataFrame')
@@ -60,10 +61,6 @@ def merge(left, right, how='inner', on=None, left_on=None, right_on=None,
6061
merge.__doc__ = _merge_doc % '\nleft : DataFrame'
6162

6263

63-
class MergeError(ValueError):
64-
pass
65-
66-
6764
def _groupby_and_merge(by, on, left, right, _merge_pieces,
6865
check_duplicates=True):
6966
"""
@@ -986,23 +983,23 @@ def _validate(self, validate):
986983
# Check data integrity
987984
if validate in ["one_to_one", "1:1"]:
988985
if not left_unique and not right_unique:
989-
raise ValueError("Merge keys are not unique in either left"
986+
raise MergeError("Merge keys are not unique in either left"
990987
" or right dataset; not a one-to-one merge")
991988
elif not left_unique:
992-
raise ValueError("Merge keys are not unique in left dataset;"
989+
raise MergeError("Merge keys are not unique in left dataset;"
993990
" not a one-to-one merge")
994991
elif not right_unique:
995-
raise ValueError("Merge keys are not unique in right dataset;"
992+
raise MergeError("Merge keys are not unique in right dataset;"
996993
" not a one-to-one merge")
997994

998995
elif validate in ["one_to_many", "1:m"]:
999996
if not left_unique:
1000-
raise ValueError("Merge keys are not unique in left dataset;"
997+
raise MergeError("Merge keys are not unique in left dataset;"
1001998
"not a one-to-many merge")
1002999

10031000
elif validate in ["many_to_one", "m:1"]:
10041001
if not right_unique:
1005-
raise ValueError("Merge keys are not unique in right dataset;"
1002+
raise MergeError("Merge keys are not unique in right dataset;"
10061003
" not a many-to-one merge")
10071004

10081005
elif validate in ['many_to_many', 'm:m']:

pandas/errors/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,3 +57,9 @@ class ParserWarning(Warning):
5757
"""
5858

5959

60+
class MergeError(ValueError):
61+
"""
62+
Error raised when problems arise during merging due to problems
63+
with input data. Subclass of `ValueError`.
64+
65+
"""

pandas/tests/reshape/test_merge.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -789,11 +789,11 @@ def test_validation(self):
789789
merge(left, right_w_dups, left_index=True, right_index=True,
790790
validate='one_to_many')
791791

792-
with pytest.raises(ValueError):
792+
with pytest.raises(MergeError):
793793
merge(left, right_w_dups, left_index=True, right_index=True,
794794
validate='one_to_one')
795795

796-
with pytest.raises(ValueError):
796+
with pytest.raises(MergeError):
797797
merge(left, right_w_dups, on='a', validate='one_to_one')
798798

799799
# Dups on left
@@ -802,21 +802,21 @@ def test_validation(self):
802802
merge(left_w_dups, right, left_index=True, right_index=True,
803803
validate='many_to_one')
804804

805-
with pytest.raises(ValueError):
805+
with pytest.raises(MergeError):
806806
merge(left_w_dups, right, left_index=True, right_index=True,
807807
validate='one_to_one')
808808

809-
with pytest.raises(ValueError):
809+
with pytest.raises(MergeError):
810810
merge(left_w_dups, right, on='a', validate='one_to_one')
811811

812812
# Dups on both
813813
merge(left_w_dups, right_w_dups, on='a', validate='many_to_many')
814814

815-
with pytest.raises(ValueError):
815+
with pytest.raises(MergeError):
816816
merge(left_w_dups, right_w_dups, left_index=True,
817817
right_index=True, validate='many_to_one')
818818

819-
with pytest.raises(ValueError):
819+
with pytest.raises(MergeError):
820820
merge(left_w_dups, right_w_dups, on='a',
821821
validate='one_to_many')
822822

@@ -842,7 +842,7 @@ def test_validation(self):
842842
'um... weasel noise?']},
843843
index=range(3))
844844

845-
with pytest.raises(ValueError):
845+
with pytest.raises(MergeError):
846846
merge(left, right, on='a', validate='1:1')
847847

848848
result = merge(left, right, on=['a', 'b'], validate='1:1')

pandas/tests/test_errors.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"exc", ['UnsupportedFunctionCall', 'UnsortedIndexError',
1111
'OutOfBoundsDatetime',
1212
'ParserError', 'PerformanceWarning', 'DtypeWarning',
13-
'EmptyDataError', 'ParserWarning'])
13+
'EmptyDataError', 'ParserWarning', 'MergeError'])
1414
def test_exception_importable(exc):
1515
from pandas import errors
1616
e = getattr(errors, exc)

0 commit comments

Comments
 (0)