@@ -7,7 +7,6 @@ module LocalSources {
7
7
private import semmle.python.Concepts
8
8
private import semmle.python.dataflow.new.BarrierGuards
9
9
private import semmle.python.ApiGraphs
10
- private import DataFlow:: PathGraph
11
10
12
11
abstract class Range extends DataFlow:: Node { }
13
12
@@ -95,18 +94,26 @@ module LocalSources {
95
94
call = API:: moduleImport ( [ "json" , "simplejson" ] ) .getMember ( "load" ) .getACall ( )
96
95
or
97
96
// yaml.load
98
- call = API:: moduleImport ( "yaml" ) .getMember ( [ "load" , "load_all" , "safe_load" , "safe_load_all" ] ) .getACall ( )
97
+ call =
98
+ API:: moduleImport ( "yaml" )
99
+ .getMember ( [ "load" , "load_all" , "safe_load" , "safe_load_all" ] )
100
+ .getACall ( )
99
101
or
100
102
// msgpack.load
101
103
call = API:: moduleImport ( "msgpack" ) .getMember ( "load" ) .getACall ( )
102
104
or
103
105
// pickle.load
104
106
// dill.load
105
- call = API:: moduleImport ( [ "cPickle" , "_pickle" , "pickle" , "dill" ] ) .getMember ( "load" ) .getACall ( )
107
+ call =
108
+ API:: moduleImport ( [ "cPickle" , "_pickle" , "pickle" , "dill" ] ) .getMember ( "load" ) .getACall ( )
106
109
or
107
110
// pickle.Unpickler.load
108
111
// dill.Unpickler.load
109
- call = API:: moduleImport ( [ "cPickle" , "pickle" , "dill" ] ) .getMember ( "Unpickler" ) .getACall ( ) .getAMethodCall ( "load" )
112
+ call =
113
+ API:: moduleImport ( [ "cPickle" , "pickle" , "dill" ] )
114
+ .getMember ( "Unpickler" )
115
+ .getACall ( )
116
+ .getAMethodCall ( "load" )
110
117
or
111
118
// shelve.open
112
119
call = API:: moduleImport ( "shelve" ) .getMember ( "open" ) .getACall ( )
@@ -137,45 +144,57 @@ module LocalSources {
137
144
// pandas.read_gbq
138
145
// pandas.read_stata
139
146
// generate call expressions for each of the above pandas functions including ExcelFile.parse and HDFStore.* that have to be handled separately
140
- call = API:: moduleImport ( "pandas" )
141
- .getMember ( [
142
- "read_csv" , "read_fwf" , "read_excel" , "read_json" , "read_html" , "read_xml" ,
143
- "read_hdf" , "read_feather" , "read_parquet" , "read_orc" , "read_sas" , "read_spss" , "read_sql_table" ,
144
- "read_sql_query" , "read_sql" , "read_gbq" , "read_stata"
145
- ] )
146
- .getACall ( )
147
+ call =
148
+ API:: moduleImport ( "pandas" )
149
+ .getMember ( [
150
+ "read_csv" , "read_fwf" , "read_excel" , "read_json" , "read_html" , "read_xml" ,
151
+ "read_hdf" , "read_feather" , "read_parquet" , "read_orc" , "read_sas" , "read_spss" ,
152
+ "read_sql_table" , "read_sql_query" , "read_sql" , "read_gbq" , "read_stata"
153
+ ] )
154
+ .getACall ( )
147
155
or
148
156
// pandas.ExcelFile.parse
149
- call = API:: moduleImport ( "pandas" )
150
- .getMember ( "ExcelFile" )
151
- .getACall ( )
152
- .getAMethodCall ( "parse" )
157
+ call =
158
+ API:: moduleImport ( "pandas" ) .getMember ( "ExcelFile" ) .getACall ( ) .getAMethodCall ( "parse" )
153
159
or
154
160
// pandas.HDFStore.get
155
161
// pandas.HDFStore.select
156
162
// pandas.HDFStore.info
157
163
// pandas.HDFStore.keys
158
164
// pandas.HDFStore.groups
159
165
// pandas.HDFStore.walk
160
- call = API:: moduleImport ( "pandas" )
161
- .getMember ( "HDFStore" )
162
- .getACall ( )
163
- .getAMethodCall ( [ "get" , "select" , "info" , "keys" , "groups" , "walk" ] )
166
+ call =
167
+ API:: moduleImport ( "pandas" )
168
+ .getMember ( "HDFStore" )
169
+ .getACall ( )
170
+ .getAMethodCall ( [ "get" , "select" , "info" , "keys" , "groups" , "walk" ] )
164
171
or
165
172
// polars.read_csv
166
- call = API:: moduleImport ( "polars" ) .getMember ( [ "read_csv" , "read_csv_batched" , "scan_csv" ] ) .getACall ( )
173
+ call =
174
+ API:: moduleImport ( "polars" )
175
+ .getMember ( [ "read_csv" , "read_csv_batched" , "scan_csv" ] )
176
+ .getACall ( )
167
177
or
168
178
// polars.read_ipc
169
- call = API:: moduleImport ( "polars" ) .getMember ( [ "read_ipc" , "scan_ipc" , "read_ipc_schema" ] ) .getACall ( )
179
+ call =
180
+ API:: moduleImport ( "polars" )
181
+ .getMember ( [ "read_ipc" , "scan_ipc" , "read_ipc_schema" ] )
182
+ .getACall ( )
170
183
or
171
184
// polars.read_parquet, polars.scan_parquet, polars.read_parquet_schema
172
- call = API:: moduleImport ( "polars" ) .getMember ( [ "read_parquet" , "scan_parquet" , "read_parquet_schema" ] ) .getACall ( )
185
+ call =
186
+ API:: moduleImport ( "polars" )
187
+ .getMember ( [ "read_parquet" , "scan_parquet" , "read_parquet_schema" ] )
188
+ .getACall ( )
173
189
or
174
190
// polars.read_sql
175
191
call = API:: moduleImport ( "polars" ) .getMember ( "read_sql" ) .getACall ( )
176
192
or
177
193
// polars.read_json, polars.read_ndjson, polars.scan_ndjson
178
- call = API:: moduleImport ( "polars" ) .getMember ( [ "read_json" , "read_ndjson" , "scan_ndjson" ] ) .getACall ( )
194
+ call =
195
+ API:: moduleImport ( "polars" )
196
+ .getMember ( [ "read_json" , "read_ndjson" , "scan_ndjson" ] )
197
+ .getACall ( )
179
198
or
180
199
// polars.read_avro
181
200
call = API:: moduleImport ( "polars" ) .getMember ( "read_avro" ) .getACall ( )
@@ -186,24 +205,37 @@ module LocalSources {
186
205
// pyarrow.csv.read_csv
187
206
// pyarrow.csv.open_csv
188
207
// pyarrow.csv.CSVStreamingReader
189
- call = API:: moduleImport ( "pyarrow" ) .getMember ( "csv" ) .getMember ( [ "read_csv" , "open_csv" , "CSVStreamingReader" ] ) .getACall ( )
208
+ call =
209
+ API:: moduleImport ( "pyarrow" )
210
+ .getMember ( "csv" )
211
+ .getMember ( [ "read_csv" , "open_csv" , "CSVStreamingReader" ] )
212
+ .getACall ( )
190
213
or
191
214
// pyarrow.feather.read_feather
192
215
// pyarrow.feather.read_table
193
- call = API:: moduleImport ( "pyarrow" ) .getMember ( "feather" ) .getMember ( [ "read_feather" , "read_table" ] ) .getACall ( )
216
+ call =
217
+ API:: moduleImport ( "pyarrow" )
218
+ .getMember ( "feather" )
219
+ .getMember ( [ "read_feather" , "read_table" ] )
220
+ .getACall ( )
194
221
or
195
222
// pyarrow.json.read_json
196
223
call = API:: moduleImport ( "pyarrow" ) .getMember ( "json" ) .getMember ( "read_json" ) .getACall ( )
224
+ or
197
225
// pyarrow.parquet.ParquetDataset
198
226
// pyarrow.parquet.ParquetFile
199
227
// pyarrow.parquet.read_table
200
228
// pyarrow.parquet.read_metadata
201
229
// pyarrow.parquet.read_pandas
202
230
// pyarrow.parquet.read_schema
203
- or
204
- call = API:: moduleImport ( "pyarrow" ) .getMember ( "parquet" ) .getMember ( [
205
- "ParquetDataset" , "ParquetFile" , "read_table" , "read_metadata" , "read_pandas" , "read_schema"
206
- ] ) .getACall ( )
231
+ call =
232
+ API:: moduleImport ( "pyarrow" )
233
+ .getMember ( "parquet" )
234
+ .getMember ( [
235
+ "ParquetDataset" , "ParquetFile" , "read_table" , "read_metadata" , "read_pandas" ,
236
+ "read_schema"
237
+ ] )
238
+ .getACall ( )
207
239
) and
208
240
this = call
209
241
) and
0 commit comments