Skip to content

ci: mark published packages' issues "Available in RISE PyPI" - #3896

Open
justeph wants to merge 2 commits into
mainfrom
ci/sync-project-status
Open

justeph wants to merge 2 commits into
mainfrom
ci/sync-project-status

Conversation

@justeph

@justeph justeph commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

A package's " riscv64 support" issue should move to "Available in RISE PyPI" in the Python Wheels project once its wheels are published. Doing it when update_doc.py opens the docs PR is too early: /simple/ is only regenerated by website.yml after that PR is merged.

Add a sync-project-status job after website.yml's deploy that runs the new ci_scripts/sync_project_status.py. For every package in packages.txt it takes the oldest open issue and, unless its status is already "Available in RISE PyPI" or "Available Upstream", adds it to the project and sets the status. The issue stays open; only a deprecation closes it. It compares state instead of diffing the push, so runs dropped by the concurrency queue or failed runs are caught up by the next deploy.

Move the issue and project helpers into ci_scripts/github_issues.py, shared by sync_project_status.py, check_versions.py and update_doc.py (REPO, normalize_name). check_versions.py's find_upstream_issue() now fetches the issues once per run and picks the oldest open issue whose title matches exactly, instead of the newest fuzzy search hit. The project is matched by node ID, since its title is "Python Wheels - riseproject-dev/python-wheels".

Document the job, and drop the closing-keyword advice from the porting steps: the issue must stay open.

A package's "<pkg> riscv64 support" issue should move to "Available in
RISE PyPI" in the Python Wheels project once its wheels are published.
Doing it when update_doc.py opens the docs PR is too early: /simple/ is
only regenerated by website.yml after that PR is merged.

Add a sync-project-status job after website.yml's deploy that runs the
new ci_scripts/sync_project_status.py. For every package in packages.txt
it takes the oldest open issue and, unless its status is already
"Available in RISE PyPI" or "Available Upstream", adds it to the project
and sets the status. The issue stays open; only a deprecation closes it.
It compares state instead of diffing the push, so runs dropped by the
concurrency queue or failed runs are caught up by the next deploy.

Move the issue and project helpers into ci_scripts/github_issues.py,
shared by sync_project_status.py, check_versions.py and update_doc.py
(REPO, normalize_name). check_versions.py's find_upstream_issue() now
fetches the issues once per run and picks the oldest open issue whose
title matches exactly, instead of the newest fuzzy search hit. The
project is matched by node ID, since its title is "Python Wheels -
riseproject-dev/python-wheels".

Document the job, and drop the closing-keyword advice from the porting
steps: the issue must stay open.

Signed-off-by: Julien Stephan <jstephan@baylibre.com>
@justeph

justeph commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator Author

Here is the output of the dry-run:

