@@ -600,97 +600,7 @@ def read_csv(
600
600
float_precision = None ,
601
601
storage_options : StorageOptions = None ,
602
602
):
603
- # gh-23761
604
- #
605
- # When a dialect is passed, it overrides any of the overlapping
606
- # parameters passed in directly. We don't want to warn if the
607
- # default parameters were passed in (since it probably means
608
- # that the user didn't pass them in explicitly in the first place).
609
- #
610
- # "delimiter" is the annoying corner case because we alias it to
611
- # "sep" before doing comparison to the dialect values later on.
612
- # Thus, we need a flag to indicate that we need to "override"
613
- # the comparison to dialect values by checking if default values
614
- # for BOTH "delimiter" and "sep" were provided.
615
- if dialect is not None :
616
- sep_override = (delimiter is None ) and (sep is lib .no_default or sep == "," )
617
- kwds = dict (sep_override = sep_override )
618
- else :
619
- kwds = dict ()
620
-
621
- # Alias sep -> delimiter.
622
- if delimiter is None :
623
- delimiter = sep
624
-
625
- if delim_whitespace and (delimiter is not lib .no_default ):
626
- raise ValueError (
627
- "Specified a delimiter with both sep and "
628
- "delim_whitespace=True; you can only specify one."
629
- )
630
-
631
- if delimiter is lib .no_default :
632
- # assign default separator value
633
- delimiter = ","
634
-
635
- if engine is not None :
636
- engine_specified = True
637
- else :
638
- engine = "c"
639
- engine_specified = False
640
-
641
- kwds .update (
642
- delimiter = delimiter ,
643
- engine = engine ,
644
- dialect = dialect ,
645
- compression = compression ,
646
- engine_specified = engine_specified ,
647
- doublequote = doublequote ,
648
- escapechar = escapechar ,
649
- quotechar = quotechar ,
650
- quoting = quoting ,
651
- skipinitialspace = skipinitialspace ,
652
- lineterminator = lineterminator ,
653
- header = header ,
654
- index_col = index_col ,
655
- names = names ,
656
- prefix = prefix ,
657
- skiprows = skiprows ,
658
- skipfooter = skipfooter ,
659
- na_values = na_values ,
660
- true_values = true_values ,
661
- false_values = false_values ,
662
- keep_default_na = keep_default_na ,
663
- thousands = thousands ,
664
- comment = comment ,
665
- decimal = decimal ,
666
- parse_dates = parse_dates ,
667
- keep_date_col = keep_date_col ,
668
- dayfirst = dayfirst ,
669
- date_parser = date_parser ,
670
- cache_dates = cache_dates ,
671
- nrows = nrows ,
672
- iterator = iterator ,
673
- chunksize = chunksize ,
674
- converters = converters ,
675
- dtype = dtype ,
676
- usecols = usecols ,
677
- verbose = verbose ,
678
- encoding = encoding ,
679
- squeeze = squeeze ,
680
- memory_map = memory_map ,
681
- float_precision = float_precision ,
682
- na_filter = na_filter ,
683
- delim_whitespace = delim_whitespace ,
684
- warn_bad_lines = warn_bad_lines ,
685
- error_bad_lines = error_bad_lines ,
686
- low_memory = low_memory ,
687
- mangle_dupe_cols = mangle_dupe_cols ,
688
- infer_datetime_format = infer_datetime_format ,
689
- skip_blank_lines = skip_blank_lines ,
690
- storage_options = storage_options ,
691
- )
692
-
693
- return _read (filepath_or_buffer , kwds )
603
+ return _check_defaults_read (locals (), {"delimiter" : "," })
694
604
695
605
696
606
@Appender (
@@ -759,19 +669,7 @@ def read_table(
759
669
memory_map = False ,
760
670
float_precision = None ,
761
671
):
762
- # TODO: validation duplicated in read_csv
763
- if delim_whitespace :
764
- if (delimiter is not None ) or (sep is not lib .no_default ):
765
- raise ValueError (
766
- "Specified a delimiter with both sep and "
767
- "delim_whitespace=True; you can only specify one."
768
- )
769
- else :
770
- if sep is lib .no_default :
771
- # assign default delimeter value
772
- sep = "\t "
773
-
774
- return read_csv (** locals ())
672
+ return _check_defaults_read (locals (), {"delimiter" : "\t " })
775
673
776
674
777
675
def read_fwf (
@@ -3786,3 +3684,59 @@ def _make_reader(self, f):
3786
3684
self .skiprows ,
3787
3685
self .infer_nrows ,
3788
3686
)
3687
+
3688
+
3689
+ def _check_defaults_read (read_kwds : dict , defaults : dict ):
3690
+ """Check default values of input parameters, read a line file."""
3691
+ engine = read_kwds ["engine" ]
3692
+ dialect = read_kwds ["dialect" ]
3693
+ delimiter = read_kwds ["delimiter" ]
3694
+ delim_whitespace = read_kwds ["delim_whitespace" ]
3695
+ filepath_or_buffer = read_kwds ["filepath_or_buffer" ]
3696
+ sep = read_kwds ["sep" ]
3697
+
3698
+ del read_kwds ["filepath_or_buffer" ]
3699
+ del read_kwds ["sep" ]
3700
+
3701
+ delimiter_default = defaults ["delimiter" ]
3702
+
3703
+ # gh-23761
3704
+ #
3705
+ # When a dialect is passed, it overrides any of the overlapping
3706
+ # parameters passed in directly. We don't want to warn if the
3707
+ # default parameters were passed in (since it probably means
3708
+ # that the user didn't pass them in explicitly in the first place).
3709
+ #
3710
+ # "delimiter" is the annoying corner case because we alias it to
3711
+ # "sep" before doing comparison to the dialect values later on.
3712
+ # Thus, we need a flag to indicate that we need to "override"
3713
+ # the comparison to dialect values by checking if default values
3714
+ # for BOTH "delimiter" and "sep" were provided.
3715
+ if dialect is not None :
3716
+ read_kwds ["sep_override" ] = (delimiter is None ) and (
3717
+ sep is lib .no_default or sep == delimiter_default
3718
+ )
3719
+
3720
+ # Alias sep -> delimiter.
3721
+ if delimiter is None :
3722
+ delimiter = sep
3723
+
3724
+ if delim_whitespace and (delimiter is not lib .no_default ):
3725
+ raise ValueError (
3726
+ "Specified a delimiter with both sep and "
3727
+ "delim_whitespace=True; you can only specify one."
3728
+ )
3729
+
3730
+ if delimiter is lib .no_default :
3731
+ # assign default separator value
3732
+ read_kwds ["delimiter" ] = delimiter_default
3733
+ else :
3734
+ read_kwds ["delimiter" ] = delimiter
3735
+
3736
+ if engine is not None :
3737
+ read_kwds ["engine_specified" ] = True
3738
+ else :
3739
+ read_kwds ["engine" ] = "c"
3740
+ read_kwds ["engine_specified" ] = False
3741
+
3742
+ return _read (filepath_or_buffer , read_kwds )
0 commit comments