py2ls 0.2.3__py3-none-any.whl → 0.2.4.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
py2ls/.DS_Store CHANGED
Binary file
py2ls/data/usages_pd.json CHANGED
@@ -1,56 +1,56 @@
1
1
  {
2
- "pd.read_pickle": "pd.read_pickle(filepath_or_buffer,compression='infer',storage_options=None)",
3
- "df.to_pickle": "df.to_pickle(path,*,compression='infer',protocol=5,storage_options=None)",
4
- "pd.read_table": "pd.read_table(filepath_or_buffer,*,sep=<no_default>,delimiter=None,header='infer',names=<no_default>,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=<no_default>,skip_blank_lines=True,parse_dates=False,infer_datetime_format=<no_default>,keep_date_col=<no_default>,date_parser=<no_default>,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='\"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=<no_default>,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=<no_default>)",
5
- "pd.read_csv": "pd.read_csv(filepath_or_buffer,*,sep=<no_default>,delimiter=None,header='infer',names=<no_default>,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=<no_default>,skip_blank_lines=True,parse_dates=None,infer_datetime_format=<no_default>,keep_date_col=<no_default>,date_parser=<no_default>,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='\"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=<no_default>,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=<no_default>)",
6
- "df.to_csv": "df.to_csv(path_or_buf=None,*,sep=',',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,mode='w',encoding=None,compression='infer',quoting=None,quotechar='\"',lineterminator=None,chunksize=None,date_format=None,doublequote=True,escapechar=None,decimal='.',errors='strict',storage_options=None)",
7
- "pd.read_fwf": "pd.read_fwf(filepath_or_buffer,*,colspecs='infer',widths=None,infer_nrows=100,dtype_backend=<no_default>,iterator=False,chunksize=None,**kwds)",
8
- "pd.read_clipboard": "pd.read_clipboard(sep='\\\\s+',dtype_backend=<no_default>,**kwargs)",
9
- "pd.read_excel": "pd.read_excel(io,sheet_name=0,*,header=0,names=None,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,parse_dates=False,date_parser=<no_default>,date_format=None,thousands=None,decimal='.',comment=None,skipfooter=0,storage_options=None,dtype_backend=<no_default>,engine_kwargs=None)",
10
- "df.to_excel": "df.to_excel(excel_writer,*,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,inf_rep='inf',freeze_panes=None,storage_options=None,engine_kwargs=None)",
11
- "classpandas.ExcelFile": "classpandas.ExcelFile(path_or_buffer,engine=None,storage_options=None,engine_kwargs=None)",
12
- "propertyExcelFile.book": "propertyExcelFile.book",
13
- "propertyExcelFile.sheet_names": "propertyExcelFile.sheet_names",
14
- "ExcelFile.parse": "ExcelFile.parse(sheet_name=0,header=0,names=None,index_col=None,usecols=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,parse_dates=False,date_parser=<no_default>,date_format=None,thousands=None,comment=None,skipfooter=0,dtype_backend=<no_default>,**kwds)",
15
- "Styler.to_excel": "Styler.to_excel(excel_writer,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep='inf',verbose=True,freeze_panes=None,storage_options=None)",
16
- "classpandas.ExcelWriter": "classpandas.ExcelWriter(path,engine=None,date_format=None,datetime_format=None,mode='w',storage_options=None,if_sheet_exists=None,engine_kwargs=None)",
17
- "pd.read_json": "pd.read_json(path_or_buf,*,orient=None,typ='frame',dtype=None,convert_axes=None,convert_dates=True,keep_default_dates=True,precise_float=False,date_unit=None,encoding=None,encoding_errors='strict',lines=False,chunksize=None,compression='infer',nrows=None,storage_options=None,dtype_backend=<no_default>,engine='ujson')",
18
- "pd.json_normalize": "pd.json_normalize(data,record_path=None,meta=None,meta_prefix=None,record_prefix=None,errors='raise',sep='.',max_level=None)",
19
- "df.to_json": "df.to_json(path_or_buf=None,*,orient=None,date_format=None,double_precision=10,force_ascii=True,date_unit='ms',default_handler=None,lines=False,compression='infer',index=None,indent=None,storage_options=None,mode='w')",
20
- "pd.io.json.build_table_schema": "pd.io.json.build_table_schema(data,index=True,primary_key=None,version=True)",
21
- "pd.read_html": "pd.read_html(io,*,match='.+',flavor=None,header=None,index_col=None,skiprows=None,attrs=None,parse_dates=False,thousands=',',encoding=None,decimal='.',converters=None,na_values=None,keep_default_na=True,displayed_only=True,extract_links=None,dtype_backend=<no_default>,storage_options=None)",
22
- "df.to_html": "df.to_html(buf=None,*,columns=None,col_space=None,header=True,index=True,na_rep='NaN',formatters=None,float_format=None,sparsify=None,index_names=True,justify=None,max_rows=None,max_cols=None,show_dimensions=False,decimal='.',bold_rows=True,classes=None,escape=True,notebook=False,border=None,table_id=None,render_links=False,encoding=None)",
23
- "Styler.to_html": "Styler.to_html(buf=None,*,table_uuid=None,table_attributes=None,sparse_index=None,sparse_columns=None,bold_headers=False,caption=None,max_rows=None,max_columns=None,encoding=None,doctype_html=False,exclude_styles=False,**kwargs)",
24
- "pd.read_xml": "pd.read_xml(path_or_buffer,*,xpath='./*',namespaces=None,elems_only=False,attrs_only=False,names=None,dtype=None,converters=None,parse_dates=None,encoding='utf-8',parser='lxml',stylesheet=None,iterparse=None,compression='infer',storage_options=None,dtype_backend=<no_default>)",
25
- "df.to_xml": "df.to_xml(path_or_buffer=None,*,index=True,root_name='data',row_name='row',na_rep=None,attr_cols=None,elem_cols=None,namespaces=None,prefix=None,encoding='utf-8',xml_declaration=True,pretty_print=True,parser='lxml',stylesheet=None,compression='infer',storage_options=None)",
26
- "df.to_latex": "df.to_latex(buf=None,*,columns=None,header=True,index=True,na_rep='NaN',formatters=None,float_format=None,sparsify=None,index_names=True,bold_rows=False,column_format=None,longtable=None,escape=None,encoding=None,decimal='.',multicolumn=None,multicolumn_format=None,multirow=None,caption=None,label=None,position=None)",
27
- "Styler.to_latex": "Styler.to_latex(buf=None,*,column_format=None,position=None,position_float=None,hrules=None,clines=None,label=None,caption=None,sparse_index=None,sparse_columns=None,multirow_align=None,multicol_align=None,siunitx=False,environment=None,encoding=None,convert_css=False)",
28
- "pd.read_hdf": "pd.read_hdf(path_or_buf,key=None,mode='r',errors='strict',where=None,start=None,stop=None,columns=None,iterator=False,chunksize=None,**kwargs)",
29
- "HDFStore.put": "HDFStore.put(key,value,format=None,index=True,append=False,complib=None,complevel=None,min_itemsize=None,nan_rep=None,data_columns=None,encoding=None,errors='strict',track_times=True,dropna=False)",
30
- "HDFStore.append": "HDFStore.append(key,value,format=None,axes=None,index=True,append=True,complib=None,complevel=None,columns=None,min_itemsize=None,nan_rep=None,chunksize=None,expectedrows=None,dropna=None,data_columns=None,encoding=None,errors='strict')",
31
- "HDFStore.get": "HDFStore.get(key)",
32
- "HDFStore.select": "HDFStore.select(key,where=None,start=None,stop=None,columns=None,iterator=False,chunksize=None,auto_close=False)",
33
- "HDFStore.info": "HDFStore.info()",
34
- "HDFStore.keys": "HDFStore.keys(include='pandas')",
35
- "HDFStore.groups": "HDFStore.groups()",
36
- "HDFStore.walk": "HDFStore.walk(where='/')",
37
- "pd.read_feather": "pd.read_feather(path,columns=None,use_threads=True,storage_options=None,dtype_backend=<no_default>)",
38
- "df.to_feather": "df.to_feather(path,**kwargs)",
39
- "pd.read_parquet": "pd.read_parquet(path,engine='auto',columns=None,storage_options=None,use_nullable_dtypes=<no_default>,dtype_backend=<no_default>,filesystem=None,filters=None,**kwargs)",
40
- "df.to_parquet": "df.to_parquet(path=None,*,engine='auto',compression='snappy',index=None,partition_cols=None,storage_options=None,**kwargs)",
41
- "pd.read_orc": "pd.read_orc(path,columns=None,dtype_backend=<no_default>,filesystem=None,**kwargs)",
42
- "df.to_orc": "df.to_orc(path=None,*,engine='pyarrow',index=None,engine_kwargs=None)",
43
- "pd.read_sas": "pd.read_sas(filepath_or_buffer,*,format=None,index=None,encoding=None,chunksize=None,iterator=False,compression='infer')",
44
- "pd.read_spss": "pd.read_spss(path,usecols=None,convert_categoricals=True,dtype_backend=<no_default>)",
45
- "pd.read_sql_table": "pd.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,parse_dates=None,columns=None,chunksize=None,dtype_backend=<no_default>)",
46
- "pd.read_sql_query": "pd.read_sql_query(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,chunksize=None,dtype=None,dtype_backend=<no_default>)",
47
- "pd.read_sql": "pd.read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=None,dtype_backend=<no_default>,dtype=None)",
48
- "df.to_sql": "df.to_sql(name,con,*,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None,method=None)",
49
- "pd.read_gbq": "pd.read_gbq(query,project_id=None,index_col=None,col_order=None,reauth=False,auth_local_webserver=True,dialect=None,location=None,configuration=None,credentials=None,use_bqstorage_api=None,max_results=None,progress_bar_type=None)",
50
- "pd.read_stata": "pd.read_stata(filepath_or_buffer,*,convert_dates=True,convert_categoricals=True,index_col=None,convert_missing=False,preserve_dtypes=True,columns=None,order_categoricals=True,chunksize=None,iterator=False,compression='infer',storage_options=None)",
51
- "df.to_stata": "df.to_stata(path,*,convert_dates=None,write_index=True,byteorder=None,time_stamp=None,data_label=None,variable_labels=None,version=114,convert_strl=None,compression='infer',storage_options=None,value_labels=None)",
52
- "propertyStataReader.data_label": "propertyStataReader.data_label",
53
- "StataReader.value_labels": "StataReader.value_labels()",
54
- "StataReader.variable_labels": "StataReader.variable_labels()",
55
- "StataWriter.write_file": "StataWriter.write_file()"
2
+ "pd.read_pickle": "pd.read_pickle(filepath_or_buffer,compression='infer',storage_options=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_pickle.html",
3
+ "df.to_pickle": "df.to_pickle(path,*,compression='infer',protocol=5,storage_options=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_pickle.html",
4
+ "pd.read_table": "pd.read_table(filepath_or_buffer,*,sep=<no_default>,delimiter=None,header='infer',names=<no_default>,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=<no_default>,skip_blank_lines=True,parse_dates=False,infer_datetime_format=<no_default>,keep_date_col=<no_default>,date_parser=<no_default>,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='\"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=<no_default>,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=<no_default>)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_table.html",
5
+ "pd.read_csv": "pd.read_csv(filepath_or_buffer,*,sep=<no_default>,delimiter=None,header='infer',names=<no_default>,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skipinitialspace=False,skiprows=None,skipfooter=0,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=<no_default>,skip_blank_lines=True,parse_dates=None,infer_datetime_format=<no_default>,keep_date_col=<no_default>,date_parser=<no_default>,date_format=None,dayfirst=False,cache_dates=True,iterator=False,chunksize=None,compression='infer',thousands=None,decimal='.',lineterminator=None,quotechar='\"',quoting=0,doublequote=True,escapechar=None,comment=None,encoding=None,encoding_errors='strict',dialect=None,on_bad_lines='error',delim_whitespace=<no_default>,low_memory=True,memory_map=False,float_precision=None,storage_options=None,dtype_backend=<no_default>)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_csv.html",
6
+ "df.to_csv": "df.to_csv(path_or_buf=None,*,sep=',',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,mode='w',encoding=None,compression='infer',quoting=None,quotechar='\"',lineterminator=None,chunksize=None,date_format=None,doublequote=True,escapechar=None,decimal='.',errors='strict',storage_options=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html#pandas.DataFrame.to_csv",
7
+ "pd.read_fwf": "pd.read_fwf(filepath_or_buffer,*,colspecs='infer',widths=None,infer_nrows=100,dtype_backend=<no_default>,iterator=False,chunksize=None,**kwds)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_fwf.html",
8
+ "pd.read_clipboard": "pd.read_clipboard(sep='\\\\s+',dtype_backend=<no_default>,**kwargs)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_clipboard.html#pandas.read_clipboard",
9
+ "pd.read_excel": "pd.read_excel(io,sheet_name=0,*,header=0,names=None,index_col=None,usecols=None,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,parse_dates=False,date_parser=<no_default>,date_format=None,thousands=None,decimal='.',comment=None,skipfooter=0,storage_options=None,dtype_backend=<no_default>,engine_kwargs=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_excel.html",
10
+ "df.to_excel": "df.to_excel(excel_writer,*,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,inf_rep='inf',freeze_panes=None,storage_options=None,engine_kwargs=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_excel.html",
11
+ "pandas.ExcelFile": "pandas.ExcelFile(path_or_buffer,engine=None,storage_options=None,engine_kwargs=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.ExcelFile.html",
12
+ "ExcelFile.book": "ExcelFile.book\nhttps://pandas.pydata.org/docs/reference/api/pandas.ExcelFile.book.html",
13
+ "ExcelFile.sheet_names": "ExcelFile.sheet_names\nhttps://pandas.pydata.org/docs/reference/api/pandas.ExcelFile.sheet_names.html",
14
+ "ExcelFile.parse": "ExcelFile.parse(sheet_name=0,header=0,names=None,index_col=None,usecols=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,parse_dates=False,date_parser=<no_default>,date_format=None,thousands=None,comment=None,skipfooter=0,dtype_backend=<no_default>,**kwds)\nhttps://pandas.pydata.org/docs/reference/api/pandas.ExcelFile.parse.html",
15
+ "Styler.to_excel": "Styler.to_excel(excel_writer,sheet_name='Sheet1',na_rep='',float_format=None,columns=None,header=True,index=True,index_label=None,startrow=0,startcol=0,engine=None,merge_cells=True,encoding=None,inf_rep='inf',verbose=True,freeze_panes=None,storage_options=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.formats.style.Styler.to_excel.html",
16
+ "pandas.ExcelWriter": "pandas.ExcelWriter(path,engine=None,date_format=None,datetime_format=None,mode='w',storage_options=None,if_sheet_exists=None,engine_kwargs=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.ExcelWriter.html",
17
+ "pd.read_json": "pd.read_json(path_or_buf,*,orient=None,typ='frame',dtype=None,convert_axes=None,convert_dates=True,keep_default_dates=True,precise_float=False,date_unit=None,encoding=None,encoding_errors='strict',lines=False,chunksize=None,compression='infer',nrows=None,storage_options=None,dtype_backend=<no_default>,engine='ujson')\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_json.html",
18
+ "pd.json_normalize": "pd.json_normalize(data,record_path=None,meta=None,meta_prefix=None,record_prefix=None,errors='raise',sep='.',max_level=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.json_normalize.html",
19
+ "df.to_json": "df.to_json(path_or_buf=None,*,orient=None,date_format=None,double_precision=10,force_ascii=True,date_unit='ms',default_handler=None,lines=False,compression='infer',index=None,indent=None,storage_options=None,mode='w')\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_json.html",
20
+ "pd.io.json.build_table_schema": "pd.io.json.build_table_schema(data,index=True,primary_key=None,version=True)\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.json.build_table_schema.html",
21
+ "pd.read_html": "pd.read_html(io,*,match='.+',flavor=None,header=None,index_col=None,skiprows=None,attrs=None,parse_dates=False,thousands=',',encoding=None,decimal='.',converters=None,na_values=None,keep_default_na=True,displayed_only=True,extract_links=None,dtype_backend=<no_default>,storage_options=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_html.html",
22
+ "df.to_html": "df.to_html(buf=None,*,columns=None,col_space=None,header=True,index=True,na_rep='NaN',formatters=None,float_format=None,sparsify=None,index_names=True,justify=None,max_rows=None,max_cols=None,show_dimensions=False,decimal='.',bold_rows=True,classes=None,escape=True,notebook=False,border=None,table_id=None,render_links=False,encoding=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_html.html",
23
+ "Styler.to_html": "Styler.to_html(buf=None,*,table_uuid=None,table_attributes=None,sparse_index=None,sparse_columns=None,bold_headers=False,caption=None,max_rows=None,max_columns=None,encoding=None,doctype_html=False,exclude_styles=False,**kwargs)\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.formats.style.Styler.to_html.html",
24
+ "pd.read_xml": "pd.read_xml(path_or_buffer,*,xpath='./*',namespaces=None,elems_only=False,attrs_only=False,names=None,dtype=None,converters=None,parse_dates=None,encoding='utf-8',parser='lxml',stylesheet=None,iterparse=None,compression='infer',storage_options=None,dtype_backend=<no_default>)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_xml.html",
25
+ "df.to_xml": "df.to_xml(path_or_buffer=None,*,index=True,root_name='data',row_name='row',na_rep=None,attr_cols=None,elem_cols=None,namespaces=None,prefix=None,encoding='utf-8',xml_declaration=True,pretty_print=True,parser='lxml',stylesheet=None,compression='infer',storage_options=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_xml.html",
26
+ "df.to_latex": "df.to_latex(buf=None,*,columns=None,header=True,index=True,na_rep='NaN',formatters=None,float_format=None,sparsify=None,index_names=True,bold_rows=False,column_format=None,longtable=None,escape=None,encoding=None,decimal='.',multicolumn=None,multicolumn_format=None,multirow=None,caption=None,label=None,position=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_latex.html",
27
+ "Styler.to_latex": "Styler.to_latex(buf=None,*,column_format=None,position=None,position_float=None,hrules=None,clines=None,label=None,caption=None,sparse_index=None,sparse_columns=None,multirow_align=None,multicol_align=None,siunitx=False,environment=None,encoding=None,convert_css=False)\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.formats.style.Styler.to_latex.html",
28
+ "pd.read_hdf": "pd.read_hdf(path_or_buf,key=None,mode='r',errors='strict',where=None,start=None,stop=None,columns=None,iterator=False,chunksize=None,**kwargs)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_hdf.html",
29
+ "HDFStore.put": "HDFStore.put(key,value,format=None,index=True,append=False,complib=None,complevel=None,min_itemsize=None,nan_rep=None,data_columns=None,encoding=None,errors='strict',track_times=True,dropna=False)\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.put.html",
30
+ "HDFStore.append": "HDFStore.append(key,value,format=None,axes=None,index=True,append=True,complib=None,complevel=None,columns=None,min_itemsize=None,nan_rep=None,chunksize=None,expectedrows=None,dropna=None,data_columns=None,encoding=None,errors='strict')\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.append.html",
31
+ "HDFStore.get": "HDFStore.get(key)\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.get.html",
32
+ "HDFStore.select": "HDFStore.select(key,where=None,start=None,stop=None,columns=None,iterator=False,chunksize=None,auto_close=False)\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.select.html",
33
+ "HDFStore.info": "HDFStore.info()\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.info.html",
34
+ "HDFStore.keys": "HDFStore.keys(include='pandas')\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.keys.html",
35
+ "HDFStore.groups": "HDFStore.groups()\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.groups.html",
36
+ "HDFStore.walk": "HDFStore.walk(where='/')\nhttps://pandas.pydata.org/docs/reference/api/pandas.HDFStore.walk.html",
37
+ "pd.read_feather": "pd.read_feather(path,columns=None,use_threads=True,storage_options=None,dtype_backend=<no_default>)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_feather.html",
38
+ "df.to_feather": "df.to_feather(path,**kwargs)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_feather.html",
39
+ "pd.read_parquet": "pd.read_parquet(path,engine='auto',columns=None,storage_options=None,use_nullable_dtypes=<no_default>,dtype_backend=<no_default>,filesystem=None,filters=None,**kwargs)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_parquet.html",
40
+ "df.to_parquet": "df.to_parquet(path=None,*,engine='auto',compression='snappy',index=None,partition_cols=None,storage_options=None,**kwargs)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_parquet.html",
41
+ "pd.read_orc": "pd.read_orc(path,columns=None,dtype_backend=<no_default>,filesystem=None,**kwargs)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_orc.html",
42
+ "df.to_orc": "df.to_orc(path=None,*,engine='pyarrow',index=None,engine_kwargs=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_orc.html",
43
+ "pd.read_sas": "pd.read_sas(filepath_or_buffer,*,format=None,index=None,encoding=None,chunksize=None,iterator=False,compression='infer')\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_sas.html",
44
+ "pd.read_spss": "pd.read_spss(path,usecols=None,convert_categoricals=True,dtype_backend=<no_default>)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_spss.html",
45
+ "pd.read_sql_table": "pd.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,parse_dates=None,columns=None,chunksize=None,dtype_backend=<no_default>)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_sql_table.html",
46
+ "pd.read_sql_query": "pd.read_sql_query(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,chunksize=None,dtype=None,dtype_backend=<no_default>)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_sql_query.html",
47
+ "pd.read_sql": "pd.read_sql(sql,con,index_col=None,coerce_float=True,params=None,parse_dates=None,columns=None,chunksize=None,dtype_backend=<no_default>,dtype=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_sql.html",
48
+ "df.to_sql": "df.to_sql(name,con,*,schema=None,if_exists='fail',index=True,index_label=None,chunksize=None,dtype=None,method=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_sql.html",
49
+ "pd.read_gbq": "pd.read_gbq(query,project_id=None,index_col=None,col_order=None,reauth=False,auth_local_webserver=True,dialect=None,location=None,configuration=None,credentials=None,use_bqstorage_api=None,max_results=None,progress_bar_type=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_gbq.html",
50
+ "pd.read_stata": "pd.read_stata(filepath_or_buffer,*,convert_dates=True,convert_categoricals=True,index_col=None,convert_missing=False,preserve_dtypes=True,columns=None,order_categoricals=True,chunksize=None,iterator=False,compression='infer',storage_options=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.read_stata.html",
51
+ "df.to_stata": "df.to_stata(path,*,convert_dates=None,write_index=True,byteorder=None,time_stamp=None,data_label=None,variable_labels=None,version=114,convert_strl=None,compression='infer',storage_options=None,value_labels=None)\nhttps://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_stata.html",
52
+ "StataReader.data_label": "StataReader.data_label\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.stata.StataReader.data_label.html",
53
+ "StataReader.value_labels": "StataReader.value_labels()\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.stata.StataReader.value_labels.html",
54
+ "StataReader.variable_labels": "StataReader.variable_labels()\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.stata.StataReader.variable_labels.html",
55
+ "StataWriter.write_file": "StataWriter.write_file()\nhttps://pandas.pydata.org/docs/reference/api/pandas.io.stata.StataWriter.write_file.html"
56
56
  }
