Skip to content

Commit 240d015

Browse files
various (#67)
* - Refactoring of repositories parsing metadata to use `quarto inspect` logic instead of manual metadata extraction/parsing. - Removed a small redundant subsection tittle in the authors guide. - RSS feed generated by the main publication script (as quarto is not capable of generating RSS feeds directly from an existing yml). * Update build workflow to stage both YAML and XML published files * Update publications from getcomputo-pub.fsx [skip ci] * 2026 may update * forgot dotnet tool * Fix workflow indentation and build command Steps are now properly nested under the jobs definition. Remove the UpdatePublications target argument from the refresh step. Track .config/dotnet-tools.json by updating gitignore. * Revert * Refresh publication metadata [skip ci] * Update dependency chain in Build.fs Remove UpdatePublications target from default chain * Update lab affiliation for Fradav * Borked link to pci --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
1 parent c2f51a7 commit 240d015

4 files changed

Lines changed: 40 additions & 37 deletions

File tree

‎news.yml‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
- date: 2025-12-16 07:59:00-0400
7575
description: >2+
7676
77-
A new peer-community initiative [(PCI) in statistics and machine learning](A new https://statml.peercommunityin.org/), of which Computo is a partner, has launched!
77+
A new peer-community initiative [(PCI) in statistics and machine learning](https://statml.peercommunityin.org/), of which Computo is a partner, has launched!
7878
7979
We accept papers recommended by this PCI without further scientific evaluation, provided they pass the reproducibility test by formatting the article in accordance [with our guidelines](https://computo-journal.org/site/guidelines-authors.html).
8080
@@ -89,4 +89,3 @@
8989
description: >2+
9090
9191
The next [2026 French Statistics Days](https://jds2026.sciencesconf.org/) is fast approaching and will take place in Clermont-Ferrand. To mark the occasion, [François-David Collin](https://fradav.perso.math.cnrs.fr/) is running a [workshop](https://computo-journal.org/jds2024-workshop/) on how to use Computo templates to help you prepare your submission with ease.
92-

‎site/board.qmd‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ page-layout: article
1010

1111
## Chiefs Editors
1212

13-
- [Julien Chiquet](https://jchiquet.github.io),
14-
Statistical learning for life science
13+
- [Julien Chiquet](https://jchiquet.github.io),
14+
Statistical learning for life science
1515
[![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0002-3629-3429) *Université Paris-Saclay, AgroParisTech, INRAE, Paris, France*
1616

1717
- [Pierre Neuvial](https://www.math.univ-toulouse.fr/~pneuvial/). Statistics. [![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0003-3584-9998). *CNRS, Institut de Mathématiques de Toulouse, Toulouse, France*
@@ -24,26 +24,26 @@ Topological data analysis. [![ORCID](https://orcid.org/sites/default/files/image
2424
- [Marie-Pierre Etienne](https://marieetienne.github.io/)
2525
Statistical methods for ecology. [![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0002-2097-2267). *ENSAI CREST, Rennes, France*
2626

27-
- [Aymeric Stamm](https://astamm.github.io/)
27+
- [Aymeric Stamm](https://astamm.github.io/)
2828
Research Engineer, Statistics.[![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0002-8725-3654). *Laboratoire de Mathématiques Jean Leray, Nantes› CNRS, France*
2929

3030
- [Nelle Varoquaux](https://nellev.github.io/)
3131
Machine learning and causal inference for genomics [![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0002-8748-6546). *CNRS, Université Grenoble Alpes, Grenoble, France*
3232

3333
## Technical Support
3434

35-
- [François-David Collin](https://fradav.github.io/)
36-
Research Engineer, Biostatistics. [![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0002-8374-7163). *Institut Montpelliérain Alexander Grothendieck, CNRS, France*
35+
- [François-David Collin](https://fradav.github.io/)
36+
Research Engineer, IA applied to Micro-electronics. [![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0002-8374-7163). *Laboratoire d’Informatique, de Robotique et de Microélectronique de Montpellier, CNRS, France*
3737

3838
## Community Management
3939

40-
- [Chloé-Agathe Azencott](https://cazencott.info/)
40+
- [Chloé-Agathe Azencott](https://cazencott.info/)
4141
Machine learning for therapeutic research [![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0003-1003-301X). *Mines ParisTech, Institut Curie and INSERM, Paris, France*
4242

4343
## Former contributors
4444

4545
- [Mathurin Massias](https://mathurinm.github.io/)
46-
Optimization for Machine Learning.
46+
Optimization for Machine Learning.
4747
Mathurin greatly contributed to the initial launch of the journal and the technical aspects
4848
[![ORCID](https://orcid.org/sites/default/files/images/orcid_16x16.png)](https://orcid.org/0000-0002-8950-0356).
4949

‎src/PublicationUpdater/PublicationUpdater.fs‎

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,15 +37,19 @@ module Generator =
3737
let private publishedRe = Regex(@"^published(_|-)\d+")
3838
let private redirectStringRe = Regex(@"URL='(.*)'")
3939

40-
let normalizeDraftValue (raw: string) =
41-
if String.IsNullOrWhiteSpace(raw) then
42-
"false"
43-
elif raw.Equals("true", StringComparison.OrdinalIgnoreCase) then
44-
"true"
45-
elif raw.Equals("false", StringComparison.OrdinalIgnoreCase) then
46-
"false"
47-
else
48-
raw.ToLowerInvariant()
40+
let (|Empty|True|False|Other|) (raw: string) =
41+
match raw with
42+
| _ when String.IsNullOrWhiteSpace raw -> Empty
43+
| _ when raw.Equals("true", StringComparison.OrdinalIgnoreCase) -> True
44+
| _ when raw.Equals("false", StringComparison.OrdinalIgnoreCase) -> False
45+
| _ -> Other raw
46+
47+
let normalizeDraftValue raw =
48+
match raw with
49+
| Empty -> "false"
50+
| True -> "true"
51+
| False -> "false"
52+
| Other s -> s.ToLowerInvariant()
4953

5054
let buildRssTitle (title: string) (authors: string) =
5155
if String.IsNullOrWhiteSpace(authors) then
@@ -120,8 +124,10 @@ module Generator =
120124
HtmlDocument.Load(page + p))
121125
|> Option.defaultValue htmlFirst
122126

127+
let bibtexCls = ".bibtex"
128+
123129
try
124-
html.CssSelect(".bibtex").Head.InnerText()
130+
html.CssSelect(bibtexCls).Head.InnerText()
125131
|> DirtyParser.bibTeXFromString
126132
|> _.Head
127133
|> Result.Ok

‎src/QuartoInspect/QuartoClient.fs‎

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,16 @@ module QuartoClient =
1616
stdout: string
1717
executionTime: TimeSpan }
1818

19+
/// Utility function for erroring with about missing fields
20+
let errorMissingFields (has: string -> bool) (fields: string list) =
21+
let missingFields = fields |> List.filter (fun f -> not (has f))
22+
23+
if missingFields.Length > 0 then
24+
let missingFieldNames = missingFields |> String.concat ", "
25+
Result.Error $"Missing required fields: {missingFieldNames}"
26+
else
27+
Ok()
28+
1929
/// Run quarto inspect on a given path
2030
let runInspect (path: string) : Async<Result<InspectResult, string>> =
2131
async {
@@ -74,14 +84,9 @@ module QuartoClient =
7484
let mutable elem = Unchecked.defaultof<JsonElement>
7585
root.TryGetProperty(key, &elem)
7686
// Check required fields
77-
if not (has "quarto") then
78-
Result.Error "Missing required field: quarto"
79-
elif not (has "engines") then
80-
Result.Error "Missing required field: engines"
81-
elif not (has "formats") then
82-
Result.Error "Missing required field: formats"
83-
else
84-
Ok root
87+
[ "quarto"; "engines"; "formats" ]
88+
|> errorMissingFields has
89+
|> Result.bind (fun () -> Ok root)
8590
with ex ->
8691
Error $"Invalid JSON: {ex.Message}"
8792

@@ -95,16 +100,9 @@ module QuartoClient =
95100
let mutable elem = Unchecked.defaultof<JsonElement>
96101
root.TryGetProperty(key, &elem)
97102
// Check required fields
98-
if not (has "quarto") then
99-
Result.Error "Missing required field: quarto"
100-
elif not (has "dir") then
101-
Result.Error "Missing required field: dir"
102-
elif not (has "engines") then
103-
Result.Error "Missing required field: engines"
104-
elif not (has "files") then
105-
Result.Error "Missing required field: files"
106-
else
107-
Ok root
103+
[ "quarto"; "dir"; "engines"; "files" ]
104+
|> errorMissingFields has
105+
|> Result.bind (fun () -> Ok root)
108106
with ex ->
109107
Error $"Invalid JSON: {ex.Message}"
110108

0 commit comments

Comments
 (0)