From 9e15dc680605e4d8f335dff71a7454a8fddb5264 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Jun 2026 05:03:32 +0000 Subject: [PATCH 1/3] Handle DOI request failures --- bin/arxiv_to_publications_correct.py | 34 +++++++++++++++++++++------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/bin/arxiv_to_publications_correct.py b/bin/arxiv_to_publications_correct.py index 40ff8fc4..8fdd83ba 100644 --- a/bin/arxiv_to_publications_correct.py +++ b/bin/arxiv_to_publications_correct.py @@ -5,6 +5,17 @@ import bibtexparser from bibtexparser.bwriter import BibTexWriter +from requests.exceptions import RequestException + + +def fetch_doi_content(url, accept_header, description): + try: + response = requests.get(url, headers={'Accept': accept_header}, timeout=30) + response.raise_for_status() + except RequestException as exc: + print(f'Ignoring {url}, failed to fetch {description}: {exc}\n\n') + return None + return response if __name__ == '__main__': @@ -21,16 +32,18 @@ for url, id_db in zip(doi_list, id_list): print(f'Working on {id_db} with URL {url}') - req = requests.get(url, headers={'Accept': 'application/x-bibtex'}) - if not req.status_code == 200: - print(f'Ignoring {url}, got status code {req.status_code}\n\n') + req = fetch_doi_content(url, 'application/x-bibtex', 'BibTeX') + if req is None: continue bib = req.content.decode() - req = requests.get(url, headers={'Accept': 'application/json'}) - if not req.status_code == 200: - print(f'Ignoring {url}, got status code {req.status_code}\n\n') + req = fetch_doi_content(url, 'application/json', 'metadata') + if req is None: + continue + try: + data = req.json() + except ValueError as exc: + print(f'Ignoring {url}, invalid metadata response: {exc}\n\n') continue - data = req.json() if len(data['author']) > 1: id = data['author'][0]['family'] + 'EtAl' + str(data['issued']['date-parts'][0][0]) @@ -39,7 +52,12 @@ id = id.replace(" ", "_") entries = db.get_entry_dict() - assert entries[id_db]["ENTRYTYPE"] == 'unpublished', "original entry in bib file was NOT unpublished !" + if id_db not in entries: + print(f'Ignoring {id_db}, entry not found in bibliography.\n\n') + continue + if entries[id_db]["ENTRYTYPE"] != 'unpublished': + print(f'Ignoring {id_db}, original entry in bib file was not unpublished.\n\n') + continue db.entries.remove(entries[id_db]) # Check for duplicate keys in the remaining database and add letter suffixes if needed From a4dd001e306346943fa71a7aea9ca0f2e5fd915c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Jun 2026 05:04:17 +0000 Subject: [PATCH 2/3] Validate CI fix --- ...arxiv_to_publications_correct.cpython-312.pyc | Bin 0 -> 5315 bytes bin/arxiv_to_publications_correct.py | 12 ++++++++---- 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 bin/__pycache__/arxiv_to_publications_correct.cpython-312.pyc diff --git a/bin/__pycache__/arxiv_to_publications_correct.cpython-312.pyc b/bin/__pycache__/arxiv_to_publications_correct.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc427707200bc4f40bb0f95abdb0cf2b7af52a43 GIT binary patch literal 5315 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 1: - id = data['author'][0]['family'] + 'EtAl' + str(data['issued']['date-parts'][0][0]) - else: - id = data['author'][0]['family'] + str(data['issued']['date-parts'][0][0]) + try: + if len(data['author']) > 1: + id = data['author'][0]['family'] + 'EtAl' + str(data['issued']['date-parts'][0][0]) + else: + id = data['author'][0]['family'] + str(data['issued']['date-parts'][0][0]) + except (KeyError, IndexError, TypeError) as exc: + print(f'Ignoring {url}, incomplete metadata response: {exc}\n\n') + continue id = id.replace(" ", "_") entries = db.get_entry_dict() From aa5587d4d482abff2dbfb594d9ef97da19e6912f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 15 Jun 2026 05:19:51 +0000 Subject: [PATCH 3/3] Remove cached Python artifacts --- .gitignore | 4 ++++ ...arxiv_to_publications_correct.cpython-312.pyc | Bin 5315 -> 0 bytes 2 files changed, 4 insertions(+) delete mode 100644 bin/__pycache__/arxiv_to_publications_correct.cpython-312.pyc diff --git a/.gitignore b/.gitignore index 0c1e2b24..6fc1d66b 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,10 @@ build/ ### Linux ### *~ +### Python ### +__pycache__/ +*.py[cod] + # KDE directory preferences .directory diff --git a/bin/__pycache__/arxiv_to_publications_correct.cpython-312.pyc b/bin/__pycache__/arxiv_to_publications_correct.cpython-312.pyc deleted file mode 100644 index fc427707200bc4f40bb0f95abdb0cf2b7af52a43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5315 zcmbtXTWlNGnLfiAUd4+@k=E7n=t9YoDN3?rtFgU_Wzk6$J66`0*d8lkM?6OoX^Lcr zLtPl9@NNT?3RIXv9!w($!hKq`4hm&o>U~)#z%Ck~igNoCfuX!?)Hr7nOh9w*BEd{7SbzH{LRnT?&>^CW9MZ&9 z=LdVFU?tW_b9G;%umKyfiP*9EW6J}5WtTy~dqm@?&QGywL7EfSVCw^2<@5v+T(HMQ zx~kk7MO+V<3N5%XL%-TB2EiQ^>D4%^Gq#c1h_AZVs7Sv?Rc8#kYlzw`H2h6u$Nv+# z5s;fmBWciN1yGiG^DhWZf-i(-p#{zl<66@40m4qw`~muq)9hF6HIruS!gUYWiUmR| zX}!a&wv*P#i&dL6Dl)23)%j@@+CUOTb7RjlXyaxCc;~BkH0tTy4m0(A7wN!_jc}-G zh?{N)5Ry8zeT?WSZdS*ZG|+I%4yT9JomO?M@TjAPLpg=+7=IAX{{?|`9~f~Sw`txN zx`{h-9mGBJd1|STv=HAsBiTUiVSGr9OZ$hcrYVC~pAg_tE$L9l&f6p4gZ=#8AMpPb zB;I&N94sTZp5N1utJ3}#ZT+NM=*L~c07k+f=_dYpB(xIa|^SfFOX^0F|`s#NaA`Q~Nfqa8@E}X%Bawhn98UpTz)zfOm1F(8YJA-?) za}H|x3!U>UIUD)8c3z#ynFDv-nl{=DPlM;XDjRvXilk8>ci`jWn&bd_6S7zs!$V{Y zvdl%s4y?7IYIhaJKzkI)Xn55b50fzs_aEFU*L&4djl#qD1n_B{Zww^~ly*{s$y>)$lyh5A|GqRFTj#@)b4t zQV*k8&xNP1lEv#%SSAvzYcG?ZrbtpgzZfD3IUJ9L_B^Kgh`wXc^|${5!#!k1@}75~ z1MNMHRldDp8LV7p!VK1Z%xa#0hh1hPd(Zm)yjngpXqml&I*@G8PQeRD-r;2JEe75{ zmJ#?HgB@RR=`UGIfz|N+msA3aU>A{Lrr3RB^ND8Ztrg+IjJeDL1OBO>( z>LZ?hb~~rSv3^ln49^GUcrcNgiiSfXjZHEbic1m+$^OKW;#3t3;&>Q#V={@!5`87B zfnSn#*E?uOr`NmxRM&j(%-WeeyFUBSR_J@V@cQMgx+@t|*;Ko2YAc%BwoDy6CS-Nr znfU8pjL6#Z4bs6alPzn`b>uvS)`5-Y4co)Zo9x5XW}sjn-!i@WCr91)J9=Q-O}atS zKlb|3Z_J~I*x!0ao$RMhJ&=ki7@QNsv0yN*>zhg&`ue8gcq#1(#}X--4=0l;!qXjo zmPkZFJ*>jbl4wHVT8^!xjRQ(^Exd`1!zvrGL6@U9&N{k@a1>Mt-cu5qSouE(X@H16>jpSJJ|VR@FncKITo zc8iIG=JNi93qixRDu^kE+#j?IhFFy^%bUJLap zUZMd~3}Q;2jZ0tAa#9S_;#@eoq;Tiu(WqijorBXBKqP$$QIeBsoQ z46iW3bf=G}d9cLC;xa!SPsK3Y*tl46vP9(o17&$J>=t| z5N5(LF}ep+xy(;PP4Ek1Qia`jgMu|qg&mRvr|L?kPXib<4a!23|1W@^8hxQexs4C=n5xc9I8 zQwwTSm1x6M>a=FzhuW@m)=Gm=iQp<*QqQ?G3;SmMT~=>f_kQ~ zNm)`X>Ji;cDqLlZCrC`Gsi+a8YARebE@DN8rxfFKIEKY&RN-i$DMpE?rh^Y~5F#!s zCfYkxicNH zZ3hY)1*LRhte7AH)P2P=9>Zj@LYuEbiC0KFG}54&u|XUT$%>KEVUkn~5}Aw7gX>|2 zE&{2ds!h{VF;?;=sW4$hpM*-475x;&RP<10@}Q!RNAY-|vN{f`#=|j1Pu&8zpgh>8 z7|0@YOswovKy`$n5<@6L&^HE6J}$x2LRAse3QjF4E*cjZdVds@g3dcPCn`ojRh_R_ zuY(h5mxEA*W1!TW2oDm7U<$-SaX|b375WzZgd`6PyQVX9ah!^h7bO{%v>_zlhbPGn z%P`Czk@=6vq5jqW8P$D(`o2H|-x!RHd&iA9YbIS{8=u%ZGdH$vokd$`$<}q}H`m z+18qw+_tqAZLPVtOSWSf-FGY;>==-vF*9{HvJxpY`Zu`Wnm;jb4~!NEMmIY@)0GA; zl27)@U1&PD8Tj4!r{mj!YsJ8|!W%+i@~u)JSaSU2&X2!5)R;S(f2DND z_bnRI53N`-Z06cyc-qwD&gVw*z3W%j&ll{+w@gEi?ML!#!F&4QjgtN43|p?TXHJ)` z?y}u^_x8%|Z98AI^Cf$GhTUTvdDv942da!aI?n7V*B!d|qqQHse<~B$u^7#s#|~F^ zIA>aWvE*pa|NS2vU1bmGv-VbgwCL%|FBUxm8z+mN7yfl@liR%Usr|F%;@QcvS6C5pZ0<_Q)|Sydak;l$9Yt41$>q%$%Qdw*W3lGQW2-Yeo+G*Ih0a$Ct_xe% zi`3{ESN6opi@9UPny&S}Kh%uuVfEa z>bKqAqT5??cW2CHmm8$H`e3lyGECWCn;l*SM$ z=8w$x&H0WG>=|1|pVgNe4(G)CrjP9R?fGP>;n?0TM09p#HmA=nAe6}TH(GKN)KxqTpG*fJd{cLKtesqL}NS#b5OCrh>= zCCBGbn^>DDbiVYNd&_<48)Psy zWCCSJQw|p$?dAIBd&_If`3oDaQvGn2D?93;J{DINbA~)ua(D}l!E*iKtaNXFZ9X@h z53LWE>IZ7VN;kMO@Q&Rw&D_Y0-Ya(~fGJ z;GGR}Tg{wM?pmS!rM6P8@E;7_w>Wv;Tg)_ENv@KiE;%gj4sQ#