On 30/10/2025 10.33, Daniel P. Berrangé wrote:
On Thu, Oct 30, 2025 at 10:26:38AM +0100, Thomas Huth wrote:
From: Thomas Huth <[email protected]>
The argparse.FileType() type has been deprecated in the latest argparse
version (e.g. the one from Fedora 43), now causing the test_bad_vmstate
functional test to fail since there are unexpected strings in the output.
Change the script to use pathlib.Path instead to fix the test_bad_vmstate
test and to be prepared for the future when the deprecated FileType gets
removed completely.
Reported-by: Daniel P. Berrangé <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
---
scripts/vmstate-static-checker.py | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
AFAICT, using pathlib.Path should work going back to any old python
versions we would need.
According to https://docs.python.org/3/library/pathlib.html it has been
added with Python 3.4, and we require at least 3.9 nowadays, so yes, this
should be fine.
@@ -393,10 +394,10 @@ def main():
help='reverse the direction')
args = parser.parse_args()
- src_data = json.load(args.src)
- dest_data = json.load(args.dest)
- args.src.close()
- args.dest.close()
+ with open(args.src, 'r', encoding='utf-8') as src_fh:
+ src_data = json.load(src_fh)
+ with open(args.dest, 'r', encoding='utf-8') as dst_fh:
+ dest_data = json.load(dst_fh)
This could be
src_data = json.load(args.src.read_text('utf-8'))
dest_data = json.load(args.dest.read_text('utf-8'))
Does not work, looks like the load() function cannot deal with a string:
$ scripts/vmstate-static-checker.py -s
tests/data/vmstate-static-checker/dump1.json -d
tests/data/vmstate-static-checker/dump2.json
Traceback (most recent call last):
File "../scripts/vmstate-static-checker.py", line 439, in <module>
sys.exit(main())
~~~~^^
File "../scripts/vmstate-static-checker.py", line 397, in main
src_data = json.load(args.src.read_text('utf-8'))
File "/usr/lib64/python3.13/json/__init__.py", line 293, in load
return loads(fp.read(),
^^^^^^^
AttributeError: 'str' object has no attribute 'read'
Thomas