@@ -1,25 +1,25 @@
1
1
  {
2
- "relplot": "seaborn.relplot(data=None,*,x=None,y=None,hue=None,size=None,style=None,units=None,weights=None,row=None,col=None,col_wrap=None,row_order=None,col_order=None,palette=None,hue_order=None,hue_norm=None,sizes=None,size_order=None,size_norm=None,markers=None,dashes=None,style_order=None,legend='auto',kind='scatter',height=5,aspect=1,facet_kws=None,**kwargs)",
3
- "scatterplot": "seaborn.scatterplot(data=None,*,x=None,y=None,hue=None,size=None,style=None,palette=None,hue_order=None,hue_norm=None,sizes=None,size_order=None,size_norm=None,markers=True,style_order=None,legend='auto',ax=None,**kwargs)",
4
- "lineplot": "seaborn.lineplot(data=None,*,x=None,y=None,hue=None,size=None,style=None,units=None,weights=None,palette=None,hue_order=None,hue_norm=None,sizes=None,size_order=None,size_norm=None,dashes=True,markers=None,style_order=None,estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,orient='x',sort=True,err_style='band',err_kws=None,legend='auto',ci='deprecated',ax=None,**kwargs)",
5
- "displot": "seaborn.displot(data=None,*,x=None,y=None,hue=None,row=None,col=None,weights=None,kind='hist',rug=False,rug_kws=None,log_scale=None,legend=True,palette=None,hue_order=None,hue_norm=None,color=None,col_wrap=None,row_order=None,col_order=None,height=5,aspect=1,facet_kws=None,**kwargs)",
6
- "histplot": "seaborn.histplot(data=None,*,x=None,y=None,hue=None,weights=None,stat='count',bins='auto',binwidth=None,binrange=None,discrete=None,cumulative=False,common_bins=True,common_norm=True,multiple='layer',element='bars',fill=True,shrink=1,kde=False,kde_kws=None,line_kws=None,thresh=0,pthresh=None,pmax=None,cbar=False,cbar_ax=None,cbar_kws=None,palette=None,hue_order=None,hue_norm=None,color=None,log_scale=None,legend=True,ax=None,**kwargs)",
7
- "kdeplot": "seaborn.kdeplot(data=None,*,x=None,y=None,hue=None,weights=None,palette=None,hue_order=None,hue_norm=None,color=None,fill=None,multiple='layer',common_norm=True,common_grid=False,cumulative=False,bw_method='scott',bw_adjust=1,warn_singular=True,log_scale=None,levels=10,thresh=0.05,gridsize=200,cut=3,clip=None,legend=True,cbar=False,cbar_ax=None,cbar_kws=None,ax=None,**kwargs)",
8
- "ecdfplot": "seaborn.ecdfplot(data=None,*,x=None,y=None,hue=None,weights=None,stat='proportion',complementary=False,palette=None,hue_order=None,hue_norm=None,log_scale=None,legend=True,ax=None,**kwargs)",
9
- "rugplot": "seaborn.rugplot(data=None,*,x=None,y=None,hue=None,height=0.025,expand_margins=True,palette=None,hue_order=None,hue_norm=None,legend=True,ax=None,**kwargs)",
10
- "distplot": "seaborn.distplot(a=None,bins=None,hist=True,kde=True,rug=False,fit=None,hist_kws=None,kde_kws=None,rug_kws=None,fit_kws=None,color=None,vertical=False,norm_hist=False,axlabel=None,label=None,ax=None,x=None)",
11
- "catplot": "seaborn.catplot(data=None,*,x=None,y=None,hue=None,row=None,col=None,kind='strip',estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,units=None,weights=None,order=None,hue_order=None,row_order=None,col_order=None,col_wrap=None,height=5,aspect=1,log_scale=None,native_scale=False,formatter=None,orient=None,color=None,palette=None,hue_norm=None,legend='auto',legend_out=True,sharex=True,sharey=True,margin_titles=False,facet_kws=None,ci=<deprecated>,**kwargs)",
12
- "stripplot": "seaborn.stripplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,jitter=True,dodge=False,orient=None,color=None,palette=None,size=5,edgecolor=<default>,linewidth=0,hue_norm=None,log_scale=None,native_scale=False,formatter=None,legend='auto',ax=None,**kwargs)",
13
- "boxplot": "seaborn.boxplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,dodge='auto',width=0.8,gap=0,whis=1.5,linecolor='auto',linewidth=None,fliersize=None,hue_norm=None,native_scale=False,log_scale=None,formatter=None,legend='auto',ax=None,**kwargs)",
14
- "violinplot": "seaborn.violinplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,inner='box',split=False,width=0.8,dodge='auto',gap=0,linewidth=None,linecolor='auto',cut=2,gridsize=100,bw_method='scott',bw_adjust=1,density_norm='area',common_norm=False,hue_norm=None,formatter=None,log_scale=None,native_scale=False,legend='auto',scale=<deprecated>,scale_hue=<deprecated>,bw=<deprecated>,inner_kws=None,ax=None,**kwargs)",
15
- "boxenplot": "seaborn.boxenplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,dodge='auto',width=0.8,gap=0,linewidth=None,linecolor=None,width_method='exponential',k_depth='tukey',outlier_prop=0.007,trust_alpha=0.05,showfliers=True,hue_norm=None,log_scale=None,native_scale=False,formatter=None,legend='auto',scale=<deprecated>,box_kws=None,flier_kws=None,line_kws=None,ax=None,**kwargs)",
16
- "pointplot": "seaborn.pointplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,units=None,weights=None,color=None,palette=None,hue_norm=None,markers=<default>,linestyles=<default>,dodge=False,log_scale=None,native_scale=False,orient=None,capsize=0,formatter=None,legend='auto',err_kws=None,ci=<deprecated>,errwidth=<deprecated>,join=<deprecated>,scale=<deprecated>,ax=None,**kwargs)",
17
- "barplot": "seaborn.barplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,units=None,weights=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,hue_norm=None,width=0.8,dodge='auto',gap=0,log_scale=None,native_scale=False,formatter=None,legend='auto',capsize=0,err_kws=None,ci=<deprecated>,errcolor=<deprecated>,errwidth=<deprecated>,ax=None,**kwargs)",
18
- "countplot": "seaborn.countplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,hue_norm=None,stat='count',width=0.8,dodge='auto',gap=0,log_scale=None,native_scale=False,formatter=None,legend='auto',ax=None,**kwargs)",
19
- "lmplot": "seaborn.lmplot(data,*,x=None,y=None,hue=None,col=None,row=None,palette=None,col_wrap=None,height=5,aspect=1,markers='o',sharex=None,sharey=None,hue_order=None,col_order=None,row_order=None,legend=True,legend_out=None,x_estimator=None,x_bins=None,x_ci='ci',scatter=True,fit_reg=True,ci=95,n_boot=1000,units=None,seed=None,order=1,logistic=False,lowess=False,robust=False,logx=False,x_partial=None,y_partial=None,truncate=True,x_jitter=None,y_jitter=None,scatter_kws=None,line_kws=None,facet_kws=None)",
20
- "regplot": "seaborn.regplot(data=None,*,x=None,y=None,x_estimator=None,x_bins=None,x_ci='ci',scatter=True,fit_reg=True,ci=95,n_boot=1000,units=None,seed=None,order=1,logistic=False,lowess=False,robust=False,logx=False,x_partial=None,y_partial=None,truncate=True,dropna=True,x_jitter=None,y_jitter=None,label=None,color=None,marker='o',scatter_kws=None,line_kws=None,ax=None)",
21
- "residplot": "seaborn.residplot(data=None,*,x=None,y=None,x_partial=None,y_partial=None,lowess=False,order=1,robust=False,dropna=True,label=None,color=None,scatter_kws=None,line_kws=None,ax=None)",
22
- "pairplot": "seaborn.pairplot(data,*,hue=None,hue_order=None,palette=None,vars=None,x_vars=None,y_vars=None,kind='scatter',diag_kind='auto',markers=None,height=2.5,aspect=1,corner=False,dropna=False,plot_kws=None,diag_kws=None,grid_kws=None,size=None)",
23
- "jointplot": "seaborn.jointplot(data=None,*,x=None,y=None,hue=None,kind='scatter',height=6,ratio=5,space=0.2,dropna=False,xlim=None,ylim=None,color=None,palette=None,hue_order=None,hue_norm=None,marginal_ticks=False,joint_kws=None,marginal_kws=None,**kwargs)",
24
- "plotting_context": "seaborn.plotting_context(context=None,font_scale=1,rc=None)"
2
+ "relplot": "seaborn.relplot(data=None,*,x=None,y=None,hue=None,size=None,style=None,units=None,weights=None,row=None,col=None,col_wrap=None,row_order=None,col_order=None,palette=None,hue_order=None,hue_norm=None,sizes=None,size_order=None,size_norm=None,markers=None,dashes=None,style_order=None,legend='auto',kind='scatter',height=5,aspect=1,facet_kws=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.relplot.html",
3
+ "scatterplot": "seaborn.scatterplot(data=None,*,x=None,y=None,hue=None,size=None,style=None,palette=None,hue_order=None,hue_norm=None,sizes=None,size_order=None,size_norm=None,markers=True,style_order=None,legend='auto',ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.scatterplot.html",
4
+ "lineplot": "seaborn.lineplot(data=None,*,x=None,y=None,hue=None,size=None,style=None,units=None,weights=None,palette=None,hue_order=None,hue_norm=None,sizes=None,size_order=None,size_norm=None,dashes=True,markers=None,style_order=None,estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,orient='x',sort=True,err_style='band',err_kws=None,legend='auto',ci='deprecated',ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.lineplot.html",
5
+ "displot": "seaborn.displot(data=None,*,x=None,y=None,hue=None,row=None,col=None,weights=None,kind='hist',rug=False,rug_kws=None,log_scale=None,legend=True,palette=None,hue_order=None,hue_norm=None,color=None,col_wrap=None,row_order=None,col_order=None,height=5,aspect=1,facet_kws=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.displot.html",
6
+ "histplot": "seaborn.histplot(data=None,*,x=None,y=None,hue=None,weights=None,stat='count',bins='auto',binwidth=None,binrange=None,discrete=None,cumulative=False,common_bins=True,common_norm=True,multiple='layer',element='bars',fill=True,shrink=1,kde=False,kde_kws=None,line_kws=None,thresh=0,pthresh=None,pmax=None,cbar=False,cbar_ax=None,cbar_kws=None,palette=None,hue_order=None,hue_norm=None,color=None,log_scale=None,legend=True,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.histplot.html",
7
+ "kdeplot": "seaborn.kdeplot(data=None,*,x=None,y=None,hue=None,weights=None,palette=None,hue_order=None,hue_norm=None,color=None,fill=None,multiple='layer',common_norm=True,common_grid=False,cumulative=False,bw_method='scott',bw_adjust=1,warn_singular=True,log_scale=None,levels=10,thresh=0.05,gridsize=200,cut=3,clip=None,legend=True,cbar=False,cbar_ax=None,cbar_kws=None,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.kdeplot.html",
8
+ "ecdfplot": "seaborn.ecdfplot(data=None,*,x=None,y=None,hue=None,weights=None,stat='proportion',complementary=False,palette=None,hue_order=None,hue_norm=None,log_scale=None,legend=True,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.ecdfplot.html",
9
+ "rugplot": "seaborn.rugplot(data=None,*,x=None,y=None,hue=None,height=0.025,expand_margins=True,palette=None,hue_order=None,hue_norm=None,legend=True,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.rugplot.html",
10
+ "distplot": "seaborn.distplot(a=None,bins=None,hist=True,kde=True,rug=False,fit=None,hist_kws=None,kde_kws=None,rug_kws=None,fit_kws=None,color=None,vertical=False,norm_hist=False,axlabel=None,label=None,ax=None,x=None)\nhttps://seaborn.pydata.org/generated/seaborn.distplot.html",
11
+ "catplot": "seaborn.catplot(data=None,*,x=None,y=None,hue=None,row=None,col=None,kind='strip',estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,units=None,weights=None,order=None,hue_order=None,row_order=None,col_order=None,col_wrap=None,height=5,aspect=1,log_scale=None,native_scale=False,formatter=None,orient=None,color=None,palette=None,hue_norm=None,legend='auto',legend_out=True,sharex=True,sharey=True,margin_titles=False,facet_kws=None,ci=<deprecated>,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.catplot.html#seaborn.catplot",
12
+ "stripplot": "seaborn.stripplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,jitter=True,dodge=False,orient=None,color=None,palette=None,size=5,edgecolor=<default>,linewidth=0,hue_norm=None,log_scale=None,native_scale=False,formatter=None,legend='auto',ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.stripplot.html#seaborn.stripplot",
13
+ "boxplot": "seaborn.boxplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,dodge='auto',width=0.8,gap=0,whis=1.5,linecolor='auto',linewidth=None,fliersize=None,hue_norm=None,native_scale=False,log_scale=None,formatter=None,legend='auto',ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.boxplot.html#seaborn.boxplot",
14
+ "violinplot": "seaborn.violinplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,inner='box',split=False,width=0.8,dodge='auto',gap=0,linewidth=None,linecolor='auto',cut=2,gridsize=100,bw_method='scott',bw_adjust=1,density_norm='area',common_norm=False,hue_norm=None,formatter=None,log_scale=None,native_scale=False,legend='auto',scale=<deprecated>,scale_hue=<deprecated>,bw=<deprecated>,inner_kws=None,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.violinplot.html#seaborn.violinplot",
15
+ "boxenplot": "seaborn.boxenplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,dodge='auto',width=0.8,gap=0,linewidth=None,linecolor=None,width_method='exponential',k_depth='tukey',outlier_prop=0.007,trust_alpha=0.05,showfliers=True,hue_norm=None,log_scale=None,native_scale=False,formatter=None,legend='auto',scale=<deprecated>,box_kws=None,flier_kws=None,line_kws=None,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.boxenplot.html",
16
+ "pointplot": "seaborn.pointplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,units=None,weights=None,color=None,palette=None,hue_norm=None,markers=<default>,linestyles=<default>,dodge=False,log_scale=None,native_scale=False,orient=None,capsize=0,formatter=None,legend='auto',err_kws=None,ci=<deprecated>,errwidth=<deprecated>,join=<deprecated>,scale=<deprecated>,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.pointplot.html",
17
+ "barplot": "seaborn.barplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,estimator='mean',errorbar=('ci',95),n_boot=1000,seed=None,units=None,weights=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,hue_norm=None,width=0.8,dodge='auto',gap=0,log_scale=None,native_scale=False,formatter=None,legend='auto',capsize=0,err_kws=None,ci=<deprecated>,errcolor=<deprecated>,errwidth=<deprecated>,ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.barplot.html",
18
+ "countplot": "seaborn.countplot(data=None,*,x=None,y=None,hue=None,order=None,hue_order=None,orient=None,color=None,palette=None,saturation=0.75,fill=True,hue_norm=None,stat='count',width=0.8,dodge='auto',gap=0,log_scale=None,native_scale=False,formatter=None,legend='auto',ax=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.countplot.html",
19
+ "lmplot": "seaborn.lmplot(data,*,x=None,y=None,hue=None,col=None,row=None,palette=None,col_wrap=None,height=5,aspect=1,markers='o',sharex=None,sharey=None,hue_order=None,col_order=None,row_order=None,legend=True,legend_out=None,x_estimator=None,x_bins=None,x_ci='ci',scatter=True,fit_reg=True,ci=95,n_boot=1000,units=None,seed=None,order=1,logistic=False,lowess=False,robust=False,logx=False,x_partial=None,y_partial=None,truncate=True,x_jitter=None,y_jitter=None,scatter_kws=None,line_kws=None,facet_kws=None)\nhttps://seaborn.pydata.org/generated/seaborn.lmplot.html",
20
+ "regplot": "seaborn.regplot(data=None,*,x=None,y=None,x_estimator=None,x_bins=None,x_ci='ci',scatter=True,fit_reg=True,ci=95,n_boot=1000,units=None,seed=None,order=1,logistic=False,lowess=False,robust=False,logx=False,x_partial=None,y_partial=None,truncate=True,dropna=True,x_jitter=None,y_jitter=None,label=None,color=None,marker='o',scatter_kws=None,line_kws=None,ax=None)\nhttps://seaborn.pydata.org/generated/seaborn.regplot.html",
21
+ "residplot": "seaborn.residplot(data=None,*,x=None,y=None,x_partial=None,y_partial=None,lowess=False,order=1,robust=False,dropna=True,label=None,color=None,scatter_kws=None,line_kws=None,ax=None)\nhttps://seaborn.pydata.org/generated/seaborn.residplot.html",
22
+ "pairplot": "seaborn.pairplot(data,*,hue=None,hue_order=None,palette=None,vars=None,x_vars=None,y_vars=None,kind='scatter',diag_kind='auto',markers=None,height=2.5,aspect=1,corner=False,dropna=False,plot_kws=None,diag_kws=None,grid_kws=None,size=None)\nhttps://seaborn.pydata.org/generated/seaborn.pairplot.html",
23
+ "jointplot": "seaborn.jointplot(data=None,*,x=None,y=None,hue=None,kind='scatter',height=6,ratio=5,space=0.2,dropna=False,xlim=None,ylim=None,color=None,palette=None,hue_order=None,hue_norm=None,marginal_ticks=False,joint_kws=None,marginal_kws=None,**kwargs)\nhttps://seaborn.pydata.org/generated/seaborn.jointplot.html",
24
+ "plotting_context": "seaborn.plotting_context(context=None,font_scale=1,rc=None)\nhttps://seaborn.pydata.org/generated/seaborn.plotting_context.html"
25
25
  }
