Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Address resource warnings because of open file handles #529

Merged
merged 2 commits into from
Jan 5, 2021

Conversation

rahulporuri
Copy link
Contributor

Saving the graphics context to the PS and SVG backends raises resource warnings because the file handler is not closed by the save method. This PR fixes the issue by using open as a context manager.

For example, the resource warnings look like this on master -

test_circle (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmp5jjp1zn9\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_circle_clip (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmpd9y5my5y\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_circle_fill (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmpo6l4mdcw\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_line (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmpgixdhapv\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_quarter_circle (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmpid_gsfje\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_rect (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmp6rmirwob\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_rectangle (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmpusjbnlc7\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_star_clip (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmpc74amg35\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_star_eof_fill (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmp4wgsmrcn\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_star_fill (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmprtlf3hns\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_text (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmphyf5uun5\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok
test_text_clip (test_ps_drawing.TestPSDrawing) ... ResourceWarning: unclosed file <_io.TextIOWrapper name='C:\\Users\\rporuri\\AppData\\Local\\Temp\\tmpbend34qb\\rendered.eps' mode='w' encoding='cp1252'> [test_ps_drawing.py:17]
ok

Saving the graphics context to the PS and SVG backends raises resource
warnings because the file handler is not closed by the save method.

This is a trivial fix by using open as a context manager

	modified:   kiva/ps.py
	modified:   kiva/svg.py
@codecov-io
Copy link

codecov-io commented Dec 31, 2020

Codecov Report

Merging #529 (8106dbc) into master (573469c) will not change coverage.
The diff coverage is 50.00%.

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #529   +/-   ##
=======================================
  Coverage   35.16%   35.16%           
=======================================
  Files         210      210           
  Lines       17840    17840           
  Branches     2454     2454           
=======================================
  Hits         6274     6274           
  Misses      11161    11161           
  Partials      405      405           
Impacted Files Coverage Δ
kiva/ps.py 58.24% <50.00%> (ø)
kiva/svg.py 71.68% <50.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 573469c...8106dbc. Read the comment docs.

Copy link
Member

@jwiggins jwiggins left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Note that the GL tests still have this problem:

home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmp7nfmc1i8/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_circle_clip (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmpg1f78hpl/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_circle_fill (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmpp13utc14/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_line (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmp61yj939u/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_quarter_circle (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmpih3jrfhr/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_rect (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmp0h8fty3k/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_rectangle (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmpnk4i1tug/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_star_clip (kiva.tests.test_gl_drawing.TestGLDrawing) ... skipped 'gl graphics context does not support star_clip (#164)'

test_star_eof_fill (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmpdr6zooxm/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_star_fill (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmpl7q3qpkr/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

ok

test_text (kiva.tests.test_gl_drawing.TestGLDrawing) ... /home/travis/.edm/envs/enable-test-3.6-pyqt/lib/python3.6/site-packages/kiva/tests/test_gl_drawing.py:55: ResourceWarning: unclosed file <_io.BufferedWriter name='/tmp/tmp5l_oqzlg/rendered.png'>

  buffer.get_color_buffer().save(filename, encoder=PNGImageEncoder())

	modified:   kiva/tests/test_gl_drawing.py
@rahulporuri
Copy link
Contributor Author

@jwiggins addressed your comment about the resource warnings from test_gl_drawing - I didn't notice them earlier because those are skipped on windows. CI is happy and I dont see the resource warnings on travis/linux anymore. Merging.

@rahulporuri rahulporuri merged commit c1c7958 into master Jan 5, 2021
@rahulporuri rahulporuri deleted the fix/resource-warnings branch January 5, 2021 11:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants