Bug#989389: python3-apt's InstallProgress is not being used as a context manager
Package: python3-apt
Version: 2.2.0
As can be seen in the constructor, InstallProgress is designed to be
used in a 'with' in order to properly close write_stream and
status_stream:
https://git.launchpad.net/python-apt/tree/apt/progress/base.py#n163
This commit added support for using InstallProgress as a context
manager:
https://git.launchpad.net/python-apt/commit/?id=462c05b39eae5a0fa2270d329b03d4711742f20d
It also modified a test, but didn't change the way InstallProgress is
used by cache.py.
This causes Python 3 to complain that InstallProgress's constructor
leaves unclosed files:
> /usr/lib/python3.9/glob.py:123: ResourceWarning: unclosed file <_io.TextIOWrapper name=4 mode='r' encoding='UTF-8'>
> with os.scandir(dirname) as it:
> Object allocated at (most recent call last):
> File "/opt/thinlinc/modules/thinlinc/packageinstaller/__init__.py", lineno 33
> OOO0o000 = globals ( ) [ IIi1i111IiII ] . Backend ( )
> File "/opt/thinlinc/modules/thinlinc/packageinstaller/aptbackend.py", lineno 88
> self . _aptcallback = i1Ii1i ( self )
> File "/opt/thinlinc/modules/thinlinc/packageinstaller/aptbackend.py", lineno 31
> super ( ) . __init__ ( )
> File "/usr/lib/python3/dist-packages/apt/progress/base.py", lineno 164
> self.status_stream = os.fdopen(self.statusfd, "r") # type: io.TextIOBase # noqa
> File "/usr/lib/python3.9/os.py", lineno 1023
> return io.open(fd, *args, **kwargs)
> /usr/lib/python3.9/glob.py:123: ResourceWarning: unclosed file <_io.TextIOWrapper name=5 mode='w' encoding='UTF-8'>
> with os.scandir(dirname) as it:
> Object allocated at (most recent call last):
> File "/opt/thinlinc/modules/thinlinc/packageinstaller/__init__.py", lineno 33
> OOO0o000 = globals ( ) [ IIi1i111IiII ] . Backend ( )
> File "/opt/thinlinc/modules/thinlinc/packageinstaller/aptbackend.py", lineno 88
> self . _aptcallback = i1Ii1i ( self )
> File "/opt/thinlinc/modules/thinlinc/packageinstaller/aptbackend.py", lineno 31
> super ( ) . __init__ ( )
> File "/usr/lib/python3/dist-packages/apt/progress/base.py", lineno 163
> self.write_stream = os.fdopen(self.writefd, "w") # type: io.TextIOBase
> File "/usr/lib/python3.9/os.py", lineno 1023
> return io.open(fd, *args, **kwargs)
The issue was identified on Ubuntu 21.04:
> Linux ubuntu2104 5.11.0-17-generic #18-Ubuntu SMP Thu May 6 20:10:11
> UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
--
Samuel Mannehed Software Development
Cendio AB https://cendio.com
Teknikringen 8 https://twitter.com/ThinLinc
583 30 Linköping https://facebook.com/ThinLinc
Phone: +46 13 214 600
Reply to: