Skip to content

Commit 07cd669

Browse files
committed
vector: close files and pipes in v.rast.stats, v.db.*, v.report and v.in.e00
Close gs.pipe_command() stdout and the /dev/null handles these scripts open, so running them with PYTHONDEVMODE=1 no longer reports ResourceWarning. The unused nuldev in v.rast.stats is removed with its os import.
1 parent f532115 commit 07cd669

6 files changed

Lines changed: 32 additions & 15 deletions

File tree

‎scripts/v.db.droptable/v.db.droptable.py‎

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,20 @@ def main():
106106

107107
gs.message(_("Current attribute table link(s):"))
108108
# silently test first to avoid confusing error messages
109-
nuldev = open(os.devnull, "w")
110-
try:
111-
gs.run_command(
112-
"v.db.connect", flags="p", map=map, quiet=True, stdout=nuldev, stderr=nuldev
113-
)
114-
except CalledModuleError:
115-
gs.message(_("(No database links remaining)"))
116-
else:
117-
gs.run_command("v.db.connect", flags="p", map=map)
109+
with open(os.devnull, "w") as nuldev:
110+
try:
111+
gs.run_command(
112+
"v.db.connect",
113+
flags="p",
114+
map=map,
115+
quiet=True,
116+
stdout=nuldev,
117+
stderr=nuldev,
118+
)
119+
except CalledModuleError:
120+
gs.message(_("(No database links remaining)"))
121+
else:
122+
gs.run_command("v.db.connect", flags="p", map=map)
118123

119124
# write cmd history:
120125
gs.vector_history(map)

‎scripts/v.db.reconnect.all/v.db.reconnect.all.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,4 +322,7 @@ def main():
322322
if __name__ == "__main__":
323323
options, flags = gs.parser()
324324
nuldev = open(os.devnull, "w")
325-
sys.exit(main())
325+
try:
326+
sys.exit(main())
327+
finally:
328+
nuldev.close()

‎scripts/v.db.univar/v.db.univar.py‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,7 @@ def main():
117117
if __name__ == "__main__":
118118
options, flags = gs.parser()
119119
nuldev = open(os.devnull, "w")
120-
main()
120+
try:
121+
main()
122+
finally:
123+
nuldev.close()

‎scripts/v.in.e00/v.in.e00.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ def main():
130130
gcore.call(["e00conv", filename, e00tmp + ".e00"])
131131
gcore.message(_("...converted to Arc Coverage in current directory"))
132132
gcore.call(["avcimport", e00tmp + ".e00", e00shortname], stderr=nuldev)
133+
nuldev.close()
133134

134135
# SQL name fix:
135136
name = name.replace("-", "_")

‎scripts/v.rast.stats/v.rast.stats.py‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@
7171
# %end
7272

7373
import sys
74-
import os
7574
import atexit
7675
import grass.script as gs
7776
from grass.script.utils import decode
@@ -88,16 +87,14 @@ def cleanup():
8887

8988

9089
def main():
91-
global tmp, sqltmp, tmpname, nuldev, vector, rastertmp
90+
global tmp, sqltmp, tmpname, vector, rastertmp
9291
rastertmp = False
9392
# setup temporary files
9493
tmp = gs.tempfile()
9594
sqltmp = tmp + ".sql"
9695
# we need a random name
9796
tmpname = gs.basename(tmp)
9897

99-
nuldev = open(os.devnull, "w")
100-
10198
rasters = options["raster"].split(",")
10299
colprefixes = options["column_prefix"].split(",")
103100
vector = options["map"]
@@ -296,6 +293,7 @@ def get_nr_of_categories(
296293
for line in p.stdout:
297294
line = decode(line)
298295
cats.append(line.rstrip("\r\n").split(";")[0])
296+
p.stdout.close()
299297
p.wait()
300298

301299
number = len(cats)
@@ -482,6 +480,7 @@ def perform_stats(
482480

483481
f.write(" WHERE %s=%s;\n" % (fi["key"], vars[0]))
484482
f.write("{0}\n".format(gs.db_commit_transaction(fi["driver"])))
483+
p.stdout.close()
485484
p.wait()
486485

487486

‎scripts/v.report/v.report.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ def main():
127127
if cols[catcol] == "-1" or cols[catcol] == "0":
128128
continue
129129
records1.append(cols[:catcol] + [int(cols[catcol])] + cols[(catcol + 1) :])
130+
p.stdout.close()
130131
p.wait()
131132
if p.returncode != 0:
132133
sys.exit(1)
@@ -162,6 +163,7 @@ def main():
162163
if fields[0] in {"cat", "-1", "0"}:
163164
continue
164165
records2.append([int(fields[0])] + fields[1:])
166+
p.stdout.close()
165167
p.wait()
166168
records2.sort()
167169

@@ -186,6 +188,7 @@ def main():
186188
field = int(decode(line).rstrip())
187189
if field > 0:
188190
records1.append(field)
191+
p.stdout.close()
189192
p.wait()
190193
records1.sort()
191194
records1 = uniq(records1)
@@ -206,6 +209,7 @@ def main():
206209
if fields[0] in {"cat", "-1", "0"}:
207210
continue
208211
records3.append([int(fields[0])] + fields[1:])
212+
p.stdout.close()
209213
p.wait()
210214
records3.sort()
211215

@@ -240,6 +244,8 @@ def main():
240244
for r in records3:
241245
sys.stdout.write(fs.join(map(str, r)) + "\n")
242246

247+
nuldev.close()
248+
243249

244250
if __name__ == "__main__":
245251
options, flags = gs.parser()

0 commit comments

Comments
 (0)