From 35dbdbb3988519354292ff9590385aef546c2625 Mon Sep 17 00:00:00 2001 From: zhangyiming <34808445+menogrey@users.noreply.github.com> Date: Tue, 23 Dec 2025 10:01:45 +0800 Subject: [PATCH] [Doc] Add new contributors and relative scripts. (#5070) ### What this PR does / why we need it? [Doc] Add new contributors and relative scripts. Usage of scripts: - `export GITHUB_TOKEN=` - `bash tools/collect_user_first_contribution.sh vllm-project/vllm-ascend ` and save the result to one temporary file such as `contributors.txt` - `python tools/format_contributors.py contributors.txt --start ` - Use the output to update the `contributors.md` - vLLM version: v0.12.0 - vLLM main: https://github.com/vllm-project/vllm/commit/ad32e3e19ccf0526cb6744a5fed09a138a5fb2f9 --------- Signed-off-by: menogrey <1299267905@qq.com> --- docs/source/community/contributors.md | 92 ++++++++++++++++++++++ tools/collect_user_first_contribution.sh | 83 ++++++++++++++++++++ tools/format_contributors.py | 98 ++++++++++++++++++++++++ 3 files changed, 273 insertions(+) create mode 100644 tools/collect_user_first_contribution.sh create mode 100644 tools/format_contributors.py diff --git a/docs/source/community/contributors.md b/docs/source/community/contributors.md index 2f8ca4ae..314d35b3 100644 --- a/docs/source/community/contributors.md +++ b/docs/source/community/contributors.md @@ -22,6 +22,98 @@ Every release of vLLM Ascend would not have been possible without the following contributors: +Updated on 2025-12-16: + +| Number | Contributor | Date | Commit ID | +|:------:|:-----------:|:-----:|:---------:| +| 233 | [@UnifiedCacheManager](https://github.com/UnifiedCacheManager) | 2025/12/16 | [195eac6](https://github.com/vllm-project/vllm-ascend/commit/195eac665b2d42b8287c59128490586c6931d54c) | +| 232 | [@knight0528](https://github.com/knight0528) | 2025/12/15 | [e25c57b](https://github.com/vllm-project/vllm-ascend/commit/e25c57b3461b8116d533724013fbc9957716f92d) | +| 231 | [@ming1212](https://github.com/ming1212) | 2025/12/15 | [98b9e2e](https://github.com/vllm-project/vllm-ascend/commit/98b9e2e18e8f8e9f1495eafc8f57e3e1791e0a34) | +| 230 | [@wangyao-i](https://github.com/wangyao-i) | 2025/12/12 | [0983c55](https://github.com/vllm-project/vllm-ascend/commit/0983c5510aa49c7310b79db72657d8a0f92918ec) | +| 229 | [@sunchendd](https://github.com/sunchendd) | 2025/12/12 | [5932abc](https://github.com/vllm-project/vllm-ascend/commit/5932abc44686cc0d3fa1c4ce9fdbc30957b8aa51) | +| 228 | [@yangshihao6](https://github.com/yangshihao6) | 2025/12/11 | [e1bb6f4](https://github.com/vllm-project/vllm-ascend/commit/e1bb6f47ecabcb382ff3b4dfbd168d0943ce504f) | +| 227 | [@hwhaokun](https://github.com/hwhaokun) | 2025/12/11 | [a47aa4d](https://github.com/vllm-project/vllm-ascend/commit/a47aa4da2f87dfd2792ef13d31476eccd27685bf) | +| 226 | [@xlan-huawei](https://github.com/xlan-huawei) | 2025/12/11 | [5ebb9bd](https://github.com/vllm-project/vllm-ascend/commit/5ebb9bd8d26395e86f9bd01183a327477a966760) | +| 225 | [@zzhx1](https://github.com/zzhx1) | 2025/12/11 | [eac72f5](https://github.com/vllm-project/vllm-ascend/commit/eac72f5f23ac271849bee934859bb8e1c1f16d39) | +| 224 | [@chenjunyi-dev](https://github.com/chenjunyi-dev) | 2025/12/11 | [c12eb22](https://github.com/vllm-project/vllm-ascend/commit/c12eb22cbe9f55ce72fca3d8231c06d0173e22fb) | +| 223 | [@Gongdayao](https://github.com/Gongdayao) | 2025/12/11 | [89a8607](https://github.com/vllm-project/vllm-ascend/commit/89a8607b30ca4f123ae405df42701077b776e4af) | +| 222 | [@ChenCangtao](https://github.com/ChenCangtao) | 2025/12/10 | [dd622aa](https://github.com/vllm-project/vllm-ascend/commit/dd622aa6a6ea34a6bc799d52171ebe6c3e062972) | +| 221 | [@ghphotoframe](https://github.com/ghphotoframe) | 2025/12/10 | [0d8c0f1](https://github.com/vllm-project/vllm-ascend/commit/0d8c0f1a24a58011908b17994fffb5fcfebe5e22) | +| 220 | [@wind-all](https://github.com/wind-all) | 2025/12/10 | [1a443f2](https://github.com/vllm-project/vllm-ascend/commit/1a443f2772ba9a75288e5dc09227ee6bdd54c147) | +| 219 | [@zhoux77899](https://github.com/zhoux77899) | 2025/12/10 | [ce58727](https://github.com/vllm-project/vllm-ascend/commit/ce5872705e80d3e2fb107808aa296831d93fe6fa) | +| 218 | [@Trunrain](https://github.com/Trunrain) | 2025/12/10 | [ba9cda9](https://github.com/vllm-project/vllm-ascend/commit/ba9cda9dfd83765a7e79a074c033818ff5a76bd6) | +| 217 | [@luoxiaolin712](https://github.com/luoxiaolin712) | 2025/12/09 | [dee00d0](https://github.com/vllm-project/vllm-ascend/commit/dee00d0de3528ab5a21adec00fa125f8735f1bb1) | +| 216 | [@wangqiankun13](https://github.com/wangqiankun13) | 2025/12/09 | [9567e5d](https://github.com/vllm-project/vllm-ascend/commit/9567e5dd8c61d2e62b3572c9e98dc4f9eaf51c2a) | +| 215 | [@lhp-deep](https://github.com/lhp-deep) | 2025/12/08 | [b230e7e](https://github.com/vllm-project/vllm-ascend/commit/b230e7e987da602a3985a4f297b01decfc1ec40f) | +| 214 | [@shiro-zzzz](https://github.com/shiro-zzzz) | 2025/12/08 | [0617d7d](https://github.com/vllm-project/vllm-ascend/commit/0617d7d394a9b6aa47a75f368d6059b1e5788f06) | +| 213 | [@zengzengran](https://github.com/zengzengran) | 2025/12/08 | [f0876b5](https://github.com/vllm-project/vllm-ascend/commit/f0876b5d88a04734505bb5cea7bda95b026923ff) | +| 212 | [@lulina](https://github.com/lulina) | 2025/12/08 | [2be0fe2](https://github.com/vllm-project/vllm-ascend/commit/2be0fe269160e97dc9449101e92a98e7f3436668) | +| 211 | [@AlvisGong](https://github.com/AlvisGong) | 2025/12/06 | [a5163c8](https://github.com/vllm-project/vllm-ascend/commit/a5163c8c369e046c53e6127bbbcee23392cec069) | +| 210 | [@GuoRen868](https://github.com/GuoRen868) | 2025/12/06 | [4bd1030](https://github.com/vllm-project/vllm-ascend/commit/4bd1030842a3831109ccfb136056459cd83c1441) | +| 209 | [@h1074112368](https://github.com/h1074112368) | 2025/12/06 | [7403399](https://github.com/vllm-project/vllm-ascend/commit/74033999ed98fcf02db0a2512d019177d0843791) | +| 208 | [@amy-why-3459](https://github.com/amy-why-3459) | 2025/12/03 | [26e8e58](https://github.com/vllm-project/vllm-ascend/commit/26e8e58cea8ba5cc5edaef19e72d0ddc4e9f1c1c) | +| 207 | [@MingYang119](https://github.com/MingYang119) | 2025/12/03 | [18b90b5](https://github.com/vllm-project/vllm-ascend/commit/18b90b501d6aad1d9426dcdee1ccfbe8139dd47d) | +| 206 | [@coder-fny](https://github.com/coder-fny) | 2025/12/02 | [1b5513a](https://github.com/vllm-project/vllm-ascend/commit/1b5513aa914aa37cb539d410faf6e021e6dc5481) | +| 205 | [@fluctlux](https://github.com/fluctlux) | 2025/12/01 | [f1f6370](https://github.com/vllm-project/vllm-ascend/commit/f1f6370ed966bd554f8874ddc430c09f25354c72) | +| 204 | [@swy20190](https://github.com/swy20190) | 2025/12/01 | [f4871c6](https://github.com/vllm-project/vllm-ascend/commit/f4871c6ab98af9ab2766779b2167de04805f38e2) | +| 203 | [@zzhx1](https://github.com/zzhx1) | 2025/12/01 | [2b82320](https://github.com/vllm-project/vllm-ascend/commit/2b82320b6649a9be16d67691c289674ed30b0de4) | +| 202 | [@ChenxiQ](https://github.com/ChenxiQ) | 2025/11/28 | [554f16a](https://github.com/vllm-project/vllm-ascend/commit/554f16ae1fb89b35ad82b24e7f7fe5eaba0e80d0) | +| 201 | [@LHXuuu](https://github.com/LHXuuu) | 2025/11/28 | [bdc6697](https://github.com/vllm-project/vllm-ascend/commit/bdc66972db12cc9f4b63721495fb2b103942dd25) | +| 200 | [@zjchenn](https://github.com/zjchenn) | 2025/11/25 | [463910e](https://github.com/vllm-project/vllm-ascend/commit/463910e686013acc611a7e3ccb70c3a776c8ffef) | +| 199 | [@wujinyuan1](https://github.com/wujinyuan1) | 2025/11/25 | [386a85e](https://github.com/vllm-project/vllm-ascend/commit/386a85eccc9a2247180faad2f8a00ad9c0afa4b1) | +| 198 | [@Tjh-UKN](https://github.com/Tjh-UKN) | 2025/11/24 | [00ea61e](https://github.com/vllm-project/vllm-ascend/commit/00ea61ec885e21ed0e51dc8e751cb27cfa539dc3) | +| 197 | [@mazhixin000](https://github.com/mazhixin000) | 2025/11/22 | [ab51fce](https://github.com/vllm-project/vllm-ascend/commit/ab51fcea4ca77fdb642a04018df60e18586d52ef) | +| 196 | [@shenchuxiaofugui](https://github.com/shenchuxiaofugui) | 2025/11/21 | [019c7de](https://github.com/vllm-project/vllm-ascend/commit/019c7ded91f0c2a9533ace8d87f0cf56e396f979) | +| 195 | [@InSec](https://github.com/InSec) | 2025/11/21 | [5a4e8cd](https://github.com/vllm-project/vllm-ascend/commit/5a4e8cdebabd8293e9ff61b7014d758b71ebf32a) | +| 194 | [@Delphine-Nic](https://github.com/Delphine-Nic) | 2025/11/19 | [a3e9673](https://github.com/vllm-project/vllm-ascend/commit/a3e9673137dd31d77b7441d657a0fc394ac7bc59) | +| 193 | [@1092626063](https://github.com/1092626063) | 2025/11/19 | [9328f37](https://github.com/vllm-project/vllm-ascend/commit/9328f377b4dd3c6dd8915b7c60ae01335fc554c4) | +| 192 | [@wangxiaochao6](https://github.com/wangxiaochao6) | 2025/11/18 | [0d04ad8](https://github.com/vllm-project/vllm-ascend/commit/0d04ad8c8f00081932566576da1e6d1dcd963d8d) | +| 191 | [@845473182](https://github.com/845473182) | 2025/11/14 | [f90ed95](https://github.com/vllm-project/vllm-ascend/commit/f90ed95578f81ddd1cb96c9bd5d6ef8be8475667) | +| 190 | [@thonean](https://github.com/thonean) | 2025/11/12 | [e38fe92](https://github.com/vllm-project/vllm-ascend/commit/e38fe92f4037fe668f34b23c67daa9695a3fc3c7) | +| 189 | [@Apocalypse990923-qshi](https://github.com/Apocalypse990923-qshi) | 2025/11/11 | [71866d5](https://github.com/vllm-project/vllm-ascend/commit/71866d531151b36a9af4db36ba8b3b74162f7028) | +| 188 | [@zhaomingyu13](https://github.com/zhaomingyu13) | 2025/11/11 | [7ffbe73](https://github.com/vllm-project/vllm-ascend/commit/7ffbe73d54d7257c571ddd21bac6543b5ead0dac) | +| 187 | [@herizhen](https://github.com/herizhen) | 2025/11/10 | [75c3f9a](https://github.com/vllm-project/vllm-ascend/commit/75c3f9a7807daa3346685be88e4f06d6a5f362f0) | +| 186 | [@wangx700](https://github.com/wangx700) | 2025/11/08 | [55e37f5](https://github.com/vllm-project/vllm-ascend/commit/55e37f50418f38861768556fdde9e86c2a22aef4) | +| 185 | [@Semmer2](https://github.com/Semmer2) | 2025/11/08 | [f984256](https://github.com/vllm-project/vllm-ascend/commit/f9842560cbd5bb7b1106b3f47982adb479a91774) | +| 184 | [@Liziqi-77](https://github.com/Liziqi-77) | 2025/11/06 | [25b24c0](https://github.com/vllm-project/vllm-ascend/commit/25b24c02ea86f0f8a673f8f332e800ed72abc083) | +| 183 | [@Pz1116](https://github.com/Pz1116) | 2025/11/05 | [e0c23cb](https://github.com/vllm-project/vllm-ascend/commit/e0c23cb011e7ee6e5afce32ab0a0b9c73e825baa) | +| 182 | [@MrZ20](https://github.com/MrZ20) | 2025/11/04 | [dc1a6cb](https://github.com/vllm-project/vllm-ascend/commit/dc1a6cb5039b5ee1520fde8cf85b99f7ce33ec7b) | +| 181 | [@ForBetterCodeNine](https://github.com/ForBetterCodeNine) | 2025/11/03 | [49d7478](https://github.com/vllm-project/vllm-ascend/commit/49d74785c440c964db1a1212c9b24f695f21a5a2) | +| 180 | [@gcanlin](https://github.com/gcanlin) | 2025/10/31 | [f99762e](https://github.com/vllm-project/vllm-ascend/commit/f99762eb254807335419cd04945359eaa5213713) | +| 179 | [@Nagisa125](https://github.com/Nagisa125) | 2025/10/31 | [6764777](https://github.com/vllm-project/vllm-ascend/commit/6764777f000f6ac5acfadbba3797ce966397e1d8) | +| 178 | [@Liwx1014](https://github.com/Liwx1014) | 2025/10/30 | [eed1957](https://github.com/vllm-project/vllm-ascend/commit/eed1957f03224bf800191390244c39ff5bb362d1) | +| 177 | [@Meihan-chen](https://github.com/Meihan-chen) | 2025/10/29 | [cba69e1](https://github.com/vllm-project/vllm-ascend/commit/cba69e117eaa8c5d31fca64b01aecb22d3162860) | +| 176 | [@Levi-JQ](https://github.com/Levi-JQ) | 2025/10/27 | [d64bdd0](https://github.com/vllm-project/vllm-ascend/commit/d64bdd06ae656048040c34c0ff3b909293b5113b) | +| 175 | [@ck-hw-1018](https://github.com/ck-hw-1018) | 2025/10/25 | [7572939](https://github.com/vllm-project/vllm-ascend/commit/7572939b94e9c2215cf3ebd30bd6f61c4d1b04f6) | +| 174 | [@QilaiZhang](https://github.com/QilaiZhang) | 2025/10/25 | [d30bb95](https://github.com/vllm-project/vllm-ascend/commit/d30bb95b9040475495dc01f5c9e38576905be621) | +| 173 | [@gcanlin](https://github.com/gcanlin) | 2025/10/25 | [8295136](https://github.com/vllm-project/vllm-ascend/commit/829513657518c0077622b1904f49d79657b2537a) | +| 172 | [@luoxiaolin712](https://github.com/luoxiaolin712) | 2025/10/24 | [59bb16b](https://github.com/vllm-project/vllm-ascend/commit/59bb16b75c492aa636fec53f1d32680839e7d1e7) | +| 171 | [@yenuo26](https://github.com/yenuo26) | 2025/10/24 | [d301c56](https://github.com/vllm-project/vllm-ascend/commit/d301c56d1aff5d2f408e54285df5ff36fd28d193) | +| 170 | [@lio1226](https://github.com/lio1226) | 2025/10/24 | [cd58a64](https://github.com/vllm-project/vllm-ascend/commit/cd58a643c598622fdf5a853764f851a5074d0328) | +| 169 | [@HuaJiaHeng](https://github.com/HuaJiaHeng) | 2025/10/23 | [062257f](https://github.com/vllm-project/vllm-ascend/commit/062257f624486d15315013b624ce71e1a388ee20) | +| 168 | [@destinysky](https://github.com/destinysky) | 2025/10/23 | [427b17e](https://github.com/vllm-project/vllm-ascend/commit/427b17e2da1d6d967e7581b40b6bd169cdb324c8) | +| 167 | [@yzy1996](https://github.com/yzy1996) | 2025/10/23 | [f06a6ca](https://github.com/vllm-project/vllm-ascend/commit/f06a6cad1b0c6b142d4a9364c65b4b920b251540) | +| 166 | [@HF-001](https://github.com/HF-001) | 2025/10/22 | [bc30874](https://github.com/vllm-project/vllm-ascend/commit/bc30874f8b6212ff8eb45b2546c360660c49c9c1) | +| 165 | [@KyrieDrewWang](https://github.com/KyrieDrewWang) | 2025/10/22 | [60e2be1](https://github.com/vllm-project/vllm-ascend/commit/60e2be1b366975f7183c38cd158da811969b9230) | +| 164 | [@Pr0Wh1teGivee](https://github.com/Pr0Wh1teGivee) | 2025/10/22 | [2f1b9a7](https://github.com/vllm-project/vllm-ascend/commit/2f1b9a7a641b58e49b760311d06cd81091faff12) | +| 163 | [@drslark](https://github.com/drslark) | 2025/10/21 | [534f32d](https://github.com/vllm-project/vllm-ascend/commit/534f32d27c0cc48731fbdae3701fbb6c3bb4332a) | +| 162 | [@Anionex](https://github.com/Anionex) | 2025/10/21 | [5f8b169](https://github.com/vllm-project/vllm-ascend/commit/5f8b1699ae35bb8c046d8b385d215cd208bc3fcb) | +| 161 | [@kiscad](https://github.com/kiscad) | 2025/10/21 | [6b290ac](https://github.com/vllm-project/vllm-ascend/commit/6b290acfe109bdfd9225a6c06a89f2dcba7a4156) | +| 160 | [@leijie-ww](https://github.com/leijie-ww) | 2025/10/20 | [6b68579](https://github.com/vllm-project/vllm-ascend/commit/6b6857929d8397fbec1cd132eb4ea5d13712497c) | +| 159 | [@ZYang6263](https://github.com/ZYang6263) | 2025/10/19 | [1e78ecb](https://github.com/vllm-project/vllm-ascend/commit/1e78ecbad626968c7e65fab5596c90ea79e7454d) | +| 158 | [@Shirley125](https://github.com/Shirley125) | 2025/10/18 | [b4233a2](https://github.com/vllm-project/vllm-ascend/commit/b4233a2ec35a91beca4b8c8402ea7cf6394b62c9) | +| 157 | [@yechao237](https://github.com/yechao237) | 2025/10/18 | [4750d45](https://github.com/vllm-project/vllm-ascend/commit/4750d45d86632b7085ab9f0b57070cd17aa9d108) | +| 156 | [@DreamerLeader](https://github.com/DreamerLeader) | 2025/10/15 | [aa61547](https://github.com/vllm-project/vllm-ascend/commit/aa6154703aeeb259611326a3fba095b6abc5b791) | +| 155 | [@yuzhup](https://github.com/yuzhup) | 2025/10/14 | [7877723](https://github.com/vllm-project/vllm-ascend/commit/78777237a9ae95af88ce6068b000635f96aafe25) | +| 154 | [@elilzhu](https://github.com/elilzhu) | 2025/10/14 | [5c45c22](https://github.com/vllm-project/vllm-ascend/commit/5c45c227dc254591f4a9345e67a84a0d5fe1c345) | +| 153 | [@menogrey](https://github.com/menogrey) | 2025/10/14 | [657c08c](https://github.com/vllm-project/vllm-ascend/commit/657c08cfb266c63946ea61a7be377b6de55d20f3) | +| 152 | [@SlightwindSec](https://github.com/SlightwindSec) | 2025/10/13 | [4f6d60e](https://github.com/vllm-project/vllm-ascend/commit/4f6d60eb067996fbf08b95f797916d978bf98f19) | +| 151 | [@dsxsteven](https://github.com/dsxsteven) | 2025/10/13 | [847d12a](https://github.com/vllm-project/vllm-ascend/commit/847d12a389217e4cbcc5fff70abd72d9b15ad5c4) | +| 150 | [@jiangyunfan1](https://github.com/jiangyunfan1) | 2025/10/12 | [d05d29f](https://github.com/vllm-project/vllm-ascend/commit/d05d29ff0e7c5d261dbdee5e98ff0ca95135217b) | +| 149 | [@kiscad](https://github.com/kiscad) | 2025/10/12 | [bcc313e](https://github.com/vllm-project/vllm-ascend/commit/bcc313e8f2bfe9a53ed88dffffd93632db52a4ba) | +| 148 | [@wangxiaoteng888](https://github.com/wangxiaoteng888) | 2025/10/11 | [ca05f7d](https://github.com/vllm-project/vllm-ascend/commit/ca05f7d63267c6e77fd1c297264970ed19e17620) | +| 147 | [@huangdong2022](https://github.com/huangdong2022) | 2025/10/09 | [23db56a](https://github.com/vllm-project/vllm-ascend/commit/23db56a34063c5285f7d34e80e45c1888b877bd3) | + Updated on 2025-09-30: | Number | Contributor | Date | Commit ID | diff --git a/tools/collect_user_first_contribution.sh b/tools/collect_user_first_contribution.sh new file mode 100644 index 00000000..e94e57f9 --- /dev/null +++ b/tools/collect_user_first_contribution.sh @@ -0,0 +1,83 @@ +#!/bin/bash + +# +# Copyright (c) 2025 Huawei Technologies Co., Ltd. All Rights Reserved. +# Copyright 2023 The vLLM team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# This file is a part of the vllm-ascend project. +# Adapted from https://github.com/vllm-project/vllm/tree/main/tools +# + +set -euo pipefail + +function usage() { + echo "This script collects the first contributions of new users in a given GitHub repository." + echo "Please set the environment variable GITHUB_TOKEN with repo read permission." + echo "Refer to https://docs.github.com/en/rest/authentication/authenticating-to-the-rest-api?apiVersion=2022-11-28" + echo "" + echo "Usage: $0 owner/repo base_sha head_sha" + echo "Example: $0 myorg/myrepo abcdef1 ghijk23" +} + +if [ "$#" -ne 3 ]; then + usage + exit 1 +fi + +REPO="$1" # Example: myorg/myrepo +BASE="$2" # older commit (exclusive) +HEAD="$3" # newer commit (inclusive) +GITHUB_TOKEN="${GITHUB_TOKEN:-}" + +if [ -z "$GITHUB_TOKEN" ]; then + echo "Please set the environment variable GITHUB_TOKEN with repo read permission." + echo "Refer to https://docs.github.com/en/rest/authentication/authenticating-to-the-rest-api?apiVersion=2022-11-28" + exit 1 +fi + +# All commits in the time order, format: sha|email|name|date +ALLCOMMITS=$(mktemp) +git log --pretty=format:'%H|%aE|%aN|%cI' --reverse --all > "$ALLCOMMITS" + +# Get the first commit in this repo for each author email +FIRST_BY_EMAIL=$(mktemp) +awk -F'|' '!seen[$2]++ {print $2 "|" $1 "|" $4 "|" $3}' "$ALLCOMMITS" > "$FIRST_BY_EMAIL" +# format: email|first_sha|date|name + +# Get the commit sha list in the range (base..head) +RANGE_SHAS=$(mktemp) +git rev-list "${BASE}..${HEAD}" > "$RANGE_SHAS" + +echo "New user's first commit in ${REPO} (${BASE}..${HEAD})" +echo + +# Get each email's first commit, if the first commit sha is in the range, query GitHub mapping and output +while IFS='|' read -r email sha date name; do + if grep -Fxq "$sha" "$RANGE_SHAS"; then + # Using GitHub API to check commit's author.login (if exists) + api_url="https://api.github.com/repos/${REPO}/commits/${sha}" + resp=$(curl -s -H "Authorization: token ${GITHUB_TOKEN}" -H "Accept: application/vnd.github.v3+json" "$api_url") + login=$(echo "$resp" | jq -r '.author.login // empty') + # fallback to name and email if login not found + if [ -n "$login" ]; then + user_display="@${login}" + else + user_display="$(echo "$name" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//') <${email}>" + fi + echo "- ${user_display} — \`${sha}\` — ${date}" + fi +done < "$FIRST_BY_EMAIL" + +# cleanup +rm -f "$ALLCOMMITS" "$FIRST_BY_EMAIL" "$RANGE_SHAS" \ No newline at end of file diff --git a/tools/format_contributors.py b/tools/format_contributors.py new file mode 100644 index 00000000..84dc4d19 --- /dev/null +++ b/tools/format_contributors.py @@ -0,0 +1,98 @@ +# Copyright (c) 2025 Huawei Technologies Co., Ltd. All Rights Reserved. +# Copyright 2023 The vLLM team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# This file is a part of the vllm-ascend project. +# Adapted from https://github.com/vllm-project/vllm/tree/main/tools +# +import argparse +import re +import sys +from datetime import datetime + +p = re.compile( + r'@(?P[A-Za-z0-9-_]+)[^\`]*\`(?P[0-9a-fA-F]+)\`\s*[-–—]\s*(?P.+)$' +) + + +def parse_lines(lines): + items = [] + for ln in lines: + ln = ln.strip() + if not ln: + continue + m = p.search(ln) + if not m: + continue + user = m.group('user') + sha = m.group('sha') + datestr = m.group('date').strip() + try: + dt = datetime.fromisoformat(datestr) + except Exception: + # fallback: try to parse common formats + try: + dt = datetime.strptime(datestr, "%Y/%m/%d") + except Exception: + continue + items.append((dt, user, sha, datestr)) + return items + + +def main(): + ap = argparse.ArgumentParser( + description= + "Format and sort contributor lines by date (newest first). Outputs markdown table by default." + ) + ap.add_argument( + 'file', + nargs='?', + help= + 'input file (default stdin), output from collect_user_first_contribution.sh' + ) + ap.add_argument( + '--start', + type=int, + default=1, + help='minimum number for table (oldest row will have this number)') + ap.add_argument('--repo', + default='vllm-project/vllm-ascend', + help='repo used for commit links') + args = ap.parse_args() + + if args.file: + with open(args.file, 'r', encoding='utf-8') as f: + lines = f.readlines() + else: + lines = sys.stdin.readlines() + + items = parse_lines(lines) + # sort newest first + items.sort(key=lambda x: x[0], reverse=True) + + # Outputs markdown table (sorted by date), the minimum number is args.start + count = len(items) + if count == 0: + return + n = args.start + count - 1 + for dt, user, sha, datestr in items: + short = sha[:7] + date_short = dt.strftime("%Y/%m/%d") + print( + f"| {n} | [@{user}](https://github.com/{user}) | {date_short} | [{short}](https://github.com/{args.repo}/commit/{sha}) |" + ) + n -= 1 + + +if __name__ == "__main__": + main()