@@ -2,13 +2,14 @@ from .ips import *
2
2
  from .netfinder import fetch, get_soup
3
3
 
4
4
 
5
- def update_pd_usages(
5
+ def usage_pd(
6
6
  url="https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_clipboard.html",
7
7
  dir_save=None,
8
8
  ):
9
9
  # extract each usage from its url
10
10
  def get_usage(url):
11
11
  # extract each usage from its url
12
+ print(f"trying: {url}")
12
13
  sp = get_soup(url, driver="se")
13
14
  return fetch(sp, where="dt")[0]
14
15
 
@@ -28,7 +29,7 @@ def update_pd_usages(
28
29
 
29
30
  usages = [get_usage(i) for i in links]
30
31
  dict_usage = {}
31
- for usage in usages:
32
+ for usage, link in zip(usages, links):
32
33
  if usage.startswith("DataFrame"):
33
34
  usage = usage.replace("DataFrame", "df")
34
35
  if usage.startswith("pandas"):
@@ -40,9 +41,9 @@ def update_pd_usages(
40
41
  str2rm = ["class", "property"]
41
42
  for str2rm_ in str2rm:
42
43
  if usage.startswith(str2rm_):
43
- usage = usage.replace(str2rm, "")
44
+ usage = usage.replace(str2rm_, "")
44
45
  funcname = ssplit(usage, by="(")[0]
45
- dict_usage.update({funcname: usage})
46
+ dict_usage.update({funcname: usage + f"\n{link}"})
46
47
  # save to local
47
48
  dir_save += "/" if not dir_save.endswith("/") else ""
48
49
  fsave(
@@ -51,7 +52,7 @@ def update_pd_usages(
51
52
  )
52
53
 
53
54
 
54
- def update_sns_usages(
55
+ def usage_sns(
55
56
  url="https://seaborn.pydata.org/generated/seaborn.swarmplot.html",
56
57
  dir_save=None,
57
58
  ):
@@ -72,8 +73,8 @@ def update_sns_usages(
72
73
 
73
74
  # extract each usage from its url
74
75
  def get_usage(url):
76
+ print(f"trying: {url}")
75
77
  sp = get_soup(url, driver="se")
76
- # preview(sp)
77
78
  return fetch(sp, where="dt")[0]
78
79
 
79
80
  if dir_save is None:
@@ -104,9 +105,9 @@ def update_sns_usages(
104
105
 
105
106
  usages = [get_usage(i) for i in links]
106
107
  dict_usage = {}
107
- for usage in usages:
108
+ for usage, link in zip(usages, links):
108
109
  dict_usage.update(
109
- {ssplit(usage, by="(")[0].replace("seaborn.", ""): usage[:-1]}
110
+ {ssplit(usage, by="(")[0].replace("seaborn.", ""): usage[:-1] + f"\n{link}"}
110
111
  )
111
112
  # save to local
112
113
  dir_save += "/" if not dir_save.endswith("/") else ""
py2ls/ips.py CHANGED
@@ -59,6 +59,21 @@ try:
59
59
  except NameError:
60
60
  pass
61
61
 
62
+ def plt_font(dir_font: str = "/System/Library/Fonts/Hiragino Sans GB.ttc"):
63
+ """
64
+ Add the Chinese font to the font manager
65
+ Args:
66
+ dir_font (str, optional): _description_. Defaults to "/System/Library/Fonts/Hiragino Sans GB.ttc".
67
+ """
68
+ import matplotlib.pyplot as plt
69
+ from matplotlib import font_manager
70
+
71
+ font_manager.fontManager.addfont(dir_font)
72
+ fontname_chinese = os.path.basename(dir_font).split(".")[0]
73
+
74
+ plt.rcParams["font.sans-serif"] = [fontname_chinese]
75
+ plt.rcParams["font.family"] = "sans-serif"
76
+ plt.rcParams["axes.unicode_minus"] = False
62
77
 
63
78
  # set 'dir_save'
64
79
  if "dar" in sys.platform:
@@ -255,16 +270,21 @@ def is_package_installed(package_name):
255
270
  return package_spec is not None
256
271
 
257
272
 
258
- def upgrade(module="py2ls"):
259
- # try:
260
- # pkg_resources.get_distribution(module)
261
- # except pkg_resources.DistributionNotFound:
262
- # subprocess.check_call([sys.executable, "-m", "pip", "install", module])
273
+ def upgrade(module="py2ls",uninstall=False):
274
+ """
275
+ Installs or upgrades a specified Python module.
276
+
277
+ Parameters:
278
+ module (str): The name of the module to install/upgrade.
279
+ uninstall (bool): If True, uninstalls the webdriver-manager before upgrading.
280
+ """
263
281
  if not is_package_installed(module):
264
282
  try:
265
283
  subprocess.check_call([sys.executable, "-m", "pip", "install", module])
266
284
  except subprocess.CalledProcessError as e:
267
285
  print(f"An error occurred while installing {module}: {e}")
286
+ if uninstall:
287
+ subprocess.check_call(["pip", "uninstall", "-y", "webdriver-manager"])
268
288
  try:
269
289
  subprocess.check_call(
270
290
  [sys.executable, "-m", "pip", "install", "--upgrade", module]
@@ -515,8 +535,8 @@ def strcmp(search_term, candidates, ignore_case=True, verbose=False, scorer="WR"
515
535
  similarity_scores = [fuzz.partial_ratio(str1_, word) for word in str2_]
516
536
  elif "W" in scorer.lower():
517
537
  similarity_scores = [fuzz.WRatio(str1_, word) for word in str2_]
518
- elif "Ratio" in scorer.lower():
519
- similarity_scores = [fuzz.Ratio(str1_, word) for word in str2_]
538
+ elif "ratio" in scorer.lower():#Ratio (Strictest)
539
+ similarity_scores = [fuzz.ratio(str1_, word) for word in str2_]
520
540
  else:
521
541
  similarity_scores = [fuzz.WRatio(str1_, word) for word in str2_]
522
542
  best_match_index = similarity_scores.index(max(similarity_scores))
@@ -528,7 +548,7 @@ def strcmp(search_term, candidates, ignore_case=True, verbose=False, scorer="WR"
528
548
  elif "W" in scorer.lower():
529
549
  best_match_score = fuzz.WRatio(str1_, str2_)
530
550
  elif "Ratio" in scorer.lower():
531
- best_match_score = fuzz.Ratio(str1_, str2_)
551
+ best_match_score = fuzz.ratio(str1_, str2_)
532
552
  else:
533
553
  best_match_score = fuzz.WRatio(str1_, str2_)
534
554
  if verbose:
@@ -543,6 +563,80 @@ def strcmp(search_term, candidates, ignore_case=True, verbose=False, scorer="WR"
543
563
  # str2 = ['PLoS Computational Biology', 'PLOS BIOLOGY']
544
564
  # best_match, idx = strcmp(str1, str2, ignore_case=1)
545
565
 
566
+ def cn2pinyin(
567
+ cn_str: Union[str, list] = None,
568
+ sep: str = " ",
569
+ fmt: str = "normal", # which style you want to set
570
+ ):
571
+ from pypinyin import pinyin, Style
572
+
573
+ """
574
+ Converts Chinese characters to Pinyin.
575
+ usage:
576
+ cn2pinyin(cn_str, sep="_", fmt="tone")
577
+ Args:
578
+ cn_str (str): Chinese string to convert.
579
+ sep (str): Separator for the output Pinyin string.
580
+ style (Style): "normal","tone", "tone2","tone3",
581
+ "finals","finals_tone","finals_tone2","finals_tone3",
582
+ "initials","bopomofo","bopomofo_first","cyrillic","pl",
583
+ Returns:
584
+ cn_str: The Pinyin representation of the Chinese string.
585
+ """
586
+ fmts = [
587
+ "normal",
588
+ "tone",
589
+ "tone2",
590
+ "tone3",
591
+ "finals",
592
+ "finals_tone",
593
+ "finals_tone2",
594
+ "finals_tone3",
595
+ "initials",
596
+ "bopomofo",
597
+ "bopomofo_first",
598
+ "cyrillic",
599
+ "pl",
600
+ ]
601
+ fmt = strcmp(fmt, fmts)[0]
602
+ if fmt == "normal":
603
+ style = Style.NORMAL
604
+ elif fmt == "tone":
605
+ style = Style.TONE
606
+ elif fmt == "tone2":
607
+ style = Style.TONE2
608
+ elif fmt == "tone3":
609
+ style = Style.TONE3
610
+ elif fmt == "finals":
611
+ style = Style.FINALS
612
+ elif fmt == "finals_tone":
613
+ style = Style.FINALS_TONE
614
+ elif fmt == "finals_tone2":
615
+ style = Style.FINALS_TONE2
616
+ elif fmt == "finals_tone3":
617
+ style = Style.FINALS_TONE3
618
+ elif fmt == "initials":
619
+ style = Style.INITIALS
620
+ elif fmt == "bopomofo":
621
+ style = Style.BOPOMOFO
622
+ elif fmt == "bopomofo_first":
623
+ style = Style.BOPOMOFO_FIRST
624
+ elif fmt == "cyrillic":
625
+ style = Style.CYRILLIC
626
+ elif fmt == "pl":
627
+ style = Style.PL
628
+ else:
629
+ style = Style.NORMAL
630
+ if not isinstance(cn_str,list):
631
+ cn_str=[cn_str]
632
+ pinyin_flat=[]
633
+ for cn_str_ in cn_str:
634
+ pinyin_string = pinyin(cn_str_, style=style)
635
+ pinyin_flat.append(sep.join([item[0] for item in pinyin_string]))
636
+ if len(pinyin_flat)==1:
637
+ return pinyin_flat[0]
638
+ else:
639
+ return pinyin_flat
546
640
 
547
641
  def counter(list_, verbose=True):
548
642
  c = Counter(list_)
@@ -1750,12 +1844,18 @@ def fload(fpath, kind=None, **kwargs):
1750
1844
  print(f"shape: {df.shape}")
1751
1845
  return df
1752
1846
 
1753
- def load_xlsx(fpath, **kwargs):
1847
+ def load_excel(fpath, **kwargs):
1754
1848
  engine = kwargs.get("engine", "openpyxl")
1755
1849
  verbose=kwargs.pop("verbose",False)
1756
1850
  if verbose:
1757
1851
  print_pd_usage("read_excel", verbose=verbose)
1758
1852
  df = pd.read_excel(fpath, engine=engine, **kwargs)
1853
+ try:
1854
+ meata=pd.ExcelFile(fpath)
1855
+ print(f"n_sheet={len(meata.sheet_names)},\t'sheetname = 0 (default)':")
1856
+ [print(f"{i}:\t{i_}") for i,i_ in enumerate(meata.sheet_names)]
1857
+ except:
1858
+ pass
1759
1859
  return df
1760
1860
 
1761
1861
  def load_ipynb(fpath, **kwargs):
@@ -1912,16 +2012,16 @@ def fload(fpath, kind=None, **kwargs):
1912
2012
  elif kind in ["ods", "ods", "odt"]:
1913
2013
  engine = kwargs.get("engine", "odf")
1914
2014
  kwargs.pop("engine", None)
1915
- return load_xlsx(fpath, engine=engine, **kwargs)
2015
+ return load_excel(fpath, engine=engine, **kwargs)
1916
2016
  elif kind == "xls":
1917
2017
  engine = kwargs.get("engine", "xlrd")
1918
2018
  kwargs.pop("engine", None)
1919
- content = load_xlsx(fpath, engine=engine, **kwargs)
1920
- display(content.head(2))
2019
+ content = load_excel(fpath, engine=engine, **kwargs)
2020
+ display(content.head(3))
1921
2021
  return content
1922
2022
  elif kind == "xlsx":
1923
- content = load_xlsx(fpath, **kwargs)
1924
- display(content.head(2))
2023
+ content = load_excel(fpath, **kwargs)
2024
+ display(content.head(3))
1925
2025
  return content
1926
2026
  elif kind == "ipynb":
1927
2027
  return load_ipynb(fpath, **kwargs)
@@ -2131,6 +2231,10 @@ def fsave(
2131
2231
 
2132
2232
  def save_csv(fpath, data, **kwargs):
2133
2233
  # https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html
2234
+
2235
+ verbose=kwargs.pop("verbose",False)
2236
+ if verbose:
2237
+ print_pd_usage("to_csv", verbose=verbose)
2134
2238
  kwargs_csv = dict(
2135
2239
  path_or_buf=None,
2136
2240
  sep=",",
@@ -2141,7 +2245,7 @@ def fsave(
2141
2245
  index=True,
2142
2246
  index_label=None,
2143
2247
  mode="w",
2144
- encoding=None,
2248
+ encoding="UTF-8",
2145
2249
  compression="infer",
2146
2250
  quoting=None,
2147
2251
  quotechar='"',
@@ -2159,26 +2263,31 @@ def fsave(
2159
2263
  df.to_csv(fpath, **kwargs_valid)
2160
2264
 
2161
2265
  def save_xlsx(fpath, data, **kwargs):
2266
+ verbose=kwargs.pop("verbose",False)
2267
+ sheet_name = kwargs.pop("sheet_name", "Sheet1")
2268
+ if verbose:
2269
+ print_pd_usage("to_excel", verbose=verbose)
2162
2270
  if any(kwargs):
2163
2271
  format_excel(df=data, filename=fpath, **kwargs)
2164
2272
  else:
2165
- kwargs.pop("format", None)
2166
- kwargs.pop("usage", None)
2167
- kwargs.pop("cell", None)
2168
- kwargs.pop("width", None)
2169
- kwargs.pop("height", None)
2170
- kwargs.pop("width", None)
2171
- kwargs.pop("height_max", None)
2172
- kwargs.pop("merge", None)
2173
- kwargs.pop("shade", None)
2174
- kwargs.pop("comment", None)
2175
- kwargs.pop("link", None)
2176
- kwargs.pop("protect", None)
2177
- kwargs.pop("number_format", None)
2178
- kwargs.pop("conditional_format", None)
2179
- kwargs.pop("index_default", None)
2273
+ # Remove non-relevant kwargs
2274
+ irrelevant_keys = [
2275
+ "format", "usage", "cell", "width", "height", "height_max", "merge",
2276
+ "shade", "comment", "link", "protect", "number_format", "conditional_format",
2277
+ "index_default"]
2278
+ for key in irrelevant_keys:
2279
+ kwargs.pop(key, None)
2280
+
2180
2281
  df = pd.DataFrame(data)
2181
- df.to_excel(fpath, **kwargs)
2282
+ # Check if the file exists, then append the sheet, otherwise create a new file
2283
+ try:
2284
+ # Use ExcelWriter with append mode if the file exists
2285
+ with pd.ExcelWriter(fpath, engine='openpyxl', mode='a', if_sheet_exists='new') as writer:
2286
+ df.to_excel(writer, sheet_name=sheet_name, index=False, **kwargs)
2287
+ except FileNotFoundError:
2288
+ # If file doesn't exist, create a new one
2289
+ df.to_excel(fpath, sheet_name=sheet_name, index=False, **kwargs)
2290
+
2182
2291
 
2183
2292
  def save_ipynb(fpath, data, **kwargs):
2184
2293
  # Split the content by code fences to distinguish between code and markdown
@@ -2451,10 +2560,13 @@ def listdir(
2451
2560
  verbose=True,
2452
2561
  ):
2453
2562
  if kind is None:
2563
+ ls=os.listdir(rootdir)
2564
+ ls = [f for f in ls if not f.startswith('.') and not f.startswith('~')]
2565
+ print(ls)
2454
2566
  df_all = pd.DataFrame(
2455
2567
  {
2456
- "fname": os.listdir(rootdir),
2457
- "fpath": [os.path.join(rootdir, i) for i in os.listdir(rootdir)],
2568
+ "fname": all_files,
2569
+ "fpath": [os.path.join(rootdir, i) for i in ls],
2458
2570
  }
2459
2571
  )
2460
2572
  display(df_all)
@@ -2480,6 +2592,7 @@ def listdir(
2480
2592
 
2481
2593
  if os.path.isdir(rootdir):
2482
2594
  ls = os.listdir(rootdir)
2595
+ ls = [f for f in ls if not f.startswith('.') and not f.startswith('~')]
2483
2596
  fd = [".fd", ".fld", ".fol", ".fd", ".folder"]
2484
2597
  i = 0
2485
2598
  f = {
@@ -2702,6 +2815,8 @@ def figsave(*args, dpi=300):
2702
2815
  img = arg # Store the PIL image if provided
2703
2816
 
2704
2817
  f_slash = "/" if "mac" in get_os().lower() else "\\"
2818
+ if dir_save is None:
2819
+ dir_save="./"
2705
2820
  dir_par = f_slash.join(dir_save.split(f_slash)[:-1])
2706
2821
  dir_ch = "".join(dir_save.split(f_slash)[-1:])
2707
2822
  if not dir_par.endswith(f_slash):
@@ -4301,17 +4416,6 @@ def preview(var):
4301
4416
  # preview(pd.DataFrame({"Name": ["Alice", "Bob"], "Age": [25, 30]}))
4302
4417
  # preview({"key": "value", "numbers": [1, 2, 3]})
4303
4418
 
4304
- def df_as_type(
4305
- df: pd.DataFrame,
4306
- columns: Optional[Union[str, List[str]]] = None,
4307
- astype: str = "datetime",
4308
- format: Optional[str] = None,
4309
- inplace: bool = True,
4310
- errors: str = "coerce", # Can be "ignore", "raise", or "coerce"
4311
- **kwargs,
4312
- ):
4313
- return df_astype(df=df,columns=columns,astype=astype,format=format,inplace=inplace,errors=errors,**kwargs)
4314
-
4315
4419
  # ! DataFrame
4316
4420
  def df_astype(
4317
4421
  df: pd.DataFrame,
@@ -4374,16 +4478,22 @@ def df_astype(
4374
4478
  "second",
4375
4479
  "time",
4376
4480
  "week",
4377
- "date",
4481
+ "date","day",
4378
4482
  "month",
4379
4483
  "year",
4380
4484
  ]
4381
- # correct the astype input
4382
- astype = strcmp(astype, astypes)[0]
4383
- print(f"converting {columns} as type: {astype}")
4384
4485
  # If inplace is False, make a copy of the DataFrame
4385
4486
  if not inplace:
4386
4487
  df = df.copy()
4488
+ # correct the astype input
4489
+ if isinstance(astype,str):
4490
+ astype = strcmp(astype, astypes)[0]
4491
+ print(f"converting {columns} as type: {astype}")
4492
+ elif isinstance(astype,dict):
4493
+ for col, dtype in astype.items():
4494
+ dtype='date' if dtype=="day" else dtype
4495
+ df["col"]=df["col"].adtype(strcmp(dtype, astypes)[0])
4496
+ return
4387
4497
  # If columns is None, apply to all columns
4388
4498
  if columns is None:
4389
4499
  columns = df.columns
@@ -4419,7 +4529,7 @@ def df_astype(
4419
4529
  df.iloc[:, column] = df.iloc[:, column].dt.month
4420
4530
  elif astype == "year":
4421
4531
  df.iloc[:, column] = df.iloc[:, column].dt.year
4422
- elif astype == "date":
4532
+ elif astype == "date" or astype == "day":
4423
4533
  df.iloc[:, column] = df.iloc[:, column].dt.date
4424
4534
  elif astype == "hour":
4425
4535
  df.iloc[:, column] = df.iloc[:, column].dt.hour
@@ -4474,15 +4584,15 @@ def df_astype(
4474
4584
  return df
4475
4585
 
4476
4586
 
4477
- # ! DataFrame
4478
- def df_sort_values(df, column, by=None, ascending=True, inplace=False, **kwargs):
4587
+ # ! DataFrame
4588
+ def df_sort_values(df, column, by=None, ascending=True, inplace=True, **kwargs):
4479
4589
  """
4480
- Sort a DataFrame by a specified column based on a custom order.
4590
+ Sort a DataFrame by a specified column based on a custom order or by count.
4481
4591
 
4482
4592
  Parameters:
4483
4593
  - df: DataFrame to be sorted.
4484
4594
  - column: The name of the column to sort by.
4485
- - by: List specifying the custom order for sorting.
4595
+ - by: List specifying the custom order for sorting or 'count' to sort by frequency.
4486
4596
  - ascending: Boolean or list of booleans, default True.
4487
4597
  Sort ascending vs. descending.
4488
4598
  - inplace: If True, perform operation in place and return None.
@@ -4494,12 +4604,25 @@ def df_sort_values(df, column, by=None, ascending=True, inplace=False, **kwargs)
4494
4604
  if column not in df.columns:
4495
4605
  raise ValueError(f"Column '{column}' does not exist in the DataFrame.")
4496
4606
 
4497
- if not isinstance(by, list):
4498
- raise ValueError("custom_order must be a list.")
4607
+ if isinstance(by, str) and 'count' in by.lower():
4608
+ # Count occurrences of each value in the specified column
4609
+ value_counts = df[column].value_counts()
4499
4610
 
4500
- try:
4611
+ # Determine the order based on counts
4612
+ count_ascending = kwargs.pop("count_ascending", ascending)
4613
+ sorted_counts = value_counts.sort_values(ascending=count_ascending).index.tolist()
4614
+
4615
+ # Convert to a categorical type with the new order
4616
+ df[column] = pd.Categorical(df[column], categories=sorted_counts, ordered=True)
4617
+ # Set ascending to count_ascending for sorting
4618
+ ascending = count_ascending # Adjust ascending for the final sort
4619
+ elif isinstance(by, list):
4501
4620
  # Convert the specified column to a categorical type with the custom order
4502
4621
  df[column] = pd.Categorical(df[column], categories=by, ordered=True)
4622
+ else:
4623
+ raise ValueError("Custom order must be a list or 'count'.")
4624
+
4625
+ try:
4503
4626
  if inplace: # replace the original
4504
4627
  df.sort_values(column, ascending=ascending, inplace=True, **kwargs)
4505
4628
  print(f"Successfully sorted DataFrame by '{column}'")
@@ -4513,6 +4636,7 @@ def df_sort_values(df, column, by=None, ascending=True, inplace=False, **kwargs)
4513
4636
  return df
4514
4637
 
4515
4638
 
4639
+
4516
4640
  # # Example usage:
4517
4641
  # # Sample DataFrame
4518
4642
  # data = {
py2ls/netfinder.py CHANGED
@@ -31,7 +31,7 @@ from PIL import Image
31
31
  from duckduckgo_search import DDGS
32
32
  from datetime import datetime
33
33
  import time
34
- from py2ls import ips
34
+ from . import ips
35
35
 
36
36
  dir_save = "/Users/macjianfeng/Dropbox/Downloads/"
37
37
  # Set up logging
@@ -421,12 +421,25 @@ def fetch_all(
421
421
  prefs = {"profile.managed_default_content_settings.images": 2}
422
422
  chrome_options.add_experimental_option("prefs", prefs)
423
423
  # chrome_options.page_load_strategy = capability
424
+ try:
425
+ # Try to install ChromeDriver using webdriver-manager
424
426
 
425
- service = Service(ChromeDriverManager().install())
426
- # driver_path='/Users/macjianfeng/.wdm/drivers/chromedriver/mac64/127.0.6533.119/chromedriver-mac-arm64/chromedriver'
427
- # service=Service(executable_path=driver_path)
427
+ # driver_pah='/Users/macjianfeng/.wdm/drivers/chromedriver/mac64/129.0.6668.100/chromedriver-mac-arm64/chromedriver'
428
+ # service=Service(executable_path=driver_path)
428
429
 
429
- driver_ = webdriver.Chrome(service=service, options=chrome_options)
430
+ service = Service(ChromeDriverManager().install())
431
+ driver_ = webdriver.Chrome(service=service, options=chrome_options)
432
+ except Exception as e:
433
+ print(f"Error occurred: {e}")
434
+ print("Attempting to reinstall webdriver-manager...")
435
+ try:
436
+ ips.upgrade("webdriver-manager", uninstall=True)
437
+ service = Service(ChromeDriverManager().install())
438
+ driver_ = webdriver.Chrome(service=service, options=chrome_options)
439
+ except Exception as reinstall_error:
440
+ print(
441
+ f"Reinstallation failed: {reinstall_error}\n之前发生过类似的问题, 更新了webdriver-manager以后得到解决"
442
+ )
430
443
 
431
444
  # 隐式等等待
432
445
  if 3 < wait < 5:
py2ls/plot.py CHANGED
@@ -10,16 +10,124 @@ from cycler import cycler
10
10
  import logging
11
11
  import os
12
12
  import re
13
-
13
+ from typing import List, Optional, Union
14
14
  from .ips import fsave, fload, mkdir, listdir, figsave, strcmp, unique, get_os, ssplit
15
15
  from .stats import *
16
16
  from .netfinder import get_soup, fetch
17
17
 
18
-
19
18
  # Suppress INFO messages from fontTools
20
19
  logging.getLogger("fontTools").setLevel(logging.WARNING)
21
20
 
22
21
 
22
+ def add_text(ax=None, height_offset=0.5, fmt=".1f", **kwargs):
23
+ """Adds text annotations for various types of Seaborn and Matplotlib plots.
24
+ Args:
25
+ ax: Axes object.
26
+ height_offset: 0.5 (default) The vertical distance (offset) to place the text.
27
+ fmt: Default is ".1f" for one decimal place.
28
+ **kwargs: Additional keyword arguments for the text function
29
+ Usage:
30
+ ax = sns.barplot(x='Category', y='Values', data=data)
31
+ add_text(ax=ax, height_offset=1.0, color='black', fontsize=12)
32
+
33
+ The function will automatically detect the type of plot and add annotations accordingly.
34
+ It supports annotations for:
35
+ - **Bar Plots**: Displays the height of each bar.
36
+ - **Box Plots**: Shows the height of the boxes.
37
+ - **Scatter and Line Plots**: Displays the y-value for each point.
38
+ - **Histograms and KDE Plots**: Shows the maximum height of the bars.
39
+ - **Other Plots**: If the Axes contains containers, it handles those as well.
40
+ """
41
+ from matplotlib.collections import LineCollection
42
+
43
+ ha = kwargs.pop("ha", "center")
44
+ va = kwargs.pop("va", "bottom")
45
+ if ax is None:
46
+ ax = plt.gca()
47
+ # Check if the Axes has patches (for bar, count, boxen, violin, and other plots with bars)
48
+ # Check for artists (for box plots)
49
+ if hasattr(ax, "artists") and ax.artists:
50
+ print("artists")
51
+ for box in ax.artists:
52
+ if hasattr(box, "get_height") and hasattr(box, "get_y"):
53
+ height = box.get_y() + box.get_height() # For box plots
54
+
55
+ ax.text(
56
+ box.get_x() + box.get_width() / 2.0,
57
+ height + height_offset,
58
+ format(height, fmt),
59
+ ha=ha,
60
+ va=va,
61
+ **kwargs,
62
+ )
63
+
64
+ # Scatter plot or line plot
65
+ if hasattr(ax, "lines"):
66
+ print("lines")
67
+ for line in ax.lines:
68
+ if hasattr(line, "get_xydata"):
69
+ xdata, ydata = line.get_xydata().T # Get x and y data points
70
+ for x, y in zip(xdata, ydata):
71
+ ax.text(x, y + height_offset, format(y, fmt), **kwargs)
72
+
73
+ if hasattr(ax, "patches") and ax.patches:
74
+ print("patches")
75
+ for p in ax.patches:
76
+ if hasattr(p, "get_height"):
77
+ height = p.get_height() # For bar plots
78
+
79
+ ax.text(
80
+ p.get_x() + p.get_width() / 2.0,
81
+ height + height_offset,
82
+ format(height, fmt),
83
+ ha=ha,
84
+ va=va,
85
+ **kwargs,
86
+ )
87
+ # For histplot, kdeplot, rugplot
88
+ if hasattr(ax, "collections"):
89
+ print("collections")
90
+ for collection in ax.collections:
91
+ # If it is a histogram or KDE plot
92
+ if isinstance(collection, LineCollection):
93
+ for path in collection.get_paths():
94
+ if hasattr(path, "vertices"):
95
+ vertices = path.vertices
96
+ # Get the heights (y values) for histogram or KDE plots
97
+ ax.text(
98
+ vertices[:, 0].mean(),
99
+ vertices[:, 1].max() + height_offset,
100
+ format(vertices[:, 1].max(), fmt),
101
+ **kwargs,
102
+ )
103
+ # Handle point, strip, and swarm plots
104
+ elif isinstance(collection, LineCollection):
105
+ for path in collection.get_paths():
106
+ vertices = path.vertices
107
+ ax.text(
108
+ vertices[:, 0].mean(),
109
+ vertices[:, 1].max() + height_offset,
110
+ format(vertices[:, 1].max(), fmt),
111
+ **kwargs,
112
+ )
113
+ # Handle bar charts (not from seaborn)
114
+ if hasattr(ax, "containers"):
115
+ print("containers")
116
+ for container in ax.containers:
117
+ for bar in container:
118
+ if hasattr(bar, "get_height"):
119
+ height = bar.get_height()
120
+
121
+ ax.text(
122
+ bar.get_x() + bar.get_width() / 2.0,
123
+ height + height_offset,
124
+ format(height, fmt),
125
+ ha=ha,
126
+ va=va,
127
+ **kwargs,
128
+ )
129
+
130
+
23
131
  def heatmap(
24
132
  data,
25
133
  ax=None,
@@ -44,6 +152,36 @@ def heatmap(
44
152
  yticklabels=True, # Show row labels
45
153
  **kwargs,
46
154
  ):
155
+ """
156
+ plot heatmap or clustermap for a given dataset (DataFrame).
157
+
158
+ Parameters:
159
+ - data (pd.DataFrame): The input data to visualize.
160
+ - ax (matplotlib.Axes, optional): Axis object to plot on. If None and cluster=False, a new axis is created.
161
+ - kind (str, default="corr"): Type of heatmap to plot. Options:
162
+ - "corr": Correlation heatmap based on numeric columns.
163
+ - "direct": Direct visualization of the numeric data.
164
+ - "pivot": Creates a heatmap using the `pivot_table` method.
165
+ - columns (str or list, default="all"): Columns to include in the heatmap. For pivoting, this specifies the 'columns' argument.
166
+ - index (str, optional): For pivot heatmap, sets the 'index' argument.
167
+ - values (str, optional): For pivot heatmap, sets the 'values' argument.
168
+ - tri (str, default="u"): Specifies whether to show the 'upper' or 'lower' triangle in the heatmap.
169
+ - mask (bool, default=True): Whether to mask half of the correlation matrix.
170
+ - k (int, default=1): Controls how much of the triangle is masked in correlation heatmaps.
171
+ - annot (bool, default=True): If True, writes the data values in each cell.
172
+ - cmap (str, default="coolwarm"): The colormap for the heatmap.
173
+ - fmt (str, default=".2f"): String formatting code for annotating cells.
174
+ - cluster (bool, default=False): If True, a clustermap with hierarchical clustering is plotted.
175
+ - inplace (bool, default=False): If True, modifies the original data. Not currently used.
176
+ - figsize (tuple, default=(10, 8)): Size of the figure for the heatmap.
177
+ - row_cluster (bool, default=True): Perform clustering on rows.
178
+ - col_cluster (bool, default=True): Perform clustering on columns.
179
+ - dendrogram_ratio (tuple, default=(0.2, 0.1)): Adjust the size of the dendrograms.
180
+ - cbar_pos (tuple, default=(0.02, 1, 0.02, 0.1)): Adjust the position of the colorbar.
181
+ - xticklabels (bool, default=True): Show or hide the column labels.
182
+ - yticklabels (bool, default=True): Show or hide the row labels.
183
+ - **kwargs: Additional arguments passed to `sns.heatmap` or `sns.clustermap`.
184
+ """
47
185
  if ax is None and not cluster:
48
186
  ax = plt.gca()
49
187
  # Select numeric columns or specific subset of columns
@@ -54,7 +192,8 @@ def heatmap(
54
192
 
55
193
  kinds = ["corr", "direct", "pivot"]
56
194
  kind = strcmp(kind, kinds)[0]
57
- if kind == "corr":
195
+ print(kind)
196
+ if "corr" in kind: # correlation
58
197
  # Compute the correlation matrix
59
198
  data4heatmap = df_numeric.corr()
60
199
  # Generate mask for the upper triangle if mask is True
@@ -146,11 +285,26 @@ def heatmap(
146
285
  )
147
286
  # Return the Axes object for further customization if needed
148
287
  return ax
149
- elif kind == "direct":
288
+ elif "dir" in kind: # direct
150
289
  data4heatmap = df_numeric
151
- elif kind == "pivot":
152
- print('need 3 param: e.g., index="Task", columns="Model", values="Score"')
153
- data4heatmap = data.pivot(index=index, columns=columns, values=values)
290
+ elif "pi" in kind: # pivot
291
+ try:
292
+ print(
293
+ f'pivot: \n\tneed at least 3 param: e.g., index="Task", columns="Model", values="Score"'
294
+ )
295
+ data4heatmap = data.pivot(index=index, columns=columns, values=values)
296
+ except:
297
+ print(
298
+ f'pivot_table: \n\tneed at least 4 param: e.g., index="Task", columns="Model", values="Score",aggfunc="mean"'
299
+ )
300
+ aggfunc = "mean"
301
+ for k_, v_ in kwargs.items():
302
+ if "agg" in k_.lower():
303
+ aggfunc = v_
304
+ kwargs.pop(k_, None)
305
+ data4heatmap = data.pivot_table(
306
+ index=index, columns=columns, values=values, aggfunc=aggfunc
307
+ )
154
308
  else:
155
309
  print(f'"{kind}" is not supported')
156
310
  # Remove conflicting kwargs
@@ -2710,7 +2864,7 @@ import matplotlib.pyplot as plt
2710
2864
  from PIL import Image
2711
2865
 
2712
2866
 
2713
- def thumbnail(dir_img_list: list, figsize=(10, 10), dpi=100, show=False, usage=False):
2867
+ def thumbnail(dir_img_list: list, figsize=(10, 10), dpi=100, show=False, verbose=False):
2714
2868
  """
2715
2869
  Display a thumbnail figure of all images in the specified directory.
2716
2870
 
@@ -2719,7 +2873,7 @@ def thumbnail(dir_img_list: list, figsize=(10, 10), dpi=100, show=False, usage=F
2719
2873
  figsize (tuple): Size of the figure (width, height) in inches.
2720
2874
  dpi (int): Dots per inch for the figure.
2721
2875
  """
2722
- if usage:
2876
+ if verbose:
2723
2877
  print(
2724
2878
  'thumbnail(listdir("./img-innere-medizin-ii", ["jpeg", "jpg", "png"]).fpath.tolist(),figsize=[5,5],dpi=200)'
2725
2879
  )
@@ -2765,13 +2919,26 @@ def plot_xy(
2765
2919
  x=None,
2766
2920
  y=None,
2767
2921
  ax=None,
2768
- kind: str = None, # Specify the kind of plot
2769
- usage=False,
2770
- # kws_figsets:dict=None,
2922
+ kind: Union(str, list) = None, # Specify the kind of plot
2923
+ verbose=False,
2924
+ **kwargs,
2925
+ ):
2926
+ # You can call the original plotxy function if needed
2927
+ # or simply replicate the functionality here
2928
+ return plotxy(data, x, y, ax, kind, verbose, **kwargs)
2929
+
2930
+
2931
+ def plotxy(
2932
+ data: pd.DataFrame = None,
2933
+ x=None,
2934
+ y=None,
2935
+ ax=None,
2936
+ kind: Union(str, list) = None, # Specify the kind of plot
2937
+ verbose=False,
2771
2938
  **kwargs,
2772
2939
  ):
2773
2940
  """
2774
- e.g., plot_xy(data=data_log, x="Component_1", y="Component_2", hue="Cluster",kind='scater)
2941
+ e.g., plotxy(data=data_log, x="Component_1", y="Component_2", hue="Cluster",kind='scater)
2775
2942
  Create a variety of plots based on the kind parameter.
2776
2943
 
2777
2944
  Parameters:
@@ -2781,7 +2948,7 @@ def plot_xy(
2781
2948
  hue (str): Column name for the hue (color) grouping.
2782
2949
  ax: Matplotlib axes object for the plot.
2783
2950
  kind (str): Type of plot ('scatter', 'line', 'displot', 'kdeplot', etc.).
2784
- usage (bool): If True, print default settings instead of plotting.
2951
+ verbose (bool): If True, print default settings instead of plotting.
2785
2952
  **kwargs: Additional keyword arguments for the plot functions.
2786
2953
 
2787
2954
  Returns:
@@ -2804,8 +2971,8 @@ def plot_xy(
2804
2971
  kind = [kind]
2805
2972
  kind = [strcmp(i, valid_kinds)[0] for i in kind]
2806
2973
  else:
2807
- usage = True
2808
- if usage:
2974
+ verbose = True
2975
+ if verbose:
2809
2976
  if kind is not None:
2810
2977
  for k in kind:
2811
2978
  if k in valid_kinds:
@@ -2823,7 +2990,7 @@ def plot_xy(
2823
2990
  kind=["scatter","rug"],
2824
2991
  kws_rug=dict(height=0.2),
2825
2992
  kws_scatter=dict(s=20, color=get_color(3)[2]),
2826
- usage=0)
2993
+ verbose=0)
2827
2994
  """
2828
2995
  print(f"currently support to plot:\n{valid_kinds}\n\nusage:\n{usage_str}")
2829
2996
  return # Do not plot, just print the usage
@@ -2834,6 +3001,12 @@ def plot_xy(
2834
3001
  kws_figsets = v_arg
2835
3002
  kwargs.pop(k_arg, None)
2836
3003
  break
3004
+ kws_add_text = {}
3005
+ for k_arg, v_arg in kwargs.items():
3006
+ if "add" in k_arg and "text" in k_arg: # add_text
3007
+ kws_add_text = v_arg
3008
+ kwargs.pop(k_arg, None)
3009
+ break
2837
3010
 
2838
3011
  for k in kind:
2839
3012
  # indicate 'col' features
@@ -2879,6 +3052,7 @@ def plot_xy(
2879
3052
  ax = stdshade(ax=ax, **kwargs)
2880
3053
  elif k == "scatterplot":
2881
3054
  kws_scatter = kwargs.pop("kws_scatter", kwargs)
3055
+ hue = kwargs.pop("hue", None)
2882
3056
  palette = kws_scatter.pop(
2883
3057
  "palette",
2884
3058
  (
@@ -2915,7 +3089,8 @@ def plot_xy(
2915
3089
  ax = sns.rugplot(data=data, x=x, ax=ax, **kws_rug)
2916
3090
  elif k == "stripplot":
2917
3091
  kws_strip = kwargs.pop("kws_strip", kwargs)
2918
- ax = sns.stripplot(data=data, x=x, y=y, ax=ax, **kws_strip)
3092
+ dodge = kws_strip.pop("dodge", True)
3093
+ ax = sns.stripplot(data=data, x=x, y=y, ax=ax, dodge=dodge, **kws_strip)
2919
3094
  elif k == "swarmplot":
2920
3095
  kws_swarm = kwargs.pop("kws_swarm", kwargs)
2921
3096
  ax = sns.swarmplot(data=data, x=x, y=y, ax=ax, **kws_swarm)
@@ -2947,7 +3122,8 @@ def plot_xy(
2947
3122
  kws_line = kwargs.pop("kws_line", kwargs)
2948
3123
  ax = sns.lineplot(ax=ax, data=data, x=x, y=y, **kws_line)
2949
3124
 
2950
- figsets(**kws_figsets)
3125
+ figsets(ax=ax, **kws_figsets)
3126
+ add_text(ax=ax, **kws_add_text) if kws_add_text else None
2951
3127
  print(k, " ⤵ ")
2952
3128
  print(default_settings[k])
2953
3129
  print(
@@ -2978,7 +3154,7 @@ def volcano(
2978
3154
  alpha=0.8,
2979
3155
  legend=False,
2980
3156
  ax=None,
2981
- usage=False,
3157
+ verbose=False,
2982
3158
  kws_arrow=None,
2983
3159
  kws_text=None,
2984
3160
  **kwargs,
@@ -3035,11 +3211,11 @@ def volcano(
3035
3211
  edgecolor="0.5",
3036
3212
  kws_text=dict(fontsize=10, color="k"),
3037
3213
  kws_arrow=dict(style="-", color="k", lw=0.5),
3038
- # usage=True,
3214
+ # verbose=True,
3039
3215
  figsets=dict(ylim=[0, 10], title="df"),
3040
3216
  )
3041
3217
  """
3042
- if usage:
3218
+ if verbose:
3043
3219
  print(usage_str)
3044
3220
  return
3045
3221
  from adjustText import adjust_text
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: py2ls
3
- Version: 0.2.3
3
+ Version: 0.2.4.1
4
4
  Summary: py(thon)2(too)ls
5
5
  Author: Jianfeng
6
6
  Author-email: Jianfeng.Liu0413@gmail.com
@@ -1,4 +1,4 @@
1
- py2ls/.DS_Store,sha256=N6pp6R6M5ZPDw6IdIAnsHaAAOu8hWJASHMjjjKMNmOc,6148
1
+ py2ls/.DS_Store,sha256=9qxq9N5T7k6muGHxG5s6yEdEEYqEh8eDGT3w7LokxsU,6148
2
2
  py2ls/.git/COMMIT_EDITMSG,sha256=AdtqRHle5Ej2EBNPJY79v-SB454v5UK4wuPCPFELiFQ,11
3
3
  py2ls/.git/FETCH_HEAD,sha256=VM-2Jiw6iPaGu0ftg9xwq76OyNPWV0iT1nL0VWiL1zI,100
4
4
  py2ls/.git/HEAD,sha256=KNJb-Cr0wOK3L1CVmyvrhZ4-YLljCl6MYD2tTdsrboA,21
@@ -203,23 +203,23 @@ py2ls/data/styles/style6.json,sha256=tu-MYOT9x5Rorc-2IK6sy-J-frmz0RNdm65XAsDQKX4
203
203
  py2ls/data/styles/style7.json,sha256=StdUFwIVrS7T_6CDrADHMorzc0WZFWBM7IyYdO1TPHg,4447
204
204
  py2ls/data/styles/style8.json,sha256=8XUgkZtew8ebvjbAHlDHCSWUqNra3ktDvMCO4vNh-CM,4456
205
205
  py2ls/data/styles/style9.json,sha256=PLxvntbH_kfzZlnCTtCEAUVBGi5m6Lngb9C01rArQog,4769
206
- py2ls/data/usages_pd.json,sha256=XvFAwxKn6yYZztxmAhcqQ-kuYm6xBnLRx5aOLfvp3BQ,11060
207
- py2ls/data/usages_sns.json,sha256=Vu2kGIIMxxWxJ1kW0Ov7mq47DQwZa_-gwsXiW72A2ag,7788
206
+ py2ls/data/usages_pd.json,sha256=A76y7lr28BUBdggFN_50r-4My3Q51M_3y0ZcQ4LHSco,15077
207
+ py2ls/data/usages_sns.json,sha256=3OTu6T7n9HbQaFkz-UPMJ_9-Ug6Xjf7q5aDIvZ_6cHk,9246
208
208
  py2ls/db2ls.py,sha256=MMfFX47aIPIyu7fU9aPvX9lbPRPYOpJ_VXwlnWk-8qo,13615
209
209
  py2ls/doc.py,sha256=xN3g1OWfoaGUhikbJ0NqbN5eKy1VZVvWwRlhHMgyVEc,4243
210
210
  py2ls/export_requirements.py,sha256=x2WgUF0jYKz9GfA1MVKN-MdsM-oQ8yUeC6Ua8oCymio,2325
211
+ py2ls/fetch_update.py,sha256=jh2MQHREpCqzYhDmEnMpuIvQVf4_wD9pDdIziXoFE3E,4055
211
212
  py2ls/freqanalysis.py,sha256=F4218VSPbgL5tnngh6xNCYuNnfR-F_QjECUUxrPYZss,32594
212
213
  py2ls/ich2ls.py,sha256=3E9R8oVpyYZXH5PiIQgT3CN5NxLe4Dwtm2LwaeacE6I,21381
213
- py2ls/ips.py,sha256=uEpvsKo_E9eX49Icd60g-fQBDzmpGW65hJM9_mr6wuM,195254
214
- py2ls/netfinder.py,sha256=vgOOMhzwbjRuLWMAPyf_kh3HoOhsJ9dlA-tCkMf7kNU,55371
214
+ py2ls/ips.py,sha256=fBBco8wQFc6u4KxJ32xwrMh1SZeNz4o8ohiUB5WMKOs,199755
215
+ py2ls/netfinder.py,sha256=LwBkGITB_4BTNtY6RlKdEZVFW6epzMWlnqy2g03KtyU,56117
215
216
  py2ls/ocr.py,sha256=5lhUbJufIKRSOL6wAWVLEo8TqMYSjoI_Q-IO-_4u3DE,31419
216
- py2ls/plot.py,sha256=ynL5fz2jf1pD09FWkAayQOT3c4Jj64sjFHrkgCqdgAs,127193
217
+ py2ls/plot.py,sha256=m8SxFSS1ogwRNQ-O9l-BJWqjGPmjGbsegU56kXG0krw,135132
217
218
  py2ls/setuptools-70.1.0-py3-none-any.whl,sha256=2bi3cUVal8ip86s0SOvgspteEF8SKLukECi-EWmFomc,882588
218
219
  py2ls/sleep_events_detectors.py,sha256=bQA3HJqv5qnYKJJEIhCyhlDtkXQfIzqksnD0YRXso68,52145
219
220
  py2ls/stats.py,sha256=DMoJd8Z5YV9T1wB-4P52F5K5scfVK55DT8UP4Twcebo,38627
220
221
  py2ls/translator.py,sha256=zBeq4pYZeroqw3DT-5g7uHfVqKd-EQptT6LJ-Adi8JY,34244
221
- py2ls/update2usage.py,sha256=9uLoipgM0k-xUy56XOa6v-sOim3mE5srdNiPzn03ALY,3964
222
222
  py2ls/wb_detector.py,sha256=7y6TmBUj9exCZeIgBAJ_9hwuhkDh1x_-yg4dvNY1_GQ,6284
223
- py2ls-0.2.3.dist-info/METADATA,sha256=QvoGrLUwlS0T7VI09f-OJ8tU1Z3VGCl0bJWbP73RCCg,20036
224
- py2ls-0.2.3.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
225
- py2ls-0.2.3.dist-info/RECORD,,
223
+ py2ls-0.2.4.1.dist-info/METADATA,sha256=xxXfqGzklXZ1eGESjgYcm1ptiKIRl_Nk0AlfUIyYSIU,20038
224
+ py2ls-0.2.4.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
225
+ py2ls-0.2.4.1.dist-info/RECORD,,
File without changes