)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d8cf0cb3d0f56350948d52ce2ce830a8995cae22","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"ba81b6b9_6391a114","updated":"2025-08-22 05:26:09.000000000","message":"Dude! did you just make a cli tool that works both as sub commands as well as running the scripts directly!\n\nThe reletive imports don\u0027t work great for me when I want to run thing directly, so https://review.opendev.org/c/openstack/pyeclib/+/958260 but maybe I\u0027m missing something?","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d5007b468e049711c9f4b140ad7c1f8a3dc5206","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7e18128d_58615899","in_reply_to":"ba81b6b9_6391a114","updated":"2025-08-22 15:26:54.000000000","message":"So my goal was more to make it so you could do any of\n```\npyeclib-backend version\npython3 -m pyeclib.cli version\npython3 -m pyeclib.cli.version\n```\nand have them all work the same way -- I suppose I wasn\u0027t really thinking about the\n```\npython3 pyeclib/cli/version.py\n```\npossibility... sure! Run it all the ways!","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"323ddcaca1953271205014dc3eccbe2957a4d00b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"8469c224_b30b03bf","updated":"2025-08-25 22:34:10.000000000","message":"OK, I think I like this type-annotation kick I\u0027ve been on -- definitely turned up a few issues.","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"66f6efe76b900ee6774b989e1a2512300e59c3ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"f7f407eb_6cc529e1","updated":"2025-08-25 00:26:50.000000000","message":"Works well for me.\n\nRan it in all 3 modes, pyeclib-backend, full path, and `python -m pyeclib.clu.` modes.\n\nNice one Tim, love having some useful CI tools in pyeclib.","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8fb271f2db8aff214bcecf0e02f796889e61dcd6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a0834532_d14a22ee","updated":"2025-08-26 00:05:18.000000000","message":"Yup, good call on the returning of 0 explicitly rather then None. Keep to the known common return code pattern is important.","commit_id":"301e8f0cd78122e918d9846828cc33bffa646013"}],"pyeclib/cli/__init__.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d5007b468e049711c9f4b140ad7c1f8a3dc5206","unresolved":true,"context_lines":[{"line_number":1,"context_line":"from .. import ec_iface"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"_type_abbreviations \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ac619a4_3fc7c71b","line":1,"updated":"2025-08-22 15:26:54.000000000","message":"I just realized all these new files should have copyright lines.","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2e4e013266272feabb68b6d6c40cb6aeb0d84961","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from .. import ec_iface"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"_type_abbreviations \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"65cac47a_46dc7cb9","line":1,"in_reply_to":"9ac619a4_3fc7c71b","updated":"2025-08-22 17:22:45.000000000","message":"Done","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"}],"pyeclib/cli/__main__.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"323ddcaca1953271205014dc3eccbe2957a4d00b","unresolved":true,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from pyeclib.cli import bench"},{"line_number":28,"context_line":"from pyeclib.cli import check"},{"line_number":29,"context_line":"from pyeclib.cli import list"},{"line_number":30,"context_line":"from pyeclib.cli import verify"},{"line_number":31,"context_line":"from pyeclib.cli import version"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7b9134b8_c4ec811d","line":29,"range":{"start_line":29,"start_character":24,"end_line":29,"end_character":28},"updated":"2025-08-25 22:34:10.000000000","message":"So that\u0027s an unfortunate shadowing... especially if we want to add type annotations later.","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8fb271f2db8aff214bcecf0e02f796889e61dcd6","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from pyeclib.cli import bench"},{"line_number":28,"context_line":"from pyeclib.cli import check"},{"line_number":29,"context_line":"from pyeclib.cli import list"},{"line_number":30,"context_line":"from pyeclib.cli import verify"},{"line_number":31,"context_line":"from pyeclib.cli import version"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"a86e37b7_b5ee8b50","line":29,"range":{"start_line":29,"start_character":24,"end_line":29,"end_character":28},"in_reply_to":"7b9134b8_c4ec811d","updated":"2025-08-26 00:05:18.000000000","message":"Yup, great call!","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"323ddcaca1953271205014dc3eccbe2957a4d00b","unresolved":true,"context_lines":[{"line_number":70,"context_line":"    bench_parser.set_defaults(func\u003dbench.bench_command)"},{"line_number":71,"context_line":"    bench.add_bench_args(bench_parser)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    args \u003d parser.parse_args(args)"},{"line_number":74,"context_line":"    if args.func is None:"},{"line_number":75,"context_line":"        parser.error("},{"line_number":76,"context_line":"            f\"the following arguments are required: \""}],"source_content_type":"text/x-python","patch_set":2,"id":"034498aa_d67c545e","line":73,"updated":"2025-08-25 22:34:10.000000000","message":"Might want to split args-in from parsed-args.","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8fb271f2db8aff214bcecf0e02f796889e61dcd6","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    bench_parser.set_defaults(func\u003dbench.bench_command)"},{"line_number":71,"context_line":"    bench.add_bench_args(bench_parser)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    args \u003d parser.parse_args(args)"},{"line_number":74,"context_line":"    if args.func is None:"},{"line_number":75,"context_line":"        parser.error("},{"line_number":76,"context_line":"            f\"the following arguments are required: \""}],"source_content_type":"text/x-python","patch_set":2,"id":"540ac2e9_4a450522","line":73,"in_reply_to":"034498aa_d67c545e","updated":"2025-08-26 00:05:18.000000000","message":"Makes sense! Nice one.","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"}],"pyeclib/cli/list.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"323ddcaca1953271205014dc3eccbe2957a4d00b","unresolved":true,"context_lines":[{"line_number":54,"context_line":"            else:"},{"line_number":55,"context_line":"                print(f\"{backend:\u003c{width}} missing\")"},{"line_number":56,"context_line":"    if not found:"},{"line_number":57,"context_line":"        return 1"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"list_description \u003d \"list availability of EC backends\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9c22507a_2eb449ac","line":57,"updated":"2025-08-25 22:34:10.000000000","message":"Better to do something like `return 0 if found else 1`.","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8fb271f2db8aff214bcecf0e02f796889e61dcd6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            else:"},{"line_number":55,"context_line":"                print(f\"{backend:\u003c{width}} missing\")"},{"line_number":56,"context_line":"    if not found:"},{"line_number":57,"context_line":"        return 1"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"list_description \u003d \"list availability of EC backends\""}],"source_content_type":"text/x-python","patch_set":2,"id":"2e9c699f_64a34d6a","line":57,"in_reply_to":"9c22507a_2eb449ac","updated":"2025-08-26 00:05:18.000000000","message":"Acknowledged","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"}],"pyeclib/cli/verify.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d8cf0cb3d0f56350948d52ce2ce830a8995cae22","unresolved":true,"context_lines":[{"line_number":4,"context_line":"import sys"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"from . import add_instance_args"},{"line_number":7,"context_line":"from ..ec_iface import ALL_EC_TYPES"},{"line_number":8,"context_line":"from ..ec_iface import ECDriver"},{"line_number":9,"context_line":"from ..ec_iface import ECDriverError"},{"line_number":10,"context_line":"from ..ec_iface import VALID_EC_TYPES"},{"line_number":11,"context_line":"from . import expand_ec_types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"b2ca2a3a_fb281ccd","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":37},"updated":"2025-08-22 05:26:09.000000000","message":"Are all these on different lines to better tackle git conflicts?","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2e4e013266272feabb68b6d6c40cb6aeb0d84961","unresolved":false,"context_lines":[{"line_number":4,"context_line":"import sys"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"from . import add_instance_args"},{"line_number":7,"context_line":"from ..ec_iface import ALL_EC_TYPES"},{"line_number":8,"context_line":"from ..ec_iface import ECDriver"},{"line_number":9,"context_line":"from ..ec_iface import ECDriverError"},{"line_number":10,"context_line":"from ..ec_iface import VALID_EC_TYPES"},{"line_number":11,"context_line":"from . import expand_ec_types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"0c2c1ce8_e93afb55","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":37},"in_reply_to":"546975e5_ebd6bfab","updated":"2025-08-22 17:22:45.000000000","message":"Done","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d5007b468e049711c9f4b140ad7c1f8a3dc5206","unresolved":true,"context_lines":[{"line_number":4,"context_line":"import sys"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"from . import add_instance_args"},{"line_number":7,"context_line":"from ..ec_iface import ALL_EC_TYPES"},{"line_number":8,"context_line":"from ..ec_iface import ECDriver"},{"line_number":9,"context_line":"from ..ec_iface import ECDriverError"},{"line_number":10,"context_line":"from ..ec_iface import VALID_EC_TYPES"},{"line_number":11,"context_line":"from . import expand_ec_types"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"546975e5_ebd6bfab","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":37},"in_reply_to":"b2ca2a3a_fb281ccd","updated":"2025-08-22 15:26:54.000000000","message":"`flake8` complains by default if you have more than one import per line; it\u0027s also why `ec_iface.py` has some imports like\n```\nfrom enum import Enum\nfrom enum import unique\nimport warnings\n\nfrom .utils import create_instance\nfrom .utils import positive_int_value\n```\n(Interestingly, the history there goes back way beyond [`2884a6b8`](https://github.com/openstack/pyeclib/commit/2884a6b882d1c893816116d7c5330e8b4face569) when I introduced the hacking checks; Tushar was using that convention at least as far back as [`ef051208`](https://github.com/openstack/pyeclib/commit/ef051208e1ac7a13f508c8810435325c1af9a5e5).)\n\nMaybe it\u0027d be simpler to just\n```\nfrom pyeclib import ec_iface\nfrom pyeclib import cli\n```\nthough...","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"323ddcaca1953271205014dc3eccbe2957a4d00b","unresolved":true,"context_lines":[{"line_number":78,"context_line":"        return 3"},{"line_number":79,"context_line":"    if total_failures:"},{"line_number":80,"context_line":"        return 1"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def check_instance(instance, frags, unavailable, data):"},{"line_number":84,"context_line":"    combinations \u003d corrupt \u003d failures \u003d 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"79800848_0de407f0","line":81,"updated":"2025-08-25 22:34:10.000000000","message":"Oughta explicitly `return 0` rather than let it fall off and return `None`.","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"8fb271f2db8aff214bcecf0e02f796889e61dcd6","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        return 3"},{"line_number":79,"context_line":"    if total_failures:"},{"line_number":80,"context_line":"        return 1"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def check_instance(instance, frags, unavailable, data):"},{"line_number":84,"context_line":"    combinations \u003d corrupt \u003d failures \u003d 0"}],"source_content_type":"text/x-python","patch_set":2,"id":"fbe3d021_9539590a","line":81,"in_reply_to":"79800848_0de407f0","updated":"2025-08-26 00:05:18.000000000","message":"+1","commit_id":"666f80b1aa69eed708c4fd6b6af0d9675d12d3dc"}],"pyeclib/cli/version.py":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"d8cf0cb3d0f56350948d52ce2ce830a8995cae22","unresolved":true,"context_lines":[{"line_number":1,"context_line":"import platform"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"from .. import ec_iface"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"version_description \u003d \"print pyeclib and liberasurecode versions\""}],"source_content_type":"text/x-python","patch_set":1,"id":"695b8938_1ed05b30","line":3,"updated":"2025-08-22 05:26:09.000000000","message":"Is there a reason we\u0027re doing relative imports everywhere? I have trouble running them directly them in my venv. Using version because it\u0027s the simplest as an example.\n\n```\n$ python pyeclib/cli/version.py \nTraceback (most recent call last):\n  File \"/home/matt/code/pyeclib/pyeclib/cli/version.py\", line 3, in \u003cmodule\u003e\n    from .. import ec_iface\nImportError: attempted relative import with no known parent package\n\n$ cd pyeclib/cli\n$ python version.py \nTraceback (most recent call last):\n  File \"/home/matt/code/pyeclib/pyeclib/cli/version.py\", line 3, in \u003cmodule\u003e\n    from .. import ec_iface\nImportError: attempted relative import with no known parent package\n```\n\nBut all is happy if I just set them up properly:\n\n```\ndiff --git i/pyeclib/cli/version.py w/pyeclib/cli/version.py\nindex 0be6139..56fdb11 100644\n--- i/pyeclib/cli/version.py\n+++ w/pyeclib/cli/version.py\n@@ -1,7 +1,6 @@\n import platform\n \n-from .. import ec_iface\n-\n+from pyeclib import ec_iface\n \n version_description \u003d \"print pyeclib and liberasurecode versions\"\n```\n\nAnd..\n```\n$ python pyeclib/cli/version.py \npyeclib 1.6.4\nliberasurecode 1.6.5\nCPython 3.10.18\n```","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7d5007b468e049711c9f4b140ad7c1f8a3dc5206","unresolved":true,"context_lines":[{"line_number":1,"context_line":"import platform"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"from .. import ec_iface"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"version_description \u003d \"print pyeclib and liberasurecode versions\""}],"source_content_type":"text/x-python","patch_set":1,"id":"77a72da9_ec5c408c","line":3,"in_reply_to":"695b8938_1ed05b30","updated":"2025-08-22 15:26:54.000000000","message":"Not really; it\u0027s not like I\u0027m expecting someone to want to vendor this or something. I\u0027ll squash in your follow-up. (Thanks!)","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2e4e013266272feabb68b6d6c40cb6aeb0d84961","unresolved":false,"context_lines":[{"line_number":1,"context_line":"import platform"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"from .. import ec_iface"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"version_description \u003d \"print pyeclib and liberasurecode versions\""}],"source_content_type":"text/x-python","patch_set":1,"id":"e564a53c_aa88c9a9","line":3,"in_reply_to":"77a72da9_ec5c408c","updated":"2025-08-22 17:22:45.000000000","message":"Done","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"}],"pyproject.toml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"2e4e013266272feabb68b6d6c40cb6aeb0d84961","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\"Release Notes\" \u003d \"https://opendev.org/openstack/pyeclib/src/branch/master/ChangeLog\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"[tool.setuptools]"},{"line_number":40,"context_line":"packages \u003d [\"pyeclib\", \"pyeclib.cli\"]"},{"line_number":41,"context_line":"platforms \u003d [\"Linux\"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[[tool.setuptools.ext-modules]]"}],"source_content_type":"text/x-toml","patch_set":1,"id":"a5cc7351_79e08f4d","line":40,"updated":"2025-08-22 17:22:45.000000000","message":"This strikes me as weird (why wouldn\u0027t `packages \u003d [\"pyeclib\"]` pick things up recursively?) but I couldn\u0027t get this working right without it 😕","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"63d4a6ae579da448ced068477058cb1a4c88c1f4","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\"Release Notes\" \u003d \"https://opendev.org/openstack/pyeclib/src/branch/master/ChangeLog\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"[tool.setuptools]"},{"line_number":40,"context_line":"packages \u003d [\"pyeclib\", \"pyeclib.cli\"]"},{"line_number":41,"context_line":"platforms \u003d [\"Linux\"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[[tool.setuptools.ext-modules]]"}],"source_content_type":"text/x-toml","patch_set":1,"id":"c2122eeb_d0b46514","line":40,"in_reply_to":"64cccada_d5542e95","updated":"2025-08-25 15:42:25.000000000","message":"I should maybe try stacking up through https://review.opendev.org/c/openstack/pyeclib/+/956612 on this -- with the change to a `src/` layout, I found I didn\u0027t need to specify `packages` at all.","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"66f6efe76b900ee6774b989e1a2512300e59c3ac","unresolved":true,"context_lines":[{"line_number":37,"context_line":"\"Release Notes\" \u003d \"https://opendev.org/openstack/pyeclib/src/branch/master/ChangeLog\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"[tool.setuptools]"},{"line_number":40,"context_line":"packages \u003d [\"pyeclib\", \"pyeclib.cli\"]"},{"line_number":41,"context_line":"platforms \u003d [\"Linux\"]"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"[[tool.setuptools.ext-modules]]"}],"source_content_type":"text/x-toml","patch_set":1,"id":"64cccada_d5542e95","line":40,"in_reply_to":"a5cc7351_79e08f4d","updated":"2025-08-25 00:26:50.000000000","message":"yeah, I had similar issues when workong on the pacakges in the setup.cfg over in swift when checking the MAINIFEST.in file.\n\nBut if it needs it, then it needs it.","commit_id":"17f5c6a88e992b3403fbe0a87671f0bf1b00d673"}]}