Show full log
❯ python3 ci_scripts/sync_project_status.py --dry-run 
[dry-run] would set ada-url #1299: Todo -> Available in RISE PyPI
[dry-run] would set adbc-driver-manager #1042: Todo -> Available in RISE PyPI
[dry-run] would set adbc-driver-postgresql #1723: Todo -> Available in RISE PyPI
[dry-run] would set adbc-driver-sqlite #1901: Todo -> Available in RISE PyPI
[dry-run] would set aggdraw #1529: Todo -> Available in RISE PyPI
[dry-run] would set ahocorasick-rs #1252: Todo -> Available in RISE PyPI
[dry-run] would set aiocsv #1409: Todo -> Available in RISE PyPI
[dry-run] would set ansible-pylibssh #1582: Todo -> Available in RISE PyPI
[dry-run] would set anycrc #1428: Todo -> Available in RISE PyPI
[dry-run] would set apache-beam #1757: Todo -> Available in RISE PyPI
[dry-run] would set apache-sedona #1766: Todo -> Available in RISE PyPI
[dry-run] would set apsw #1129: Todo -> Available in RISE PyPI
[dry-run] would set arc4 #1560: Todo -> Available in RISE PyPI
[dry-run] would set arch #1698: Todo -> Available in RISE PyPI
[dry-run] would set arraykit #1833: Todo -> Available in RISE PyPI
[dry-run] would set asammdf #1720: Todo -> Available in RISE PyPI
[dry-run] would set ast-grep-cli #999: Todo -> Available in RISE PyPI
[dry-run] would set ast-grep-py #1660: Todo -> Available in RISE PyPI
[dry-run] would set astc-encoder-py #1879: Todo -> Available in RISE PyPI
[dry-run] would set astropy-healpix #1591: Todo -> Available in RISE PyPI
[dry-run] would set asv #1861: Todo -> Available in RISE PyPI
[dry-run] would set asynch #1036: Todo -> Available in RISE PyPI
[dry-run] would set asyncmy #1713: Todo -> Available in RISE PyPI
[dry-run] would set atomic-dict #1616: Todo -> Available in RISE PyPI
[dry-run] would set awkward-cpp #1125: Todo -> Available in RISE PyPI
[dry-run] would set awslambdaric #1058: Todo -> Available in RISE PyPI
[dry-run] would set backports-datetime-fromisoformat #1411: Todo -> Available in RISE PyPI
[dry-run] would set base2048 #1544: Todo -> Available in RISE PyPI
[dry-run] would set based58 #1542: Todo -> Available in RISE PyPI
[dry-run] would set biom-format #1837: Todo -> Available in RISE PyPI
[dry-run] would set biotite #1072: Todo -> Available in RISE PyPI
[dry-run] would set biotraj #1087: Todo -> Available in RISE PyPI
[dry-run] would set bitarray-hardbyte #1424: Todo -> Available in RISE PyPI
[dry-run] would set blosc #1576: Todo -> Available in RISE PyPI
[dry-run] would set blurhash-python #1586: Todo -> Available in RISE PyPI
[dry-run] would set boost-histogram #1662: Todo -> Available in RISE PyPI
[dry-run] would set btrees #1588: Todo -> Available in RISE PyPI
[dry-run] would set bx-python #1426: Todo -> Available in RISE PyPI
[dry-run] would set c2pa-python #1860: Todo -> Available in RISE PyPI
[dry-run] would set cartopy #1753: Todo -> Available in RISE PyPI
[dry-run] would set casadi #1506: Todo -> Available in RISE PyPI
[dry-run] would set chiabip158 #1893: Todo -> Available in RISE PyPI
[dry-run] would set chompjs #1353: Todo -> Available in RISE PyPI
[dry-run] would set chroma-hnswlib #1152: Todo -> Available in RISE PyPI
[dry-run] would set cityhash #1311: Todo -> Available in RISE PyPI
[dry-run] would set clevercsv #1905: Todo -> Available in RISE PyPI
[dry-run] would set clickhouse-cityhash #1308: Todo -> Available in RISE PyPI
[dry-run] would set cmarkgfm #1257: Todo -> Available in RISE PyPI
[dry-run] would set cmeel-boost #1852: Todo -> Available in RISE PyPI
[dry-run] would set coacd #1700: Todo -> Available in RISE PyPI
[dry-run] would set coincurve #997: Todo -> Available in RISE PyPI
[dry-run] would set comrak #1271: Todo -> Available in RISE PyPI
[dry-run] would set connected-components-3d #1530: Todo -> Available in RISE PyPI
[dry-run] would set connectorx #1843: Todo -> Available in RISE PyPI
[dry-run] would set convertbng #1422: Todo -> Available in RISE PyPI
[dry-run] would set coolprop #1844: Todo -> Available in RISE PyPI
[dry-run] would set coreforecast #1841: Todo -> Available in RISE PyPI
[dry-run] would set correctionlib #1319: Todo -> Available in RISE PyPI
[dry-run] would set crick #1272: Todo -> Available in RISE PyPI
[dry-run] would set cronexpr #1631: Todo -> Available in RISE PyPI
[dry-run] would set cryptg #1587: Todo -> Available in RISE PyPI
[dry-run] would set cryptography #13: Todo -> Available in RISE PyPI
[dry-run] would set css-inline #1151: Todo -> Available in RISE PyPI
[dry-run] would set ct3 #1286: Todo -> Available in RISE PyPI
[dry-run] would set ctranslate2 #1155: Todo -> Available in RISE PyPI
[dry-run] would set curated-tokenizers #1290: Todo -> Available in RISE PyPI
[dry-run] would set cwcwidth #1262: Todo -> Available in RISE PyPI
[dry-run] would set cydifflib #1352: Todo -> Available in RISE PyPI
[dry-run] would set cyksuid #1337: Todo -> Available in RISE PyPI
[dry-run] would set cysignals #1300: Todo -> Available in RISE PyPI
[dry-run] would set cysystemd #1559: Todo -> Available in RISE PyPI
[dry-run] would set cyvcf2 #1881: Todo -> Available in RISE PyPI
[dry-run] would set daft #1154: Todo -> Available in RISE PyPI
[dry-run] would set databento-dbn #1846: Todo -> Available in RISE PyPI
[dry-run] would set datasketches #1659: Todo -> Available in RISE PyPI
[dry-run] would set decord #1898: Todo -> Available in RISE PyPI
[dry-run] would set deflate #1515: Todo -> Available in RISE PyPI
[dry-run] would set delta-kernel-rust-sharing-wrapper #1710: Todo -> Available in RISE PyPI
[dry-run] would set deltalite #1878: Todo -> Available in RISE PyPI
[dry-run] would set demoparser2 #1894: Todo -> Available in RISE PyPI
[dry-run] would set diptest #1634: Todo -> Available in RISE PyPI
[dry-run] would set djade #1546: Todo -> Available in RISE PyPI
[dry-run] would set dnaio #1420: Todo -> Available in RISE PyPI
[dry-run] would set docling-parse #1195: Todo -> Available in RISE PyPI
[dry-run] would set doublemetaphone #1527: Todo -> Available in RISE PyPI
[dry-run] would set dprint-py #1628: Todo -> Available in RISE PyPI
[dry-run] would set dracopy #1522: Todo -> Available in RISE PyPI
[dry-run] would set dtaidistance #1832: Todo -> Available in RISE PyPI
[dry-run] would set dukpy #1247: Todo -> Available in RISE PyPI
[dry-run] would set dumb-init #1264: Todo -> Available in RISE PyPI
[dry-run] would set eccodeslib #1759: Todo -> Available in RISE PyPI
[dry-run] would set ecos #1135: Todo -> Available in RISE PyPI
[dry-run] would set editdistpy #1310: Todo -> Available in RISE PyPI
[dry-run] would set edlib #1314: Todo -> Available in RISE PyPI
[dry-run] would set edt #1418: Todo -> Available in RISE PyPI
[dry-run] would set ephem #1408: Todo -> Available in RISE PyPI
[dry-run] would set espeakng-loader #1440: Todo -> Available in RISE PyPI
[dry-run] would set extensionclass #1359: Todo -> Available in RISE PyPI
[dry-run] would set fabio #1423: Todo -> Available in RISE PyPI
[dry-run] would set fast-diff-match-patch #1573: Todo -> Available in RISE PyPI
[dry-run] would set fast-histogram #1415: Todo -> Available in RISE PyPI
[dry-run] would set fast-simplification #1294: Todo -> Available in RISE PyPI
[dry-run] would set fast-walk #1563: Todo -> Available in RISE PyPI
[dry-run] would set fastcluster #1429: Todo -> Available in RISE PyPI
[dry-run] would set faster-fifo #1558: Todo -> Available in RISE PyPI
[dry-run] would set fastexcel #1001: Todo -> Available in RISE PyPI
[dry-run] would set fastnanoid #1354: Todo -> Available in RISE PyPI
[dry-run] would set fastnumbers #1324: Todo -> Available in RISE PyPI
[dry-run] would set fastobo #1834: Todo -> Available in RISE PyPI
[dry-run] would set fastremap #1535: Todo -> Available in RISE PyPI
[dry-run] would set fastsafetensors #1128: Todo -> Available in RISE PyPI
[dry-run] would set fasttext-predict #1709: Todo -> Available in RISE PyPI
[dry-run] would set fasttext-wheel #1646: Todo -> Available in RISE PyPI
[dry-run] would set fastwarc #1657: Todo -> Available in RISE PyPI
[dry-run] would set faust-cchardet #1708: Todo -> Available in RISE PyPI
[dry-run] would set fill-voids #1551: Todo -> Available in RISE PyPI
[dry-run] would set fiona #996: Todo -> Available in RISE PyPI
[dry-run] would set firecrawl-anydoc #1002: Todo -> Available in RISE PyPI
[dry-run] would set flpc #1859: Todo -> Available in RISE PyPI
[dry-run] would set fnv-hash-fast #1131: Todo -> Available in RISE PyPI
[dry-run] would set freetype-py #1005: Todo -> Available in RISE PyPI
[dry-run] would set fugashi #1567: Todo -> Available in RISE PyPI
[dry-run] would set fuzzysearch #1245: Todo -> Available in RISE PyPI
[dry-run] would set fuzzyset2 #1298: Todo -> Available in RISE PyPI
[dry-run] would set gdstk #1882: Todo -> Available in RISE PyPI
[dry-run] would set gemmi #1051: Todo -> Available in RISE PyPI
[dry-run] would set gilknocker #1283: Todo -> Available in RISE PyPI
[dry-run] would set git-cliff #1615: Todo -> Available in RISE PyPI
[dry-run] would set glcontext #1401: Todo -> Available in RISE PyPI
[dry-run] would set glfw #1000: Todo -> Available in RISE PyPI
[dry-run] would set gmpy2 #1303: Todo -> Available in RISE PyPI
[dry-run] would set gmsh #1862: Todo -> Available in RISE PyPI
[dry-run] would set gnureadline #1274: Todo -> Available in RISE PyPI
[dry-run] would set gpiod #1436: Todo -> Available in RISE PyPI
[dry-run] would set grpcio #45: Todo -> Available in RISE PyPI
[dry-run] would set guppy3 #1568: Todo -> Available in RISE PyPI
[dry-run] would set hdbscan #1039: Todo -> Available in RISE PyPI
[dry-run] would set hdf5plugin #1907: Todo -> Available in RISE PyPI
[dry-run] would set hdrhistogram #1439: Todo -> Available in RISE PyPI
[dry-run] would set hf-xet #44: Todo -> Available in RISE PyPI
[dry-run] would set hidapi #1146: Todo -> Available in RISE PyPI
[dry-run] would set hmmlearn #1571: Todo -> Available in RISE PyPI
[dry-run] would set hogql-parser #1916: Todo -> Available in RISE PyPI
[dry-run] would set hogql-parser-rs #1849: Todo -> Available in RISE PyPI
[dry-run] would set html-to-markdown #1322: Todo -> Available in RISE PyPI
[dry-run] would set igraph #1148: Todo -> Available in RISE PyPI
[dry-run] would set imagecodecs #1845: Todo -> Available in RISE PyPI
[dry-run] would set imgui #1826: Todo -> Available in RISE PyPI
[dry-run] would set iminuit #1884: Todo -> Available in RISE PyPI
[dry-run] would set immutables #1056: Todo -> Available in RISE PyPI
[dry-run] would set impit #1647: Todo -> Available in RISE PyPI
[dry-run] would set indexed-gzip #1360: Todo -> Available in RISE PyPI
[dry-run] would set intbitset #1357: Todo -> Available in RISE PyPI
[dry-run] would set isal #1069: Todo -> Available in RISE PyPI
[dry-run] would set islpy #1838: Todo -> Available in RISE PyPI
[dry-run] would set iteration-utilities #1828: Todo -> Available in RISE PyPI
[dry-run] would set jenkspy #1336: Todo -> Available in RISE PyPI
[dry-run] would set json-stream-rs-tokenizer #1281: Todo -> Available in RISE PyPI
[dry-run] would set jsoncompat #1856: Todo -> Available in RISE PyPI
[dry-run] would set jsonnet #1842: Todo -> Available in RISE PyPI
[dry-run] would set jsonobject #1258: Todo -> Available in RISE PyPI
[dry-run] would set jsonpath-rust-bindings #1288: Todo -> Available in RISE PyPI
[dry-run] would set just-bin #1625: Todo -> Available in RISE PyPI
[dry-run] would set kaldi-native-fbank #1887: Todo -> Available in RISE PyPI
[dry-run] would set kaldialign #1259: Todo -> Available in RISE PyPI
[dry-run] would set keystone-engine #1880: Todo -> Available in RISE PyPI
[dry-run] would set kornia-rs #1059: Todo -> Available in RISE PyPI
[dry-run] would set labmaze #1888: Todo -> Available in RISE PyPI
[dry-run] would set lameenc #1167: Todo -> Available in RISE PyPI
[dry-run] would set lap #1566: Todo -> Available in RISE PyPI
[dry-run] would set lapx #1402: Todo -> Available in RISE PyPI
[dry-run] would set laszip #1539: Todo -> Available in RISE PyPI
[dry-run] would set lazrs #1133: Todo -> Available in RISE PyPI
[dry-run] would set libclang #1156: Todo -> Available in RISE PyPI
[dry-run] would set libigl #1883: Todo -> Available in RISE PyPI
[dry-run] would set libsass #1150: Todo -> Available in RISE PyPI
[dry-run] would set libscrc #1312: Todo -> Available in RISE PyPI
[dry-run] would set libusb-package #1911: Todo -> Available in RISE PyPI
[dry-run] would set libvalkey #1702: Todo -> Available in RISE PyPI
[dry-run] would set lilcom #1307: Todo -> Available in RISE PyPI
[dry-run] would set line-profiler #1034: Todo -> Available in RISE PyPI
[dry-run] would set lingua-language-detector #1043: Todo -> Available in RISE PyPI
[dry-run] would set littlefs-python #1305: Todo -> Available in RISE PyPI
[dry-run] would set livekit-blingfire #1754: Todo -> Available in RISE PyPI
[dry-run] would set loro #1076: Todo -> Available in RISE PyPI
[dry-run] would set lzallright #1412: Todo -> Available in RISE PyPI
[dry-run] would set lzfse #1404: Todo -> Available in RISE PyPI
[dry-run] would set manifold3d #1127: Todo -> Available in RISE PyPI
[dry-run] would set mapbox-earcut #1410: Todo -> Available in RISE PyPI
[dry-run] would set markdown-it-pyrs #1414: Todo -> Available in RISE PyPI
[dry-run] would set matplotlib #12: Todo -> Available in RISE PyPI
[dry-run] would set mecab #1406: Todo -> Available in RISE PyPI
[dry-run] would set mecab-python3 #1130: Todo -> Available in RISE PyPI
[dry-run] would set memory-allocator #1417: Todo -> Available in RISE PyPI
[dry-run] would set mgrs #1407: Todo -> Available in RISE PyPI
[dry-run] would set miniaudio #1854: Todo -> Available in RISE PyPI
[dry-run] would set minify-html #1168: Todo -> Available in RISE PyPI
[dry-run] would set minijinja #1332: Todo -> Available in RISE PyPI
[dry-run] would set miniupnpc #1425: Todo -> Available in RISE PyPI
[dry-run] would set minorminer #1839: Todo -> Available in RISE PyPI
[dry-run] would set ml-dtypes #11: Todo -> Available in RISE PyPI
[dry-run] would set mlx #1914: Todo -> Available in RISE PyPI
[dry-run] would set mmcif #1707: Todo -> Available in RISE PyPI
[dry-run] would set mmhash3 #1267: Todo -> Available in RISE PyPI
[dry-run] would set moderngl #1903: Todo -> Available in RISE PyPI
[dry-run] would set mojimoji #1266: Todo -> Available in RISE PyPI
[dry-run] would set moocore #1284: Todo -> Available in RISE PyPI
[dry-run] would set moyopy #1507: Todo -> Available in RISE PyPI
[dry-run] would set mpi4py #1703: Todo -> Available in RISE PyPI
[dry-run] would set mrml #1282: Todo -> Available in RISE PyPI
[dry-run] would set mujoco #1897: Todo -> Available in RISE PyPI
[dry-run] would set murmurhash2 #1315: Todo -> Available in RISE PyPI
[dry-run] would set mutf8 #1078: Todo -> Available in RISE PyPI
[dry-run] would set mwparserfromhell #1403: Todo -> Available in RISE PyPI
[dry-run] would set ncompress #1356: Todo -> Available in RISE PyPI
[dry-run] would set nemo-relay #1505: Todo -> Available in RISE PyPI
[dry-run] would set netifaces #1057: Todo -> Available in RISE PyPI
[dry-run] would set netifaces-plus #1624: Todo -> Available in RISE PyPI
[dry-run] would set netifaces2 #1627: Todo -> Available in RISE PyPI
[dry-run] would set nlopt #1645: Todo -> Available in RISE PyPI
[dry-run] would set nodejs-wheel-binaries #1321: Todo -> Available in RISE PyPI
[dry-run] would set numpy-minmax #1531: Todo -> Available in RISE PyPI
[dry-run] would set numpy-quaternion #1285: Todo -> Available in RISE PyPI
[dry-run] would set numpy-rms #1533: Todo -> Available in RISE PyPI
[dry-run] would set onigurumacffi #1265: Todo -> Available in RISE PyPI
[dry-run] would set opencc #1443: Todo -> Available in RISE PyPI
[dry-run] would set openexr #1701: Todo -> Available in RISE PyPI
[dry-run] would set opentimelineio #1831: Todo -> Available in RISE PyPI
[dry-run] would set opentsne #1835: Todo -> Available in RISE PyPI
[dry-run] would set orjson #42: Todo -> Available in RISE PyPI
[dry-run] would set pact-python-ffi #1706: Todo -> Available in RISE PyPI
[dry-run] would set pagefind-bin #1663: Todo -> Available in RISE PyPI
[dry-run] would set pandas #14: Todo -> Available in RISE PyPI
[dry-run] would set pcodec #1633: Todo -> Available in RISE PyPI
[dry-run] would set pedalboard #2134: Todo -> Available in RISE PyPI
[dry-run] would set persistent #1269: Todo -> Available in RISE PyPI
[dry-run] would set phik #1293: Todo -> Available in RISE PyPI
[dry-run] would set pillow-avif-plugin #1050: Todo -> Available in RISE PyPI
[dry-run] would set pixelhog #1913: Todo -> Available in RISE PyPI
[dry-run] would set plotext #1141: Todo -> Available in RISE PyPI
[dry-run] would set plyvel #1722: Todo -> Available in RISE PyPI
[dry-run] would set pmdarima #1048: Todo -> Available in RISE PyPI
[dry-run] would set point-cloud-utils #1836: Todo -> Available in RISE PyPI
[dry-run] would set poselib #1565: Todo -> Available in RISE PyPI
[dry-run] would set posix-ipc #1251: Todo -> Available in RISE PyPI
[dry-run] would set pot #1920: Todo -> Available in RISE PyPI
[dry-run] would set pqcrypto #1562: Todo -> Available in RISE PyPI
[dry-run] would set praat-parselmouth #1906: Todo -> Available in RISE PyPI
[dry-run] would set primer3-py #1577: Todo -> Available in RISE PyPI
[dry-run] would set protobuf-py-ext #1915: Todo -> Available in RISE PyPI
[dry-run] would set protovalidate #1717: Todo -> Available in RISE PyPI
[dry-run] would set psd-tools #1857: Todo -> Available in RISE PyPI
[dry-run] would set psutil #9: Todo -> Available in RISE PyPI
[dry-run] would set py-bip39-bindings #1330: Todo -> Available in RISE PyPI
[dry-run] would set py-ed25519-zebra-bindings #1313: Todo -> Available in RISE PyPI
[dry-run] would set py-radix #1364: Todo -> Available in RISE PyPI
[dry-run] would set py-sr25519-bindings #1301: Todo -> Available in RISE PyPI
[dry-run] would set pyamg #1827: Todo -> Available in RISE PyPI
[dry-run] would set pybigwig #1614: Todo -> Available in RISE PyPI
[dry-run] would set pycapnp #1570: Todo -> Available in RISE PyPI
[dry-run] would set pycld2 #1572: Todo -> Available in RISE PyPI
[dry-run] would set pycrc32 #1521: Todo -> Available in RISE PyPI
[dry-run] would set pycrdt #1040: Todo -> Available in RISE PyPI
[dry-run] would set pydantic-monty-client #1711: Todo -> Available in RISE PyPI
[dry-run] would set pydantic-monty-runtime #1664: Todo -> Available in RISE PyPI
[dry-run] would set pydevd #1721: Todo -> Available in RISE PyPI
[dry-run] would set pyedflib #1545: Todo -> Available in RISE PyPI
[dry-run] would set pyerfa #1032: Todo -> Available in RISE PyPI
[dry-run] would set pyfarmhash #1132: Todo -> Available in RISE PyPI
[dry-run] would set pyfastx #1585: Todo -> Available in RISE PyPI
[dry-run] would set pyfaup-rs #1553: Todo -> Available in RISE PyPI
[dry-run] would set pygame #1320: Todo -> Available in RISE PyPI
[dry-run] would set pygeohash #1126: Todo -> Available in RISE PyPI
[dry-run] would set pyglm #1524: Todo -> Available in RISE PyPI
[dry-run] would set pyheck #1331: Todo -> Available in RISE PyPI
[dry-run] would set pyheif #1583: Todo -> Available in RISE PyPI
[dry-run] would set pyiceberg-core #982: Todo -> Available in RISE PyPI
[dry-run] would set pyicu-binary #1590: Todo -> Available in RISE PyPI
[dry-run] would set pyjls #1829: Todo -> Available in RISE PyPI
[dry-run] would set pykdtree #1365: Todo -> Available in RISE PyPI
[dry-run] would set pylance #1785: Todo -> Available in RISE PyPI
[dry-run] would set pylerc #1538: Todo -> Available in RISE PyPI
[dry-run] would set pylibmc #1592: Todo -> Available in RISE PyPI
[dry-run] would set pylibsrtp #1079: Todo -> Available in RISE PyPI
[dry-run] would set pylzss #1442: Todo -> Available in RISE PyPI
[dry-run] would set pymavlink #1904: Todo -> Available in RISE PyPI
[dry-run] would set pymaxflow #1516: Todo -> Available in RISE PyPI
[dry-run] would set pymcubes #1561: Todo -> Available in RISE PyPI
[dry-run] would set pymediainfo #1124: Todo -> Available in RISE PyPI
[dry-run] would set pymongoarrow #1824: Todo -> Available in RISE PyPI
[dry-run] would set pymongocrypt #1699: Todo -> Available in RISE PyPI
[dry-run] would set pymonocypher #1556: Todo -> Available in RISE PyPI
[dry-run] would set pymoo #1855: Todo -> Available in RISE PyPI
[dry-run] would set pymunk #1892: Todo -> Available in RISE PyPI
[dry-run] would set pymupdfb #1768: Todo -> Available in RISE PyPI
[dry-run] would set PyNaCl #8: Todo -> Available in RISE PyPI
[dry-run] would set pynng #1534: Todo -> Available in RISE PyPI
[dry-run] would set pyodps #1756: Todo -> Available in RISE PyPI
[dry-run] would set pyopengl-accelerate #1908: Todo -> Available in RISE PyPI
[dry-run] would set pyorc #1589: Todo -> Available in RISE PyPI
[dry-run] would set pyoxipng #1557: Todo -> Available in RISE PyPI
[dry-run] would set pypolyline #1547: Todo -> Available in RISE PyPI
[dry-run] would set pyqt5-sip #1068: Todo -> Available in RISE PyPI
[dry-run] would set pyqt6-sip #1070: Todo -> Available in RISE PyPI
[dry-run] would set pyqwest #998: Todo -> Available in RISE PyPI
[dry-run] would set pyrage #1532: Todo -> Available in RISE PyPI
[dry-run] would set pyreadstat #1031: Todo -> Available in RISE PyPI
[dry-run] would set pyrodigal #1413: Todo -> Available in RISE PyPI
[dry-run] would set pysam #1718: Todo -> Available in RISE PyPI
[dry-run] would set pysimdjson #1291: Todo -> Available in RISE PyPI
[dry-run] would set pyspeex-noise #1550: Todo -> Available in RISE PyPI
[dry-run] would set pysqlite3 #1263: Todo -> Available in RISE PyPI
[dry-run] would set pysqlite3-binary #1574: Todo -> Available in RISE PyPI
[dry-run] would set pystemmer #1147: Todo -> Available in RISE PyPI
[dry-run] would set pyswisseph #1405: Todo -> Available in RISE PyPI
[dry-run] would set python-fcl #1885: Todo -> Available in RISE PyPI
[dry-run] would set python-geohash #1255: Todo -> Available in RISE PyPI
[dry-run] would set python-mecab-ko #1564: Todo -> Available in RISE PyPI
[dry-run] would set python-rtmidi #1421: Todo -> Available in RISE PyPI
[dry-run] would set pytrec-eval-terrier #1705: Todo -> Available in RISE PyPI
[dry-run] would set pyxdameraulevenshtein #1427: Todo -> Available in RISE PyPI
[dry-run] would set pyxirr #1510: Todo -> Available in RISE PyPI
[dry-run] would set qdldl #1077: Todo -> Available in RISE PyPI
[dry-run] would set qoi #1540: Todo -> Available in RISE PyPI
[dry-run] would set quadprog #1256: Todo -> Available in RISE PyPI
[dry-run] would set quickjs #1004: Todo -> Available in RISE PyPI
[dry-run] would set quickjs-ng #1830: Todo -> Available in RISE PyPI
[dry-run] would set rapidyaml #1890: Todo -> Available in RISE PyPI
[dry-run] would set rbloom #1270: Todo -> Available in RISE PyPI
[dry-run] would set rcssmin #1153: Todo -> Available in RISE PyPI
[dry-run] would set rectangle-packer #1362: Todo -> Available in RISE PyPI
[dry-run] would set rensa #1431: Todo -> Available in RISE PyPI
[dry-run] would set rerun-sdk #1648: Todo -> Available in RISE PyPI
[dry-run] would set resiliparse #1715: Todo -> Available in RISE PyPI
[dry-run] would set resvg-py #1716: Todo -> Available in RISE PyPI
[dry-run] would set rfc3161-client #1289: Todo -> Available in RISE PyPI
[dry-run] would set rhino3dm #1840: Todo -> Available in RISE PyPI
[dry-run] would set rigour #1552: Todo -> Available in RISE PyPI
[dry-run] would set ripgrep #1363: Todo -> Available in RISE PyPI
[dry-run] would set rjieba #1525: Todo -> Available in RISE PyPI
[dry-run] would set rjsmin #1003: Todo -> Available in RISE PyPI
[dry-run] would set rocksdict #1302: Todo -> Available in RISE PyPI
[dry-run] would set rtoml #1279: Todo -> Available in RISE PyPI
[dry-run] would set ruckig #1548: Todo -> Available in RISE PyPI
[dry-run] would set rumdl #1902: Todo -> Available in RISE PyPI
[dry-run] would set runstats #1430: Todo -> Available in RISE PyPI
[dry-run] would set ruptures #1851: Todo -> Available in RISE PyPI
[dry-run] would set rustpy-xlsxwriter #1554: Todo -> Available in RISE PyPI
[dry-run] would set s5cmd #1712: Todo -> Available in RISE PyPI
[dry-run] would set samplerate #1273: Todo -> Available in RISE PyPI
[dry-run] would set scikit-image #5: Todo -> Available in RISE PyPI
[dry-run] would set scikit-misc #1629: Todo -> Available in RISE PyPI
[dry-run] would set scikit-network #1714: Todo -> Available in RISE PyPI
[dry-run] would set scrypt #1268: Todo -> Available in RISE PyPI
[dry-run] would set sdbus #1579: Todo -> Available in RISE PyPI
[dry-run] would set segyio #1536: Todo -> Available in RISE PyPI
[dry-run] would set semantic-text-splitter #1637: Todo -> Available in RISE PyPI
[dry-run] would set serpyco-rs #1304: Todo -> Available in RISE PyPI
[dry-run] would set sherpa-onnx #1847: Todo -> Available in RISE PyPI
[dry-run] would set shiboken6 #1758: Todo -> Available in RISE PyPI
[dry-run] would set simpleitk #56: Todo -> Available in RISE PyPI
[dry-run] would set simplejpeg #1526: Todo -> Available in RISE PyPI
[dry-run] would set simplification #1580: Todo -> Available in RISE PyPI
[dry-run] would set siphash24 #1254: Todo -> Available in RISE PyPI
[dry-run] would set skia-python #1895: Todo -> Available in RISE PyPI
[dry-run] would set solders #1725: Todo -> Available in RISE PyPI
[dry-run] would set spglib #1006: Todo -> Available in RISE PyPI
[dry-run] would set sphn #1437: Todo -> Available in RISE PyPI
[dry-run] would set spidev #1632: Todo -> Available in RISE PyPI
[dry-run] would set spookyhash #1366: Todo -> Available in RISE PyPI
[dry-run] would set sqlean-py #1295: Todo -> Available in RISE PyPI
[dry-run] would set sqlglotc #1899: Todo -> Available in RISE PyPI
[dry-run] would set sqloxide #1260: Todo -> Available in RISE PyPI
[dry-run] would set sqruff #1613: Todo -> Available in RISE PyPI
[dry-run] would set ssh2-python #1309: Todo -> Available in RISE PyPI
[dry-run] would set sspilib #1923: Todo -> Available in RISE PyPI
[dry-run] would set starlark-pyo3 #1581: Todo -> Available in RISE PyPI
[dry-run] would set statsforecast #1848: Todo -> Available in RISE PyPI
[dry-run] would set stream-unzip #1292: Todo -> Available in RISE PyPI
[dry-run] would set streaming-form-data #1261: Todo -> Available in RISE PyPI
[dry-run] would set sudachipy #1661: Todo -> Available in RISE PyPI
[dry-run] would set swiglpk #1416: Todo -> Available in RISE PyPI
[dry-run] would set symengine #1891: Todo -> Available in RISE PyPI
[dry-run] would set symusic #1889: Todo -> Available in RISE PyPI
[dry-run] would set sysv-ipc #1612: Todo -> Available in RISE PyPI
[dry-run] would set ta-lib #1297: Todo -> Available in RISE PyPI
[dry-run] would set tables #1158: Todo -> Available in RISE PyPI
[dry-run] would set tantivy #1644: Todo -> Available in RISE PyPI
[dry-run] would set taplo #1253: Todo -> Available in RISE PyPI
[dry-run] would set tbb #1041: Todo -> Available in RISE PyPI
[dry-run] would set tcmlib #1767: Todo -> Available in RISE PyPI
[dry-run] would set tensor-grep #1555: Todo -> Available in RISE PyPI
[dry-run] would set tesserocr #1918: Todo -> Available in RISE PyPI
[dry-run] would set test-results-parser #1296: Todo -> Available in RISE PyPI
[dry-run] would set text2num #1850: Todo -> Available in RISE PyPI
[dry-run] would set texture2ddecoder #1617: Todo -> Available in RISE PyPI
[dry-run] would set tgcrypto #1250: Todo -> Available in RISE PyPI
[dry-run] would set thriftpy2 #142: Todo -> Available in RISE PyPI
[dry-run] would set tilelang #1755: Todo -> Available in RISE PyPI
[dry-run] would set tink #1900: Todo -> Available in RISE PyPI
[dry-run] would set tinyobjloader #1537: Todo -> Available in RISE PyPI
[dry-run] would set tombi #1909: Todo -> Available in RISE PyPI
[dry-run] would set torchcodec #230: Todo -> Available in RISE PyPI
[dry-run] would set traits #1922: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-css #1143: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-dockerfile #1626: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-elixir #1067: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-fortran #1278: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-groovy #1118: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-hcl #1618: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-html #1144: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-json #1035: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-julia #1120: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-kotlin #981: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-lua #1122: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-markdown #1139: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-objc #1119: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-powershell #1066: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-regex #1277: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-scala #1038: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-sql #1276: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-swift #1017: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-toml #1121: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-verilog #1275: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-xml #1145: Todo -> Available in RISE PyPI
[dry-run] would set tree-sitter-zig #1123: Todo -> Available in RISE PyPI
[dry-run] would set treelite #1858: Todo -> Available in RISE PyPI
[dry-run] would set tsdownsample #1578: Todo -> Available in RISE PyPI
[dry-run] would set tsv2py #1584: Todo -> Available in RISE PyPI
[dry-run] would set typedunits #1419: Todo -> Available in RISE PyPI
[dry-run] would set typeid-python #1438: Todo -> Available in RISE PyPI
[dry-run] would set typos #1142: Todo -> Available in RISE PyPI
[dry-run] would set typst #1248: Todo -> Available in RISE PyPI
[dry-run] would set ua-parser-rs #1016: Todo -> Available in RISE PyPI
[dry-run] would set uharfbuzz #1569: Todo -> Available in RISE PyPI
[dry-run] would set ulid-transform #1280: Todo -> Available in RISE PyPI
[dry-run] would set unicodedata2 #1316: Todo -> Available in RISE PyPI
[dry-run] would set unicorn #1704: Todo -> Available in RISE PyPI
[dry-run] would set usearch #1575: Todo -> Available in RISE PyPI
[dry-run] would set uvloop #2: Todo -> Available in RISE PyPI
[dry-run] would set valkey-glide #1760: Todo -> Available in RISE PyPI
[dry-run] would set vesin #1825: Todo -> Available in RISE PyPI
[dry-run] would set vhacdx #1287: Todo -> Available in RISE PyPI
[dry-run] would set vispy #1719: Todo -> Available in RISE PyPI
[dry-run] would set viztracer #1149: Todo -> Available in RISE PyPI
[dry-run] would set vllm #69: Todo -> Available in RISE PyPI
[dry-run] would set vodozemac #1630: Todo -> Available in RISE PyPI
[dry-run] would set vtk #1896: Todo -> Available in RISE PyPI
[dry-run] would set vtracer #1523: Todo -> Available in RISE PyPI
[dry-run] would set webrtcvad-wheels #1136: Todo -> Available in RISE PyPI
[dry-run] would set wordcloud #1049: Todo -> Available in RISE PyPI
[dry-run] would set xatlas #1765: Todo -> Available in RISE PyPI
[dry-run] would set xgboost-cpu #1910: Todo -> Available in RISE PyPI
[dry-run] would set xrootd #1853: Todo -> Available in RISE PyPI
[dry-run] would set yara-python #1658: Todo -> Available in RISE PyPI
[dry-run] would set yara-x #1249: Todo -> Available in RISE PyPI
[dry-run] would set yggdrasil-engine #1921: Todo -> Available in RISE PyPI
[dry-run] would set zensical #1912: Todo -> Available in RISE PyPI
[dry-run] would set zeroconf #980: Todo -> Available in RISE PyPI
[dry-run] would set zipcodes #1134: Todo -> Available in RISE PyPI
[dry-run] would set zipfile-deflate64 #1138: Todo -> Available in RISE PyPI
[dry-run] would set zlib-ng #1052: Todo -> Available in RISE PyPI
[dry-run] would set zlib-state #1623: Todo -> Available in RISE PyPI
[dry-run] would set zope-container #1358: Todo -> Available in RISE PyPI
[dry-run] would set zope-hookable #1137: Todo -> Available in RISE PyPI
[dry-run] would set zope-i18nmessageid #1317: Todo -> Available in RISE PyPI
[dry-run] would set zope-proxy #1306: Todo -> Available in RISE PyPI
[dry-run] would set zope-security #1361: Todo -> Available in RISE PyPI
[dry-run] would set zstandard #163: Todo -> Available in RISE PyPI
[dry-run] would set zuban #1886: Todo -> Available in RISE PyPI
[dry-run] would set zxing-cpp #1724: Todo -> Available in RISE PyPI
471 issue(s) to update, 0 failed, 467 package(s) without an open issue
::group::Packages without an open '<pkg> riscv64 support' issue
accelerator-toolbox
acsylla
adbc-driver-flightsql
adbc-driver-snowflake
advent-of-code
aerospike
ai-edge-litert
aioesphomeapi
aiofastnet
ale-py
anastruct
anise
annotatedyaml
annoy
ansys-mapdl-reader
aplr
arm-pyart
arro3-compute
arro3-io
arrow-odbc
astroscrappy
asyncdb
asyncmy2
atheris
austin-dist
baml-py
baseten-performance-client
bashkit
bauplan
beancount
betterproto-rust-codec
biscuit-python
bitsandbytes
bittensor-drand
bittensor-wallet
blastdns
blasthttp
bleak-esphome
box2d
breez-sdk-spark
browser-use-core
cachebox
cached-ipaddress
cadquery-ocp-novtk
cantera
cargo-xwin
cargo-zigbuild
cartoboost
cascadio
cassandra-driver
cbitstruct
cdshealpix
cedarpy
cel-expr-python
certbot-dns-multi
cffsubr
cgal
chalk-viztracer
chalkpy-rs
chia-rs
chialisp
chiapos
chiavdf
chonkie-core
circt
cityseer
clang-tidy
clingo
clp-ffi-py
clvm-rs
clvm-tools-rs
cmeel-assimp
cmeel-console-bridge
cmeel-octomap
cmeel-qhull
cmeel-tinyxml2
cmeel-urdfdom
cmeel-zlib
cmsis-pack-manager
cocotb
cohere-melody
color-operations
comfy-angle
common-expression-language
compreffor
coremltools
couchbase
cql2
crosshair-tool
cutadapt
cvc5
cvxopt
cvxpy
cvxpy-base
cylp
cyscale
daqp
databend-driver
databricks-zerobus-ingest-sdk
dataframely
datafusion
datafusion-query-builder
datatable
dbmate-bin
dcc-mcp-server
dclab
dearpygui
decord2
dedupe
deebot-client
depthai
dimod
dockerfile
dolphin-memory-engine
drjit
dtw-python
dwave-optimization
dynet38
earshot
eckitlib
eclipse-zenoh
ed25519-blake2b-fork
efel
emcache
emval
endec
epaper-dithering
eppo-server-sdk
etcpak
ethos-u-vela
exactextract
executorch
extractcode-7z
falcon
fast-json-repair
fast-query-parsers
fastecdsa
faster-coco-eval
faster-eth-abi
faster-eth-utils
fastjet
fastokens
fastrlock
fasttext-numpy2
fatfs-ng
faust-streaming
fckitlib
fiftyone-db
filprofiler
fitsio
flashtext2
floret
fno
formualizer
foxglove-sdk
fpylll
geoarrow-c
gigatoken
glum
grain
graspologic-native
grpcio-observability
gsd
gseapy
gsw
guardpycfn
habachen
harmonypy
hdiffpatch
headroom-ai
healpy
hierarchicalforecast
hnswlib
home-assistant-chip-core
hugr
hydraters
icechunk
ignore-python
img2table
imgui-bundle
implicit
infomap
iregexp-check
iterfzf
jdk4py
json-tools-rs
kaldifst
kernels-data
kfnetlist
kiss-icp
kivy
kiwipiepy
kreuzberg
kuzu
ladybug
lalsuite
lance-context
lark-cython
lefthook
leidenalg
lgpio
lib3mf
libipld
libmav
libsql
libtorrent
libuuu
liftover
ligo-skymap
linearmodels
liteparse
longbridge
loudness
madoka
mahotas
mapfile-parser
mappy
matscipy
mcp-grafana
mdanalysis
mdtraj
mediapipe
mercurial
mergify-cli
metrohash
mink
mitmproxy-linux
mjml-python
mlx-cpu
moviepilot-rust
mozjpeg-lossless-optimization
multi-agent-ale-py
multi-storage-client
multimark
multimodars
mysql-mimic
nanoarrow
nassl
navigator-api
navigator-auth
neo4j-rust-ext
ngrok
nixl-cu12
no-defaults
nutpie
nvtx
oai-statsig-python-core
obspy
ompl
oneagent-sdk
onnxoptimizer
onnxsim
open-spiel
opencv-contrib-python-headless
opendal
openimageio
openjd-model
openmm
openskill
openslide-python
openviking
openvino
orange3
ormar-utils
osmium
oxapy
paddlepaddle
patiencediff
pdf-inspector
pdf-oxide
pemja
perf-analyzer
pg0-embedded
pgserver
phonopy
phonors
photutils
pillow-jxl-plugin
piper-tts
pkgconf
planegcs
playa-pdf
pocketsphinx
polars-cloud
polars-ds
polars-lts-cpu
polars-runtime-32
polars-runtime-64
polars-runtime-compat
polyscope
portforward
potpourri3d
power-grid-model
private-attribute-cpp
promql-parser
puhu
pulp
pulsar-client
py-ballisticcalc-exts
py-lib3mf
pyagrum
pybammsolvers
pybgpkit-parser
pybigtools
pybullet
pycolmap
pydemumble
pyffish
pyfftw
pygame-ce
pygrib
pyhdf
pyicu-wheels
pyinstrument-cext
pyjnius
pyjoulescope-driver
pykrige
pylibjpeg-libjpeg
pylibjpeg-openjpeg
pylibmagic
pymatching
pymatgen-core
pymeshfix
pymetis
pymicro-vad
pynini
pyonmttok
pyoxigraph
pypcode
pyre-check
pyreadr
pyrealsense2
pyreqwest
pyrnnoise
pyrush
pyscf
pyscipopt
pysctp
pysjef
pyslang
pysplashsurf
pystack
pytera
pytest-mergify
python-flint
python-flirt
python-gdcm
python-kadmin-rs
python-neo-lzf
python-olm
python-pkcs11
python-ripgrep
python-sat
python-stretch
pytorch-tokenizers
pytype
pyvex
pyvips-binary
pyvirtualcam
pyvrl
pywhispercpp
pyxcp
pyxdelta
pyxdia
qiskit
qiskit-aer
quantlib
rapids-logger
rawpy
ray-haproxy
regions
regopy
regress
rencode
reproject
resdata
restate-sdk
riskcal
river
rl-accel
robotpy-native-wpiutil
rpi-gpio
rtest
ruff-format
runai-model-streamer
runai-model-streamer-gcs
runai-model-streamer-s3
safe-pysha3
sase-core-rs
scalene
scikit-allel
scikit-learn-extra
scikit-survival
scylla-driver
secp256k1
sentry-cli
sglang-router
sgp4
shazamio-core
sherpa-onnx-core
shfmt-py
simplepyble
skia-pathops
slixmpp
slycot
spacy-alignments
spacy-pkuseg
spacy-transformers
sparse-dot-topn
speedict
spiceypy
sqlcipher3
sqlcipher3-binary
squawk-cli
squirrel-lang-sq305
ssh-python
sslpsk-pmd3
stim
stpyv8
strict-kwargs
stripy
strongtyping
subvertpy
swmm-toolkit
syntaqlite
systemrdl-compiler
tabmat
tdewolff-minify
tensorstore
texterrors
tflite-runtime
tfparse
tmtools
tokie
topk-sdk
toppra
torchrl
tosa-tools
treelite-runtime
truss-transfer
uefi-firmware
ujson
ukkonen
umf
ur-rtde
usd-core
usd-exchange
vaex-core
vegafusion
verovio
viennarna
vllm-router
vosk
voyager
vtzero
warp-lang
wreq
xa11y
xmhuffman
xpress8
xpress9
xprof
ydf
zen-engine
zodbpickle
zope-index
zttp
::endgroup::

There are 471 issues to update Todo -> Available in RISE PyPI (updated during the very first run) and 467 packages without issues found (either no issues or malformed issues). The script does not create issues for the missing one. Human check needed

@justeph
justeph requested review from luhenry and threexc and removed request for luhenry October 26, 2026 16:00
@threexc

threexc commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

LGTM, thanks for adding it. I ran with --dry-run locally and it worked. Also pushed the "Update branch" button just now.

This branch has not been deployed

No deployments
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.

2 participants