we should use keyword only arguments for some of our functions that have large numbers of kwargs to make it harder to make mistakes in the calling conventions, a prime example is [read_csv](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html?highlight=read_csv#pandas.read_csv].
likely we want a signature
def read_csv(self, filepath_or_buffer, *, .......
IOW all args, except for the first should be kwargs.
We could further modify a fair number of functions, so will treat this as a tracking issue.
Comment From: WillAyd
Good idea - is this supported in Py3.5?
Comment From: jreback
Good idea - is this supported in Py3.5?
yes
Comment From: alexitkes
I like this. I can try for read_html
, read_json
and some other I/O functions. Should all optional arguments be keyword-only?
Comment From: simonjayhawkins
isn't this a breaking api change?
Comment From: jreback
isn't this a breaking api change?
yes, but IMHO a minor one, you almost always use keyword args with the functions with many args anyhow
Comment From: simonjayhawkins
isn't this a breaking api change?
yes, but IMHO a minor one, you almost always use keyword args with the functions with many args anyhow
so if we go for straight break, we should do this for 1.0?
Comment From: jreback
yes this would be for 1.0
Comment From: TomAugspurger
For posterity, in https://github.com/pandas-dev/pandas/pull/27573 we're using a decorator to deprecate passing keyword arguments positionally. This not be API breaking.
Comment From: jbrockmendel
we've done a lot of this and have gotten into the habit. closing as complete.